Как решить «Не удается открыть включаемый файл« odb_API.h »» ABAQUS 2018 - PullRequest
0 голосов
/ 19 марта 2020

Проблема решается просмотром этого видео: https://www.youtube.com/watch?v=qGNAdlDoeTs

Я попытался связать Abaqus 2018 с Fortran, и проверка подпрограммы прошла.

Но я получена эта ошибка при запуске моего UMAT:

"Ошибка в задании UMAT: проблема во время компиляции - C: \ PhD \ UMAT-elasti c .for UMAT задания прервана из-за ошибок."

У меня Visual Studio Enterprise 2015 и Intel 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

1 Ответ

0 голосов
/ 20 марта 2020

Вы говорите, что хотите запустить и скомпилировать UMAT (пользовательскую модель материала), но определяемая вами подпрограмма - ABQmain (постпроцессор результатов). Вы хотите скомпилировать пользовательскую подпрограмму или обработчик результатов? Глядя на ваш код, кажется, что вы хотели бы пользовательской подпрограммы UMAT. поэтому измените ABQmain на UMAT и попробуйте снова.

Лучше всего следовать примерам из руководства: https://help.3ds.com/2018/english/dssimulia_established/simacaesubrefmap/simasub-c-umat.htm?contextscope=all

...