⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a10.for

📁 ADINA84有限元编程学习的好例子
💻 FOR
📖 第 1 页 / 共 4 页
字号:
      SUBROUTINE EL2D10
C
C
C
C
C
      IMPLICIT DOUBLE PRECISION ( A-H,O-Z )
C***END:DPR***
      COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
     1            ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
      COMMON /DIMEL/ N101,N102,N103,N104,N105,N106,N107,N108,N109,N110,
     1               N111,N112,N113,N114,N120,N121,N122,N123,N124,N125
      COMMON /MATMOD/ STRESS(4),STRAIN(4),C(4,4),IPT,NEL,IPS,ISVE
      COMMON /DPR/ ITWO
      COMMON A(1)
      COMMON /TEMPRT/ TEMP1,TEMP2,ITEMPR,ITP96,N6A,N6B
C
      REAL A
C
      DIMENSION IA(1)
C
      EQUIVALENCE (NPAR(10),NINT),(A(1),IA(1)),(NPAR(17),NCON),
     1            (NPAR(7),MXNODS)
C
C
C
C
C
      IDW=33*ITWO
      NPT=NINT*NINT
C
C
      MATP=IA(N107 + NEL - 1)
C
C
      NM=N109 + (MATP - 1)*NCON*ITWO
C
C
      IF(IND.NE.0) GO TO 100
      NN=N110+(NEL-1)*(IDW*NPT+MXNODS)
      CALL IEPC2(A(NN),A(NN + IDW*NPT),A(NN),IDW,A(N6A + ITWO),A(NM))
      GO TO 200
C
C
  100 NN=N110 + (NEL - 1)*(IDW*NPT + MXNODS) + (IPT - 1)*IDW
      NN1=NN
      NN2=NN + 4*ITWO
      NN3=NN + 8*ITWO
      NN4=NN + 12*ITWO
      NN5=NN + 16*ITWO
      NN6=NN + 17*ITWO
      NN7=NN + 18*ITWO
      NN8=NN + 22*ITWO
      NN9=NN + 30*ITWO
      NN10=NN + 31*ITWO
      NN11=NN + 32*ITWO
C
C
      KK=N110+(NEL-1)*(IDW*NPT+MXNODS)+IDW*NPT
C
C
      ND5DIM=MXNODS-4
      LL=N111+(NEL-1)*ND5DIM
C
C
      CALL EPC2(A(NM),A(NN1),A(NN2),A(NN3),A(NN4),A(NN5),A(NN6),A(NN7),
     1          A(NN8),A(NN9),A(NN10),A(NN11),A(KK),A(LL),A(N6A + ITWO),
     2          A(N6B + ITWO))
C
  200 CONTINUE
C
      RETURN
      END
      SUBROUTINE IEPC2(WA,IWA,IIWA,IDW,TEMPV1,PROP)
C
C
C
C
C
      IMPLICIT DOUBLE PRECISION ( A-H,O-Z )
C***END:DPR***
      COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
     1            ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
      COMMON /EM2D/ S(378),XM(27),B(4,18),RE(27),EDIS(27),EDISI(27),
     1              XX(27),NOD(9),NODM(9),NOD5M(5)
      COMMON /GAUSS/ XG(6,6),WGT(6,6),EVAL2(9,2),EVAL3(27,3),E1,E2,E3
      COMMON /TEMPRT/ TEMP1,TEMP2,ITEMPR,ITP96,N6A,N6B
      COMMON /DPR/ ITWO
      COMMON /TODIM/ BET,THIC,DE,IEL,NND5,ISOCOR
      COMMON /SOLPM2/ TREF,XINTP,XCON1,XCON2,XPARM1,XPARM2,TOLIL,TOLPC,
     1                TOL1,TOL2,TOL3,TOL4,TOL5,TOL6,TCHK,CRPCON(8),DTMN,
     2                SUBDD,RNGL,RNGU,DTT,TOL7,
     3                KCRP,NITE,NALG,IINTP,NPTS,ITCHK,IST,ISR
C
      DIMENSION WA(33,*),IWA(*),IIWA(IDW,*),TEMPV1(*),H(9),
     1          XDM1(2,9),XDM2(2,2),XDM3(2,1),PROP(16,*),PROP1(5)
C
      EQUIVALENCE (NPAR(10),NINT)
C
      NPT=NINT*NINT
      IINTP=1
      NPTS=INT(PROP(9,7))
      TOLMT=1.D-2
C
      TOLL=TOLMT*ABS(PROP(1,1))
      IF(TOLL.EQ.0.D0) TOLL=TOLMT
      TOLU=TOLMT*ABS(PROP(NPTS,1))
      IF(TOLU.EQ.0.D0) TOLU=TOLMT
C
      RNGL=PROP(1,1) - TOLL
      RNGU=PROP(NPTS,1) + TOLU
C
C
C           TO ZERO
C
   15 DO 20 J=1,NPT
      DO 20 I=1,31
   20 WA(I,J)=0.D0
C
C
      II=0
      DO 25 K=1,9
      IF(NODM(K).EQ.0) GO TO 25
      II=II+1
      IWA(II)=NODM(K)
   25 CONTINUE
C
C
      DO 30 LX=1,NINT
      E1=XG(LX,NINT)
      DO 30 LY=1,NINT
      E2=XG(LY,NINT)
      IPT=(LX-1)*NINT+LY
      CALL FUNCT2(E1,E2,H,XDM1,NOD5M,XDM2,XDUM,XDM3,IDUM,IINTP)
      TEMP1=0.D0
      DO 35 K=1,IEL
      KK=IWA(K)
   35 TEMP1=TEMP1+H(K)*TEMPV1(KK)
      WA(31,IPT)=TEMP1
C
C
      CALL MTITP2(PROP,TEMP1,PROP1)
      YS1=PROP1(3)
   30 WA(17,IPT)=YS1
C
C           TO ONE
C
      KJ=31*ITWO + 1
      KJJ=32*ITWO + 1
      DO 40 I=1,NPT
      IIWA(KJ,I)=1
   40 IIWA(KJJ,I)=1
C
      RETURN
C
      END
      SUBROUTINE EPC2(PROP,SIG,EPS,EPSP,EPSC,YLD,EPSTR,ALFA,ORIG,TMPOLD,
     1                IPEL,NORG,NDS,NOD5M,TEMPV1,TEMPV2)
C
C
C
C
C
      IMPLICIT DOUBLE PRECISION ( A-H,O-Z )
C***END:DPR***
      COMMON /TODIM/ BET,THIC,DE,IEL,NND5,ISOCOR
      COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
     1            ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
      COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
     1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
      COMMON /MATMOD/ STRESS(4),STRAIN(4),C(4,4),IPT,NEL,IPS,ISVE
      COMMON /TEMPRT/ TEMP1,TEMP2,ITEMPR,ITP96,N6A,N6B
      COMMON /GAUSS/ XG(6,6),WGT(6,6),EVAL2(9,2),EVAL3(27,3),Z1,Z2,Z3
      COMMON /SOLPM2/ TREF,XINTP,XCON1,XCON2,XPARM1,XPARM2,TOLIL,TOLPC,
     1               TOL1,TOL2,TOL3,TOL4,TOL5,TOL6,TCHK,CRPCON(8),DTMN,
     2               SUBDD,RNGL,RNGU,DTT,TOL7,
     3               KCRP,NITE,NALG,IINTP,NPTS,ITCHK,IST,ISR
      COMMON /CONST/ DT,DTA,CONS(21),DTOD,IOPE
      COMMON /PORT/ INPORT,JNPORT,NPUTSV,IBPORT,IFPORT,JDC,JVC,JAC
C
      DIMENSION PROP(16,*),SIG(*),EPS(*),EPSC(*),ALFA(*),ORIG(4,*),
     1          ORIGD(4,2),NDS(*),NOD5M(*),TEMPV1(*),TEMPV2(*),
     2          H(9),XDM1(2,9),XDM2(2,2),XDM3(2,1),
     3          DELSIG(4),DELEPS(4),DEPS(4),EPSP1(4),EPSP2(4),
     4          STRSS1(4),STRSS2(4),STRSSM(4),EPSC1(4),EPSC2(4),
     5          EPSCM(4),DPSC(4),ALFA1(4),ALFA2(4),ALFAM(4),
     6          EPS1(4),EPS2(4),PROP1(5),DEPST(4),PROP2(5),PROPM(5)
      DIMENSION STRSSD(4),DPSP(4),EPST2(4),EPSP(*),CEP(4,4),EPST1(4),
     1          DSTSS(4)
C
      EQUIVALENCE (NPAR(5),ITYP2D),(NPAR(15),MODEL),(NPAR(3),INDNL)
      EQUIVALENCE (STRESS(1),STRSS2(1))
C
      CHARACTER*2 STATE(2)
      DATA STATE /' E' , '*P'/
C
C
C
C
      INDEX=1
      ISUB=1
      ISUBM=INT(PROP(13,7))
C
      IF(IPT.GT.1) GO TO 5
C
C
      DTT=DT
      IF (MODEX.EQ.2 .AND. KSTEP.EQ.1 .AND. IEQUIT.EQ.1 .AND.
     1   KPRI.NE.0) DTT=DTOD
C
      SUBDD=5.D0
      DTMN=DTT/PROP(13,7)
      IINTP=1
C
      DO 2 J=1,8
    2 CRPCON(J)=PROP(J,7)
C
      NPTS=INT(PROP(9,7))
      TREF=PROP(10,7)
      KCRP=INT(PROP(11,7))
      XINTP=PROP(12,7)
      NITE=INT(PROP(14,7))
      NALG=INT(PROP(15,7))
      TOLIL=PROP(16,7)
      TOLPC=PROP(1,8)
C
      XCON1=2.D0/3.D0
      XCON2=1.D0/3.D0
C
      ITCHK=1
      IF(NITE.LT.6) ITCHK=0
C
C
      XPARM1=1.0 - XINTP
      XPARM2=XINTP
C
C
      IST=4
      IF(ITYP2D.GE.2) IST=3
      ISR=3
      IF(ITYP2D.EQ.0) ISR=4
C
C     SET TOLERANCES **
C
      TOL1=TOLIL*TOLIL
      TOL4=5.D-6
      TOL5=1.D-20
      TOL2=TOL5*TOL5
      TOL3=2.0*TOL4
      TOL6=0.1D0
      TOL7=2.D0
      TOLMT=1.D-2
      TCHK=DTT*(1.0 - TOL4)
C
      TOLL=TOLMT*ABS(PROP(1,1))
      IF(TOLL.EQ.0.D0) TOLL=TOLMT
      TOLU=TOLMT*ABS(PROP(NPTS,1))
      IF(TOLU.EQ.0.D0) TOLU=TOLMT
C
      RNGL=PROP(1,1) - TOLL
      RNGU=PROP(NPTS,1) + TOLU
C
C
    5 DELEPS(4)=0.D0
      DEPS(4)=0.D0
      EPS2(4)=0.D0
      DELSIG(4)=0.D0
      STRSSM(4)=0.D0
      STRSSD(4)=0.D0
C
      DO 10 I=1,4
      EPS1(I)=EPS(I)
      EPSP1(I)=EPSP(I)
      EPSP2(I)=EPSP(I)
      ALFA1(I)=ALFA(I)
      ALFA2(I)=ALFA(I)
      EPSC1(I)=EPSC(I)
      EPSC2(I)=EPSC(I)
      DPSC(I)=0.D0
      EPST1(I)=0.D0
      EPST2(I)=0.D0
      DEPST(I)=0.D0
      STRSS2(I)=SIG(I)
   10 STRSS1(I)=SIG(I)
C
      YLD1=YLD
      EPSTR1=EPSTR
      EPSTR2=EPSTR
      ECSTR1=0.D0
      CRSRM=0.D0
      TMP1=TMPOLD
      IPELD=IPEL
      NORGD=NORG
      TAU=0.D0
      ESTM=0.D0
C
      DO 20 I=1,4
      DO 20 J=1,2
   20 ORIGD(I,J)=ORIG(I,J)
C
C
      DO 25 J=1,ISR
   25 DELEPS(J)=STRAIN(J) - EPS(J)
C
C
C
      CALL FUNCT2(Z1,Z2,H,XDM1,NOD5M,XDM2,XDUM,XDM3,NEL,IINTP)
      TEMP1=0.D0
      TEMP2=0.D0
C
      DO 30 K=1,IEL
      KK=NDS(K)
      TEMP2=TEMP2 + H(K)*TEMPV2(KK)
   30 TEMP1=TEMP1 + H(K)*TEMPV1(KK)
C
      CTEMP=TEMP2
C
C
      IF (IEQUIT.EQ.1 .AND. KPRI.NE.0) CTEMP=TEMP1
C
      DELTMP=CTEMP - TMPOLD
C
C
      CALL EMAT2(TMPOLD,PROP,PROP1,A1,B1,C1,D1,E1,F1,1)
C
      YM1=PROP1(1)
      ET1=PROP1(4)
      YS1=PROP1(3)
C
      EET1=YM1*ET1/(YM1 - ET1)
C
C
   40 DELT=DTMN
      IF(KCRP.EQ.0.AND.NALG.EQ.2) DELT=DTT
C
C
   60 XFAC=(TAU + DELT)/DTT
      DO 65 J=1,ISR
      EPS2(J)=EPS(J) + XFAC*DELEPS(J)
   65 DEPS(J)=EPS2(J) - EPS1(J)
C
C
      TMP2=TMPOLD + XFAC*DELTMP
      TMPM=XPARM1*TMP1 + XPARM2*TMP2
C
      CALL EMAT2(TMP2,PROP,PROP2,A2,B2,C2,D2,E2,F2,2)
C
C
      ALPHA2=PROP2(5)
C
      EPST2(1)=ALPHA2*(TMP2 - TREF)
      EPST2(2)=EPST2(1)
      EPST2(4)=EPST2(1)
C
C
      IF(KCRP.EQ.0) GO TO 95
C
   70 DO 75 J=1,IST
   75 STRSSM(J)=XPARM1*STRSS1(J) + XPARM2*STRSS2(J)
C
C
      DO 80 J=1,4
   80 DPSC(J)=0.D0
      CRSRM=0.D0
C
      CALL EFST(ESTM,SXM,SYM,SXYM,SZM,STRSSM)
      IF(ESTM.LE.TOL5.AND.INDEX.GT.1) GO TO 95
C
      DO 90 J=1,4
   90 EPSCM(J)=XPARM1*EPSC1(J) + XPARM2*EPSC2(J)
C
      CALL CREEP2(DELT,DPSC,TMPM,EPSCM,ORIGD,NORGD,STRSSM,
     1            GAMA,CRSRM,PTIME,ESTM,SXM,SYM,SXYM,SZM,FF,RR,GG,FP,
     2            INDEX,ECSTRM)
C
      IF(INDEX.EQ.1) ECSTR1=ECSTRM
C
C
   95 CALL SIGMA2(STRSS2,EPS2,EPSP2,EPST2,EPSC1,EPSC2,DPSC,GAMA,PTIME,
     1            CRSRM,FF,RR,GG,FP,ESTM,SXM,SYM,SXYM,SZM,DELT,B2,C2,D2)
C
C
C
  100 IF(KCRP.EQ.0) GO TO 215
      IF(XPARM2.EQ.0.D0) GO TO 205
      IF(ITCHK.EQ.1) GO TO 120
C
      INDEX=INDEX + 1
      IF(INDEX.LE.NITE) GO TO 70
      GO TO 205
C
C     STRESS VECTOR **
C
  120 IF(INDEX - 4) 122,135,125
C
  122 INDEX=INDEX + 1
      GO TO 70
C
  125 DNORM2=0.D0
      DO 130 J=1,IST
  130 DNORM2=DNORM2 + (STRSS2(J) - STRSSD(J))*(STRSS2(J) - STRSSD(J))
C
C
  135 SNORM=0.D0
      DO 140 J=1,IST
  140 SNORM=SNORM + STRSS2(J)*STRSS2(J)
C
C
      IF(INDEX.GT.5) GO TO 155
      SNORM2=SNORM
      IF(INDEX.EQ.4) SNORM1=SNORM2
      IF(INDEX.EQ.5) DNORM1=DNORM2
      INDEX=INDEX + 1
C
      DO 150 J=1,IST
  150 STRSSD(J)=STRSS2(J)
      GO TO 70
C
C
C
C
  155 IF(DNORM2.LE.DNORM1) GO TO 185
C
C     TOLERANCE BAND
C
      XTOL=TOL3*SNORM1
      IF(SNORM1.LE.TOL2) XTOL=TOL2
      IF(DNORM1.LE.XTOL.AND.DNORM2.LE.XTOL) GO TO 205
C
C     (NALG .EQ. 2) *
C
      DELT=DELT*(SQRT(DNORM1/DNORM2))/SUBDD
      IF(NALG.EQ.2.AND.ISUB.LT.ISUBM) GO TO 170
C
      write(66,3004)
      write(66,3002) NEL,IPT,ISUB,TAU,DELT
      STOP
C
C
  170 INDEX=1
C
      DO 180 I=1,4
      STRSS2(I)=STRSS1(I)
  180 EPSC2(I)=EPSC1(I)
C
      GO TO 60
C
C
  185 XTOL=TOL1*SNORM1
      IF(SNORM1.LE.TOL2) XTOL=TOL2
      IF(DNORM1.LE.XTOL) GO TO 205
C
C     NO CONVERGENCE
C
  190 INDEX=INDEX + 1
      IF(INDEX.LE.NITE) GO TO 195
C
      write(66,3001)
      write(66,3011) NEL,IPT,ISUB,TAU,DELT
      STOP
C
  195 DNORM1=DNORM2
      SNORM1=SNORM2
      SNORM2=SNORM
C
      DO 200 J=1,IST
  200 STRSSD(J)=STRSS2(J)
      GO TO 70
C
C
C
C
C
  205 IF (NALG.EQ.1) GO TO 215
      DECSTR=CRSRM*DELT
      IF(DECSTR.LE.TOL5 .OR. ECSTR1.LE.TOL5) GO TO 215
C
      CHECK=DECSTR/(ECSTR1*TOLPC)
      IF(CHECK.LE.1.1D0) GO TO 215
C
C
      DELT=DELT/CHECK
      IF(NALG.EQ.2.AND.ISUB.LT.ISUBM) GO TO 208
C
      write(66,3006)
      write(66,3002) NEL,IPT,ISUB,TAU,DELT
      STOP
C
C
  208 INDEX=1
C
      DO 210 I=1,4
      EPSC2(I)=EPSC1(I)
  210 STRSS2(I)=STRSS1(I)
C
      GO TO 60
C
C
C     PLASTICITY) **
C
  215 CALL EFST(EST2,SX2,SY2,SXY2,SZ2,STRSS2)
C
      DO 218 I=1,IST
  218 DELSIG(I)=STRSS2(I) - STRSS1(I)
C
      CALL EFST(EST,DX,DY,DXY,DZ,DELSIG)
C
C
      IF(MODEL.EQ.10) GO TO 220
C
      SX2=SX2 - ALFA1(1)
      SY2=SY2 - ALFA1(2)
      SXY2=SXY2 - ALFA1(3)
      SZ2=SZ2 - ALFA1(4)
C
C
  220 YM2=PROP2(1)
      ET2=PROP2(4)
      YS2=PROP2(3)
C
      EET2=YM2*ET2/(YM2 - ET2)
C
      DYLD=YS2 - YS1
      IF(MODEL.EQ.10) DYLD=DYLD + (EET2 - EET1)*EPSTR1
      YLD2=YLD1 + DYLD
C
  225 RA=DX*DX + DY*DY + DZ*DZ + 2.0*DXY*DXY
      FTA=SX2*SX2 + SY2*SY2 + SZ2*SZ2 + 2.0*SXY2*SXY2
C
C
      IF(RA.EQ.0.D0 .AND. TMP1.EQ.TMP2) GO TO 228
C
      FTB=XCON1*YLD2*YLD2
      IF(FTA.GT.FTB) GO TO 250
C
C
      IPELD=1
  228 TAU=TAU + DELT
C
C
      IF(NALG.EQ.2) GO TO 230
C
C     NALG .EQ. 1 *
C
      IF(ISUB.EQ.ISUBM) GO TO 248
      GO TO 235
C
C    NALG .EQ. 2 *
C
  230 IF(TAU.GE.TCHK.OR.KCRP.EQ.0) GO TO 248
      IF(DECSTR.LE.TOL5) GO TO 232
C
      DELT=DELT*TOLPC*(1.0 + (ECSTR1/DECSTR))
      IF(TAU + DELT.GE.TCHK) DELT=DTT - TAU

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -