【问题标题】:How to solve "Cannot open include file 'odb_API.h'" ABAQUS 2018如何解决“无法打开包含文件'odb_API.h'”ABAQUS 2018
【发布时间】:2020-03-19 00:57:34
【问题描述】:

观看此视频即可解决问题: https://www.youtube.com/watch?v=qGNAdlDoeTs

我已尝试将 Abaqus 2018 与 Fortran 链接,并且子程序检查通过了。

但是我在运行我的 UMAT 时遇到了这个错误:

“UMAT 作业出错:编译时出现问题 - C:\PhD\UMAT-elastic.for 作业 UMAT 由于错误而中止。”

我有 Visual Studio Enterprise 2015 和英特尔 Parallel Studio XE 2018

这是我的代码,它正是源自 https://help.3ds.com/2018/english/dssimulia_established/simacaesubrefmap/simasub-c-umat.htm?contextscope=all

 SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,
 1 RPL,DDSDDT,DRPLDE,DRPLDT,
 2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,
 3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,
 4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,JSTEP,KINC)

  INCLUDE 'ABA_PARAM.INC'

  CHARACTER*80 CMNAME
  DIMENSION STRESS(NTENS),STATEV(NSTATV),
 1 DDSDDE(NTENS,NTENS),
 2 DDSDDT(NTENS),DRPLDE(NTENS),
 3 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),
 4 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3),
 5 JSTEP(4)
  DIMENSION DSTRES(6),D(3,3)
    EVALUATE NEW STRESS TENSOR

  EV = 0.
  DEV = 0.
  DO K1=1,NDI
     EV = EV + STRAN(K1)
     DEV = DEV + DSTRAN(K1)
  END DO

  TERM1 = .5*DTIME + PROPS(5)
  TERM1I = 1./TERM1
  TERM2 = (.5*DTIME*PROPS(1)+PROPS(3))*TERM1I*DEV
  TERM3 = (DTIME*PROPS(2)+2.*PROPS(4))*TERM1I

  DO K1=1,NDI
     DSTRES(K1) = TERM2+TERM3*DSTRAN(K1)
 1     +DTIME*TERM1I*(PROPS(1)*EV
 2     +2.*PROPS(2)*STRAN(K1)-STRESS(K1))
     STRESS(K1) = STRESS(K1) + DSTRES(K1)
  END DO

  TERM2 = (.5*DTIME*PROPS(2) + PROPS(4))*TERM1I
  I1 = NDI
  DO K1=1,NSHR
     I1 = I1+1
     DSTRES(I1) = TERM2*DSTRAN(I1)+
 1     DTIME*TERM1I*(PROPS(2)*STRAN(I1)-STRESS(I1))
     STRESS(I1) = STRESS(I1)+DSTRES(I1)
  END DO

  CREATE NEW JACOBIAN

  TERM2 = (DTIME*(.5*PROPS(1)+PROPS(2))+PROPS(3)+
 1  2.*PROPS(4))*TERM1I
  TERM3 = (.5*DTIME*PROPS(1)+PROPS(3))*TERM1I
  DO K1=1,NTENS
     DO K2=1,NTENS
        DDSDDE(K2,K1) = 0.
     END DO
  END DO

  DO K1=1,NDI
     DDSDDE(K1,K1) = TERM2
  END DO

  DO K1=2,NDI
     N2 = K1−1
     DO K2=1,N2
        DDSDDE(K2,K1) = TERM3
        DDSDDE(K1,K2) = TERM3
     END DO
  END DO
  TERM2 = (.5*DTIME*PROPS(2)+PROPS(4))*TERM1I
  I1 = NDI
  DO K1=1,NSHR
     I1 = I1+1
     DDSDDE(I1,I1) = TERM2
  END DO

   TOTAL CHANGE IN SPECIFIC ENERGY

  TDE = 0.
  DO K1=1,NTENS
     TDE = TDE + (STRESS(K1)-.5*DSTRES(K1))*DSTRAN(K1)
  END DO

  CHANGE IN SPECIFIC ELASTIC STRAIN ENERGY

  TERM1 = PROPS(1) + 2.*PROPS(2)
  DO  K1=1,NDI
     D(K1,K1) = TERM1
  END DO
  DO K1=2,NDI
     N2 = K1-1
     DO K2=1,N2
        D(K1,K2) = PROPS(1)
        D(K2,K1) = PROPS(1)
     END DO
  END DO
  DEE = 0.
  DO K1=1,NDI
     TERM1 = 0.
     TERM2 = 0.
     DO K2=1,NDI
        TERM1 = TERM1 + D(K1,K2)*STRAN(K2)
        TERM2 = TERM2 + D(K1,K2)*DSTRAN(K2)
     END DO
     DEE = DEE + (TERM1+.5*TERM2)*DSTRAN(K1)
  END DO
  I1 = NDI
  DO K1=1,NSHR
     I1 = I1+1
     DEE = DEE + PROPS(2)*(STRAN(I1)+.5*DSTRAN(I1))*DSTRAN(I1)
  END DO
  SSE = SSE + DEE
  SCD = SCD + TDE − DEE
  RETURN
  END

【问题讨论】:

  • 根据 Abaqus 的文档。它支持的 Visual Studio 版本是 2015。我不建议使用不受支持的程序,它可能会导致不稳定的行为,在某些情况下它可以在其他情况下不起作用。此外,发布您尝试编译和链接的代码。所以我们可以为您提供进一步的帮助。
  • 感谢您的评论。是的;我正在使用 VS 2015 企业版。我的代码也被添加了。
  • 落后五年?他们应该比这做得更好。

标签: visual-studio-2015 fortran subroutine abaqus finite-element-analysis


【解决方案1】:

您说您要运行和编译 UMAT(自定义材料模型),但您定义的子例程是 ABQmain(结果后处理器)。您要编译自定义用户子程序或结果后处理器吗?通过查看您的代码,您似乎想要用户子例程 UMAT。因此,将 ABQmain 更改为 UMAT,然后再试一次。

最好遵循手册中的示例: https://help.3ds.com/2018/english/dssimulia_established/simacaesubrefmap/simasub-c-umat.htm?contextscope=all

【讨论】:

  • 感谢您的评论。因此,我复制并粘贴了链接中的代码,并在 Materials>>User Material 中定义了 5 个参数,并在作业管理器部分链接 FORTRAN 代码,但它仍然给我错误。
  • 您现在将错误更改为:"Error in job UMAT: Problem during compilation - C:\PhD\UMAT-elastic.for Job UMAT aborted due to errors." 之前是包含的内容。能否也粘贴完整的错误日志?
  • 非常感谢你们的cmets;我通过观看这个视频解决了这个问题:youtube.com/watch?v=qGNAdlDoeTs
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 2016-06-17
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多