错误#6404:此名称没有类型,必须具有显式类型。??? 100

浏览:1833

各位大佬请问遇到这种情况怎么解决,而且不论我怎么改,错误都是31个,不增不减。
错误        error #6404: This name does not have a type, and must have an explicit type.   [SSTOL]        C:\Users\Administrator\Documents\Visual Studio 2015\Projects\D-Paccord\D-Paccord\DP.for    27
往下都是一样的错误,然后就是下面这样的
错误        error #5082: Syntax error, found IDENTIFIER 'SQRT' when expecting one of: .EQV. .NEQV. .XOR. .OR. .AND. .LT. < .LE. <= .EQ. == .NE. /= .GT. > ...        C:\Users\Administrator\Documents\Visual Studio 2015\Projects\D-Paccord\D-Paccord\DP.for    110

附上源代码

   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)
      IMPLICIT NONE
C
      INCLUDE 'ABA_PARAM.INC'
C
      CHARACTER*80 CMNAME
      DIMENSION STRESS(NTENS),STATEV(NSTATV),
     1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),
     2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),
     3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3),
     4 JSTEP(4)
      
      DIMENSION DE1(6,6),DE2(6,6),DE(6,6)
      DIMENSION DSTRESS1(6),DSTRESS2(6),STRESS1(6),STRESS2(6)
      DIMENSION FG1(6),FG2(6),FG(6)
      DIMENSION DEP1(6,6),DEP2(6,6)
      DIMENSION DDSTRAN(6),ESTRESS(6)
      DIMENSION FPSTRESS(6),FFC(6),FFC1(6),FFC2(6),FFCD(6),FFCDE(6),
     1FPSTRAN(6),FFCFFC(6,6),FFCFFC1(6,6),FFCFFC2(6,6)
      DIMENSION FXY(6),FPSTRESS1(6),FPSTRESS2(6)

C上述为各种数组的定义      
      SSTOL=1E-3
C误差控制标准
      FE=PROPS(1)
      FMIU=PROPS(2)
      FARF=PROPS(3)
      FA=PROPS(4)
      FB=PROPS(5)
C上述为五组参数,弹模,泊松比,α,A,B
      FG=FE/(2.0*(1.0+FMIU))
      FLMD=FMIU*FE/((1.0+FMIU)*(1.0-2.0*FMIU))
      FTIME=0.0
      FDTIME=1.0
      
666   CONTINUE
      FSDP=STATEV(1)
C等效塑性剪切应变
       CALL SINV(STRESS,SINV1,SINV2,NDI,NSHR)
C获取子步增量步起点应力不变量
       FI1=SINV1
       FI2=SINV2
       IF(FI2.LE.1e-5)FI2=1e-5
       FSD1=SQRT(FI1**2+FI2**2)
C应力状态到原点的距离
       CALL GETDE((FG,FLMD,DE1)
       DO I=1,6
           DO J=1,6
               DE1(I,J)=DE(I,J)
           END DO
       END DO
       
 999     CONTINUE!子步循环
      DO I=1,6
          DDSTRAN(I)=DSTRAN(I)*FDTIME
      END DO
C子步增量应变
      CALL GETFPSTRESS(STRESS,FPSTRESS,FI1)
      DO I=1,6
          FPSTRESS1(I)=FPSTRESS(I)
      END DO
      
      
C获取偏应力
      CALL GETJ2(STRESS,J2)
      FJ21=J2
      
C获取应力偏量的第二不变量
      CALL GETFFC(FPSTRESS1,FFC,FJ21,FARF)
      DO I=1,6
          FFC1(I)=FFC(I)
      END DO
      
      
C获取屈服函数对应力求导结果
      CALL GETFFCFFC(FFC,FFCFFC)
      DO I=1,6
          DO J=1,6
              FFCFFC1(I,J)=FFCFFC(I,J)
          END DO
      END DO
     
          
      !  DO I=1,6
      !    DO J=1,6
      !        FFCD(I,J)=FFC(J)*FDE(I,J)
      !    END DO
      !END DO
      !FFX(1)=FFCD(1,1)+FFCD(1,2)+FFCD(1,3)+FFCD(1,4)+FFCD(1,5)+FFCD(1,6)
      !FFX(2)=FFCD(2,1)+FFCD(2,2)+FFCD(2,3)+FFCD(2,4)+FFCD(2,5)+FFCD(2,6)
      !FFX(3)=FFCD(3,1)+FFCD(3,2)+FFCD(3,3)+FFCD(3,4)+FFCD(3,5)+FFCD(3,6)
      !FFX(4)=FFCD(4,1)+FFCD(4,2)+FFCD(4,3)+FFCD(4,4)+FFCD(4,5)+FFCD(4,6)
      !FFX(5)=FFCD(5,1)+FFCD(5,2)+FFCD(5,3)+FFCD(5,4)+FFCD(5,5)+FFCD(5,6)
      !FFX(6)=FFCD(6,1)+FFCD(6,2)+FFCD(6,3)+FFCD(6,4)+FFCD(6,5)+FFCD(6,6)
      
      DO I=1,6
          DO J=1,6
              DO K=1,6
              FFCD(K)=FFC1(K)*DE1(K,J)
              END DO
              FFCDE(J)=FFCD(1)+FFCD(2)+FFCD(3)+FFCD(4)+FFCD(5)+FFCD(6)
          END DO
          FCF1=0
          FCF1=FCF1+FFCDE(I)*FFC1(I)
      END DO
      FKF1=(0.0-FA/(FA+FB*FSDP)**2)SQRT(2FARF**2+1/3)
      
      FFFC=MATMUL(FFCFFC1,DE1)
      
      CALL GETFPSTRAN(FDLMD,FCF1,FKF1,FFFC,DDSTRAN)
      
      
      CALL GETDEP(FFCFFC,DE1,FDEP,FCF1,FKF1)
C 获得弹塑性刚度矩阵
      CALL GETDSTRESS(DEP,DDSTRAN,DSTRESS)
      DO I=1,6
      DSTRESS1(I)=DSTRESS(I)
      END DO
C获得应力增量
      DO I=1,6
          STRESS1(I)=STRESS(I)+DSTRESS1(I)
      END DO
C终点应力第一次试算值
       CALL SINV(STRESS,SINV1,SINV2,NDI,NSHR)
C获取子步增量步终点应力不变量
       FI1=SINV1
       FI2=SINV2
       CALL GETDE(FG1,FG2,FLMD,DE)
       DO I=1,6
           DO J=1,6
               DE2(I,J)=DE(I,J)
C获取子步增量步起点弹性矩阵
        CALL GETFPSTRESS(STRESS,FPSTRESS,FI1)
        DO I=1,6
      FPSTRESS2(I)=FPSTRESS(I)
        END DO
        
      
C获取偏应力
      CALL GETJ2(STRESS,J2)
      J22=J2
      
C获取应力偏量的第二不变量
      CALL GETFFC(FPSTRESS1,FJ22,FFC)
      DO I=1,6
          
      FFC2(I)=FFC(I)
      END DO
      
      
C获取屈服函数对应力求导结果
      CALL GETFFCFFC(FFC,FFCFFC)
      DO I=1,6
          DO J=1,6
      FFCFFC2(I,J)=FFCFFC(I,J)
          END DO
      END DO
      
      
       DO I=1,6
          DO J=1,6
              DO K=1,6
              FFCD(K)=FFC2(K)*FDE(K,J)
              END DO
              FFCDE(J)=FFCD(1)+FFCD(2)+FFCD(3)+FFCD(4)+FFCD(5)+FFCD(6)
          END DO
          FCF2=0
          FCF2=FCF2+FFCDE(I)*FFC2(I)
      END DO
      FKF2=(0.0-FA/(FA+FB*FSDP)**2)SQRT(2FARF**2+1/3)
      
      FFFC=MATMUL(FFCFFC2,DE2)
      !DO I=1,6
      !    DO J=1,6
      !         FFFC(I,J)=FFCFFC2(I,J)*DE2(J,I)
      !    END DO
      !END DO错的
      
        CALL GETFPSTRAN(FDLMD,FCF2,FKF2,FFFC,DDSTRAN)
      
      
      CALL GETDEP(FFCFFC,DE2,FDEP,FCF2,FKF2)
C 获得弹塑性刚度矩阵
      CALL GETDSTRESS(DEP,DDSTRAN,DSTRESS)
      DO I=1,6
      DSTRESS2(I)=DSTRESS(I)
      END DO
C获得应力增量
      DO I=1,6
          STRESS2(I)=STRESS(I)+DSTRESS2(I)
      END DO
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
      
      STATEV(1)=FSDP!存疑
      
C误差标准满足后更新终点状态
      IF(FTIME .LT. 1)THEN
          IF(FDTIME .GT. (1-FTIME))THEN
              FDTIME=1-FTIME
          END IF
C继续下一个子步增量步计算
          GOTO 888
      END IF
      FI1=SINV1
      FI2=SINV2
       STATEV(1)=FSDP
       CALL GETDE(FG1,FG2,FLMD,DE)
       CALL GETJ2(STRESS,FJ2)
      
C获取应力偏量的第二不变量
      CALL GETFFC(FPSTRESS,FJ2,FFC)
      
C获取屈服函数对应力求导结果
      CALL GETFFCFFC(FFC,FFCFFC)
      
       DO I=1,6
          DO J=1,6
              DO K=1,6
              FFCD(K)=FFC(K)*FDE(K,J)
              END DO
              FFCDE(J)=FFCD(1)+FFCD(2)+FFCD(3)+FFCD(4)+FFCD(5)+FFCD(6)
          END DO
          FCF=0
          FCF=FCF+FFCDE(I)*FFC(I)
      END DO
      FKF=(0.0-FA/(FA+FB*FSDP)**2)SQRT(2FARF**2+1/3)
      
      FFFC=MATMUL(FFCFFC,FDE)
      
      
      CALL GETFPSTRAN(FPBL,FCF,FKF,FFFC,DDSTRAN)
      
      
      CALL GETDEP(FFFC,FDE,FCF,FKF,FDEP)
C 获得弹塑性刚度矩阵
      DO I=1,6
          DO J=1,6
              DDSDDE(I,J)=FDEP(I,J)
          END DO
      END DO
C根据终点状态计算弹塑性矩阵,并赋值DDSDDE
      RETURN
      END
       
      
      
      SUBROUTINE GETDSTRESS(FDEP,STRAN,DSTRESS)
       IMPLICIT NONE
      INCLUDE 'ABA_PARAM.INC'
      DIMENSION FDEP(6,6),STRAN(6),DSTRESS(6)
      DO I=1,6
          
              DSTRESS(I)=FDEP(I,1)*STRAN(1)+FDEP(I,2)*STRAN(2)+
     1FDEP(I,3)*STRAN(3)+FDEP(I,4)*STRAN(4)+FDEP(I,5)*STRAN(5)+
     1FDEP(I,6)*STRAN(6)
          
      END DO
      END SUBROUTINE GETDSTRESS
      
      
      
      
      SUBROUTINE GETDEP(FFCFFC,DE,FDEP,FCF,FCF)
       IMPLICIT NONE
       INCLUDE 'ABA_PARAM.INC'
      DIMENSION FFCFFC(6,6),FDE(6,6),FDEP(6,6)
      DO I=1,6
          DO J=1,6
              FDEP(I,J)=DE(I,J)-MATMUL(DE,FFCFFC))/(FCF-FKF)
          END DO
      END DO
      
      END SUBROUTINE GETDEP
      
      
C     Fortran90库存函数中,有提供的Matmul,这个函数来做矩阵乘法
C    C=matmul(A,B)!只需要一行就OK了
       SUBROUTINE GETDE(FG,FLMD,FDE)
        IMPLICIT NONE
      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)=FLMD+2.0*FG
      FDE(2,2)=FLMD+2.0*FG
      FDE(3,3)=FLMD+2.0*FG
      FDE(4,4)=FG
      FDE(5,5)=FG
      FDE(6,6)=FG
      FDE(1,2)=FLMD
      FDE(1,3)=FLMD
      FDE(2,1)=FLMD
      FDE(2,3)=FLMD
      FDE(3,1)=FLMD
      FDE(3,2)=FLMD
      END


      SUBROUTINE GETFPSTRESS(STRESS,FPSTRESS,FI1)
       IMPLICIT NONE
      INCLUDE 'ABA_PARAM.INC'
      DIMENSION STRESS(6),FPSTRESS(6)
      DO I=1,6
          FPSTRESS(I)=STRESS(I)
      END DO
      DO J=1,3
          FPSTRESS(J)=STRESS(J)-FI1/3.0
      END DO
      END
      
      SUBROUTINE GETJ2(STRESS,J2)
       IMPLICIT NONE
       INCLUDE 'ABA_PARAM.INC'
      DIMENSION STRESS(6)
      
      FJ2=1.0/6.0*((STRESS(1)-STRESS(2))**2.0+(STRESS(2)-STRESS(3))**2.0
     1+(STRESS(3)-STRESS(1))**2.0+6.0(STRESS(4)**2.0+STRESS(5)**2.0+
     2STRESS(6)**2.0))
      END
      
      SUBROUTINE GETFFC(FPSTRESS,FFC,FJ2,FARF)
       IMPLICIT NONE
        INCLUDE 'ABA_PARAM.INC'
      DIMENSION FPSTRESS(6),FFC(6)
      
      DO I=1,6
          FFC(I)=FPSTRESS(I)/(2.0*SQRT(FJ2))
      END DO
      DO J=1,3
          FFC(J)=FFC(J)+FARF
      END DO
      DO K=4,6
          FFC(K)=FFC(K)*2.0
      END DO
      END
      
       SUBROUTINE GETFFCFFC(FFC,FFCFFC)
        IMPLICIT NONE
      DIMENSION FFC(6),FFCFFC(6,6)
      DO I=1,6
          DO J=1,6
              FFCFFC(I,J)=FFC(I)*FFC(J)
          END DO
      END DO
      END
      
      SUBROUTINE GETFPSTRAN(FPBL,FCF,FKF,FFFC,DDSTRAN)
       IMPLICIT NONE
       INCLUDE 'ABA_PARAM.INC'
      DIMENSION FPBL(6.6),FFFC(6,6),DDSTRAN(6),FSPYS(6)
      DO I=1,6
          DO J=1,6
              FPBL(I,J)=(1.0/(FCF-FKF))*FFFC(I,J)
          END DO
      END DO
      DO I=1,6
          DO J=1,6
      FSPYS(I)=FPBL(I,J)*DDSTRAN(J)
          END DO
          FPSTRAN(I)=FSPYS(1)+FSPYS(2)+FSPYS(3)+FSPYS(4)+FSPYS(5)+
     1FSPYS(6)
      END DO
      END


邀请回答 我来回答

当前暂无回答

回答可获赠 200金币

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

换一批