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

📄 a04b.for

📁 ADINA84有限元编程学习的好例子
💻 FOR
📖 第 1 页 / 共 5 页
字号:
   80 CONTINUE
C
      DO 85 I=1,NDOFL
   85 DUM(I)=EDIS(I)
      DO 90 I=1,IEL
      I2=2*I
      I3=3*I
      EDIS(I3-2)=T(1,1)*DUM(I2-1) + T(2,1)*DUM(I2)
      EDIS(I3-1)=T(1,2)*DUM(I2-1) + T(2,2)*DUM(I2)
      EDIS(I3  )=T(1,3)*DUM(I2-1) + T(2,3)*DUM(I2)
   90 CONTINUE
C
      RETURN
C
C
  100 NDIM3=NDOFG*(NDOFG+1)/2
      DO 102 I=1,NDIM3
  102 DUM(I)=0.D0
      I=1
      KG1=1
      KG2=1
      KG3=2
      DO 120 L=1,IEL
      IP=I+1
      I1=I-1
      J =(I1+I1)/3 + 1
      J1=J-1
      ND2=NDOFL*J1 - (J1-1)*J1/2 + 1
      ND3=NDOFG*I1 - (I1-1)*I1/2 + 1
      NDG=NDOFG*IP - IP*I/2 + 1
      LD2=0
      LD3=0
      LDG=0
      DO 130 K=L,IEL
      DUM(ND3+LD3)=S(ND2+LD2) + SGNL(KG1)
      DUM(ND3+LD3+1)=S(ND2+LD2+1)
      DUM(NDG+LDG)=SGNL(KG1)
      KG1=KG1+1
      LDG=LDG+3
      LD2=LD2+2
  130 LD3=LD3+3
      L1=L-1
      LP=L+1
      MD3=ND3 + NDOFG - 3*L1
      MD2=ND2 + NDOFL - L1 - L1
      DUM(MD3)=S(MD2) + SGNL(KG2)
      IF (LP.GT.IEL) GO TO 120
      KG2=KG2 + IEL - L1
      LD2=1
      LD3=2
      DO 140 K=LP,IEL
      DUM(MD3+LD3)=S(MD2+LD2)
      DUM(MD3+LD3+1)=S(MD2+LD2+1) + SGNL(KG3)
      KG3=KG3+1
      LD2=LD2+2
  140 LD3=LD3+3
      KG3=KG3+1
  120 I=I+3
C
C
      IR=0
      DO 160 K=1,IEL
  160 ILSK(K)=1
      DO 180 I=1,3
      DO 182 J=1,3
  182 TMA(J+IR)=T(J,I)
  180 IR=IR+3
C
      CALL ATKA (TMA,DUM,ILSK,IEL,3)
C
      DO 190 I=1,NDIM3
  190 S(I)=DUM(I)
C
C
      RETURN
C
      END
      SUBROUTINE QUADS (ND,B,S,YZ,PROP,RE,EDIS,EDISI,IDW,WA,NOD5)
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 /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
     1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
      COMMON /TODIM/ BET,THIC,DE,IEL,NND5,ISOCOR
      COMMON /MATMOD/ STRESS(4),STRAIN(4),D(4,4),IPT,NEL,IPS,ISVE
      COMMON /DISDER/ DISD(5)
      COMMON /GAUSS/ XG(6,6),WGT(6,6),EVAL2(9,2),EVAL3(27,3),E1,E2,E3
      COMMON /GNLSTF/ SGNL(45)
C
      DIMENSION B(4,*),S(*),YZ(*),RE(*),EDIS(*),PROP(*),WA(*),NOD5(*)
      DIMENSION DB(4),XX(18),BS(4,18),DI(4,4),EDISI(*)
C
      EQUIVALENCE (NPAR(10),NINT),(NPAR(5),ITYP2D),(NPAR(3),INDNL)
      EQUIVALENCE (NPAR(15),MODEL)
C
C
      NPT=NINT*NINT
      IST=4
      IF (ITYP2D.NE.0) IST=3
      KST=IST-1
C
      IF (IND.GE.4) GO TO 100
C
C
C
C
      CALL STSTL (NEL,YZ,PROP,D)
C
      DO 10 LX=1,NINT
      E1=XG(LX,NINT)
      DO 10 LY=1,NINT
      E2=XG(LY,NINT)
      WT=WGT(LX,NINT)*WGT(LY,NINT)
C
C
      CALL DERIQ (NEL,YZ,B,DET,E1,E2,XBAR,NOD5)
C
C
      IF (IST.EQ.3) XBAR=THIC
      FAC=WT*XBAR*DET
C
      KL=1
      DO 50 J=1,ND,2
      DO 52 K=1,3
      DB(K)=D(K,1)*B(1,J) + D(K,3)*B(3,J)
   52 DB(K)=DB(K)*FAC
      DO 51 I=J,ND,2
      S(KL)=S(KL) + B(1,I)*DB(1) + B(3,I)*DB(3)
      KL=KL + 1
      S(KL)=S(KL) + B(2,I+1)*DB(2) + B(3,I+1)*DB(3)
   51 KL=KL + 1
   50 KL=KL + ND - J
C
      KL=ND + 1
      DO 54 J=2,ND,2
      DO 56 K=1,3
      DB(K)=D(K,2)*B(2,J) + D(K,3)*B(3,J)
   56 DB(K)=DB(K)*FAC
      KS=KL
      DO 55 I=J,ND,2
      S(KS)=S(KS) + B(2,I)*DB(2) + B(3,I)*DB(3)
   55 KS=KS + 2
      IF (J-ND) 57,54,54
   57 K=J + 1
      KS=KL + 1
      DO 58 II=K,ND,2
      S(KS)=S(KS) + B(1,II)*DB(1) + B(3,II)*DB(3)
   58 KS=KS + 2
   54 KL=KL + 2*ND - 2*J + 1
C
      IF (IST.EQ.3) GO TO 10
      KL=1
      DO 60 J=1,ND,2
      DB(1)=D(1,4)*B(4,J)*FAC
      DB(2)=D(2,4)*B(4,J)*FAC
      DB(3)=D(3,4)*B(4,J)*FAC
      DB(4)=D(4,1)*B(1,J) + D(4,3)*B(3,J) + D(4,4)*B(4,J)
      DB(4)=DB(4)*FAC
      DO 61 I=J,ND,2
      S(KL)=S(KL) + B(1,I)*DB(1) + B(3,I)*DB(3) + B(4,I)*DB(4)
      KL=KL + 1
      S(KL)=S(KL) + B(2,I+1)*DB(2) + B(3,I+1)*DB(3)
   61 KL=KL + 1
   60 KL=KL + ND - J
      KL=ND + 1
      DO 59 J=2,ND,2
      DB(4)=D(4,2)*B(2,J) + D(4,3)*B(3,J)
      DB(4)=DB(4)*FAC
      DO 62 I=J,ND
      S(KL)=S(KL) + B(4,I)*DB(4)
   62 KL=KL + 1
   59 KL=KL + ND - J
C
   10 CONTINUE
C
      RETURN
C
C
C
C
C
  100 IF (INDNL.LE.2) GO TO 122
      IF (ITYP2D.LE.2) GO TO 118
      DO 116 I=1,ND
  116 XX(I)=YZ(I)
      GO TO 122
  118 DO 120 J=1,ND
  120 XX(J) = YZ(J) + EDIS(J)
C
C
  122 IF (MODEL.GT.2) GO TO 125
      IF (INDNL.LE.2) GO TO 124
      CALL STSTL (NEL,XX,PROP,D)
      GO TO 125
  124 CALL STSTL (NEL,YZ,PROP,D)
C
C
C
C
  125 DO 300 LX=1,NINT
      E1=XG(LX,NINT)
      DO 300 LY=1,NINT
      E2=XG(LY,NINT)
      WT=WGT(LX,NINT)*WGT(LY,NINT)
      IPT=(LX-1)*NINT + LY
      IF (INDNL.EQ.3) GO TO 200
C
C
C
C
C
      CALL DERIQ (NEL,YZ,B,DET,E1,E2,XBAR,NOD5)
C
C
      DO 130 I=1,5
  130 DISD(I)=0.D0
      DO 140 J=2,ND,2
      I=J - 1
      DISD(1)=DISD(1) + B(1,I)*EDIS(I)
      DISD(2)=DISD(2) + B(2,J)*EDIS(J)
      DISD(3)=DISD(3) + B(3,I)*EDIS(I)
  140 DISD(4)=DISD(4) + B(3,J)*EDIS(J)
      IF (IST.EQ.3) GO TO 160
      DO 150 I=1,ND,2
  150 DISD(5)=DISD(5) + B(4,I)*EDIS(I)
C
C
  160 CALL STSTN (YZ,PROP,DISD,IDW,WA)
C
      IF (INDNL.LE.1) GO TO 221
C
C
      DO 164 J=2,ND,2
      I=J - 1
      BS(1,I)=B(1,I) + B(1,I)*DISD(1)
      BS(1,J)=B(1,I)*DISD(4)
      BS(2,I)=B(2,J)*DISD(3)
      BS(2,J)=B(2,J) + B(2,J)*DISD(2)
      BS(3,I)=B(3,I) + B(3,I)*DISD(1) + B(3,J)*DISD(3)
  164 BS(3,J)=B(3,J) + B(3,I)*DISD(4) + B(3,J)*DISD(2)
      IF (IST.EQ.3) GO TO 167
      DO 166 I=1,ND,2
      J=I + 1
      BS(4,J)=0.D0
  166 BS(4,I)=B(4,I) + B(4,I)*DISD(5)
C
C
  167 IF (IST.EQ.3) XBAR=THIC
      FAC=WT*XBAR*DET
      TAU11=STRESS(1)*FAC
      TAU22=STRESS(2)*FAC
      TAU12=STRESS(3)*FAC
      TAU33=STRESS(4)*FAC
      DO 170 I=1,ND
  170 RE(I)=RE(I) + BS(1,I)*TAU11 + BS(2,I)*TAU22 + BS(3,I)*TAU12
      IF (IST.EQ.3) GO TO 176
      DO 174 J=1,ND,2
  174 RE(J)=RE(J) + BS(4,J)*TAU33
C
  176 IF (ICOUNT - 2) 178,178,300
  178 IF (IREF) 300,179,300
C
C
  179 DO 183 I=1,IST
      DO 183 J=I,IST
      DI(I,J)=D(I,J)*FAC
  183 DI(J,I)=DI(I,J)
      KL=0
      DO 180 J=1,ND
      DO 182 K=1,IST
      DB(K)=0.D0
      DO 184 L=1,IST
  184 DB(K)=DB(K) + DI(K,L)*BS(L,J)
  182 CONTINUE
C
      DO 180 I=J,ND
      KL=KL + 1
      DUM=0.D0
      DO 186 K=1,IST
  186 DUM=DUM + BS(K,I)*DB(K)
  180 S(KL)=S(KL) + DUM
C
      GO TO 365
C
C
C
C
C
  200 CALL DERIQ (NEL,XX,B,DET,E1,E2,XBAR,NOD5)
C
C
C
      IF (MODEL.GT.1) GO TO 215
      DO 210 I=1,5
  210 DISD(I)=0.D0
      DO 212 J=2,ND,2
      I=J - 1
      DISD(1)=DISD(1) + B(1,I)*EDIS(I)
      DISD(2)=DISD(2) + B(2,J)*EDIS(J)
      DISD(3)=DISD(3) + B(3,I)*EDIS(I)
  212 DISD(4)=DISD(4) + B(3,J)*EDIS(J)
      IF (IST.EQ.3) GO TO 216
      DO 214 I=1,ND,2
  214 DISD(5)=DISD(5) + B(4,I)*EDIS(I)
      GO TO 216
C
C
  215 DO 217 I=1,5
  217 DISD(I)=0.D0
      DO 218 J=2,ND,2
      I=J - 1
      DISD(1)=DISD(1) + B(1,I)*EDISI(I)
      DISD(2)=DISD(2) + B(2,J)*EDISI(J)
      DISD(3)=DISD(3) + B(3,I)*EDISI(I)
  218 DISD(4)=DISD(4) + B(3,J)*EDISI(J)
      IF (IST.EQ.3) GO TO 216
      DO 219 I=1,ND,2
  219 DISD(5)=DISD(5) + B(4,I)*EDISI(I)
C
C
  216 CALL STSTN (XX,PROP,DISD,IDW,WA)
C
  221 IF (ITYP2D.EQ.0) GO TO 222
      XBAR=THIC
      IF (INDNL.LE.1 .OR. ITYP2D.EQ.1) GO TO 222
      IF (MODEL.GT.1) GO TO 223
      EXT=1.0 - 2.0*STRAIN(4)
      XBAR=XBAR/SQRT(EXT)
      GO TO 222
C
  223 XBAR=THIC*EXP(STRAIN(4))
C
  222 FAC=WT*XBAR*DET
C
C
      TAU11=STRESS(1)*FAC
      TAU22=STRESS(2)*FAC
      TAU12=STRESS(3)*FAC
      TAU33=STRESS(4)*FAC
      DO 340 J=2,ND,2
      I=J - 1
      RE(I)=RE(I) + B(1,I)*TAU11 + B(3,I)*TAU12
  340 RE(J)=RE(J) + B(2,J)*TAU22 + B(3,J)*TAU12
      IF (IST.EQ.3) GO TO 350
      DO 345 J=1,ND,2
  345 RE(J)=RE(J) + B(4,J)*TAU33
C
  350 IF (ICOUNT-2) 220,220,300
  220 IF (IREF) 300,230,300
C
C
  230 DO 232 I=1,IST
      DO 232 J=I,IST
      DI(I,J)=D(I,J)*FAC
  232 DI(J,I)=DI(I,J)
      KL=1
      DO 250 J=1,ND,2
      DO 252 K=1,3
  252 DB(K)=DI(K,1)*B(1,J) + DI(K,3)*B(3,J)
      DO 251 I=J,ND,2
      S(KL)=S(KL) + B(1,I)*DB(1) + B(3,I)*DB(3)
      KL=KL + 1
      S(KL)=S(KL) + B(2,I+1)*DB(2) + B(3,I+1)*DB(3)
  251 KL=KL + 1
  250 KL=KL + ND - J
      KL=ND + 1
C
      DO 254 J=2,ND,2
      DO 256 K=1,3
  256 DB(K)=DI(K,2)*B(2,J) + DI(K,3)*B(3,J)
      KS=KL
      DO 255 I=J,ND,2
      S(KS)=S(KS) + B(2,I)*DB(2) + B(3,I)*DB(3)
  255 KS=KS + 2
      IF (J-ND) 257,254,254
  257 K=J + 1
      KS=KL + 1
      DO 258 II=K,ND,2
      S(KS)=S(KS) + B(1,II)*DB(1) + B(3,II)*DB(3)
  258 KS=KS + 2
  254 KL=KL + 2*ND - 2*J + 1
C
      IF (IST.EQ.3) GO TO 365
      KL=1
      DO 260 J=1,ND,2
      DB(1)=DI(1,4)*B(4,J)
      DB(2)=DI(2,4)*B(4,J)
      DB(3)=DI(3,4)*B(4,J)
      DB(4)=DI(4,1)*B(1,J) + DI(4,3)*B(3,J) + DI(4,4)*B(4,J)
      DO 261 I=J,ND,2
      S(KL)=S(KL) + B(1,I)*DB(1) + B(3,I)*DB(3) + B(4,I)*DB(4)
      KL=KL + 1
      S(KL)=S(KL) + B(2,I+1)*DB(2) + B(3,I+1)*DB(3)
  261 KL=KL + 1
  260 KL=KL + ND - J
      KL=ND + 1
      DO 259 J=2,ND,2
      DB(4)=DI(4,2)*B(2,J) + DI(4,3)*B(3,J)
      DO 262 I=J,ND
      S(KL)=S(KL) + B(4,I)*DB(4)
  262 KL=KL + 1
  259 KL=KL + ND - J
C
C
C
C
C
  365 IF (INDNL.EQ.1) GO TO 300
      IF (ITYP2D.EQ.3) GO TO 500
C
      KL=1
      DO 400 J=1,ND,2
      DB1=TAU11*B(1,J) + TAU12*B(3,J)
      DB2=TAU12*B(1,J) + TAU22*B(3,J)
C
      KS=KL
      DO 401 I=J,ND,2
      KSS=KS + ND - J + 1
      DUM=B(1,I)*DB1 + B(3,I)*DB2
      S(KS)=S(KS) + DUM
      S(KSS)=S(KSS) + DUM
  401 KS=KS + 2
  400 KL=KL + 2*ND - 2*J + 1
C
      IF (IST.EQ.3) GO TO 300
      KL=1
      DO 420 J=1,ND,2
      DB3=TAU33*B(4,J)
      DO 421 I=J,ND,2
      S(KL)=S(KL) + DB3*B(4,I)
  421 KL=KL + 2
  420 KL=KL + ND - J
      GO TO 300
C
  500 KS=1
      DO 510 J=1,ND,2
      DB1=TAU11*B(1,J) + TAU12*B(3,J)
      DB2=TAU12*B(1,J) + TAU22*B(3,J)
      DO 512 I=J,ND,2
      SGNL(KS)=SGNL(KS) + B(1,I)*DB1 + B(3,I)*DB2
  512 KS=KS+1
  510 CONTINUE
C
  300 CONTINUE
C
C
      RETURN
      END
      SUBROUTINE QUADM (NEL,ND,XM,CM,XX,NOD5)
C
C
C
C
C***ADD:DPR***
      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 /TODIM/ BET,THIC,DE,IEL,NND5,ISOCOR
      COMMON /GAUSS/ XG(6,6),WGT(6,6),EVAL2(9,2),EVAL3(27,3),E1,E2,E3
      DIMENSION CM(*),XM(27),D(18),XX(2,9),NOD5(*)
      DIMENSION H(9),P(2,9),XJ(2,2)
C
      EQUIVALENCE (NPAR(5),ITYP2D)
C
C
C
      IINTP=0
      IF (IMASS.EQ.1) GO TO 9
      DO 08 I=1,378
    8 CM(I)=0.D0
    9 DO 7 I=1,ND
    7 XM(I)=0.D0
C
      DO 100 LX=1,3
      R=XG(LX,3)

⌨️ 快捷键说明

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