abaqus与子程序参数不匹配,怎么解决? 50

浏览:1504 回答:3

Error in job ex12-4-O1: Problem during linking - Abaqus/Standard User Subroutines.   This error may be due to a mismatch in the Abaqus user subroutine arguments.   These arguments sometimes change from release to release, so user subroutines   used with a previous release of Abaqus may need to be adjusted.

请问这种问题怎么解决?

我abaqus2018 ivf2017 vs2015

附上源代码


      SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,RPL,DDSDDT,
     & DRPLDE,DRPLDT,STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,
     & CMNAME,NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,
     & PNEWDT,CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
C
      INCLUDE 'ABA_PARAM.INC'
! 定义了一些相关参数与变量什么,从 ABAQUS 安装目录下的子文件夹“… \site”中可找到
C
       CHARACTER*80 CMNAME
C
       DIMENSION STRESS(NTENS),STATEV(NSTATV),DDSDDE(NTENS,NTENS),
     & DDSDDT(NTENS),DRPLDE(NTENS),STRAN(NTENS),DSTRAN(NTENS) ,   ! (应变增量矩阵) ,
     & TIME(2),PREDEF(1),DPRED(1),PROPS(NPROPS),COORDS(3),DROT(3,3),  ! (旋转矩阵) ,
     & DFGRD0(3,3),DFGRD1(3,3),JSTEP(4)
       !上前都是变量的一些声明
       DIMENSION DE1(6,6),DE2(6,6),DE(6,6)
       DIMENSION DSTRESS1(6),DSTRESS(6),STRESS1(6),STRESS2(6)
       DIMENSION FG1(6),FG2(6),FG(6)
       DIMENSION DEP1(6,6),DEP2(6,6)
       DIMENSION DDSTRAN(6),ESTRESS(6)
       
       SSTOL=1E-3
C 误差控制标准
       FLAMA=PROPS(1)
       FKAPA=PROPS(2)
       FU=PROPS(3)
       FM=PROPS(4)
       FN0=PROPS(5)
       FGA0=PROPS(6)
       FN=PROPS(7)
C 7个参数
       FR=EXP((FN0-FGA0)/(FLAMA-FKAPA))
       FTIME=0.0!T
       FDTIME=1.0!dT
      
888    CONTINUE
       FVOID1=STATEV(1)
       FPC1=STATEV(2)
       FVOID0=STATEV(3)
       
       CALL SINV(STRESS,SINV1,SINV2,NDI,NSHR)
C获取子步增量步起点应力不变量
       FP1=SINV1
       FQ1=SINV2
       IF(FQ1.LE.1e-5)FQ1=1e-5
       FSD1=SQRT(FP1**2+FQ1**2)
C应力状态到原点的距离
       FKMOD1=-(1+FVOID1)*FP1/FKAPA
       FGMOD1=FKMOD1*3.0*(1-2.0*FU)/2.0/(1+FU)
C体积模量和剪切模量
       CALL GETDE(FKMOD1,FGMOD1,DE1)
C获取子步增量步起点弹性矩阵
       FPFP=-FN*((-FQ1/FM/FP1)**(FN-1))*(-FQ1/FM)/FP1/FP1+1/FP1/LOG(FR)
       FPFQ=-FN*((-FQ1/FM/FP1)**(FN-1))/FM/FP1
       FATA=FQ1/FP1
C屈服面对p和q的导数,应力比
       FPB1=-FPC1*EXP(-((-FATA/FM)**FN)*LOG(FR))
       FSDB1=-SQRT(1+FATA**2)*FPB1
C边界面上的应力状态
       FKP1=-(1+FVOID1)/(FLAMA-FKAPA)/LOG(FR)*(FM*FM*(FSDB1/FSD1)-FATA*
     &FATA)/2.0/FATA
      FDS1=(FM*FM*(FSD1/FSDB1)-FATA*FATA)/2.0/FATA
C塑性模量和减胀因子
999     CONTINUE!子步循环
      DO I=1,6
          DDSTRAN(I)=DSTRAN(I)*FDTIME
      END DO
C子步增量应变
      CALL GETDEP(FP1,FQ1,STRESS,FDS1,FPFP,FPFQ,DE1,FKP1,DEP1,DDSTRAN,
     &FGS1,FF1,FG1)
C获取弹塑性矩阵
      DEVP1=FDS1*FGS1
C塑性体积应变增量
      FPC2=FPC1*EXP(-(1+FVOID1)/(FLAMA-FKAPA)*DEVP1)
C子步增量步终点屈服应力
      CALL GETDSTRESS(DEP1,DDSTRAN,DSTRESS1)
C获得增量应力
      DO I=1,6
          STRESS1(I)=STRESS(I)+DSTRESS1(I)
      END DO
C终点应力第一次试算值
      DEV=(DDSTRAN(1)+DDSTRAN(2)+DDSTRAN(3))
      FVOID2=EXP(DEV)*(1+FVOID1)-1
C终点孔隙比
      CALL SINV(STRESS1,SINV1,SINV2,NDI,NSHR)
      FP2=SINV1
       FQ2=SINV2
       IF(FQ2.LE.1e-5)FQ2=1e-5
       
C应力状态到原点的距离
       FKMOD2=-(1+FVOID2)*FP2/FKAPA
       FGMOD2=FKMOD2*3.0*(1-2.0*FU)/2.0/(1+FU)
C体积模量和剪切模量
       CALL GETDE(FKMOD2,FGMOD2,DE2)
C获取子步增量步起点弹性矩阵
       FPFP=-FN*((-FQ2/FM/FP2)**(FN-1))*(-FQ2/FM)/FP2/FP2+1/FP2/LOG(FR)
       FPFQ=-FN*((-FQ2/FM/FP2)**(FN-1))/FM/FP2
       FATA=FQ2/FP2
C屈服面对p和q的导数,应力比
       FSD2=SQRT(FP2**2+FQ2**2)
       FPB2=-FPC2*EXP(-((-FATA/FM)**FN)*LOG(FR))
       FSDB2=-SQRT(1+FATA**2)*FPB2
C边界面上的应力状态
       FKP2=-(1+FVOID2)/(FLAMA-FKAPA)/LOG(FR)*(FM*FM*(FSDB2/FSD2)-FATA*
     & FATA)/2.0/FATA
      FDS2=(FM*FM*(FSD2/FSDB2)-FATA*FATA)/2.0/FATA
      CALL GETDEP(FP2,FQ2,STRESS1,FDS2,FPFP,FPFQ,DE2,FKP2,DEP2,DDSTRAN,
     & FGS2,FF2,FG2)
C计算子步增量步应力增量第二次试算值
      DO I=1,6
          ESTRESS(I)=0.5*(DSTRESS2(I)-DSTRESS1(I))
          STRESS2(I)=STRESS(I)+0.5*DSTRESS1(I)+0.5*DSTRESS2(I)
      END DO
      FEIE=0.0
      FEIS=0.0
      FERR=0.0
      DO I=1,6
          FEIE=FEIE+ESTRESS(I)*ESTRESS(I)
          FEIS=FEIS+STRRESS2(I)*STRESS2(I)
      END DO
      FERR=SQRT(FEIE/FEIS)
      IF (FERR .LE. 1E-8)FERR=1E-8!若误差小于10负八次方就把它等于10的负八次方
      FBETA=0.8*SQRT(SSTOL/FERR)!β,Tnew=△T*β
      IF(FERR .GT. SSTOL)THEN
          IF(FBETA .LE. 0.1)FBETA=0.1!如果子步失败
          FDTIME=FBETA*FDTIME!缩小步长
          GOTO 999
      ELSE
          FTIME=FTIME+FDTIME!T=T+△T
          IF(FBETA .GE. 2.0)FBETA=2.0
          FDTIME=FBETA*FDTIME!DTnew=β*DT
      END IF
      !根据误差控制标准确定新的增量步长
      DO I=1,6
          STRESS(I)=STRESS(I)+0.5*DSTRESS1(I)+0.5*DSTRESS2(I)!σ=σ+△σ
      END DO
      DEVP=0.5*(DEVP1+DEVP2)
      FPC=FPC1*EXP(-(1+FVOID1)/(FLAMA-FKAPA)*DEVP)
      STATEV(1)=FVOID2
      STATEV(2)=FPC
C误差标准满足后更新终点状态
      IF(FTIME .LT. 1)THEN
          IF(FDTIME .GT. (1-FTIME))THEN
              FDTIME=1-FTIME
          END IF
C继续下一个子步增量步计算
          GOTO 888
      END IF
       CALL SINV(STRESS,SINV1,SINV2,NDI,NSHR)
C获取子步增量步起点应力不变量
       FP=SINV1
       FQ=SINV2
       FVOID=FVOID2
       STATEV(1)=FVOID2
       STATEV(2)=FPC
       FKMOD=-(1+FVOID)*FP/FKAPA
       FGMOD=FKMOD*3.0*(1-2.0*FU)/2.0/(1+FU)
C体积模量和剪切模量
       CALL GETDE(FKMOD,FGMOD,DE)
C获取子步增量步起点弹性矩阵
       IF(FQ .LE. 1e-5)FQ=1e-5
       FPFP=-FN*((-FQ/FM/FP)**(FN-1))*(-FQ/FM)/FP/FP+1/FP/LOG(FR)
       FPFQ=-FN*((-FQ/FM/FP)**(FN-1))/FM/FP
       FATA=FQ/FP
C屈服面对p和q的导数,应力比
       FSD=-SQRT(FP**2+FQ**2)
       FPB=-FPC*EXP(-((-FATA/FM)**FN)*LOG(FR))
       FSDB=-SQRT(1+FATA**2)*FPB
C边界面上的应力状态
       FKP=-(1+FVOID)/(FLAMA-FKAPA)/LOG(FR)*(FM*FM*(FSDB/FSD)-FATA*
     &FATA)/2.0/FATA
      FDS=(FM*FM*(FSD/FSDB)-FATA*FATA)/2.0/FATA
      CALL GETDEP(FP,FQ,STRESS,FDS,FPFP,FPFQ,DE,FKP,DDSDDE,DSTRAN,
     &FGS1,FF,FG)
C根据终点状态计算弹塑性矩阵,并赋值DDSDDE
      RETURN
      END
      
      SUBROUTINE GETDE(FKMOD,FGMOD,FDE)
C本子程序功能为确定弹性矩阵
      INCLUDE 'ABA_PARAM.INC'
      DIMENSION FDE(6,6)
      DO I=1,6
          DO J=1,6
              FDE(I,J)=0.0
          END DO
      END DO
      FDE(1,1)=FKMOD+4.0/3.0*FGMOD
      FDE(2,2)=FKMOD+4.0/3.0*FGMOD
      FDE(3,3)=FKMOD+4.0/3.0*FGMOD
      FDE(4,4)=FGMOD
      FDE(5,5)=FGMOD
      FDE(6,6)=FGMOD
      FDE(1,2)=FKMOD-2.0/3.0*FGMOD
      FDE(1,3)=FKMOD-2.0/3.0*FGMOD
      FDE(2,1)=FKMOD-2.0/3.0*FGMOD
      FDE(2,3)=FKMOD-2.0/3.0*FGMOD
      FDE(3,1)=FKMOD-2.0/3.0*FGMOD
      FDE(3,2)=FKMOD-2.0/3.0*FGMOD
      END
      
       SUBROUTINE GETDSTRESS(FDE,DER,DS)
C本子程序功能为确定应力增量
      INCLUDE 'ABA_PARAM.INC'
      DIMENSION FDE(6,6),DER(6),DS(6)
      DO I=1,6
          DS(I)=0.0
      END DO
      DO I=1,6
          DO J=1,6
              DS(I)=DS(I)+FDE(I,J)*DER(J)
          END DO
      END DO
       END

      SUBROUTINE GETEP(FP,FQ,FSTRESS,FDS,FPFP,FPFQ,FDE,FKP,DEP,DER,FGS,
     &FF,FG)
C本程序为确定弹塑性矩阵
      INCLUDE 'ABA_PARAM.INC'
      DIMENSION FSTRESS(6),FDE(6,6),DEP(6,6),DER(6)
      DIMENSION FA(6),FB(6),FC(6),FD(6),FE(6),FG(6),FH(6,6)
      FA(1)=1.0/3.0
      FA(2)=1.0*3.0
      FA(3)=1.0/3.0
      FA(4)=0.0
      FA(5)=0.0
      FA(6)=0.0
      FB(1)=1.0/2.0/FQ*(2*FSTRESS(1)-FSTRESS(2)-FSTRESS(3))
      FB(2)=1.0/2.0/FQ*(2*FSTRESS(2)-FSTRESS(1)-FSTRESS(3))
      FB(3)=1.0/2.0/FQ*(2*FSTRESS(3)-FSTRESS(1)-FSTRESS(2))
      FB(4)=3.0/2.0/FQ*2*FSTRESS(4)
      FB(5)=3.0/2.0/FQ*2*FSTRESS(5)
      FB(6)=3.0/2.0/FQ*2*FSTRESS(6)
      
      DO I=1,6
          FC(I)=FDS*FA(I)+FAB(I)
          FD(I)=FPFP*FA(I)+FPFQ*FB(I)
      END DO
      DO I=1,6
          FE(I)=0.0
          DO J=1,6
              FE(I)=FE(I)+FD(J)*FDE(I,J)
          END DO
      END DO
      
      FF=0.0
      DO I=1,6
          FF=FF+FE(I)*FC(I)
      END DO
      DO I=1,6
          FG(I)=0.0
          DO J=1,6
              FG(I)=FG(I)+FDE(I,J)*FC(J)
          END DO
      END DO
      DO I=1,6
          DO J=1,6
              FH(I,J)=FG(I)*FE(J)
          END DO
      END DO
      DO I=1,6
          DO J=1,6
              DEP(I,J)=FDE(I,J)-1/(FKP+FF)*FH(I,J)
          END DO
      END DO
      FGS=0.0
      DO I=1,6
          FGS=FGS+FE(I)*DER(I)/(FKP+FF)
      END DO
      FUNLOAD=0.0
      DO I=1,6
      FUNLOAD=FUNLOAD+FD(I)*DER(I)
      END DO
      IF(FUNLOAD .LT. 0)THEN
          DO I=1,6
              DO J=1,6
                  DEP(I,J)=FDE(I,J)
              END DO
          END DO
          FGS=0
      END IF
      END

邀请回答 我来回答

全部回答

(2)
默认 最新
静默的无线电
检查下有没有数组名字写错了,大概率是用到了没声明的数组
2021年3月3日
已采纳 评论 点赞
SnowWave02
除了接口和参数定义,其它都删掉,看看有没有问题
2021年3月3日
评论 1 点赞

没解决?试试专家一对一服务

换一批