home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / e / e001 / 1.ddi / TMP / ADINA12.FOR < prev    next >
Encoding:
Text File  |  1991-01-07  |  218.8 KB  |  7,579 lines

  1. C *CDC* *DECK DIRCOS
  2. C *UNI* )FOR,IS N.DIRCOS,R.DIRCOS
  3.       SUBROUTINE DIRCOS (RSDCOS,EDIS,ISKEW,NODES,NDPN,IPER)
  4. C
  5. C     THIS SUBROUTINE TRANSFORMS DISPLACEMENTS FROM SKEW
  6. C     CO-ORDINATE DIRECTIONS TO GLOBAL CO-ORDINATE DIRECTIONS
  7. C     AND VICE VERSA FOR FORCES
  8. C
  9.       IMPLICIT REAL*8 (A-H,O-Z)
  10. C
  11.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  12.      1            ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  13.       COMMON /XATKA/ LMID(32)
  14.       DIMENSION RSDCOS(9,1),EDIS(1),ISKEW(1),ED(3)
  15. C
  16.       IF (NPAR(1).EQ.7) GO TO 10
  17.       DO 5 I=1,NODES
  18.     5 LMID(I)=1
  19. C
  20.    10 JUMD=0
  21.       NF=0
  22.       IF (NDPN.EQ.2) NF=4
  23. C
  24.       DO 100 N=1,NODES
  25.       NR=ISKEW(N)
  26.       IF (NR) 200,100,20
  27.    20 L=NDPN*(N-1) + JUMD
  28.       DO 25 I=1,NDPN
  29.    25 ED(I)=EDIS(L+I)
  30. C
  31.       IF (IPER.EQ.2) GO TO 70
  32. C
  33. C     DISPLACEMENT TRANSFORMATION
  34. C
  35.       DO 50 I=1,NDPN
  36.       LI=L+I
  37.       EDIS(LI)=0.
  38.       MM=NF+I
  39.       DO 40 J=1,NDPN
  40.       EDIS(LI)=EDIS(LI) + RSDCOS(MM,NR)*ED(J)
  41.    40 MM=MM+3
  42.    50 CONTINUE
  43.       GO TO 100
  44. C
  45. C     FORCE TRANSFORMATION
  46. C
  47.    70 MM=NF+1
  48.       DO 80 I=1,NDPN
  49.       LI=L+I
  50.       EDIS(LI)=0.
  51.       DO 75 J=1,NDPN
  52.       EDIS(LI)=EDIS(LI) + RSDCOS(MM,NR)*ED(J)
  53.    75 MM=MM+1
  54.    80 MM=MM + (3-NDPN)
  55. C
  56. C
  57.       IF (LMID(N).LT.0) JUMD=JUMD + 2
  58.   100 CONTINUE
  59. C
  60.   200 RETURN
  61. C
  62. C
  63.       END
  64. C *CDC* *DECK ADDMA
  65. C *UNI* )FOR,IS  N.ADDMA,  R.ADDMA
  66.       SUBROUTINE ADDMA (A,S,LM,ND)
  67. C
  68.       IMPLICIT REAL*8 (A-H,O-Z)
  69.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  70.       COMMON /DPR/ ITWO
  71.       COMMON /DISCON/ NDISCE,NIDM
  72.       COMMON /FACDBL/ JFAC
  73.       COMMON AA(1)
  74.       REAL AA
  75.       INTEGER IA(1)
  76.       EQUIVALENCE (AA(1),IA(1))
  77.       DIMENSION A(1),S(1),LM(1)
  78. C
  79. C
  80. C     ADD ELEMENT MASS TO GLOBAL LUMPED MASS VECTOR
  81. C
  82.       DO 100 I=1,ND
  83.       II=LM(I)
  84.       IF (II) 50,100,110
  85. C
  86. C     TRANSFER MASS FROM CONSTRAINED DEGREE OF FREEDOM
  87. C
  88.    50 NCE=-II
  89.       NID=IA(N01 + NCE - 1)
  90.       NN=N02 + (NCE - 1)*NIDM - 1
  91.       MM=N03 + ((NCE - 1)*NIDM - 1)*ITWO
  92.       DO 70 J=1,NID
  93.       II=IA(NN + J)
  94.       FAC=DOUBLE(AA(MM + J*ITWO))
  95.       FACTOR=FAC*FAC
  96.       IF (JFAC.EQ.1) FACTOR=FAC
  97.       A(II)=A(II) + S(I)*FACTOR
  98.    70 CONTINUE
  99.       GO TO 100
  100. C
  101.   110 A(II)=A(II) + S(I)
  102.   100 CONTINUE
  103.       RETURN
  104. C
  105.       END
  106. C *CDC* *DECK MULT
  107. C *UNI* )FOR,IS  N.MULT,   R.MULT
  108.       SUBROUTINE MULT (A,B,C,MAXA,NCOLBV,NEQ,MDIM,NBLOCK,NTAPE)
  109. C
  110. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  111. C .                                                                   .
  112. C .   P R O G R A M                                                   .
  113. C .     .  TO CALCULATE  A = A - B*C , WHERE B IS STORED IN           .
  114. C .        COMPACTED FORM  ,  A  AND  C  ARE VECTORS                  .
  115. C .                                                                   .
  116. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  117. C
  118.       IMPLICIT REAL*8 (A-H,O-Z)
  119.       DIMENSION A(1),B(MDIM),C(1)
  120.       INTEGER MAXA(1),NCOLBV(1)
  121. C
  122.       IF (NEQ.GT.1) GO TO 10
  123.       READ (NTAPE) B
  124.       A(1)=A(1) - B(1)*C(1)
  125.       RETURN
  126. C
  127.    10 NEQL=1
  128.       NEQR=0
  129.       MLA=0
  130.       DO 40 L=1,NBLOCK
  131.       READ (NTAPE) B
  132.       NEQR=NEQR + NCOLBV(L)
  133.       DO 100 I=NEQL,NEQR
  134.       KL=MAXA(I) - MLA
  135.       KU=MAXA(I+1) - 1 - MLA
  136.       II=I + 1
  137.       CC=C(I)
  138.       DO 100 KK=KL,KU
  139.       II=II - 1
  140.   100 A(II)=A(II) - B(KK)*CC
  141.       DO 200 I=NEQL,NEQR
  142.       KL=MAXA(I) + 1 - MLA
  143.       KU=MAXA(I+1) - 1 - MLA
  144.       IF (KU-KL) 200,210,210
  145.   210 II=I
  146.       AA=0.
  147.       DO 220 KK=KL,KU
  148.       II=II - 1
  149.   220 AA=AA + B(KK)*C(II)
  150.       A(I)=A(I) - AA
  151.   200 CONTINUE
  152.       NEQL=NEQL + NCOLBV(L)
  153.       MLA=MAXA(NEQL) - 1
  154.    40 CONTINUE
  155. C
  156.       RETURN
  157.       END
  158. C *CDC* *DECK CROSS
  159. C *UNI* )FOR,IS N.CROSS,R.CROSS
  160.       SUBROUTINE CROSS (X,Y,Z)
  161. C
  162. C     CROSS PRODUCT OF VECTORS X AND Y, STORED IN Z
  163. C
  164.       IMPLICIT REAL*8 (A-H,O-Z)
  165.       DIMENSION X(1),Y(1),Z(1)
  166. C
  167.       Z(1)=X(2)*Y(3)-X(3)*Y(2)
  168.       Z(2)=X(3)*Y(1)-X(1)*Y(3)
  169.       Z(3)=X(1)*Y(2)-X(2)*Y(1)
  170.       RETURN
  171. C
  172.       END
  173. C *CDC* *DECK ELEMNT
  174. C *UNI* )FOR,IS  N.ELEMNT, R.ELEMNT
  175.       SUBROUTINE ELEMNT
  176. C
  177. C
  178.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  179.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  180.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  181.       COMMON A(1)
  182.       REAL A
  183.       INTEGER IA(1)
  184.       EQUIVALENCE(A(1),IA(1))
  185. C
  186.       IF (IND.EQ.0) GO TO 110
  187.       NFIRST=N6
  188.       IF (IND.EQ.4) NFIRST=N10
  189.       DO 100 I=1,20
  190.   100 NPAR(I)=IA(NFIRST + I - 1)
  191. C
  192.   110 NPAR1=NPAR(1)
  193.       GO TO (1, 2, 3, 4, 5, 6, 7, 10, 10, 10, 11, 12, 13), NPAR1
  194. C
  195. C *CDC*     1 CALL OVERLAY (5HADINA, 2B,0B,6HRECALL)
  196.     1 CALL TRUSS
  197.       RETURN
  198. C
  199. C *CDC*     2 CALL OVERLAY (5HADINA, 3B,0B,6HRECALL)
  200.     2 CALL TODMFE
  201.       RETURN
  202. C
  203. C *CDC*    3 CALL OVERLAY (5HADINA, 4B,0B,6HRECALL)
  204.     3 CALL THREDM
  205.       RETURN
  206. C
  207. C *CDC*     4 CALL OVERLAY (5HADINA, 5B,0B,6HRECALL)
  208.     4 CALL BEAM
  209.       RETURN
  210. C
  211. C *CDC*     5 CALL OVERLAY (5HADINA, 6B,0B,6HRECALL)
  212.     5 CALL ISOBM
  213.       RETURN
  214. C
  215. C *CDC*     6 CALL OVERLAY (5HADINA, 7B,0B,6HRECALL)
  216.     6 CALL PLATE
  217.       RETURN
  218. C
  219. C *CDC*     7 CALL OVERLAY (5HADINA,10B,0B,6HRECALL)
  220.     7 CALL SHELL
  221.       RETURN
  222. C
  223. C *CDC*    10 CALL OVERLAY (5HADINA,13B,0B,6HRECALL)
  224.    10 CALL EMPTY
  225.       RETURN
  226. C
  227. C *CDC*    11 CALL OVERLAY (5HADINA,14B,0B,6HRECALL)
  228.    11 CALL TODMFL
  229.       RETURN
  230. C
  231. C *CDC*    12 CALL OVERLAY (5HADINA,15B,0B,6HRECALL)
  232.    12 CALL THDMFL
  233.       RETURN
  234. C
  235. C *CDC*    13 CALL OVERLAY (5HADINA,16B,0B,6HRECALL)
  236. C          NOT AVAILABLE TEMPORARILY
  237. C  13 CALL CONTAC
  238. C
  239.    13 CONTINUE
  240.       RETURN
  241. C
  242. C
  243.       END
  244. C *CDC* *DECK RSTART
  245. C *UNI* )FOR,IS  N.RSTART,      R.RSTART
  246.       SUBROUTINE RSTART (DISPE,DISP,VEL,ACC,EE,IGRBLC,NEQ,NBLOCK,KKK)
  247.       IMPLICIT REAL*8 (A-H,O-Z)
  248.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  249.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  250.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  251.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  252.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  253.       COMMON /MIDSYS/ NMIDSS,MIDIND,MAXMSS
  254.       COMMON /RANDI/ N0A,N1D,IELCPL
  255.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  256.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  257.       COMMON /VAR/ NEG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,IREF,
  258.      1             IEQUIT,IPRI,KPLOTN,KPLOTE
  259.       COMMON /CONST/ DT,DTA,CONS(21),DTOD,IOPE
  260.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  261.       COMMON /PORT/ INPORT,JNPORT,NPUTSV,LUNODE,LU1,LU2,LU3,JDC,JVC,JAC
  262. C
  263.       DIMENSION DISPE(NEQ),DISP(NEQ),VEL(NEQ),ACC(NEQ),EE(1),
  264.      1          IGRBLC(NBLOCK,1)
  265.       REAL EE
  266.       COMMON A(1)
  267.       REAL A
  268.       INTEGER IA(1)
  269.       EQUIVALENCE (A(1),IA(1))
  270.       DATA RECLB1/8HRNORMALS/
  271. C
  272.       IF (KKK.EQ.2) GO TO 200
  273. C
  274.       IF (ISUB.GT.0) GO TO 160
  275.       REWIND 8
  276.       READ(8)
  277.       IF (KLIN.EQ.0) GO TO 150
  278. C
  279.       IF (NBLOCK.GT.1)
  280.      1 WRITE (8) ((IGRBLC(L,NG),L=1,NBLOCK),NG=1,NEGNL)
  281. C
  282.       NN=N1 - 1
  283.       IF (MAXMSS.GT.0)
  284.      1   WRITE (8) (A(I),I=N09,NN)
  285. C
  286.       DO 140 NG=1,NEGNL
  287.       NUMEST=IA(N0 + NG - 1)
  288. C
  289. C        * * * * *        R A N D O M  A C C E S S        * * *
  290. C
  291.       NREC2=NG
  292.       CALL READMS (2,EE,NUMEST,NREC2)
  293. C
  294. C        * * * * *        R A N D O M  A C C E S S        * * *
  295. C
  296.       WRITE (8) NUMEST,(EE(I),I=1,NUMEST)
  297.   140 CONTINUE
  298. C
  299.   150 WRITE (8) ISTAT
  300.       WRITE (8) DT
  301.   160 WRITE (8) DISP
  302.       IF (ISTAT.EQ.0) GO TO 188
  303.       IF (IOPE.EQ.3) GO TO 170
  304.       WRITE (8) VEL
  305.       WRITE (8) ACC
  306.       GO TO 188
  307.   170 WRITE (8) DISPE
  308.   188 RETURN
  309. C
  310. C     FOR RESTART JOBS READ IN NONLINEAR ELEMENT GROUP DATA CORRESPONDIN
  311. C    -G TO TIME=TSTART
  312. C
  313.   200 IF (NEGNL.EQ.0) GO TO 220
  314. C
  315.       IF (NBLOCK.GT.1)
  316.      1  READ (8) ((IGRBLC(L,NG),L=1,NBLOCK),NG=1,NEGNL)
  317. C
  318.       NN=N1 - 1
  319.       IF (MAXMSS.GT.0)
  320.      1   READ  (8) (A(I),I=N09,NN)
  321. C
  322. C***  DATA PORTHOLE (START)
  323. C
  324.       IF (MAXMSS.LE.0 .OR. JNPORT.EQ.0) GO TO 205
  325.       RECLAB = RECLB1
  326.       N1N09 = N1 - N09
  327.       IF (KPLOTN.EQ.0 .AND. JDC.NE.0)
  328.      1  WRITE (LUNODE) RECLAB,N1N09,(A(I),I=N09,NN)
  329.   205 CONTINUE
  330. C
  331. C***  DATA PORTHOLE (END)
  332. C
  333. C
  334.       DO 210 NG=1,NEGNL
  335.       READ (8) NUMEST,(EE(I),I=1,NUMEST)
  336.       IA(N0 + NG - 1)=NUMEST
  337. C
  338. C        * * * * *        R A N D O M  A C C E S S        * * *
  339. C
  340.       NREC2=NG
  341.       CALL WRITMS (2,EE,NUMEST,NREC2,-1)
  342. C
  343. C        * * * * *        R A N D O M  A C C E S S        * * *
  344. C
  345.   210 CONTINUE
  346.   220 IF (ISUB.GT.0) GO TO 240
  347.       READ (8) ISTATO
  348.       READ (8) DTOD
  349.   240 READ (8) DISP
  350. C
  351.       IF (ISTAT.EQ.0) GO TO 300
  352.       IF (ISTATO.EQ.ISTAT) GO TO 280
  353. C
  354.       DO 260 IEQ=1,NEQ
  355.       IF (IOPE.EQ.3) GO TO 250
  356.       VEL(IEQ)=0.
  357.       ACC(IEQ)=0.
  358.       GO TO 260
  359.   250 DISPE(IEQ)=DISP(IEQ)
  360.   260 CONTINUE
  361.       GO TO 300
  362. C
  363.   280 IF (IOPE.EQ.3) GO TO 290
  364.       READ (8) VEL
  365.       READ (8) ACC
  366.       GO TO 300
  367.   290 READ (8) DISPE
  368.   300 RETURN
  369. C
  370.       END
  371. C *CDC* *DECK ECHECK
  372. C *UNI* )FOR,IS N.ECHECK,R.ECHECK
  373.       SUBROUTINE ECHECK (LM,ND,ICODE,IUPDT)
  374. C
  375.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  376.       COMMON /DISCON/ NDISCE,NIDM
  377.       COMMON A(1)
  378.       REAL A
  379.       INTEGER IA(1)
  380.       EQUIVALENCE (A(1),IA(1))
  381. C
  382.       INTEGER LM(1)
  383.       COMMON /ADDB/ NEQL,NEQR,MLA,NBLOCK
  384. C
  385.       IUPDT=0
  386. C
  387.       ICODE=1
  388.       IF (NBLOCK.GT.1) GO TO 10
  389.       ICODE=0
  390.       RETURN
  391. C
  392.    10 DO 100 I=1,ND
  393.       II=LM(I)
  394.       IF (II) 15,40,40
  395. C
  396.    15 NCE=-II
  397.       NID=IA(N01 + NCE - 1)
  398.       NN=N02 + (NCE - 1)*NIDM - 1
  399.       DO 30 J=1,NID
  400.       II=IA(NN + J)
  401.       IF (II.GT.NEQR) IUPDT=1
  402.       IF (II - NEQL) 30,20,20
  403.    20 IF (II - NEQR) 25,25,30
  404.    25 ICODE=0
  405.    30 CONTINUE
  406.       GO TO 100
  407. C
  408.    40 IF (II.GT.NEQR) IUPDT=1
  409.       IF (II - NEQL) 100,50,50
  410.    50 IF (II - NEQR) 60,60,100
  411.    60 ICODE=0
  412.   100 CONTINUE
  413. C
  414.       RETURN
  415.       END
  416. C *CDC* *DECK TCHECK
  417. C *UNI* )FOR,IS  N.TCHECK, R.TCHECK
  418.       SUBROUTINE TCHECK (TTIME,ATIME)
  419. C
  420. C     THIS SUBROUTINE CHECKS THE TIME ON THE TEMPERATURE TAPE
  421. C     (TTIME) WITH THE TIME IN ADINA (ATIME)
  422. C
  423.       IMPLICIT REAL*8 (A-H,O-Z)
  424. C
  425.       IF(DABS(TTIME-ATIME).LT.1.0D-10) RETURN
  426. C
  427.       WRITE (6,2000) TTIME,ATIME
  428.       STOP
  429. C
  430.  2000 FORMAT (///,1X,41H@@STOP@@ INCOMPATIBILITY BETWEEN TIME OF
  431.      1               44HSOLUTION AND TIME AT WHICH THE TEMPERATURES
  432.      2               11HARE DEFINED //
  433.      3               12H TAPE TIME =,E15.8,14H  ADINA TIME =,E15.8  )
  434. C
  435.       END
  436. C *CDC* *DECK BLKCNT
  437. C *UNI* )FOR,IS N.BLKCNT, R.BLKCNT
  438.       SUBROUTINE BLKCNT(KSTEP,NUMBLK,KCNTL,IBLOCK,NSTE,INDEX)
  439. C
  440. C     PROGRAM TO DETERMINE THE VALUE (EITHER 0 OR 1) OF THE
  441. C        CONTROL VARIABLE FOR ANY OF THE FIVE CONTROLS - STIFFNESS
  442. C        REFORMATION, EQUILIBRIUM ITERATION, PRINT-OUT, NODAL
  443. C        RESPONSE SAVING AND ELEMENT RESPONSE SAVING.
  444. C
  445.       IMPLICIT REAL*8 (A-H,O-Z)
  446.       DIMENSION IBLOCK(3,10),RNAME(5)
  447. C
  448.       DATA RNAME /8HSTIFNESS, 8HITERATON, 8HPRINTOUT, 8HNODESAVE,
  449.      1           8HELMTSAVE/
  450.       KCNTL = 1
  451.       IF (NUMBLK .EQ. 0) RETURN
  452. C
  453.       DO 100 I=1,NUMBLK
  454.       IF(KSTEP.LE.IBLOCK(2,I)) GO TO 110
  455.   100 CONTINUE
  456.       WRITE (6,3000) RNAME(INDEX),NSTE
  457.       STOP
  458. C
  459.   110 NINT=(IBLOCK(2,I)-IBLOCK(1,I))/IBLOCK(3,I) + 1
  460.       DO 200 J=1,NINT
  461.       LCNTL=IBLOCK(1,I) + (J-1)*IBLOCK(3,I)
  462.       IF(KSTEP-LCNTL) 210,120,200
  463.   120 KCNTL = 0
  464.       GO TO 210
  465.   200 CONTINUE
  466. C
  467.   210 RETURN
  468. C
  469.  3000 FORMAT(1H1,21H ** STOP ** ERROR IN ,A10,58H BLOCK INPUT. FINAL STE
  470.      1P OF LAST BLOCK INPUT IS LESS THAN, I5)
  471.       END
  472. C *UNI* )FOR,IS N.WRITMS, R.WRITMS
  473.       SUBROUTINE WRITMS (NTAPE,AA,LNTH,NREC,KKK)
  474. C
  475. C     SUBROUTINE FOR R A N D O M  A C C E S S WRITING IN IBM
  476. C
  477.       COMMON /DPR/ ITWO
  478.       COMMON /RANDI/ N0A,N1D,IELCPL
  479.       COMMON /SRANDI/ N09A,N09B
  480.       COMMON /RANDAC/ NR(5),LR(5)
  481.       COMMON A(1)
  482.       REAL A,AA(1)
  483.       INTEGER IA(1)
  484.       EQUIVALENCE (A(1),IA(1))
  485. C
  486. C     OBTAIN RECORD NUMBER FROM BLANK COMMON
  487. C
  488.       LN=LNTH
  489.       GO TO (3, 2, 3, 3, 3, 3, 3, 3, 3,10, 3, 3, 3, 3, 3,16,17),
  490.      1       NTAPE
  491. C
  492.     3 WRITE (6,3000) NTAPE
  493.       STOP
  494.     2 NTM=1
  495.       NST=N0A
  496.       GO TO 20
  497.    10 NTM=2
  498.       NST=N1D
  499.       LN=LN*ITWO
  500.       GO TO 20
  501.    16 NTM=3
  502.       NST=N09A
  503.       LN=LN*ITWO
  504.       GO TO 20
  505.    17 NTM=4
  506.       NST=N09B
  507.       LN=LN*ITWO
  508. C
  509. C     BREAK CURRENT FORTRAN RECORD NREC INTO SMALLER
  510. C     LOGICAL RECORDS OF SIZE LR(NTM) AND WRITE ONTO TAPE NTAPE,
  511. C     STARTING FROM LOGICAL RECORD NUMBER IREC ONWARDS
  512. C
  513.    20 IREC=1
  514.       IF (NREC.GT.1) IREC=IA(NST + NREC - 1)
  515.       II=1
  516.    30 JJ=II - 1 + LR(NTM)
  517.       IF (JJ.GT.LN) JJ=LN
  518.       IF (IREC.GT.NR(NTM)) GO TO 998
  519. C
  520.       IDUM=IREC
  521.       WRITE (NTAPE'IDUM) (AA(I),I=II,JJ)
  522. C
  523.       IREC=IREC + 1
  524.       II=JJ + 1
  525.       IF (II.LE.LN) GO TO 30
  526.       IA (NST+NREC)=IREC
  527.       RETURN
  528. C
  529.   998 WRITE (6,3100) NTAPE,IREC,NR(NTM),NTM
  530.       STOP
  531. C
  532.  3000 FORMAT (1H1,39H ***STOP***, ERROR IN RANDOM ACCESS I/O,/,
  533.      1        41H SUBROUTINE WRITMS CALLED FOR UNIT NUMBER,I4,
  534.      2        36H WHICH IS NOT A RANDOM ACCESS DEVICE   )
  535.  3100 FORMAT (1H1,43H ***STOP***, LIMIT OF STORAGE ALLOCATED FOR
  536.      1 32H RANDOM ACCESS HAS BEEN REACHED.,/,12H FOR UNIT NO,I4,
  537.      2 22H CURRENT RECORD NUMBER,I5,8H EXCEEDS,I5,/,1X,
  538.      3 54HFOR EXECUTING THIS PROBLEM INCREASE DIMENSION OF NREC(
  539.      4 I2,23H) IN MAIN PROGRAM ADINA   )
  540. C
  541.       END
  542. C *UNI* )FOR,IS N.READMS, R.READMS
  543.       SUBROUTINE READMS (NTAPE,AA,LNTH,NREC)
  544. C
  545. C     SUBROUTINE FOR R A N D O M  A C C E S S READING IN IBM
  546. C
  547.       COMMON /DPR/ ITWO
  548.       COMMON /RANDI/ N0A,N1D,IELCPL
  549.       COMMON /SRANDI/ N09A,N09B
  550.       COMMON /RANDAC/ NR(5),LR(5)
  551.       COMMON A(1)
  552.       REAL A,AA(1)
  553.       INTEGER IA(1)
  554.       EQUIVALENCE (A(1),IA(1))
  555. C
  556. C     OBTAIN LOGICAL RECORD NUMBER FROM BLANK COMMON
  557. C
  558.       LN=LNTH
  559.       GO TO (3, 2, 3, 3, 3, 3, 3, 3, 3,10, 3, 3, 3, 3, 3,16,17),
  560.      1       NTAPE
  561. C
  562.     3 WRITE (6,3000) NTAPE
  563.       STOP
  564.     2 NTM=1
  565.       NST=N0A
  566.       GO TO 20
  567.    10 NTM=2
  568.       NST=N1D
  569.       LN=LN*ITWO
  570.       GO TO 20
  571.    16 NTM=3
  572.       NST=N09A
  573.       LN=LN*ITWO
  574.       GO TO 20
  575.    17 NTM=4
  576.       NST=N09B
  577.       LN=LN*ITWO
  578. C
  579. C     READ CURRENT FORTRAN RECORD FROM MORE THAN ONE LOGICAL
  580. C     RECORD OF LENGTH LR(NTM) FROM TAPE NTAPE, STARTING FROM
  581. C     LOGICAL RECORD IREC, IF NECESSARY.
  582. C
  583.    20 IREC=1
  584.       IF (NREC.GT.1) IREC=IA(NST + NREC - 1)
  585.       II=1
  586.    30 JJ=II - 1 + LR(NTM)
  587.       IF (JJ.GT.LN) JJ=LN
  588.       IF (IREC.GT.NR(NTM)) GO TO 998
  589. C
  590.       IDUM=IREC
  591.       READ (NTAPE'IDUM) (AA(I),I=II,JJ)
  592. C
  593.       IREC=IREC + 1
  594.       II=JJ + 1
  595.       IF (II.LE.LN) GO TO 30
  596.       RETURN
  597. C
  598.   998 WRITE (6,3100) NTAPE,IREC,NR(NTM),NTM
  599.       STOP
  600. C
  601.  3000 FORMAT (1H1,39H ***STOP***, ERROR IN RANDOM ACCESS I/O,/,
  602.      1        41H SUBROUTINE READMS CALLED FOR UNIT NUMBER ,I4,
  603.      2        36H WHICH IS NOT A RANDOM ACCESS DEVICE    )
  604.  3100 FORMAT (1H1,43H ***STOP***, LIMIT OF STORAGE ALLOCATED FOR
  605.      1 32H RANDOM ACCESS HAS BEEN REACHED.,/,12H FOR UNIT NO,I4,
  606.      2 22H CURRENT RECORD NUMBER,I5,8H EXCEEDS,I5,/,1X,
  607.      3 54HFOR EXECUTING THIS PROBLEM INCREASE DIMENSION OF NREC(
  608.      4 I2,23H) IN MAIN PROGRAM ADINA   )
  609. C
  610.       END
  611.       SUBROUTINE CPUINT
  612.       IMPLICIT REAL*8 (A-H,O-Z)
  613. C     CALL STIME
  614.       RETURN
  615.       END
  616. C *CDC* *DECK OVL10
  617. C *CDC*      OVERLAY (ADINA,1,0)
  618. C *CDC* *DECK ADINI
  619. C *UNI* )FOR,IS  N.ADINI, R.ADINI
  620. C *CDC*      PROGRAM ADINI
  621.       SUBROUTINE ADINI
  622. C
  623. C
  624.       IMPLICIT REAL*8 (A-H,O-Z)
  625.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  626.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  627.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  628.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  629.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  630.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  631.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  632.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  633.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  634.       COMMON /TEMP/ ISPEC
  635.       COMMON /MSUPER/ IMODES,NMODES,IMDAMP
  636.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  637.       COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
  638.      1             NPDIS,NTEMP
  639.       COMMON /DISCON/ NDISCE,NIDM
  640.       COMMON /TIMFN/ TEND,NTFN,NPTM
  641.       COMMON /JUNK/ IHED(18),MTOT,LPROG
  642.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  643.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  644.       COMMON /EQIT/ METHOD,IATKEN,NLSTPD,NLSTEP,ITEDIV,ISDVG
  645.       COMMON /EIGIF/ COFQ,RBMSH,IESTYP,NFREQ,NMODE,IFPR,IRBM
  646.       COMMON /SCRAP/ SHIFT,RLQ1,NLQ,NITE,NSTEP,JR,ICONV,NCEV,NP,NQ,IFSS
  647.       COMMON /FREQIF/ ISTOH,N1A,N1B,N1C,N1S
  648.       COMMON /NORMS/ RNORM,RENORM,RTOL,DTOL,STOL,SMAX,SMIN,
  649.      1               DMAX,DMIN,ETOL
  650.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  651.       COMMON /PRCONS/ IPRICS
  652.       COMMON /ADINAI/ OPVAR(7),TSTART,IRINT,ISTOTE
  653.       COMMON /TEMPRT/ TEMP1,TEMP2,ITEMPR,ITP96,N6A,N6B
  654.       COMMON /MDFRDM/ IDOF(6)
  655.       COMMON /DPR/ ITWO
  656.       COMMON /BLOCKS/ NSREFB,NEQITB,NPRIB,NODSVB,LEMSVB,ISREFB(3,10),
  657.      1                IEQITB(3,10),IPRIB(3,10),INODB(3,10),IELMB(3,10)
  658.       COMMON /SKEW/ NSKEWS
  659.       COMMON /PORT/ INPORT,JNPORT,NPUTSV,LUNODE,LU1,LU2,LU3,JDC,JVC,JAC
  660.       COMMON /PORTT/ JTC
  661.       COMMON /RANDI/ N0A,N1D,IELCPL
  662.       COMMON /MIDSYS/ NMIDSS,MIDIND,MAXMSS
  663.       COMMON /MPRNT/ IOUTPT,ISTPRT
  664.       COMMON /NMDATA/ KSET
  665.       COMMON A(1)
  666.       REAL A
  667.       INTEGER IA(1)
  668.       EQUIVALENCE (A(1),IA(1))
  669.       DIMENSION BLKNAM(5), WORD(6)
  670.       DATA WORD / 3H   ,3HNON,6HLINEAR,5H STAT,5HDYNAM,3HIC  /
  671.       DATA BLKNAM /8HSTIFNESS,8HITERATON,8HPRINTOUT,
  672.      1             8HNODESAVE,8HELMTSAVE/
  673.       DATA RECLB1/8HMASTERCP/,RECLB2/8HID-ARRAY/
  674.       DATA IFINAL /4HSTOP/
  675. C
  676. C
  677.       IF (ISUB.GT.0) GO TO 900
  678. C
  679. C
  680. C     R E A D   C O N T R O L   I N F O R M A T I O N
  681. C
  682. C
  683. C *CDC*   IREAD=50
  684. C
  685. C *CDC*   THE ABOVE CARD IS USED IF EDITING OF COMMENTS FROM
  686. C *CDC*   THE INPUT STREAM IS POSSIBLE
  687. C *CDC*   OTHERWISE THE FOLLOWING CARD IS ACTIVATED
  688. C *CDC*           IREAD=5
  689. C
  690.       IREAD=5
  691. C
  692.       IF (KSET.GT.0) IREAD=5
  693.       READ (IREAD,1000) IHED
  694.       IF (IHED(1).EQ.IFINAL) STOP
  695.       READ (IREAD,1003) NUMNP,(IDOF(I),I=1,6),NEGL,NEGNL,MODEX,NSTE,DT,
  696.      1              TSTART,IDATWR,NSUBST,NSKEWS,NMIDSS,ISTOTE
  697.       IF (NUMNP.EQ.0) STOP
  698.       IF (KSET.EQ.0) CALL INLIST (IDATWR,2)
  699.       READ (5,1001) IRINT,ITP96,INPORT,JNPORT
  700.       READ (5,1010) NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,
  701.      1              IDGRAV,NPDIS,NTEMP,NDISCE,NIDM
  702.       READ (5,1001) IMASS,IDAMP,IMASSN
  703.       READ (5,1002) IEIG,IESTYP,NFREQ,NQ,NMODE,IFPR,IRBM,RBMSH,COFQ
  704.       READ (5,1020) IMODES,IOPE,OPVAR(1),OPVAR(2),NMODES,IMDAMP
  705.       READ (5,1005) NSREFB,NEQITB,METHOD,IATKEN,ITEMAX,NLSTPD,DTOL,
  706.      1              RTOL,STOL,RNORM
  707.       READ (5,1010) IOUTPT,NPRIB,NPB,IDC,IVC,IAC,ISTPRT
  708.       READ (5,1010) NPUTSV,NODSVB,LEMSVB,LUNODE,LU1,LU2,LU3,JDC,JVC,JAC
  709.      1              ,JTC
  710. C
  711.       IF (NSREFB.EQ.0) GO TO 250
  712.       READ (5,1100)((ISREFB(I,J),I=1,3),J=1,NSREFB)
  713.       IF (NSTE.GT.0 .AND. ISREFB(1,1).EQ.0) ISREFB(1,1)=1
  714.       IF (ISREFB(2,1) .EQ. 0) ISREFB(2,1) = NSTE
  715.       IF (ISREFB(3,1) .EQ. 0) ISREFB(3,1) = 1
  716.       INDEX=1
  717.       IF (NSREFB.LE.1) GO TO 240
  718.       DO 230 I=2,NSREFB
  719.       J=I - 1
  720.       IF (ISREFB(1,J).GT.ISREFB(2,J)) GO TO 235
  721.       IF (ISREFB(1,I).GE.ISREFB(2,J)) GO TO 230
  722.       WRITE (6,3000) BLKNAM(INDEX),I,J
  723.       STOP
  724.   230 CONTINUE
  725.   240 J=NSREFB
  726.       IF (ISREFB(1,J).LE.ISREFB(2,J)) GO TO 245
  727.   235 WRITE (6,3004) BLKNAM(INDEX),J,J
  728.       STOP
  729.   245 IF (ISREFB(2,NSREFB).GE.NSTE) GO TO 250
  730.       WRITE (6,3001) BLKNAM(INDEX),ISREFB(2,NSREFB),NSTE
  731.       STOP
  732. C
  733. C
  734. C     SPECIAL CASE  (EQUATION SOLUTION TECHNIQUE)
  735. C     SPECIAL CASE   FOR NOW REARRANGE EQUATIONS ONLY FOR
  736. C     SUBSTRUCTURING
  737. C
  738.   250 ISPEC=1
  739.       IF (NSUBST.GT.0 .AND. IMASS.GT.0) ISPEC=0
  740.       IF (NEGNL.EQ.0) ISPEC=0
  741. C
  742.   260 IF (NEQITB.EQ.0) GO TO 350
  743.       READ (5,1100)((IEQITB(I,J),I=1,3),J=1,NEQITB)
  744.       IF (NSTE.GT.0 .AND. IEQITB(1,1).EQ.0) IEQITB(1,1)=1
  745.       IF (IEQITB(2,1) .EQ. 0) IEQITB(2,1) = NSTE
  746.       IF (IEQITB(3,1) .EQ. 0) IEQITB(3,1) = 1
  747.       INDEX=2
  748.       IF (NEQITB.LE.1) GO TO 340
  749.       DO 330 I=2,NEQITB
  750.       J=I - 1
  751.       IF (IEQITB(1,J).GT.IEQITB(2,J)) GO TO 335
  752.       IF (IEQITB(1,I).GE.IEQITB(2,J)) GO TO 330
  753.       WRITE (6,3000) BLKNAM(INDEX),I,J
  754.       STOP
  755.   330 CONTINUE
  756.   340 J=NEQITB
  757.       IF (IEQITB(1,J).LE.IEQITB(2,J)) GO TO 345
  758.   335 WRITE (6,3004) BLKNAM(INDEX),J,J
  759.       STOP
  760.   345 IF (IEQITB(2,NEQITB).GE.NSTE) GO TO 350
  761.       WRITE (6,3001) BLKNAM(INDEX),IEQITB(2,NEQITB),NSTE
  762.       STOP
  763. C
  764.   350 IF (NPRIB .EQ.0) GO TO 450
  765.       READ (5,1100)((IPRIB(I,J),I=1,3),J=1,NPRIB)
  766.       IF (NSTE.GT.0 .AND. IPRIB(1,1).EQ.0) IPRIB(1,1)=1
  767.       IF ( IPRIB(2,1) .EQ. 0)  IPRIB(2,1) = NSTE
  768.       IF ( IPRIB(3,1) .EQ. 0)  IPRIB(3,1) = 1
  769.       INDEX=3
  770.       IF (NPRIB.LE.1) GO TO 440
  771.       DO 430 I=2,NPRIB
  772.       J=I - 1
  773.       IF (IPRIB(1,J).GT.IPRIB(2,J)) GO TO 435
  774.       IF (IPRIB(1,I).GE.IPRIB(2,J)) GO TO 430
  775.       WRITE (6,3000) BLKNAM(INDEX),I,J
  776.       STOP
  777.   430 CONTINUE
  778.   440 J=NPRIB
  779.       IF (IPRIB(1,J).LE.IPRIB(2,J)) GO TO 445
  780.   435 WRITE (6,3004) BLKNAM(INDEX),J,J
  781.       STOP
  782.   445 IF (IPRIB(2,NPRIB).GE.NSTE) GO TO 450
  783.       WRITE (6,3001) BLKNAM(INDEX),IPRIB(2,NPRIB),NSTE
  784.       STOP
  785. C
  786.   450 IF (NPB   .EQ.0) GO TO 550
  787.       READ (5,1100) ((IPNODE(I,J),I=1,3),J=1,NPB)
  788.       IF (IPNODE(1,1).EQ.0) IPNODE(1,1)=1
  789.       IF (IPNODE(2,1).EQ.0) IPNODE(2,1)=NUMNP
  790.       IF (IPNODE(3,1).LE.0) IPNODE(3,1)=1
  791.       DO 500 I=1,NPB
  792.       IF (IPNODE(1,I).LT.0) GO TO 510
  793.       IF (IPNODE(1,I).GT.IPNODE(2,I)) GO TO 510
  794.       IF (IPNODE(3,I).LE.0) GO TO 510
  795.   500 CONTINUE
  796.       GO TO 550
  797.   510 WRITE (6,2990)
  798.       STOP
  799.   550 IF (JNPORT.EQ.0 .OR. NODSVB.EQ.0) GO TO 650
  800.       READ (5,1100)((INODB(I,J),I=1,3),J=1,NODSVB)
  801.       IF (NSTE.GT.0 .AND. INODB(1,1).EQ.0) INODB(1,1)=1
  802.       IF ( INODB(2,1) .EQ. 0)  INODB(2,1) = NSTE
  803.       IF ( INODB(3,1) .EQ. 0)  INODB(3,1) = 1
  804.       INDEX=4
  805.       IF (NODSVB.LE.1) GO TO 640
  806.       DO 630 I=2,NODSVB
  807.       J=I - 1
  808.       IF (INODB(1,J).GT.INODB(2,J)) GO TO 635
  809.       IF (INODB(1,I).GE.INODB(2,J)) GO TO 630
  810.       WRITE (6,3000) BLKNAM(INDEX),I,J
  811.       STOP
  812.   630 CONTINUE
  813.   640 J=NODSVB
  814.       IF (INODB(1,J).LE.INODB(2,J)) GO TO 645
  815.   635 WRITE (6,3004) BLKNAM(INDEX),J,J
  816.       STOP
  817.   645 IF (INODB(2,NODSVB).GE.NSTE) GO TO 650
  818.       WRITE (6,3001) BLKNAM(INDEX),INODB(2,NODSVB),NSTE
  819.       STOP
  820. C
  821.   650 IF (JNPORT.EQ.0 .OR. LEMSVB.EQ.0) GO TO 750
  822.       READ (5,1100)((IELMB(I,J),I=1,3),J=1,LEMSVB)
  823.       IF (NSTE.GT.0 .AND. IELMB(1,1).EQ.0) IELMB(1,1)=1
  824.       IF ( IELMB(2,1) .EQ. 0)  IELMB(2,1) = NSTE
  825.       IF ( IELMB(3,1) .EQ. 0)  IELMB(3,1) = 1
  826.       INDEX=5
  827.       IF (LEMSVB.LE.1) GO TO 740
  828.       DO 730 I=2,LEMSVB
  829.       J=I - 1
  830.       IF (IELMB(1,J).GT.IELMB(2,J)) GO TO 735
  831.       IF (IELMB(1,I).GE.IELMB(2,J)) GO TO 730
  832.       WRITE (6,3000) BLKNAM(INDEX),I,J
  833.       STOP
  834.   730 CONTINUE
  835.   740 J=LEMSVB
  836.       IF (IELMB(1,J).LE.IELMB(2,J)) GO TO 745
  837.   735 WRITE (6,3004) BLKNAM(INDEX),J,J
  838.       STOP
  839.   745 IF (IELMB(2,LEMSVB).GE.NSTE) GO TO 750
  840.       WRITE (6,3001) BLKNAM(INDEX),IELMB(2,LEMSVB),NSTE
  841.       STOP
  842.   750 CONTINUE
  843. C
  844. C     VERIFY AND INITIALIZE SOLUTION VARIABLES
  845. C
  846.       IF (NEGL.GT.0 .OR. NEGNL.GT.0 .OR. NSUBST.GT.0) GO TO 48
  847.       WRITE (6,3090)
  848.       STOP
  849.    48 IF (NSUBST.LE.0 .OR. NDISCE.LE.0) GO TO 52
  850.       WRITE (6,3091)
  851.       IF (MODEX.EQ.0) GO TO 52
  852.       STOP
  853.    52 NUMEG=NEGL + NEGNL
  854.       IDAMPN=IDAMP
  855.       NDOF=6
  856.       DO 1 I=1,6
  857.     1 NDOF=NDOF - IDOF(I)
  858.       ISTAT=1
  859.       IF (IMASS.EQ.0) ISTAT=0
  860.       IF (ISTAT.EQ.1 .AND. IOPE.EQ.0) IOPE=2
  861.       IF (IMODES.GT.0) IOPE=2
  862.       IF (IOPE.NE.3 .OR. IMASS.EQ.1) GO TO 20
  863.       WRITE (6,3012)
  864.       STOP
  865.    20 DTA=DT
  866.       KLIN=1
  867.       IF (NEGNL.EQ.0) KLIN=0
  868.       IF (IEIG.GT.0 .AND. NFREQ.EQ.0) NFREQ=1
  869.       IF (COFQ.EQ.0) COFQ=1.D+08
  870.       IF (IOPE.NE.3 .OR. IEIG.EQ.0) GO TO 2
  871.       WRITE (6,3010)
  872.       STOP
  873.     2 IF (IEIG.LE.1) GO TO 3
  874.       WRITE(6,3003)
  875.       STOP
  876.     3 IF (NSUBST.EQ.0 .OR. IEIG.EQ.0) GO TO 4
  877.       WRITE (6,3013) NSUBST,IEIG
  878.       STOP
  879.     4 IF (ITP96.EQ.2) GO TO 24
  880.       IF (NTEMP.EQ.0) GO TO 24
  881.       WRITE (6,3014) ITP96,NTEMP
  882.       STOP
  883.    24 IF (IDGRAV.EQ.0 .OR. ISTAT.EQ.0) GO TO 25
  884.       IF (IMASS.EQ.1) GO TO 25
  885.       WRITE (6,3020)
  886.       STOP
  887.    25 IF (IOPE.NE.3 .OR. NSUBST.EQ.0) GO TO 40
  888.       WRITE (6,3030)
  889.       STOP
  890. C
  891.    40 NODE3=12
  892.       NC=NFREQ + 8
  893.       IF (NC.GT.2*NFREQ) NC=2*NFREQ
  894.       IF (IESTYP.EQ.1 .AND. NQ.EQ.0) NQ=NC
  895. C
  896.       IF (METHOD.EQ.0) METHOD=1
  897.       IF (METHOD.EQ.2) IATKEN=0
  898.       NLSTPD=0
  899.       IF (ITEMAX.EQ.0) ITEMAX=15
  900.       IF (DTOL.EQ.0.0) DTOL=0.01
  901.       IF (RTOL.EQ.0.0) RTOL=0.01
  902.       IF (STOL.EQ.0.0) STOL=0.5
  903.       ETOL=10.0*RTOL*DTOL
  904.       IF (IRINT.EQ.0) IRINT=9999
  905. C
  906.       IF(MODEX.NE.2 .AND. JNPORT.GT.0) NPUTSV=1
  907.       IF (LUNODE .EQ. 0) LUNODE=60
  908. C
  909.       IF (LU1    .EQ.0) LU1    = 60
  910.       IF (LU2    .EQ.0) LU2    = 60
  911.       IF (LU3    .EQ.0) LU3    = 60
  912. C
  913. C***  DATA PORTHOLE (START)
  914. C
  915.       IF (JNPORT.EQ.0) GO TO 790
  916.       RECLAB=RECLB1
  917.       WRITE (LUNODE) RECLAB,(IHED(I),I=1,18),NUMNP,(IDOF(I),I=1,6),
  918.      1               NEGL,NEGNL,MODEX,NSTE,DT,TSTART,IDATWR,NSKEWS,
  919.      2               IRINT,ITP96,INPORT,JNPORT,IMASS,IDAMP,IMASSN,
  920.      3               IEIG,NSREFB,NEQITB,RTOL,ITEMAX,IOPE,OPVAR(1),
  921.      4               OPVAR(2),NPRIB,NODSVB,LEMSVB,LUNODE,LU1,LU2,LU3,
  922.      5               NPB,IDC,IVC,IAC,NPUTSV,JDC,JVC,JAC,
  923.      6               ((IPNODE(I,J),I=1,3),J=1,NPB),
  924.      7               NMIDSS,NDISCE,NSUBST,JTC,NFREQ,ISTAT
  925.       RECLAB=BLKNAM(1)
  926.       IF (NSREFB.NE.0) WRITE(LUNODE) RECLAB,((ISREFB(I,J),I=1,3),
  927.      1   J=1,NSREFB)
  928.       RECLAB=BLKNAM(2)
  929.       IF (NEQITB.NE.0) WRITE(LUNODE) RECLAB,((IEQITB(I,J),I=1,3),
  930.      1   J=1,NEQITB)
  931.       RECLAB=BLKNAM(3)
  932.       IF (NPRIB.NE.0) WRITE(LUNODE) RECLAB,((IPRIB(I,J),I=1,3),
  933.      1   J=1,NPRIB)
  934.       RECLAB=BLKNAM(4)
  935.       IF (NODSVB.NE.0) WRITE(LUNODE) RECLAB,((INODB(I,J),I=1,3),
  936.      1   J=1,NODSVB)
  937.       RECLAB=BLKNAM(5)
  938.       IF (LEMSVB.NE.0) WRITE(LUNODE) RECLAB,((IELMB(I,J),I=1,3),
  939.      1   J=1,LEMSVB)
  940. C
  941. C***  DATA PORTHOLE (END)
  942. C
  943.   790 WRITE (6,2000) IHED
  944. C
  945. C     SET TIME INTEGRATION COEFFICIENTS IN CASE OF DYNAMIC PROBLEM
  946. C
  947.       A0=0.
  948.       A1=0.
  949.       IF (ISTAT.EQ.0) GO TO 10
  950.       CALL OPCOEF(OPVAR)
  951. C
  952.    10 CONTINUE
  953.       WRITE(6,2005)
  954.       NCARD=1
  955.       WRITE (6,2010) NCARD
  956.       WRITE(6,2015) NUMNP,(IDOF(I),I=1,6),NEGL,NEGNL,MODEX
  957.       WRITE (6,2020) NSTE,DT,TSTART,IDATWR
  958.       WRITE (6,2025) NSUBST,NSKEWS,NMIDSS
  959.       NCARD=NCARD + 1
  960.       WRITE (6,2010) NCARD
  961.       WRITE (6,2028) IRINT,ITP96,INPORT,JNPORT
  962.       NCARD=NCARD + 1
  963.       WRITE(6,2010) NCARD
  964.       WRITE (6,2030) NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,IDGRAV,
  965.      1               NPDIS,NTEMP,NDISCE,NIDM
  966.       NCARD=NCARD + 1
  967.       WRITE(6,2010) NCARD
  968.       WRITE (6,2035) IMASS,IDAMP,IMASSN
  969.       NCARD=NCARD + 1
  970.       WRITE(6,2010) NCARD
  971.       WRITE (6,2040) IEIG,IESTYP,NFREQ
  972.       WRITE (6,2042) NQ,NMODE,IFPR,IRBM,RBMSH,COFQ
  973.       NCARD=NCARD + 1
  974.       WRITE(6,2010) NCARD
  975.       WRITE (6,2045) IMODES,IOPE
  976.       IF (IMASS.EQ.0) IMODES=0
  977.       IF (IOPE.EQ.1) WRITE(6,2050) OPVAR(1)
  978.       IF (IOPE.EQ.2) WRITE(6,2055) OPVAR(1),OPVAR(2)
  979.       WRITE (6,2057) NMODES,IMDAMP
  980.       NCARD=NCARD + 1
  981.       WRITE(6,2010) NCARD
  982.       WRITE (6,2060) NSREFB,NEQITB,METHOD,IATKEN
  983.       WRITE (6,2061) ITEMAX,NLSTPD,DTOL,RTOL,STOL,RNORM
  984.       NCARD=NCARD + 1
  985.       WRITE(6,2010) NCARD
  986.       WRITE (6,2065) IOUTPT,NPRIB,NPB,IDC,IVC,IAC
  987.       WRITE (6,2066) ISTPRT
  988.       NCARD=NCARD + 1
  989.       WRITE(6,2010) NCARD
  990.       WRITE (6,2100) NPUTSV,NODSVB,LEMSVB
  991.       WRITE (6,2105) LUNODE,LU1,LU2,LU3,JDC,JVC,JAC,JTC
  992.       I=KLIN + 1
  993.       J=ISTAT + 4
  994.       WRITE (6,2110) WORD(I),WORD(3),WORD(J),WORD(6)
  995. C
  996.       IF (NSREFB.NE.0 .OR. NEQITB.NE.0) GO TO 810
  997.       IF ( NPRIB.NE.0 .OR. JNPORT.NE.0) GO TO 810
  998.       IF (NPB.GT.0) GO TO 810
  999.       GO TO 890
  1000. C
  1001.   810 WRITE (6,2115)
  1002.   820 IF (NSREFB.EQ.0) GO TO 830
  1003.       WRITE (6,2120)
  1004.       WRITE (6,2130) (J,(J,ISREFB(I,J),I=1,3),J=1,NSREFB)
  1005.   830 IF (NEQITB.EQ.0) GO TO 840
  1006.       WRITE (6,2140)
  1007.       WRITE (6,2150) (J,(J,IEQITB(I,J),I=1,3),J=1,NEQITB)
  1008.   840 IF (NPRIB.EQ.0) GO TO 850
  1009.       WRITE (6,2160)
  1010.       WRITE (6,2170) (J,(J, IPRIB(I,J),I=1,3),J=1,NPRIB)
  1011.   850 IF (NPB.EQ.0) GO TO 860
  1012.       WRITE (6,2180)
  1013.       WRITE (6,2190) (J,(J,IPNODE(I,J),I=1,3),J=1,NPB)
  1014.   860 IF (JNPORT.EQ.0) GO TO 890
  1015.       IF (NODSVB.EQ.0) GO TO 870
  1016.       WRITE (6,2200)
  1017.       WRITE (6,2210) (J,(J, INODB(I,J),I=1,3),J=1,NODSVB)
  1018.   870 IF (LEMSVB.EQ.0) GO TO 890
  1019.       WRITE (6,2220)
  1020.       WRITE (6,2230) (J,(J, IELMB(I,J),I=1,3),J=1,LEMSVB)
  1021. C
  1022.   890 CONTINUE
  1023.       IF (IMODES.EQ.0) GO TO 45
  1024.       IF (NPDIS.EQ.0) GO TO 42
  1025.       WRITE (6,3040)
  1026.       STOP
  1027.    42 IF (METHOD.LE.1) GO TO 43
  1028.       WRITE (6,3050)
  1029.       STOP
  1030.    43 IF (IATKEN.EQ.0) GO TO 44
  1031.       WRITE (6,3060)
  1032.       IATKEN=0
  1033.    44 IF (NLSTPD.EQ.0) GO TO 45
  1034.       WRITE (6,3070)
  1035.       NLSTPD=0
  1036.    45 CONTINUE
  1037. C
  1038. C     MODIFY ANALYSIS CONTROL BLOCKS BASED ON MASTER CONTROL VARIABLES
  1039. C
  1040.       IF (KLIN.EQ.0) GO TO 7
  1041.       IF(IOPE.EQ.3) GO TO 7
  1042.       IF (IMODES.EQ.0) GO TO 8
  1043.       NSREFB=0
  1044.       GO TO 8
  1045.     7 NSREFB=0
  1046.       NEQITB=0
  1047. C
  1048.     8 IF (IOUTPT.NE.0) GO TO 6
  1049.       NPRIB=1
  1050.       IPRIB(1,1)=1
  1051.       IPRIB(2,1)=NSTE
  1052.       IPRIB(3,1)=1
  1053.       NPB=1
  1054.       IPNODE(1,1)=1
  1055.       IPNODE(2,1)=NUMNP
  1056.       IPNODE(3,1)=1
  1057.       IDC=1
  1058.       IVC=1
  1059.       IAC=1
  1060.     6 IF (NPB.NE.0) GO TO 9
  1061.       IDC=0
  1062.       IVC=0
  1063.       IAC=0
  1064.     9 IPC=IDC + IVC + IAC
  1065. C
  1066. C
  1067. C
  1068. C     A L L O C A T E   S T O R A G E   F O R   A R R A Y S
  1069. C
  1070. C        P E R M A N E N T L Y   S T O R E D   I N - C O R E
  1071. C
  1072. C
  1073.       CALL STORE (NUMNP,NDOF,NEQ,NWK,MA,NEGNL,MAXEST,NBLOCK,ISTOH,0)
  1074. C
  1075. C
  1076. C     R E A D   T I M E   F U N C T I O N   D A T A
  1077. C
  1078. C
  1079.       READ (5,1010) NTFN,NPTM
  1080.       IF (IDATWR.LE.1) WRITE (6,2250) NTFN,NPTM
  1081. C
  1082.       IF (NTFN.EQ.0) GO TO 15
  1083.       M2=N1 + NTFN
  1084.       M3=M2 + NTFN*NPTM*ITWO
  1085.       M4=M3 + NTFN*NPTM*ITWO
  1086.       M5=M4 + NTFN*NSTE*ITWO
  1087.       M6=M5 + NTFN*ITWO - 1
  1088.       CALL SIZE (M6)
  1089. C
  1090.       CALL TIMFUN (A(M5),A(N1),A(M2),A(M3),A(M4),NTFN,NPTM)
  1091. C
  1092. C
  1093. C     R E A D   N O D A L   P O I N T   D A T A
  1094. C
  1095. C
  1096.    15 MID=0
  1097.       IF (NMIDSS .GT. 0) MID=1
  1098.       N09=N08 + MID*NUMNP
  1099.       N09A=N09 + 3*MID*NUMNP*ITWO
  1100.       N1=N09A + 3*MID*NMIDSS*ITWO
  1101.       N1A=N1 + NDOF*NUMNP
  1102.       N2=N1A + NUMNP
  1103.       IF (NSKEWS.EQ.0) N2=N1A
  1104.       M3=N2 + NUMNP*ITWO
  1105.       M4=M3 + NUMNP*ITWO
  1106.       M5=M4 + NUMNP*ITWO - 1
  1107.       CALL SIZE (M5)
  1108. C
  1109.       REWIND 3
  1110.       CALL INPUT (A(N06),A(N1A),A(N08),A(N09),A(N09A),A(N1),A(N2),
  1111.      1            A(M3),A(M4),IDOF,NDOF,NUMNP,NEQ,NSKEWS,NMIDSS)
  1112. C
  1113. C
  1114. C     R E A D   C O N S T R A I N T   E Q U A T I O N S   D A T A
  1115. C
  1116. C
  1117.       IF (NDISCE.EQ.0) GO TO 29
  1118.       CALL CONEQN (A(N1),A(N01),A(N02),A(N03),A(N2),A(M3),NDOF,
  1119.      1              NDISCE,NIDM)
  1120. C
  1121. C***  DATA PORTHOLE (START)
  1122. C
  1123.       RECLAB = RECLB2
  1124.       NN = N1A - 1
  1125.       IF (JNPORT.NE.0)
  1126.      1  WRITE (LUNODE) RECLB2,(IA(I),I=N1,NN)
  1127. C
  1128. C***  DATA PORTHOLE (END)
  1129. C
  1130. C
  1131.    29 IF (MODEX.EQ.2) GO TO 30
  1132. C
  1133. C     WRITE ID ARRAY ONTO TAPE8, IF THIS IS NOT A RESTART JOB
  1134. C
  1135.       REWIND 8
  1136.       NN=N1A - 1
  1137.       WRITE (8) (IA(I),I=N1,NN)
  1138. C
  1139. C
  1140. C     SHIFT ID ARRAY FROM N1 TO NEW N09A
  1141. C
  1142.    30 IF (NMIDSS.EQ.0) GO TO 70
  1143.       N09A=N09 + 3*MAXMSS*ITWO
  1144.       K=-1
  1145.       DO 50 I=1,NDOF
  1146.       DO 50 J=1,NUMNP
  1147.       K=K + 1
  1148.    50 IA(N09A+K)=IA(N1+K)
  1149.       N1=N09A
  1150.       IF (NSKEWS.EQ.0) GO TO 65
  1151.       NN=N1 + NDOF*NUMNP
  1152.       DO 60 I=1,NUMNP
  1153.    60 IA(NN+I-1)=IA(N1A+I-1)
  1154.    65 N1A=N1 + NDOF*NUMNP
  1155.       N2=N1A + NUMNP
  1156.       IF (NSKEWS.EQ.0) N2=N1A
  1157.    70 M3=N2 + NEQ*ITWO
  1158.       M4=M3 + NEQ*ITWO
  1159.       M5=M4 + NEQ*ITWO
  1160.       IF (ISTAT.EQ.0) M5=M3
  1161.       M6=M5 + NEQ*ITWO
  1162.       IF (IOPE.NE.3) M6=M5
  1163.       CALL SIZE (M6)
  1164. C
  1165. C
  1166. C     E S T A B L I S H  C O N C E N T R A T E D   N O D A L
  1167. C           M A S S   A N D   D A M P I N G   V E C T O R S
  1168. C
  1169. C
  1170.       REWIND 23
  1171.       CALL NODMAS (A(N1),A(N2),A(N2),A(N01),A(N02),A(N03),ISUB,NDOF,
  1172.      1             NIDM,IDOF,NUMNP,NEQ,IMASSN,IDAMPN,ISTAT)
  1173. C
  1174. C
  1175. C     R E A D   I N I T I A L   C O N D I T I O N S
  1176. C
  1177. C
  1178.       CALL INITAL (A(N2),A(M5),A(M3),A(M4),A(M4),A(N1),ISUB,NDOF,
  1179.      1             IDOF,NEQ,NUMNP)
  1180. C
  1181. C     R E A D   I N I T I A L   N O D A L   P O I N T
  1182. C     T E M P E R A T U R E S
  1183. C
  1184.       IF (ITP96.NE.2) GO TO 26
  1185.       CALL INITEM (A(N2),NUMNP,TSTART)
  1186. C
  1187. C     REINSTATE NODAL COORDINATES INTO HIGH SPEED STORAGE FROM TAPE
  1188. C
  1189.    26 NT=3
  1190.       REWIND NT
  1191.       N3=N2 + NUMNP*ITWO
  1192.       N4=N3 + NUMNP*ITWO
  1193.       N5=N4 + NUMNP*ITWO
  1194.       NN=N3 - 1
  1195.       READ (NT) (A(I),I=N2,NN)
  1196.       NN=N4 - 1
  1197.       READ (NT) (A(I),I=N3,NN)
  1198.       NN=N5 - 1
  1199.       READ (NT) (A(I),I=N4,NN)
  1200. C
  1201.       GO TO 999
  1202. C
  1203. C
  1204. C     R E A D   S U B S T R U C T U R E   I N F O R M A T I O N
  1205. C
  1206. C
  1207.   900 CALL SUBINP
  1208. C
  1209.   999 CONTINUE
  1210. C
  1211.       RETURN
  1212. C
  1213.  1000 FORMAT (18A4)
  1214.  1001 FORMAT (4I5)
  1215.  1002 FORMAT (7I5,2F10.0)
  1216.  1003 FORMAT (I5,6I1,I4,3I5,2F10.0,4I5,5X,I5)
  1217.  1005 FORMAT (6I5,4F10.0)
  1218.  1010 FORMAT (16I5)
  1219.  1020 FORMAT (2I5,2F10.0,2I5)
  1220.  1100 FORMAT (15I5,5X )
  1221. C
  1222.  2000 FORMAT (1H1,18A4,///)
  1223.  2005 FORMAT(38H M A S T E R  C O N T R O L  C A R D S )
  1224.  2010 FORMAT(///,1X,12HCARD NUMBER ,I1)
  1225.  2015 FORMAT(/,5X,
  1226.      155HNUMBER OF NODAL POINTS  . . . . . . . . . . (NUMNP)   =,I5//5X,
  1227.      255HMASTER X-TRANSLATION CODE . . . . . . . . . (IDOF(1)) =,I5//5X,
  1228.      355HMASTER Y-TRANSLATION CODE . . . . . . . . . (IDOF(2)) =,I5//5X,
  1229.      455HMASTER Z-TRANSLATION CODE . . . . . . . . . (IDOF(3)) =,I5//5X,
  1230.      555HMASTER X-ROTATION    CODE . . . . . . . . . (IDOF(4)) =,I5//5X,
  1231.      655HMASTER Y-ROTATION    CODE . . . . . . . . . (IDOF(5)) =,I5//5X,
  1232.      755HMASTER Z-ROTATION    CODE . . . . . . . . . (IDOF(6)) =,I5//5X,
  1233.      855HNUMBER OF LINEAR ELEMENT GROUPS . . . . . . (NEGL)    =,I5//5X,
  1234.      955HNUMBER OF NONLINEAR ELEMENT GROUPS  . . . . (NEGNL)   =,I5//5X,
  1235.      A55HSOLUTION MODE . . . . . . . . . . . . . . . (MODEX)   =,I5 /5X,
  1236.      B55H   EQ.0, DATA CHECK                                        /5X,
  1237.      C55H   EQ.1, EXECUTION                                         /5X,
  1238.      D55H   EQ.2, RESTART                                           )
  1239.  2020 FORMAT (/4X,
  1240.      156H NUMBER OF TIME STEPS . . . . . . . . . . . .(NSTE)    =I5//4X,
  1241.      256H TIME STEP INCREMENT  . . . . . . . . . . . .(DT)      =E11.4//
  1242.      3 4X,
  1243.      456H TIME AT SOLUTION START . . . . . . . . . . .(TSTART)  =E11.4//
  1244.      5 4X,
  1245.      6 55H FLAG FOR WRITING INPUT DATA IN CARD IMAGE AND/OR         /5X,
  1246.      7 55H  GENERATED FORM  . . . . . . . . . . . . . (IDATWR)  =I5 /4X,
  1247.      8 55H    EQ.0, BOTH CARD IMAGE LISTING AND DETAILED            /4X,
  1248.      9 55H          OUTPUT OF INPUT DATA                            /4X,
  1249.      A 55H    EQ.1, ONLY DETAILED OUTPUT OF INPUT DATA              /4X,
  1250.      B 55H    EQ.2, ONLY A CARD IMAGE LISTING OF INPUT DATA         /4X,
  1251.      C 55H    GT.2, NO DETAILED OUTPUT NOR CARD IMAGE               /4X,
  1252.      D 55H          LISTING OF INPUT DATA                            )
  1253.  2025 FORMAT (/5X,
  1254.      155HNUMBER OF INDEPENDENT SUBSTRUCTURES . . . .(NSUBST)   =,I5//5X,
  1255.      255HNUMBER OF SKEW (R,S,T) REFERENCE SYSTEMS. .(NSKEWS)   =,I5//5X,
  1256.      355HNUMBER OF MID-SURFACE SYSTEMS . . . . . . .(NMIDSS)   =,I5)
  1257.  2028 FORMAT (/5X,
  1258.      155HRESTART SAVE INTERVAL . . . . . . . . . . .(IRINT)    =,I5//5X,
  1259.      255HTEMPERATURE TAPE FLAG . . . . . . . . . . .(ITP96)    =,I5/5X,
  1260.      335H   EQ.0, TEMPERATURE TAPE NOT USED,/5X,
  1261.      430H   EQ.1, TEMPERATURE TAPE USED/5X,
  1262.      531H   EQ.2, TEMPERATURES SPECIFIED/5X,
  1263.      631H         VIA INPUT DATA CARDS  //5X,
  1264.      7 55HPREPROCESSOR INPUT CONTROL PARAMETER . . . .(INPORT)  =I5 /4X,
  1265.      8 55H    EQ.0, NO PREPROCESSOR TAPE USED                       /4X,
  1266.      9 56H    EQ.1, NODAL AND ELEMENT INFORMATION READ FROM UNIT59  /4X,
  1267.      A 58H    EQ.2, ABOVE INFORMATION AND ID ARRAY READ FROM UNIT59 //5X
  1268.      B 55HPORTHOLE PARAMETER  . . . . . . . . . . . . (JNPORT)  =I5 /4X,
  1269.      C 55H    EQ.0, PORTHOLE NOT WRITTEN                            /4X,
  1270.      D 55H    EQ.1, PORTHOLE WRITTEN                                 //)
  1271.  2030 FORMAT (/5X,
  1272.      155HNUMBER OF CONCENTRATED LOAD CARDS . . . . . (NLOAD)   =,I5//5X,
  1273.      255HNUMBER OF 2/D PRESSURE LOAD SETS. . . . . . (NPR2)    =,I5//5X,
  1274.      355HNUMBER OF 3/D PRESSURE LOAD SETS. . . . . . (NPR3)    =,I5//5X,
  1275.      455HNUMBER OF BEAM DISTRIBUTED LOAD SETS. . . . (NPBM)    =,I5//5X,
  1276.      555HNUMBER OF ISO/BEAM DISTRIBUTED LOAD SETS. . (NPISB)   =,I5//5X,
  1277.      655HNUMBER OF PLATE DISTRIBUTED LOAD SETS . . . (NPPL)    =,I5//5X,
  1278.      755HNUMBER OF SHELL DISTRIBUTED LOAD SETS . . . (NPSH)    =,I5//5X,
  1279.      855HMASS PROPORTIONAL LOADING CODE. . . . . . . (IDGRAV)  =,I5 /5X,
  1280.      955H   EQ.0, NO LOADING                                        /5X,
  1281.      A55H   EQ.1, LUMPED MASS LOADING                              //5X,
  1282.      B55HNUMBER OF PRESCRIBED DISPLACEMENTS. . . . . (NPDIS)   =,I5//5X,
  1283.      C55HNUMBER OF NODAL TEMPERATURE CARDS . . . . . (NTEMP)   =,I5//5X,
  1284.      D55HNUMBER OF DISPLACEMENT CONSTRAINT EQUATIONS (NDISCE)  =,I5//5X,
  1285.      E55HMAX NUMBER OF INDEPENDENT DISPLACEMENTS                    /5X,
  1286.      F55H   IN ANY CONSTRAINT EQUATION . . . . . . . (NIDM)    =,I5    )
  1287.  2035 FORMAT (/5X,
  1288.      155HMASS MATRIX CODE  . . . . . . . . . . . . . (IMASS)   =,I5 /5X,
  1289.      255H   EQ.0, NO MASS EFFECTS                                   /5X,
  1290.      355H   EQ.1, LUMPED MASS                                       /5X,
  1291.      455H   EQ.2, CONSISTENT MASS                                  //5X,
  1292.      555HDAMPING MATRIX CODE . . . . . . . . . . . . (IDAMP)   =,I5 /5X,
  1293.      655H   EQ.0, NO DAMPING                                        /5X,
  1294.      755H   EQ.1, DAMPING INCLUDED                                 //5X,
  1295.      855HCONCENTRATED NODAL MASSES CODE. . . . .  . .(IMASSN)  =,I5 /5X,
  1296.      955H   EQ.0, NO CONCENTRATED NODAL MASSES                      /5X,
  1297.      A55H   EQ.1, CONCENTRATED NODAL MASSES PRESENT                 )
  1298.  2040 FORMAT (/5X,
  1299.      155HFREQUENCIES SOLUTION CODE . . . . . . . . . . .(IEIG) =,I5 /5X,
  1300.      255H   EQ.0, NO FREQUENCIES SOLUTION                           /5X,
  1301.      355H   EQ.1, FREQUENCIES AND MODE SHAPES                       /5X,
  1302.      455H         ARE DETERMINED                                   //5X,
  1303.      555HFLAG INDICATING FREQUENCY SOLUTION TYPE. . . (IESTYP) =,I5 /5X,
  1304.      655H   EQ.0, DETERMINANT SEARCH METHOD                         /5X,
  1305.      755H   EQ.1, BATHE S  SUBSPACE ITERATION METHOD               //5X,
  1306.      855HNUMBER OF EIGENPAIRS TO BE CALCULATED. . . . .(NFREQ) =,I5 /5X,
  1307.      955H   EQ.0, DEFAULT SET TO 1 IF IEIG.GT.0                   )
  1308.  2042 FORMAT (/5X,
  1309.      155HNUMBER OF VECTORS USED FOR SUBSPACE ITERATION . .(NQ) =,I5 /5X,
  1310.      255H   EQ.0, SET TO MIN. (2*NFREQ, NFREQ + 8)                  /5X,
  1311.      355H   (NOT APPLICABLE IF IESTYP.EQ.0)                        //5X,
  1312.      455HNUMBER OF MODE SHAPES TO BE PRINTED. . . . . .(NMODE) =,I5//5X,
  1313.      555HINTERMEDIATE PRINT-OUT CONTROL PARAMETER. . . .(IFPR) =,I5 /5X,
  1314.      655H   EQ.0, NO PRINTING                                       /5X,
  1315.      755H   EQ.1, PRINT                                            //5X,
  1316.      855HFLAG INDICATING PRESENCE OF RIGID BODY MODES. .(IRBM) =,I5 /5X,
  1317.      955H   EQ.0, NO ZERO FREQUENCIES ARE PRESENT                  //5X,
  1318.      A55HRIGID BODY MODE SHIFT APPLIED. . . . . . . . .(RBMSH) =,
  1319.      B  E10.3//5X,
  1320.      C55HCUT-OFF CIRCULAR FREQUENCY. . . . . . . . . . .(COFQ) =,
  1321.      D E10.3 /5X,
  1322.      E55H   EQ.0., DEFAULT SET TO 1.D+08                            )
  1323.  2045 FORMAT (/5X,
  1324.      155HFLAG FOR MODE SUPERPOSITION ANALYSIS . . . (IMODES)   =,I5,/5X,
  1325.      255H   EQ.0, STATIC ANALYSIS OR DIRECT TIME INTEGRATION        /5X,
  1326.      355H   EQ.1, MODE SUPERPOSITION ANALYSIS PERFORMED            //5X,
  1327.      455HTIME INTEGRATION CODE . . . . . . . . . . . (IOPE)    =,I5 /5X,
  1328.      555H   EQ.1, WILSON'S  THETA METHOD                        ,/,5X,
  1329.      655H   EQ.2, NEWMARK'S  METHOD                             ,/,5X,
  1330.      755H   EQ.3, CENTRAL DIFFERENCE METHOD                     ,/,5X)
  1331.  2050 FORMAT (5X,
  1332.      155HINTEGRATION PARAMETER . . . . . . . . . . . (THETA)   =,F5.2)
  1333.  2055 FORMAT (5X,
  1334.      155HINTEGRATION PARAMETERS  . . . . . . . . . . (DELTA)   =,F5.2/5X
  1335.      255H                                            (ALPHA)   =,F5.2)
  1336.  2057 FORMAT (/5X,
  1337.      155HNUMBER OF MODES TO BE USED FOR MODE                        /5X,
  1338.      255H   SUPERPOSITION ANALYSIS . . . . . . . . .(NMODES)   =,I5//5X,
  1339.      355HFLAG FOR INCLUDING MODAL DAMPING EFFECTS . (IMDAMP)   =,I5/ 5X,
  1340.      455H   EQ.0, NO MODAL DAMPING EFFECTS                          /5X,
  1341.      555H   EQ.1, MODAL DAMPING FACTORS ARE INPUT                   )
  1342.  2060 FORMAT (/,4X,
  1343.      1 55H NO. OF BLOCKS OF EFFECTIVE STIFFNESS                     /4X,
  1344.      256H  REFORMATION TIME STEPS  . . . . . . . . . .(NSREFB)  =I5 /4X,
  1345.      3 55H    EQ.0, NO STIFFNESS REFORMATION                       //4X,
  1346.      4 55H NO. OF BLOCKS OF EQUILIBRIUM                             /4X,
  1347.      556H  ITERATION TIME STEPS  . . . . . . . . . . .(NEQITB)  =I5 /4X,
  1348.      6 55H    EQ.0, NO EQUILIBRIUM ITERATION PERFORMED             //5X,
  1349.      7 55HEQUILIBRIUM ITERATION METHOD  . . . . . . . (METHOD)  =,I5/4X,
  1350.      8 55H    EQ.1, MODIFIED NEWTON ITERATION                       /4X,
  1351.      9 55H    EQ.2, BFGS MATRIX UPDATING                           //5X,
  1352.      A 55HACCELERATION SCHEME FOR ITERATION . . . . . (IATKEN)  =,I5/4X,
  1353.      B 55H    EQ.0, NO ACCELERATION                                 /4X,
  1354.      C 55H    EQ.1, AITKEN ACCELERATION                            )
  1355.  2061 FORMAT (/5X,
  1356.      1 55HMAXIMUM NUMBER OF EQUILIBRIUM                             /5X,
  1357.      2 55H  ITERATIONS PERMITTED  . . . . . . . . . . (ITEMAX)  =I5//5X,
  1358.      3 55HNO. OF LOAD STEP DIVISIONS                                /5X,
  1359.      4 55H  ALLOWED IN DIVERGENCE PROCEDURE . . . . . (NLSTPD)  =I5 /5X,
  1360.      4 55H  NLSTPD IS CURRENTLY SET TO ZERO                         /5X,
  1361.      4 55H  (DIVERGENCE PROCEDURE IN THIS VERSION NOT ACTIVE)      //5X,
  1362.      5 55HDISPLACEMENT CONVERGENCE TOLERANCE  . . . . (DTOL)    =,
  1363.      6                                                        E11.4//5X,
  1364.      7 55HFORCE        CONVERGENCE TOLERANCE  . . . . (RTOL)    =,
  1365.      8                                                        E11.4//5X,
  1366.      9 55HLINE SEARCH  CONVERGENCE TOLERANCE  . . . . (STOL)    =,
  1367.      2                                                        E11.4//5X,
  1368.      H 55HREFERENCE LOAD FOR CONVERGENCE . . . . . . .(RNORM)   =,E11.4)
  1369.  2065 FORMAT (/5X,
  1370.      155HMASTER CONTROL PARAMETER FOR PRINT-OUT . . . (IOUTPT) =I5 /5X,
  1371.      242H   EQ.0, PRINT RESPONSES AT ALL TIME STEPS                  /5X
  1372.      340H         AND AT ALL NODES                                  /5X,
  1373.      443H   EQ.1, BLOCKS OF PRINT-OUT TIME STEPS AND               /5X,
  1374.      540H         NODAL POINTS ARE INPUT LATER                     //5X,
  1375.      655HNO. OF BLOCKS OF TIME STEPS FOR NODAL AND ELEMENT         /5X,
  1376.      755H ASSOCIATED QUANTITIES PRINT-OUT . . . . . . .(NPRIB) =I5//5X,
  1377.      855HNUMBER OF BLOCKS OF NODAL PRINTOUT  . . . . . . (NPB) =,I5//5X,
  1378.      955HDISPLACEMENT PRINTOUT CODE  . . . . . . . . . . (IDC) =,I5 /5X,
  1379.      A55H   EQ.0, NO PRINTING OF DISPLACEMENTS                      /5X,
  1380.      B55H   EQ.1, PRINT DISPLACEMENTS                              //5X,
  1381.      C55HVELOCITY PRINTOUT CODE  . . . . . . . . . . . . (IVC) =,I5 /5X,
  1382.      D55H   EQ.0, NO PRINTING OF VELOCITIES                         /5X,
  1383.      E55H   EQ.1, PRINT VELOCITIES                               //5X,
  1384.      F55HACCELERATION PRINTOUT CODE  . . . . . . . . . . (IAC) =,I5 /5X,
  1385.      G55H   EQ.0, NO PRINTING OF ACCELERATIONS                      /5X,
  1386.      H55H   EQ.1, PRINT ACCELERATIONS                                )
  1387.  2066 FORMAT (/5X,
  1388.      155HFLAG FOR PRINTING STORAGE INFORMATION. . . . (ISTPRT) =,I5 /5X,
  1389.      255H   EQ.0, DO NOT PRINT                                      /5X,
  1390.      355H   EQ.1, PRINT                                               )
  1391.  2100 FORMAT (/,4X,
  1392.      1 55H FLAG FOR SAVING INPUT DATA ON TAPE . . . . (NPUTSV)  =I5 /4X,
  1393.      2 55H    EQ.0, WRITE ONLY MAIN HEADER                          /4X,
  1394.      3 55H    EQ.1, WRITE ALL INPUT DATA ON PORTHOLE               //4X,
  1395.      4 55H NO. OF BLOCKS OF TIME STEPS FOR SAVING                   /4X,
  1396.      5 55H  NODAL RESPONSES ON TAPE . . . . . . .  .  (NODSVB)  =I5 /4X,
  1397.      6 55H    EQ.0, NO ACTION                                      //4X,
  1398.      7 55H NO. OF BLOCKS OF TIME STEPS FOR SAVING                   /4X,
  1399.      8 55H  ELEMENT RESPONSES ON TAPE . . . . . . . . (LEMSVB)  =I5 /4X,
  1400.      9 55H    EQ.0, NO ACTION                                         /)
  1401.  2105 FORMAT (4X,
  1402.      1 55H NODE DATA SAVE TAPE NUMBER . . . . . . . . (LUNODE)  =I5//4X,
  1403.      2 55H TRUSS/BEAM     TAPE NUMBER . . . . . . . . ( LU1  )  =I5//4X,
  1404.      3 55H 2/D CONTINUUM  TAPE NUMBER . . . . . . . . ( LU2  )  =I5//4X,
  1405.      4 55H 3/D CONTINUUM AND SHELL TAPE NUMBER. . . . ( LU3  )  =I5//4X,
  1406.      5 55H DISPLACEMENT SAVE CODE . . . . . . . . . . (JDC)     =I5 /4X,
  1407.      6 55H    EQ.0, NO SAVING OF DISPLACEMENTS                      /4X,
  1408.      7 55H    EQ.1, SAVE DISPLACEMENTS ON PORTHOLE                 //4X,
  1409.      8 55H VELOCITY SAVE CODE . . . . . . . . . . . . (JVC)     =I5 /4X,
  1410.      9 55H    EQ.0, NO SAVING OF VELOCITIES                         /4X,
  1411.      A 55H    EQ.1, SAVE VELOCITIES ON PORTHOLE                    //4X,
  1412.      B 55H ACCELERATION SAVE CODE . . . . . . . . . . (JAC)     =I5 /4X,
  1413.      C 55H    EQ.0, NO SAVING OF ACCELERATIONS                      /4X,
  1414.      D 55H    EQ.1, SAVE ACCELERATIONS ON PORTHOLE                //4X,
  1415.      E 55H TEMPERATURE SAVE CODE  . . . . . . . . . . (JTC)     =,I5/4X,
  1416.      F 55H    EQ.0, NO SAVING OF TEMPERATURES                    /4X,
  1417.      G 55H    EQ.1, SAVE TEMPERATURES ON PORTHOLE                //)
  1418.  2110 FORMAT (/////40X,14H *  THIS IS A ,A3,A6,2X,A5,A3,11HANALYSIS  * )
  1419.  2115 FORMAT (1H1,42H S O L U T I O N   D E T A I L   C A R D S   )
  1420.  2120 FORMAT(///5X76HBLOCK DEFINITION CARDS FOR EFFECTIVE STIFFNESS MATR
  1421.      1IX REFORMATION TIME STEPS  //5X,
  1422.      296H( NOT APPLICABLE FOR LINEAR ANALYSIS, EXPLICIT TIME INTEGRATION
  1423.      3 OR MODE SUPERPOSITION ANALYSIS )  )
  1424.  2130 FORMAT (/,4X,
  1425.      1  7H BLOCK ,I2                                               //7X,
  1426.      2 46H FIRST STEP OF THIS BLOCK  .  .  .  (ISREFB(1,I2,3H))= I5 /7X,
  1427.      3 46H LAST  STEP OF THIS BLOCK  .  .  .  (ISREFB(2,I2,3H))= I5 /7X,
  1428.      4 46H INCREMENT IN TIME STEP .  .  .  .  (ISREFB(3,I2,3H))= I5 /)
  1429.  2140 FORMAT(///5X59HBLOCK DEFINITION CARDS FOR EQUILIBRIUM ITERATION TI
  1430.      1ME STEPS   //5X,
  1431.      267H( NOT APPLICABLE FOR LINEAR ANALYSIS OR EXPLICIT TIME INTEGRATI
  1432.      3ON )  )
  1433.  2150 FORMAT (/,4X,
  1434.      1  7H BLOCK ,I2                                               //7X,
  1435.      2 46H FIRST STEP OF THIS BLOCK  .  .  .  (IEQITB(1,I2,3H))= I5 /7X,
  1436.      3 46H LAST  STEP OF THIS BLOCK  .  .  .  (IEQITB(2,I2,3H))= I5 /7X,
  1437.      4 46H INCREMENT IN TIME STEP .  .  .  .  (IEQITB(3,I2,3H))= I5 /)
  1438.  2160 FORMAT(///5X47HBLOCK DEFINITION CARDS FOR PRINT-OUT TIME STEPS//5X
  1439.      159H( NOT APPLICABLE, IF IOUTPT.EQ.0 ON MASTER CONTROL CARD 8 )  )
  1440.  2170 FORMAT (/,4X,
  1441.      1  7H BLOCK ,I2                                               //7X,
  1442.      2 46H FIRST STEP OF THIS BLOCK  .  .  .  ( IPRIB(1,I2,3H))= I5 /7X,
  1443.      3 46H LAST  STEP OF THIS BLOCK  .  .  .  ( IPRIB(2,I2,3H))= I5 /7X,
  1444.      4 46H INCREMENT IN TIME STEP .  .  .  .  ( IPRIB(3,I2,3H))= I5 /)
  1445.  2180 FORMAT(///5X49HBLOCK DEFINITION CARDS FOR PRINT-OUT NODAL POINTS//
  1446.      15X,59H( NOT APPLICABLE, IF IOUTPT.EQ.0 ON MASTER CONTROL CARD 8 ))
  1447.  2190 FORMAT (/,4X,
  1448.      1  7H BLOCK ,I2                                               //7X,
  1449.      2 46H FIRST NODE OF THIS BLOCK  .  .  .  (IPNODE(1,I2,3H))= I5 /7X,
  1450.      3 46H LAST  NODE OF THIS BLOCK  .  .  .  (IPNODE(2,I2,3H))= I5 /7X,
  1451.      4 46H INCREMENT IN NODE NUMBER  .  .  .  (IPNODE(3,I2,3H))= I5 /)
  1452.  2200 FORMAT(///5X63HBLOCK DEFINITION CARDS OF TIME STEPS FOR SAVING NOD
  1453.      1AL RESPONSES       )
  1454.  2210 FORMAT (/,4X,
  1455.      1  7H BLOCK ,I2                                               //7X,
  1456.      2 46H FIRST STEP OF THIS BLOCK  .  .  .  ( INODB(1,I2,3H))= I5 /7X,
  1457.      C 46H LAST  STEP OF THIS BLOCK  .  .  .  ( INODB(2,I2,3H))= I5 /7X,
  1458.      D 46H INCREMENT IN TIME STEP .  .  .  .  ( INODB(3,I2,3H))= I5 /)
  1459.  2220 FORMAT(///5X65HBLOCK DEFINITION CARDS OF TIME STEPS FOR SAVING ELE
  1460.      1MENT RESPONSES       )
  1461.  2230 FORMAT (/,4X,
  1462.      1  7H BLOCK ,I2                                               //7X,
  1463.      2 46H FIRST STEP OF THIS BLOCK  .  .  .  ( IELMB(1,I2,3H))= I5 /7X,
  1464.      3 46H LAST  STEP OF THIS BLOCK  .  .  .  ( IELMB(2,I2,3H))= I5 /7X,
  1465.      4 46H INCREMENT IN TIME STEP .  .  .  .  ( IELMB(3,I2,3H))= I5 /)
  1466.  2250 FORMAT (1H1,35HT I M E   F U N C T I O N   D A T A   //4X,
  1467.      148H NUMBER OF TIME FUNCTIONS               (NTFN) =,I5//4X,
  1468.      248H MAX NUMBER OF POINTS IN TIME FUNCTIONS (NPTM) =,I5///)
  1469. C
  1470. C
  1471.  2990 FORMAT (1H1,80H ** STOP **  ERROR IN INPUT OF BLOCK DEFINITIONS OF
  1472.      1  NODAL QUANTITIES PRINT-OUT  )
  1473.  3000 FORMAT (1H1,21H ** STOP ** ERROR IN ,A8,2X,13H BLOCK INPUT./
  1474.      1 14H FIRST STEP OF,I5,34HTH BLOCK IS LESS THAN LAST STEP OF,I5,
  1475.      2 9HTH BLOCK.  ///)
  1476.  3001 FORMAT(1H1,20H ** STOP ** ERROR IN,A8,2X,44HBLOCK INPUT.FINAL STEP
  1477.      1 OF LAST BLOCK INPUT =,I5,18H, LESS THAN NSTE =,I5)
  1478.  3004 FORMAT (1H1,21H ** STOP ** ERROR IN ,A8,2X,13H BLOCK INPUT./
  1479.      1 14H FIRST STEP OF,I5,36HTH BLOCK IS LARGER THAN LAST STEP OF,I5,
  1480.      2 9HTH BLOCK.  ///)
  1481.  3002 FORMAT (///46H ""STOP - IMASS MUST BE GT.0 IF CONCENTRATED
  1482.      1        / 37H MASSES AND-OR DAMPERS ARE SPECIFIED      )
  1483.  3003 FORMAT(///42H ""STOP - IEIG.GT.1 NOT PERMITTED IN THIS
  1484.      1       19HVERSION OF ADINA""   )
  1485.  3010 FORMAT (///,1H1,100H **STOP** IEIG.GT.0 NOT PERMITTED IF CENTRAL D
  1486.      1IFFERENCE METHOD IS TO BE USED FOR TIME INTEGRATION            )
  1487.  3012 FORMAT (///,1H1,60H **STOP** IMASS MUST BE EQ. 1 FOR CENTRAL DIFFE
  1488.      1RENCE METHOD               )
  1489.  3013 FORMAT (///28H *** I N P U T   E R R O R -/
  1490.      1        29H DETECTED BY SUBROUTINE ADINI//
  1491.      2        5X,9H NSUBST =,I5/5X,7H IEIG =,I5//
  1492.      3        35H FREQUENCY ANALYSIS CAN NOT BE DONE/
  1493.      4        28H WHEN SUBSTRUCTURES ARE USED//,12H *** S T O P)
  1494.  3014 FORMAT (///28H *** I N P U T   E R R O R -/
  1495.      1        29H DETECTED BY SUBROUTINE ADINI//
  1496.      2        5X,8H ITP96 =,I5/5X,8H NTEMP =,I5//
  1497.      3        37H WHEN ITP96.LE.1, NTEMP MUST BE ZERO.//12H *** S T O P)
  1498.  3020 FORMAT (///,1H1,75H **STOP** IMASS MUST BE EQ. 1 FOR DYNAMIC ANALY
  1499.      1SIS INCLUDING GRAVITY LOADS       )
  1500.  3090 FORMAT (///24H I N P U T  E R R O R-     /
  1501.      1        29H DETECTED BY SUBROUTINE ADINI    /
  1502.      2        38H NEGL,  NEGNL  AND NSUBST ARE ALL ZERO   /
  1503.      3        27H P R O G R A M  S T O P S .   /)
  1504.  3030 FORMAT(1H1,101H ** STOP **, SUBSTRUCTURES CANNOT BE USED IN A DYNA
  1505.      1MIC ANALYSIS, IF CENTRAL DIFFERENCE METHOD IS USED )
  1506.  3040 FORMAT (1H1,78H ** STOP **, DISPLACEMENTS CANNOT BE PRESCRIBED IN
  1507.      1MODE SUPERPOSITION ANALYSIS  )
  1508.  3050 FORMAT (1H1,94H ** STOP **, BFGS EQUILIBRIUM ITERATION METHOD CANN
  1509.      1OT BE USED WITH MODE SUPERPOSITION ANALYSIS )
  1510.  3060 FORMAT (//85H ** WARNING, AITKEN ACCELERATION CANNOT BE PERFORMED
  1511.      1IN A MODE SUPERPOSITION ANALYSIS )
  1512.  3070 FORMAT (//,81H ** WARNING, DIVERGENCE PROCEDURE CANNOT BE USED IN
  1513.      1A MODE SUPERPOSITION ANALYSIS  )
  1514.  3091 FORMAT (1H1,///40H IN THIS VERSION OF ADINA, DISPLACEMENT  ,
  1515.      1               37HCONSTRAINT EQUATIONS CAN NOT BE USED     ,
  1516.      2               32HWHEN SUBSTRUCTURES ARE PRESENT           ,
  1517.      3               28H *** STOP OF SOLUTION ***                )
  1518. C
  1519.       END
  1520. C *CDC* *DECK SUBINP
  1521. C *UNI* )FOR,IS N.SUBINP, R.SUBINP
  1522.       SUBROUTINE SUBINP
  1523. C
  1524. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  1525. C .                                                                   .
  1526. C .      . PROGRAM                                                    .
  1527. C .          TO INPUT SUBSTRUCTURE NODAL DATA AND ESTABLISH EQ NUMBERS.
  1528. C .                                                                   .
  1529. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  1530. C
  1531.       IMPLICIT REAL*8 (A-H,O-Z)
  1532. C
  1533.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  1534.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  1535.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  1536.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  1537.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  1538.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  1539.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  1540.       COMMON /DPR/ ITWO
  1541.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  1542.       COMMON /PRCONS/ IPRICS
  1543.       COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
  1544.      1             NPDIS,NTEMP
  1545.       COMMON /MIDSYS/ NMIDSS,MIDIND,MAXMSS
  1546.       COMMON /MDFRDM/ IDOF(6)
  1547.       COMMON /FREQIF/ ISTOH,N1A,N1B,N1C,N1S
  1548.       COMMON /SKEW/ NSKEWS
  1549.       COMMON /PORT/ INPORT,JNPORT,NPUTSV,LUNODE,LU1,LU2,LU3,JDC,JVC,JAC
  1550. C
  1551.       COMMON A(1)
  1552.       REAL A
  1553.       INTEGER IA(1)
  1554.       EQUIVALENCE (A(1),IA(1))
  1555.       DATA RECLB1/8HSUBSTRUC/
  1556. C
  1557.       READ (5,1000) NS,NTUSE,NEGLS,NUMNPS,NODCON,NODRET,NSMIDS
  1558.       DO 5 I=1,6
  1559.     5 IDOFS(I)=IDOF(I)
  1560.       IF (ISTAT.EQ.0) GO TO 8
  1561.       READ (5,1000) IDAMNS,IMASNS
  1562. C
  1563.     8 IF (IDATWR.GT.1) GO TO 10
  1564.       IF (NS.NE.1) WRITE (6,2000)
  1565.       WRITE (6,2020) NSUB
  1566.       WRITE (6,2050)NS,NTUSE,NEGLS,NUMNPS,NODCON,NODRET,NSMIDS
  1567.       IF (ISTAT.EQ.0) GO TO 10
  1568.       WRITE (6,2060) IDAMNS,IMASNS
  1569. C
  1570.    10 IF (NS.EQ.NSUB) GO TO 20
  1571.       WRITE (6,3000) NSUB,NS
  1572.       STOP
  1573. C
  1574.    20 IF (NTUSE.EQ.0) NTUSE=1
  1575.       NDOFS=6
  1576.       DO 30 I=1,6
  1577.    30 NDOFS=NDOFS - IDOFS(I)
  1578.       NEGNLS=0
  1579.       NN=NODRET + NODCON
  1580.       IF (NUMNPS.EQ.NN) GO TO 40
  1581.       WRITE (6,3050) NS,NODCON,NODRET,NUMNPS
  1582.       STOP
  1583. C
  1584.    40 CONTINUE
  1585. C
  1586. C***  DATA PORTHOLE (START)
  1587. C
  1588.       RECLAB = RECLB1
  1589.       IF (JNPORT.GE.1 .AND. NPUTSV.GE.1)
  1590.      1  WRITE (LUNODE)RECLAB,NS,NTUSE,NEGLS,NUMNPS,NODCON,NODRET,NSMIDS
  1591. C
  1592. C***  DATA PORTHOLE (END)
  1593. C
  1594. C
  1595. C     R E A D   N O D A L   P O I N T   D A T A
  1596. C
  1597. C
  1598.       N1A=N1 + NDOFS*NUMNPS
  1599.       N1B=N1A
  1600.       IF (NSKEWS.GT.0) N1B=N1A + NUMNPS
  1601.       MID=0
  1602.       IF (NSMIDS.GT.0) MID=1
  1603.       N1C=N1B + MID*NUMNPS
  1604.       N1D=N1C + 3*MID*NUMNPS*ITWO
  1605.       N2=N1D + 3*NSMIDS*ITWO
  1606.       N3=N2 + NUMNPS*ITWO
  1607.       N4=N3 + NUMNPS*ITWO
  1608.       N5=N4 + NUMNPS*ITWO
  1609.       CALL SIZE (N5)
  1610. C
  1611.       CALL INPUT (A(N06),A(N1A),A(N1B),A(N1C),A(N1D),A(N1),A(N2),A(N3),
  1612.      1            A(N4),IDOFS,NDOFS,NUMNPS,NEQS,NSKEWS,NSMIDS)
  1613. C
  1614. C     MOVE NODAL COORDINATES, IF MID-SURFACE SYSTEMS ARE USED
  1615. C
  1616.       IF (NSMIDS.EQ.0) GO TO 60
  1617.       NN=N1C + 3*MAXMSS*ITWO
  1618.       MM=3*NUMNPS*ITWO
  1619.       DO 50 I=1,MM
  1620.    50 A(NN+I-1)=A(N2+I-1)
  1621.       N2=NN
  1622.       N3=N2 + NUMNPS*ITWO
  1623.       N4=N3 + NUMNPS*ITWO
  1624.       N5=N4 + NUMNPS*ITWO
  1625. C
  1626.    60 NN=NEQS - NEQC
  1627.       KRSIZE=NN*(NN + 1)/2
  1628.       IF (KRSIZE.GT.KRSIZM) KRSIZM=KRSIZE
  1629. C
  1630. C      E S T A B L I S H   C O N C E N T R A T E D   N O D A L
  1631. C           M A S S    A N D   D A M P I N G   V E C T O R S
  1632. C
  1633.       IF (ISTAT.EQ.0 .AND. IDGRAV.EQ.0) GO TO 100
  1634.       M5=N5
  1635.       NIDMS=0
  1636.       CALL NODMAS (A(N1),A(M5),A(M5),A(M5),A(M5),A(M5),ISUB,NDOFS,
  1637.      1             NIDMS,IDOFS,NUMNPS,NEQS,IMASNS,IDAMNS,ISTAT)
  1638. C
  1639. C     R E A D   I N I T I A L   C O N D I T I O N S
  1640. C
  1641. C
  1642.       IF (ISTAT.EQ.0) GO TO 100
  1643.       M6=M5 + NEQS*ITWO
  1644.       M7=M6 + NEQS*ITWO
  1645.       M8=M7 + NEQS*ITWO
  1646.       CALL SIZE (M8)
  1647.       DO 80 NTU=1,NTUSE
  1648.    80 CALL INITAL (A(M5),A(M5),A(M6),A(M7),A(M7),A(N1),ISUB,NDOFS,
  1649.      1              IDOFS,NEQS,NUMNPS)
  1650. C
  1651.   100 RETURN
  1652.  1000 FORMAT (7I5)
  1653.  2000 FORMAT (1H1)
  1654.  2020 FORMAT (25H S U B S T R U C T U R E ,27(1H.),2H =,I5///)
  1655.  2050 FORMAT (5X,
  1656.      155HSUBSTRUCTURE NUMBER . . . . . . . . . . . .(NSUB)     =,I5//5X,
  1657.      255HNUMBER OF TIMES THIS SUBSTRUCTURE IS USED .(NTUSE)    =,I5//5X,
  1658.      355HNUMBER OF LINEAR ELEMNT GROUPS . . . . . . (NEGLS)    =,I5//5X,
  1659.      455HNUMBER OF NODAL POINTS . . . . . . . . . ..(NUMNPS)   =,I5//5X,
  1660.      555HNUMBER OF NODES TO BE CONDENSED . . . . . .(NODCON)   =,I5//5X,
  1661.      655HNUMBER OF NODES TO BE RETAINED. . . . . . .(NODRET)   =,I5//5X,
  1662.      B55HNUMBER OF SUBSTRUCTURE MID-SURFACE SYSTEMS (NSMIDS)   =,I5//5X)
  1663.  2060 FORMAT (5X,
  1664.      155HCONCENTRATED NODAL DAMPING CODE. . . . . . .(IDAMNS)  =,I5 /5X,
  1665.      255H   EQ.0, NO DAMPING                                        /5X,
  1666.      355H   EQ.1, DAMPING INCLUDED                                 //5X,
  1667.      455HCONCENTRATED NODAL MASSES CODE. . . . . . . (IMASNS)  =,I5 /5X,
  1668.      555H   EQ.0, NO CONCENTRATED NODAL MASSES                      /5X,
  1669.      655H   EQ.1, CONCENTRATED NODAL MASSES PRESENT                    )
  1670. C
  1671.  3000 FORMAT (1H1,37H *** ERROR IN SUBSTRUCTURE DATA INPUT,/
  1672.      141H EXPECTING DATA FOR SUBSTRUCTURE NUMBER =,I5/,
  1673.      240H INPUT DATA IS FOR SUBSTRUCTURE NUMBER =,I5/)
  1674.  3050 FORMAT (37H *** ERROR IN SUBSTRUCTURE DATA INPUT,/
  1675.      125H FOR SUBSTUCTURE NUMBER =I5/,88H SUM OF THE NUMBER OF NODES CON
  1676.      2DENSED AND RETAINED NODES IS NOT EQUAL TO HTE TOTAL NODES,/,
  1677.      38H NODCON=,I5,8H NODRET=,I5,8H NUMNPS=,I5//)
  1678. C
  1679.       END
  1680. C *CDC* *DECK INLIST
  1681. C *UNI* )FOR,IS N.INLIST,R.INLIST
  1682.       SUBROUTINE INLIST (IDATWR,NCARDS)
  1683. C
  1684. C     THIS SUBROUTINE PRODUCES A CARD IMAGE LISTING OF THE INPUT FILE
  1685. C     (UNIT 5).  NCARDS IS THE NUMBER OF CARDS ALREADY READ BEFORE
  1686. C     INLIST IS CALLED
  1687. C
  1688.       DIMENSION IDATA(20)
  1689.       INPUT=5
  1690. C
  1691.       IF (IDATWR.EQ.1) RETURN
  1692.       IF (NCARDS.EQ.0) GO TO 20
  1693.       DO 15 I=1,NCARDS
  1694.       BACKSPACE INPUT
  1695.    15 CONTINUE
  1696. C
  1697.    20 CONTINUE
  1698.       WRITE (6,2000)
  1699.       KARD  = 0
  1700.       KARDNO = 0
  1701. C
  1702.    30 READ(5,1000,END=60)  IDATA
  1703.    40 KARD=KARD + 1
  1704.       KARDNO=KARDNO + 1
  1705.       IF (KARDNO.LE.43) GO TO 50
  1706.       WRITE (6,2010)
  1707.       WRITE (6,2000)
  1708.       KARDNO=1
  1709.    50 WRITE (6,2020) KARD,IDATA
  1710.       GO TO 30
  1711.    60 WRITE (6,2010)
  1712.       WRITE (6,2030)
  1713.       KARD=KARD - NCARDS + 1
  1714. C
  1715.       DO 70   I=1,KARD
  1716.       BACKSPACE INPUT
  1717.    70 CONTINUE
  1718. C
  1719. C
  1720. C *CDC*  THE FOLLOWING CARDS ALLOW THE EDITING OF COMMENT CARDS FROM
  1721. C *CDC*  THE INPUT STREAM AND ARE INSTALLATION DEPENDENT.
  1722. C
  1723. C *CDC*  THESE CARDS ARE USED ON THE  CDC  EQUIPMENT BUT MAY BE CHANGED
  1724. C *CDC*  FOR THE OPTION TO WORK ON OTHER EQUIPMENT.
  1725. C
  1726. C
  1727. C *CDC*  THIS SUBROUTINE PRODUCES A CARD IMAGE LISTING OF THE INPUT
  1728. C *CDC*  DATA ON UNIT 50 IF IDATWR IN THE FIRST DATA SET EQUALS 0 OR 2.
  1729. C *CDC*  THE DATA ARE THEN TRANSFERRED TO UNIT 5 WITH ALL THE COMMENT
  1730. C *CDC*  CARDS REMOVED FOR SUBSEQUENT EXECUTION.
  1731. C
  1732. C *CDC*  NCARDS IS THE NUMBER OF CARDS ALREADY READ BEFORE INLIST
  1733. C *CDC*  IS CALLED.
  1734. C
  1735. C *CDC*      DIMENSION IDATA(20)
  1736. C
  1737. C *CDC*      DATA ICOMNT /4HC***/
  1738. C *CDC*      DATA ICBLNK /4HC   /
  1739. C
  1740. C *CDC*      INPUT=50
  1741. C *CDC*      IREAD=5
  1742. C *CDC*      KD=0
  1743. C
  1744. C *CDC*      IF (IDATWR.NE.0 .AND. IDATWR.NE.2) GO TO 100
  1745. C
  1746. C *CDC*      IF (NCARDS.EQ.0) GO TO 20
  1747. C *CDC*      DO 15 I=1,NCARDS
  1748. C *CDC*      BACKSPACE INPUT
  1749. C *CDC*   15 CONTINUE
  1750. C
  1751. C *CDC*   20 CONTINUE
  1752. C *CDC*      WRITE (6,2000)
  1753. C *CDC*      KARD  = 0
  1754. C *CDC*      KARDNO = 0
  1755. C
  1756. C *** ACTIVATE THE FOLLOWING 2 CARDS FOR  CDC  ONLY ***
  1757. C
  1758. C *CDC*   30 READ (INPUT,1000) IDATA
  1759. C *CDC*      IF (EOF(INPUT)) 60,40
  1760. C
  1761. C *CDC*   40 KARD=KARD + 1
  1762. C *CDC*      KARDNO=KARDNO + 1
  1763. C *CDC*      IF (KARDNO.LE.43) GO TO 50
  1764. C *CDC*      WRITE (6,2010)
  1765. C *CDC*      WRITE (6,2000)
  1766. C *CDC*      KARDNO=1
  1767. C *CDC*   50 IF (IDATA(1).EQ.ICBLNK) IDATA(1)=ICOMNT
  1768. C *CDC*      WRITE (6,2020) KARD,IDATA
  1769. C *CDC*      IF (IDATA(1).EQ.ICOMNT) GO TO 30
  1770. C *CDC*      KD=KD+1
  1771. C *CDC*      WRITE (IREAD,1000) IDATA
  1772. C *CDC*      GO TO 30
  1773. C *CDC*   60 WRITE (6,2010)
  1774. C *CDC*      WRITE (6,2030)
  1775. C *CDC*      GO TO 160
  1776. C
  1777. C *** ACTIVATE THE FOLLOWING 2 CARDS FOR  CDC  ONLY ***
  1778. C
  1779. C *CDC*  100 READ (INPUT,1000) IDATA
  1780. C *CDC*      IF (EOF(INPUT)) 161,110
  1781. C *CDC*  110 IF (IDATA(1).EQ.ICOMNT .OR. IDATA(1).EQ.ICBLNK) GO TO 100
  1782. C *CDC*      KD=KD+1
  1783. C *CDC*      WRITE (IREAD,1000) IDATA
  1784. C *CDC*      GO TO 100
  1785. C
  1786. C *CDC*  160 KD=KD-NCARDS
  1787. C *CDC*  161 DO 170 I=1,KD
  1788. C *CDC*      BACKSPACE IREAD
  1789. C *CDC*  170 CONTINUE
  1790. C
  1791. C
  1792.       RETURN
  1793. C
  1794.  1000 FORMAT (20A4)
  1795.  2000 FORMAT(1H1/10X,111HF O L L O W I N G    I S    A    C A R D    I M
  1796.      1 A G E    L I S T I N G    O F    T H E    I N P U T    D A T A //
  1797.      T58X,26HC O L U M N    N U M B E R,/20X,4HCARD,16X,71H1         2
  1798.      X       3         4         5         6         7         8 /
  1799.      Y19X,6HNUMBER, 6X,80H1234567890123456789012345678901234567890123456
  1800.      Z7890123456789012345678901234567890 /,19X,6(1H-),6X,80(1H-))
  1801.  2010 FORMAT (19X,6(1H-),6X,80(1H-),
  1802.      T       /20X,4HCARD,16X,71H1         2         3         4
  1803.      X5         6        7          8 /19X,6HNUMBER, 6X,80H1234567890123
  1804.      Y456789012345678901234567890123456789012345678901234567890123456789
  1805.      Z0 /58X,26HC O L U M N    N U M B E R )
  1806.  2020 FORMAT (8X,I15,8X,20A4)
  1807.  2030 FORMAT(1H0,10X,34(1H*),44H E N D    O F    I N P U T    L I S T I
  1808.      1N G ,34(1H*))
  1809. C
  1810.       END
  1811. C *CDC* *DECK OPCOEF
  1812. C *UNI* )FOR,IS  N.OPCOEF, R.OPCOEF
  1813.       SUBROUTINE OPCOEF (OPVAR)
  1814. C
  1815. C     CALCULATES COEFFICIENTS OF TIME INTEGRATION OPERATORS
  1816. C     FOR THE FOLLOWING METHODS
  1817. C     IOPE = 1 .....WILSONS THETA METHOD
  1818. C     IOPE = 2 .....NEWMARK METHOD
  1819. C     IOPE = 3 .....CENTRAL DIFFERENCE METHOD
  1820. C
  1821.       IMPLICIT REAL*8 (A-H,O-Z)
  1822.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  1823.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  1824.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  1825.       DIMENSION OPVAR(1)
  1826. C
  1827.       DATA IOUT/6/
  1828.       DATA IOPMAX/3/
  1829. C *CDC*      DATA ZERO /1.E-9/
  1830.       DATA ZERO /1.D-9/
  1831. C *CDC*      DATA THMN /1.39/,THMX /2.01/
  1832.       DATA THMN /1.39D0/,THMX /2.01D0/
  1833. C
  1834. C
  1835.       IF (IOPE.LE.IOPMAX) GO TO 99
  1836.       WRITE(IOUT,1001)
  1837.       STOP
  1838.    99 IF (NSTE.EQ.0 .OR. DT.GT.ZERO) GO TO 100
  1839.       WRITE(IOUT,1003)
  1840.       STOP
  1841.   100 CONTINUE
  1842. C
  1843.       GO TO (101, 111, 121, 131) ,IOPE
  1844. C
  1845. C     W I L S O N S   T H E T A   M E T H O D
  1846. C
  1847.   101 IF (OPVAR(1).LE.0.) OPVAR(1)=1.4
  1848.       TH=OPVAR(1)
  1849.       IF ((TH.GT.THMN).AND.(TH.LT.THMX)) GO TO 102
  1850.       WRITE(IOUT,1002)
  1851.       STOP
  1852.   102 CONTINUE
  1853.       DTA=DT*TH
  1854.       THSQ=TH*TH
  1855.       A0 = 6./(DTA*DTA)
  1856.       A1 = 3./DTA
  1857.       A2 = 2.*A1
  1858.       A3 = 2.
  1859.       A4 = 2.
  1860.       A5 = .5*DTA
  1861.       A6 = A0/TH
  1862.       A7 =-A2/TH
  1863.       A8 = 1.-3./TH
  1864.       A9 = .5*DT
  1865.       A10= DT*DT/6.
  1866.       GO TO 999
  1867.   111 CONTINUE
  1868. C
  1869. C     N E W M A R K S   M E T H O D
  1870. C
  1871.       IF (OPVAR(1).LE.0.0) OPVAR(1)=0.5
  1872.       IF (OPVAR(2).LE.0.0) OPVAR(2)=0.25*((OPVAR(1) + 0.50)**2)
  1873.       DELT=OPVAR(1)
  1874.       ALFA=OPVAR(2)
  1875.       IF (DELT.LT.0.5) GO TO 113
  1876.       IF (DELT.GT.0.55) GO TO 114
  1877.       D1=0.5*(DELT+0.5)
  1878.       D2=D1*D1
  1879.       IF (ALFA.LE.ZERO) GO TO 113
  1880.       IF (ALFA.LT.D2) GO TO 115
  1881.       IF (ALFA.GT.D1) GO TO 114
  1882.       GO TO 116
  1883.   113 CONTINUE
  1884.       WRITE(IOUT,1002)
  1885.       STOP
  1886.   114 CONTINUE
  1887.       WRITE(IOUT,1004)
  1888.       GO TO 116
  1889.   115 CONTINUE
  1890.       WRITE(IOUT,1005)
  1891.   116 CONTINUE
  1892.       DEAL=DELT/ALFA
  1893.       A0 = 1./(ALFA*DT*DT)
  1894.       A1 = DEAL/DT
  1895.       A2 = 1./(ALFA*DT)
  1896.       A3 = .5/ALFA-1.
  1897.       A4 = DEAL-1.
  1898.       A5 = DT*(.5*DEAL-1.)
  1899.       A6 = A0
  1900.       A7 =-A2
  1901.       A8 =-A3
  1902.       A9 = DT*(1. - DELT)
  1903.       A10= DELT*DT
  1904.       GO TO 999
  1905.   121 CONTINUE
  1906. C
  1907. C     C E N T R A L  D I F F E R E N C E  M E T H O D
  1908. C
  1909.       A0=1.0/(DT*DT)
  1910.       A1=0.5/DT
  1911.       A2=2.0*A0
  1912.       A3=1.0/A2
  1913.       GO TO 999
  1914. C
  1915.   131 CONTINUE
  1916.   999 CONTINUE
  1917.       RETURN
  1918. C
  1919.  1001 FORMAT(//,10X,42HINTEGRATION METHOD INDICATOR OUT OF RANGE )
  1920.  1002 FORMAT(//,10X,41HTIME INTEGRATION PARAMETER NOT ADMISSIBLE)
  1921.  1003 FORMAT(//,10X,19HTIME STEP TOO SMALL)
  1922.  1004 FORMAT(//,10X,45HTIME INTEGRATION PARAMETER SUSPICIOUS         )
  1923.  1005 FORMAT(//,10X,45HCONDITIONALLY STABLE ALGORITHM                )
  1924. C
  1925.       END
  1926. C *CDC* *DECK TIMFUN
  1927. C *UNI* )FOR,IS N.TIMFUN,R.TIMFUN
  1928.       SUBROUTINE TIMFUN (RGST,IPNT,TIMV,RV,RG,NTFN,NPTM)
  1929. C
  1930. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  1931. C .                                                                   .
  1932. C .   SUBROUTINE TO CALCULATE TIME FUNCTION VALUES AT ALL TIME POINTS .
  1933. C .   THE TIME FUNCTION VALUES ARE STORED IN RG                       .
  1934. C .                                                                   .
  1935. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  1936. C
  1937.       IMPLICIT REAL*8 (A-H,O-Z)
  1938. C
  1939.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  1940.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  1941.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  1942.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  1943.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  1944.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  1945.       COMMON /CONST/ DT,DTA,ACOEF(21),DTOD,IOPE
  1946.       COMMON /ADINAI/ OPVAR(7),TSTART,IRINT,ISTOTE
  1947.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  1948. C
  1949.       DIMENSION RG(NTFN,1),TIMV(NPTM,1),RV(NPTM,1),IPNT(1),RGST(1)
  1950. C
  1951.       DO 100 L=1,NTFN
  1952.       READ (5,1000) LL,NPTS
  1953.       IF (LL - L) 80,90,80
  1954.    80 WRITE (6,2000)
  1955.       STOP
  1956. C
  1957.    90 IF (IDATWR.LE.1) WRITE (6,2002) L,NPTS
  1958.       IPNT(LL)=NPTS
  1959.       READ  (5,1020) (TIMV(I,LL),RV(I,LL),I=1,NPTS)
  1960.       IF (IDATWR.GT.1) GO TO 95
  1961.       WRITE (6,2004) (TIMV(I,LL),RV(I,LL),I=1,NPTS)
  1962.    95 IF (NPTS.LE.NPTM) GO TO 100
  1963.       WRITE (6,2100) L,NPTS,NPTM
  1964.       STOP
  1965.   100 CONTINUE
  1966. C
  1967.       NT=13
  1968.       IF (NSUBST.GT.0) NT=15
  1969.       REWIND NT
  1970.       DO 200 L=1,NTFN
  1971.       RGST(L)=RV(1,L)
  1972.       NPTS=IPNT(L)
  1973.       TIME=TSTART + DT
  1974.       TIMEP=TSTART + DTA
  1975.       I=0
  1976.       K=1
  1977.   120 I=I + 1
  1978.       IF (I-NPTS) 190,130,130
  1979.   130 WRITE (6,2010)
  1980.       STOP
  1981. C
  1982.   190 DDR=RV(I+1,L) - RV(I,L)
  1983.       DDT=TIMV(I+1,L) - TIMV(I,L)
  1984.       IF (DDT) 110,120,150
  1985.   110 WRITE (6,2020)
  1986.       STOP
  1987.   150 SLOPE=DDR/DDT
  1988.   180 IF (TIMV(I+1,L)-TIME) 120,140,140
  1989.   140 RG(L,K)=RV(I,L) + SLOPE*(TIMEP-TIMV(I,L))
  1990.       TIMEP=TIME + DTA
  1991.       TIME=TIME + DT
  1992.       K=K + 1
  1993.       IF (NSTE-K) 195,180,180
  1994.   195 WRITE (NT) RGST(L),(RG(L,K),K=1,NSTE),NPTS,
  1995.      1           (RV(J,L),TIMV(J,L),J=1,NPTS)
  1996.   200 CONTINUE
  1997. C
  1998.       RETURN
  1999. C
  2000.  1000 FORMAT (2I5)
  2001.  1020 FORMAT (8F10.0)
  2002.  2000 FORMAT (43H *** ERROR   TIME FUNCTIONS OUT OF ORDER   )
  2003.  2002 FORMAT (///25H TIME FUNCTION NUMBER   =,I5/
  2004.      1           25H NUMBER OF TIME POINTS  =,I5//4X,
  2005.      2           25H TIME VALUE      FUNCTION/)
  2006.  2004 FORMAT (3X,F12.5,2X,E15.7)
  2007.  2010 FORMAT (53H *** ERROR   TIME IS LARGER THAN IN THE TIME FUNCTION)
  2008.  2020 FORMAT (42H *** ERROR   TIME POINTS ARE OUT OF ORDER  )
  2009.  2100 FORMAT (///28H *** I N P U T   E R R O R -//
  2010.      1        30H DETECTED BY SUBROUTINE TIMFUN/
  2011.      2        30H WHILE READING TIME FUNCTIONS //
  2012.      3     5X,23H TIME FUNCTION NUMBER =,I5/
  2013.      4     5X,46H NUMBER OF POINTS IN THIS FUNCTION =,I5,
  2014.      5        17H  IS GREATER THAN/
  2015.      6     5X,46H THE MAX NUMBER OF POINTS REQUESTED=,I5,
  2016.      7        49H  AS SPECIFIED ON THE TIME FUNCTION CONTROL CARD. //
  2017.      4        12H *** S T O P)
  2018. C
  2019.       END
  2020. C *CDC* *DECK INPUT
  2021. C *UNI* )FOR,IS  N.INPUT,  R.INPUT
  2022.       SUBROUTINE INPUT (RSDCOS,NODSYS,MIDSS,FMIDSS,TMIDSS,ID,X,Y,Z,
  2023.      1                  IDOF,NDOF,NUMNP,NEQ,NSKEWS,NMIDSS)
  2024. C
  2025. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2026. C .                                                                   .
  2027. C .   P R O G R A M                                                   .
  2028. C .     1. TO READ AND PRINT NODAL POINT INPUT DATA
  2029. C .     2. TO GENERATE AND PRINT ALL NODAL DATA
  2030. C .     3. TO CALCULATE EQUATION NUMBERS AND STORE THEM IN ID ARRRAY  .
  2031. C .                                                                   .
  2032. C .           N=ELEMENT NUMBER                                        .
  2033. C .           ID=BOUNDARY CONDITION CODES (0=FREE, 1, -1=FIXED,       .
  2034. C .                                        -2=CONSTRAINED)            .
  2035. C .           X,Y,Z= COORDINATES                                      .
  2036. C .           KN= GENERATION CODE, I.E. INCREMENT ON NODAL POINT NO   .
  2037. C .           NRST=SKEW SYSTEM SET NUMBER FOR EACH NODE (0 TO NSKEWS) .
  2038. C .           IT= INPUT COORDINATE TYPE                               .
  2039. C .               EQ.0  RECTANGULAR COORDINATES                       .
  2040. C .               EQ.X  CYLINDRICAL COORDINATES (X,R, THETA IN DEG)   .
  2041. C .                                                                   .
  2042. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2043. C
  2044. C
  2045.       IMPLICIT REAL*8 (A-H,O-Z)
  2046. C
  2047.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  2048.       COMMON /PORT/ INPORT,JNPORT,NPUTSV,LUNODE,LU1,LU2,LU3,JDC,JVC,JAC
  2049.       COMMON /VAR   / NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  2050.      1                IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  2051.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  2052.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  2053.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  2054.       COMMON /MIDSYS/ NMIDST,MIDIND,MAXMSS
  2055. C
  2056.       DIMENSION RSDCOS(9,1),NODSYS(1),ID(NDOF,1),X(1),Y(1),Z(1)
  2057.       DIMENSION MIDSS(1),FMIDSS(3,1),TMIDSS(3,1),PARMR(3)
  2058.       DIMENSION V1(3),V2(3)
  2059. C
  2060.       INTEGER IDOF(6),IDT(6),IDTOLD(6),IPRC(4)
  2061. C
  2062.       DATA RECLB1/8HEQUATONS/, RECLB2/8HNODECORD/
  2063.       DATA RECLB3/8HRSDCOS  /,RECLB4/8HNODESYST/,RECLB5/8HNODEMIDS/
  2064.       DATA RECLB6/8HNODEFMID/
  2065.       DATA IPRC /1H ,1HA,1HB,1HC /
  2066.       DATA AHE /4H    /, AHD /4HNRST/
  2067. C
  2068. C *CDC*      XTOL=1.0E-8
  2069. C
  2070.       XTOL=1.0D-8
  2071. C
  2072.       IF (ISUB.GT.0) GO TO 3
  2073.       IF (NSKEWS.LT.1) GO TO 3
  2074.       CALL RSTSYS (RSDCOS,NSKEWS)
  2075. C
  2076. C***  DATA PORTHOLE (START)
  2077. C
  2078.       RECLAB = RECLB3
  2079.       IF (JNPORT.NE.0 .AND. NPUTSV.NE.0)
  2080.      1  WRITE (LUNODE) RECLAB,NSKEWS,((RSDCOS(K,I),K=1,9),I=1,NSKEWS)
  2081. C
  2082. C*** DATA PORTHOLE (END)
  2083. C
  2084. C     READ AND PRINT THE NORMAL VECTORS TABLES
  2085. C
  2086.     3 IF (NMIDSS.LT.1) GO TO 4
  2087.       DO 2 L=1,NUMNP
  2088.     2 MIDSS(L)=0
  2089. C
  2090.       IF (IDATWR.LT.2) WRITE(6,2300)
  2091. C
  2092.       I=1
  2093.       READ(5,1100) N,IDEF,(PARMR(J),J=1,3)
  2094.       IF(I.EQ.1 .AND. N.NE.1) GO TO 90
  2095. C
  2096. C     IF NORMAL VECTOR IS INPUT IN THE -VE Y-DIRECTION, RESET
  2097. C     IT TO THE +VE Y-DIRECTION
  2098. C
  2099.    42 IRESET=0
  2100.       IF(IDEF-1)6,6,7
  2101. C
  2102.     6 IDEF=1
  2103.    34 XNORM=0.D0
  2104.       DO 35 L=1,3
  2105.    35 XNORM=XNORM + PARMR(L)*PARMR(L)
  2106.       SQNORM=DSQRT(XNORM)
  2107.       DO 8 L=1,3
  2108.     8 TMIDSS(L,I)=PARMR(L)/SQNORM
  2109.       GO TO 36
  2110. C
  2111.     7 THT=PARMR(2)*DATAN(1.D0)/45.
  2112.       PHI=PARMR(1)*DATAN(1.D0)/45.
  2113.       TMIDSS(3,I)=DCOS(THT)
  2114.       TMIDSS(2,I)=-DSIN(THT)*DCOS(PHI)
  2115.       TMIDSS(1,I)=DSIN(THT)*DSIN(PHI)
  2116.       PHI1=PARMR(1)
  2117.       THI1=PARMR(2)
  2118.    36 CONTINUE
  2119. C
  2120.       A1=DABS(TMIDSS(1,I))
  2121.       A3=DABS(TMIDSS(3,I))
  2122.       IF(A3.LT.XTOL .AND. A1.LT.XTOL .AND. TMIDSS(2,I).LT.0.) GO TO 98
  2123.       GO TO 69
  2124.    98 TMIDSS(2,I)=-TMIDSS(2,I)
  2125.       IRESET=1
  2126.    69 IF (IDATWR.GT.1) GO TO 9
  2127.       IF (IRESET.EQ.1) GO TO 37
  2128.       WRITE (6,2310) N,IDEF,(PARMR(J),J=1,3),(TMIDSS(L,I),L=1,3)
  2129.       GO TO 9
  2130.    37 WRITE (6,2311) N,IDEF,(PARMR(J),J=1,3),(TMIDSS(L,I),L=1,3)
  2131.     9 CONTINUE
  2132.       I=I+1
  2133.    48 IF(I.GT.NMIDSS) GO TO 4
  2134.       NOLD=N
  2135.       IOLD=IDEF
  2136.       READ(5,1100) N,IDEF,(PARMR(J),J=1,3)
  2137.       NDIF=N-NOLD
  2138.       IF(NDIF.LE.0) GO TO 90
  2139.       IF(NDIF.EQ.1) GO TO 42
  2140.       IF(IOLD.NE.2) GO TO 218
  2141.       IF(IDEF.EQ.2) GO TO 202
  2142.   218 WRITE(6,3400)
  2143.       STOP
  2144.   202 CONTINUE
  2145.    44 THI2=PARMR(2)
  2146.       PHI2=PARMR(1)
  2147.    46 DIF=NDIF
  2148.       ANCTH=(THI2-THI1)/DIF
  2149.       ANCPH=(PHI2-PHI1)/DIF
  2150.       PARMR(1)=PHI1
  2151.       PARMR(2)=THI1
  2152.       DO 47 II=1,NDIF
  2153.       PARMR(1)=PARMR(1)+ANCPH
  2154.       PARMR(2)=PARMR(2)+ANCTH
  2155.       THT=PARMR(2)*DATAN(1.D0)/45.D0
  2156.       PHI=PARMR(1)*DATAN(1.D0)/45.D0
  2157.       TMIDSS(3,I)=DCOS(THT)
  2158.       TMIDSS(2,I)=-DSIN(THT)*DCOS(PHI)
  2159.       TMIDSS(1,I)=DSIN(THT)*DSIN(PHI)
  2160.       IRESET=0
  2161.       IDEF=2
  2162.       A1=DABS(TMIDSS(1,I))
  2163.       A3=DABS(TMIDSS(3,I))
  2164.       IF(A3.LT.XTOL .AND. A1.LT.XTOL .AND. TMIDSS(2,I).LT.0.) GO TO 97
  2165.       GO TO 99
  2166.    97 TMIDSS(2,I)=-TMIDSS(2,I)
  2167.       IRESET=1
  2168.    99 IF(IDATWR.GT.1) GO TO 47
  2169.       IF(IRESET.EQ.1) GO TO 210
  2170.       WRITE(6,2310) I,IDEF,(PARMR(J),J=1,3),(TMIDSS(L,I),L=1,3)
  2171.       GO TO 201
  2172.   210 WRITE(6,2311) I,IDEF,(PARMR(J),J=1,3),(TMIDSS(L,I),L=1,3)
  2173.   201 I=I+1
  2174.    47 CONTINUE
  2175.       GO TO 48
  2176.    90 WRITE(6,3100)
  2177.       STOP
  2178. C
  2179. C     READ AND PRINT NODAL POINT DATA
  2180. C
  2181.     4 IF (IDATWR.GT.1) GO TO 5
  2182.       IF (ISUB.EQ.0) WRITE (6,2000)
  2183.       IF (ISUB.GT.0) WRITE (6,2020)
  2184.       WRITE(6,2001)
  2185.     5 NOLD=0
  2186.       ITOLD=0
  2187.       KNOLD=0
  2188.       DUM=0.
  2189.       ALF=0.
  2190.       BTA=0.
  2191.       RNEW=0.
  2192.       IPR=IPRC(1)
  2193.       RAD=DATAN(1.D0)/45.0
  2194. C
  2195.       IREAD=5
  2196.       IF (INPORT.GT.0) IREAD=59
  2197.    10 READ(IREAD,1000) IT,N,JPR,(IDT(I),I=1,6),X(N),Y(N),Z(N),KN,
  2198.      1                 NRST,MIDS
  2199.       IF (N.GT.0 .AND. N.LE.NUMNP) GO TO 25
  2200.       WRITE (6,2100) N,NUMNP,NOLD
  2201.       STOP
  2202. C
  2203.    25 IF (IDATWR.LE.1)
  2204.      * WRITE (6,2002) IT,N,IDT,X(N),Y(N),Z(N),KN,NRST,MIDS
  2205.       IF (N.EQ.1) IPR=JPR
  2206. C
  2207.       IF (NSKEWS.EQ.0) GO TO 11
  2208.       IF (NRST.GE.0 .AND. NRST.LE.NSKEWS) GO TO 11
  2209.       WRITE (6,2200) N,NRST,NSKEWS
  2210.       STOP
  2211. C
  2212.    11 IF (IT.EQ.IPRC(1)) GO TO 12
  2213.       DUM=Z(N)*RAD
  2214.       RNEW=Y(N)
  2215.       Z(N)=Y(N)*DSIN(DUM)
  2216.       Y(N)=Y(N)*DCOS(DUM)
  2217.    12 IF (NMIDSS.LT.1) GO TO 17
  2218.       IF (MIDS.LT.1) GO TO 17
  2219.       DO 19 L=1,3
  2220.    19 FMIDSS(L,N)=TMIDSS(L,MIDS)
  2221.       MIDSS(N)=N
  2222.    17 II=0
  2223.       DO 15 I=1,NDOF
  2224.    13 II=II + 1
  2225.       IF (II.LE.6) GO TO 14
  2226.       WRITE (6,3000)
  2227.       STOP
  2228.    14 IF (IDOF(II).EQ.1) GO TO 13
  2229.    15 ID(I,N)=IDT(II)
  2230.       IF (NSKEWS.GT.0) NODSYS(N)=NRST
  2231.       IF (NOLD.EQ.0) GO TO 50
  2232.       II=0
  2233.       DO 20 I=1,NDOF
  2234.    16 II=II + 1
  2235.       IF (II.LE.6) GO TO 18
  2236.       WRITE (6,3000)
  2237.       STOP
  2238.    18 IF (IDOF(II).EQ.1) GO TO 16
  2239.       IF (IDTOLD(II).NE.-1) GO TO 20
  2240.       IF (IDT(II).NE.0) GO TO 20
  2241.       ID(I,N)=ID(I,NOLD)
  2242.       IDT(II)=IDTOLD(II)
  2243.    20 CONTINUE
  2244.       IF (KNOLD.EQ.0) GO TO 50
  2245. C
  2246. C     G E N E R A T I O N
  2247. C
  2248.       NUM=(N-NOLD) / KNOLD
  2249.       NUMN=NUM-1
  2250.       IF(NUMN.LT.1) GO TO 50
  2251.       XNUM=NUM
  2252.       DX=(X(N)-X(NOLD))/XNUM
  2253.       IF(MIDS.EQ.0 .AND. MIDOLD.EQ.0) GO TO 91
  2254.       IF(MIDS.NE.0 .AND. MIDOLD.NE.0) GO TO 91
  2255.       WRITE(6,3200)
  2256.       STOP
  2257.    91 AMIDS=MIDS
  2258.       AMOL=MIDOLD
  2259.       DM=(AMIDS-AMOL)/XNUM
  2260.       IDM=DM
  2261.       DMM=IDM
  2262.       IF(DM.EQ.DMM) GO TO 92
  2263.       WRITE(6,3300) N,NOLD
  2264.       STOP
  2265.    92 IDM=DM
  2266.       IF (IT.EQ.IPRC(1)) GO TO 21
  2267.       DR=(RNEW-ROLD)/XNUM
  2268.       DT=(DUM-DUMOLD)/XNUM
  2269.       DALF=(ALF - ALFOLD)/XNUM
  2270.       DBTA=(BTA - BTAOLD)/XNUM
  2271.       GO TO 22
  2272.    21 DY=(Y(N)-Y(NOLD))/XNUM
  2273.       DZ=(Z(N)-Z(NOLD))/XNUM
  2274.    22 K=NOLD
  2275.       MIDS=MIDOLD
  2276.       DO 40 J=1,NUMN
  2277.       KK=K
  2278.       K=K + KNOLD
  2279.       X(K)=X(KK)+DX
  2280.       IF (IT.EQ.IPRC(1)) GO TO 26
  2281.       ROLD=ROLD+DR
  2282.       DUMOLD=DUMOLD+DT
  2283.       Y(K)=ROLD*DCOS(DUMOLD)
  2284.       Z(K)=ROLD*DSIN(DUMOLD)
  2285.       GO TO 94
  2286.    26 Y(K)=Y(KK)+DY
  2287.       Z(K)=Z(KK)+DZ
  2288.    94 MIDS=MIDS+IDM
  2289.       IF (NMIDSS.LT.1) GO TO 28
  2290.       IF (MIDS.LT.1) GO TO 28
  2291.       DO 29 L=1,3
  2292.    29 FMIDSS(L,K)=TMIDSS(L,MIDS)
  2293.    28 DO 30 I=1,NDOF
  2294.       ID(I,K)=ID(I,KK)
  2295.    30 CONTINUE
  2296.       IF (NSKEWS.GT.0) NODSYS(K)=NODSYS(KK)
  2297.       IF (NMIDSS.GT.0 .AND. MIDS.GT.0) MIDSS(K)=K
  2298.    40 CONTINUE
  2299. C
  2300.    50 NOLD=N
  2301.       KNOLD=KN
  2302.       DUMOLD=DUM
  2303.       BTAOLD=BTA
  2304.       ALFOLD=ALF
  2305.       ROLD=RNEW
  2306.       MIDOLD=MIDS
  2307.       DO 60 I=1,6
  2308.    60 IDTOLD(I)=IDT(I)
  2309.       IF(N.NE.NUMNP) GO TO 10
  2310. C
  2311.       IF (IDATWR.GT.1) GO TO 80
  2312.       IF (IPR.EQ.IPRC(2) .OR. IPR.EQ.IPRC(4)) GO TO 80
  2313. C
  2314.       WRITE(6,2003)
  2315.       ARST=AHD
  2316.       WRITE (6,2008) ARST
  2317.       DO 75 N=1,NUMNP
  2318.       I=1
  2319.       DO 70 II=1,6
  2320.       IDT(II)=IDOF(II)
  2321.       IF (IDOF(II).EQ.1) GO TO 70
  2322.       IDT(II)=ID(I,N)
  2323.       I=I + 1
  2324.    70 CONTINUE
  2325.       NRST=0
  2326.       IF (NSKEWS.GT.0) NRST=NODSYS(N)
  2327.       IF (NMIDSS) 72,72,73
  2328.    72 WRITE (6,2005) N,IDT,X(N),Y(N),Z(N),NRST
  2329.       GO TO 75
  2330.    73 IF (MIDSS(N)) 72,72,74
  2331.    74 CONTINUE
  2332. C
  2333. C     CALCULATE DIRECTIONS V1 AND V2 FOR ROTATIONAL D.O.F.
  2334. C
  2335.       VN1=FMIDSS(1,N)
  2336.       VN2=FMIDSS(2,N)
  2337.       VN3=FMIDSS(3,N)
  2338.       TEMP=DABS(VN2) - 1.0
  2339.       TEMP=DABS(TEMP)
  2340.       IF (TEMP.GT.XTOL) GO TO 76
  2341. C
  2342. C     SPECIAL CASE - VN PARALLEL TO  Y-AXIS
  2343. C        SET V1 = Z ,  V2 = X
  2344. C
  2345.       DO 77 LV=1,2
  2346.       V1(LV)=0.
  2347.    77 V2(LV+1)=0.
  2348.       V1(3)=VN2
  2349.       V2(1)=VN2
  2350.       GO TO 78
  2351. C
  2352. C     NORMAL CASE - VN NOT PARALLEL TO Y-AXIS
  2353. C        SET  V1 = Y CROSS VN ,  V2 = VN CROSS V1
  2354. C
  2355.    76 DUM=DSQRT(VN1*VN1 + VN3*VN3)
  2356.       V1(1)=VN3/DUM
  2357.       V1(2)=0.
  2358.       V1(3)=-VN1/DUM
  2359.       TEMP1=V1(3)*VN2
  2360.       TEMP2=-V1(3)*VN1 + V1(1)*VN3
  2361.       TEMP3=-V1(1)*VN2
  2362.       DUM=DSQRT(TEMP1*TEMP1 + TEMP2*TEMP2 + TEMP3*TEMP3)
  2363.       V2(1)=TEMP1/DUM
  2364.       V2(2)=TEMP2/DUM
  2365.       V2(3)=TEMP3/DUM
  2366.    78 WRITE (6,2005) N,IDT,X(N),Y(N),Z(N),NRST,
  2367.      1               (V1(LV),LV=1,3),(V2(LV),LV=1,3)
  2368.    75 CONTINUE
  2369. C
  2370.    80 CONTINUE
  2371. C
  2372. C     COMPACT THE NORMAL VECTOR TABLE (FMIDSS)
  2373. C
  2374.       IF (NMIDSS.LT.1) GO TO 84
  2375.       II=0
  2376.       DO 82 I=1,NUMNP
  2377.       LL=MIDSS(I)
  2378.       IF (LL.EQ.0) GO TO 82
  2379.       II=II + 1
  2380.       MIDSS(I)=II
  2381.       DO 83 L=1,3
  2382.    83 FMIDSS(L,II)=FMIDSS(L,I)
  2383.    82 CONTINUE
  2384.       MAXMSS=II
  2385. C
  2386. C     NUMBER UNKNOWNS
  2387. C
  2388.    84 IF (INPORT.EQ.2) GO TO 125
  2389.       NEQ=0
  2390.       DO 100 N=1,NUMNP
  2391.       DO 100 I=1,NDOF
  2392.       IDUM=ID(I,N) + 3
  2393.       GO TO (100,110,120,110), IDUM
  2394.   120 NEQ=NEQ + 1
  2395.       ID(I,N)=NEQ
  2396.       GO TO 100
  2397.   110 ID(I,N)=0
  2398.   100 CONTINUE
  2399.       GO TO 130
  2400. C
  2401. C     READ ID ARRAY FROM UNIT 59, INSTEAD OF GENERATING IT
  2402. C
  2403.   125 DO 126 N=1,NUMNP
  2404.       READ (IREAD,1001) (ID(I,N),I=1,NDOF)
  2405.   126 CONTINUE
  2406.       NEQ=0
  2407.       DO 140 N=1,NUMNP
  2408.       DO 140 I=1,NDOF
  2409.   140 IF (ID(I,N).GT.NEQ) NEQ=ID(I,N)
  2410. C
  2411.   130 NN=3
  2412.       IF (ISUB.EQ.0) GO TO 150
  2413.       NN=15
  2414.       IF (NSKEWS.EQ.0)
  2415.      *  WRITE (NN) ((ID(I,J),I=1,NDOF),J=1,NUMNP)
  2416.       IF (NSKEWS.GT.0)
  2417.      *  WRITE (NN) ((ID(I,J),I=1,NDOF),J=1,NUMNP),(NODSYS(K),K=1,NUMNP)
  2418.       NEQC=0
  2419.       DO 145 I=1,NDOF
  2420.       DO 145 J=1,NODCON
  2421.       II=ID(I,J)
  2422.       IF (II.GT.NEQC) NEQC=II
  2423.   145 CONTINUE
  2424. C
  2425.   150 WRITE (NN) (X(I),I=1,NUMNP)
  2426.       WRITE (NN) (Y(I),I=1,NUMNP)
  2427.       WRITE (NN) (Z(I),I=1,NUMNP)
  2428.       IF (ISUB.EQ.0 .AND. NSKEWS.GT.0)
  2429.      1    WRITE (NN) (NODSYS(K),K=1,NUMNP)
  2430.       IF (IDATWR.GT.1) GO TO 200
  2431.       IF (IPR.EQ.IPRC(3) .OR. IPR.EQ.IPRC(4)) GO TO 200
  2432.       WRITE (6,2004)
  2433.       DO 175 N=1,NUMNP
  2434.       I=1
  2435.       DO 170 II=1,6
  2436.       IDT(II)=0
  2437.       IF (IDOF(II).EQ.1) GO TO 170
  2438.       IDT(II)=ID(I,N)
  2439.       I=I + 1
  2440.   170 CONTINUE
  2441.   175 WRITE (6,2006) N,(IDT(II),II=1,6)
  2442. C
  2443. C***  DATA PORTHOLE (START)
  2444. C
  2445.   200 IF (JNPORT.EQ.0) RETURN
  2446.       RECLAB=RECLB1
  2447.       WRITE(LUNODE) RECLAB,NDOF,(IDOF(I),I=1,6),((ID(I,J),I=1,NDOF),
  2448.      1   J=1,NUMNP),NEQ
  2449.       IF (NPUTSV.EQ.0) RETURN
  2450.       RECLAB=RECLB2
  2451.       WRITE (LUNODE) RECLAB,NUMNP,(X(I),I=1,NUMNP),
  2452.      1                            (Y(I),I=1,NUMNP),
  2453.      2                            (Z(I),I=1,NUMNP)
  2454.       RECLAB = RECLB4
  2455.       IF (NSKEWS.GE.1)
  2456.      1  WRITE (LUNODE) RECLAB,NUMNP,(NODSYS(I),I=1,NUMNP)
  2457.       RECLAB = RECLB5
  2458.       IF (NMIDSS.GE.1)
  2459.      1  WRITE (LUNODE) RECLAB,NUMNP,(MIDSS(I),I=1,NUMNP)
  2460.       RECLAB = RECLB6
  2461.       IF (NMIDSS.GE.1)
  2462.      1  WRITE (LUNODE) RECLAB,MAXMSS,((FMIDSS(L,I),L=1,3),I=1,MAXMSS)
  2463. C
  2464. C***  DATA PORTHOLE (END)
  2465. C
  2466.       RETURN
  2467. C
  2468.  1000 FORMAT (A1,I4,A1,I4,5I5,3F10.0,3I5)
  2469.  1001 FORMAT (6I5)
  2470.  1100 FORMAT (2I5,3F10.0)
  2471.  2000 FORMAT (1H1,31HN O D A L   P O I N T   D A T A///)
  2472.  2020 FORMAT (1H1,57HS U B S T R U C T U R E   N O D A L   P O I N T   D
  2473.      1 A T A    ///)
  2474.  2001 FORMAT (18H INPUT NODAL DATA //4H IT ,6H  NODE,10X,24HBOUNDARY CON
  2475.      1DITION CODES,14X,23HNODAL POINT COORDINATES//,5X,
  2476.      214X 1HX 4X 1HY 4X 1HZ 3X 2HXX 3X 2HYY 3X 2HZZ 12X 1HX 12X 1HY 12X
  2477.      3        1HZ,8X,2HKN,3X,4HNRST,2X,4HMIDS/,17X,29H( IN COORDINATE SY
  2478.      4STEM NRST ),11X,27H( IN COORDINATE SYSTEM IT )  /)
  2479.  2002 FORMAT(2X,A1,2X,I5,5X,6I5,3F13.4,5X,I5,I7,I6)
  2480.  2003 FORMAT (//21H GENERATED NODAL DATA)
  2481.  2004 FORMAT (//17H EQUATION NUMBERS//
  2482.      1 35H    N    X    Y    Z   XX   YY   ZZ/
  2483.      2 20X,16H  (V1) (V2) (VN)  //)
  2484.  2008 FORMAT(/5H NODE 10X 24HBOUNDARY CONDITION CODES 14X 23HNODAL POINT
  2485.      1 COORDINATES,20X,24H DIRECTIONS OF V1 AND V2//14X,1HX,4X,1HY,4X,
  2486.      2 1HZ,3X,2HXX,3X,2HYY,3X,2HZZ,12X,1HX,12X,1HY,12X,1HZ,3X,A4,
  2487.      3 4X,42H(V1,X) (V1,Y) (V1,Z)  (V2,X) (V2,Y) (V2,Z)/12X,
  2488.      4 29H( IN COORDINATE SYSTEM NRST ),9X,
  2489.      5 30H( IN GLOBAL XYZ COORD SYSTEM )  /)
  2490.  2005 FORMAT (I5,5X,6I5,3F13.4,I6,4X,3F7.3,1X,3F7.3)
  2491.  2006 FORMAT (7I5)
  2492.  2300 FORMAT (1H1,49HT A B L E S   O F   M I D-S U R F A C E   N O D A ,
  2493.      1        49H L   P O I N T   N O R M A L   V E C T O R S      ///,
  2494.      2       9X,1HN,1X,4HIDEF,5X,8HPARMR(1),5X,8HPARMR(2),
  2495.      3       5X,8HPARMR(3),9X,9HCOS(VN,X),4X,9HCOS(VN,Y),4X,
  2496.      4       9HCOS(VN,Z)/)
  2497.  2310 FORMAT (5X,2I5,3F13.6,5X,3F13.6)
  2498.  2311 FORMAT (5X,2I5,3F13.6,5X,3F13.6,4X,20HVN IS RESET TO +VE Y  )
  2499.  2100 FORMAT (///24H I N P U T   E R R O R -/
  2500.      1        29H DETECTED BY SUBROUTINE INPUT/
  2501.      2        32H WHILE READING NODAL COORDINATES//
  2502.      3        15H NODE NUMBER N=,I5,
  2503.      4        41H IS OUTSIDE THE ALLOWABLE RANGE (1,NUMNP=,I5,2H).//
  2504.      5        32H LAST NODE NUMBER READ WAS NOLD=,I5//8H S T O P)
  2505.  2200 FORMAT (///24H I N P U T   E R R O R -/
  2506.      1        29H DETECTED BY SUBROUTINE INPUT/
  2507.      2        32H WHILE READING NODAL COORDINATES//
  2508.      3        15H NODE NUMBER N=,I5/
  2509.      4        45H SKEW SYSTEM SET NUMBER FOR THIS NODE  NRST =,I5/
  2510.      5        42H IS OUTSIDE THE ALLOWABLE RANGE (0,NSKEWS=,I3,2H).//
  2511.      6        8H S T O P)
  2512.  3000 FORMAT (///48H **STOP, ERROR IN DEGREE OF FREEDOM CALCULATIONS,/,
  2513.      1           28H CHECK MASTER CONTROL CARD 1 ,/1X)
  2514.  3100 FORMAT(///5X,20HI N P U T  E R R O R/
  2515.      A5X,28HDETECTED BY SUBROUTINE INPUT/
  2516.      B5X,26HWHILE INPUTING NORMAL SETS/
  2517.      C5X,21HFIRST SET MUST BE N=1/
  2518.      D5X,45HSETS MUST BE ARRANGED IN ASCENDING ORDER OF N/
  2519.      E5X, 8H S T O P)
  2520.  3200 FORMAT(///5X,20HI N P U T  E R R O R/
  2521.      A5X,28HDETECTED BY SUBROUTINE INPUT/
  2522.      B5X,47HCANNOT GENERATE BETWEEN MIDS.EQ.0 AND MIDS.NE.0/
  2523.      C5X, 8H S T O P)
  2524.  3300 FORMAT(///5X,20HI N P U T  E R R O R/
  2525.      A5X,28HDETECTED BY SUBROUTINE INPUT/
  2526.      B5X,36HCANNOT GENERATE NORMALS BETWEEN NODS,I5, 3HAND,I5/
  2527.      C5X,8H S T O P)
  2528.  3400 FORMAT(///5X,20HI N P U T  E R R O R/
  2529.      A5X,39HGENERATE NORMALS ONLY WITH IDEF=2.STOP.)
  2530. C
  2531.       END
  2532. C *CDC* *DECK RSTSYS
  2533. C *UNI* )FOR,IS N.RSTSYS,R.RSTSYS
  2534.       SUBROUTINE RSTSYS (RSDCOS,NSKEWS)
  2535. C
  2536. C     PROGRAM TO READ, PRINT AND CHECK (A,B,C) ORIENTATION DATA
  2537. C     USED TO DESCRIBE SKEW NODE DISPLACEMENTS
  2538. C
  2539.       IMPLICIT REAL*8 (A-H,O-Z)
  2540.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  2541.       DIMENSION RSDCOS(9,1),PARMR(6)
  2542.       DATA IHED /2H A/,  IHEAD /2H B/
  2543. C
  2544.       DEGRAD=DATAN(1.D0)/45.
  2545.       IF (IDATWR.LE.1) WRITE (6,2000)
  2546. C
  2547.       DO 400 K=1,NSKEWS
  2548.       READ (5,1000) N,IDEF,PARMR
  2549.       IF (IDEF.EQ.0) IDEF = 1
  2550.       IF (IDATWR.LE.1) WRITE (6,2010) N,IDEF
  2551.       IF (IDEF.EQ.2) GO TO 310
  2552. C
  2553. C     PRINT DIRECTION RATIOS
  2554. C
  2555.       IF (IDATWR.LE.1) WRITE (6,2020) PARMR
  2556. C
  2557. C     NORMALISE DIRECTION RATIOS AND STORE THEM
  2558. C
  2559.       FACR = 0.
  2560.       FACS = 0.
  2561. C
  2562.       DO 200 I=1,3
  2563.       FACR = FACR + PARMR(I)  *PARMR(I)
  2564.       FACS = FACS + PARMR(I+3)*PARMR(I+3)
  2565.   200 CONTINUE
  2566. C
  2567.       FACR = DSQRT(FACR)
  2568.       FACS = DSQRT(FACS)
  2569. C
  2570.       IF (FACR.EQ.0.) GO TO 220
  2571.       IF (FACS.EQ.0.) GO TO 230
  2572.       GO TO 250
  2573. C
  2574.   220 IFAC=IHED
  2575.       GO TO 240
  2576.   230 IFAC=IHEAD
  2577.   240 WRITE (6,2500) N,IFAC
  2578.       STOP
  2579. C     RSDCOS(9,N) STORES THE FOLLOWING DIRECTION COSINES -
  2580. C        COS(A,X), COS(A,Y), COS(A,Z),  COS(B,X), COS(B,Y), COS(B,Z),
  2581. C        COS(C,X), COS(C,Y), COS(C,Z),  RESPECTIVELY.
  2582. C
  2583.   250 DO 300 M=1,3
  2584.       RSDCOS(M  ,N) = PARMR(M)  /FACR
  2585.       RSDCOS(M+3,N) = PARMR(M+3)/FACS
  2586.   300 CONTINUE
  2587. C
  2588. C     TEST (A,B) DIRECTIONS FOR ORTHOGONALITY
  2589. C
  2590.       DOT=0.
  2591.       DO 305 I=1,3
  2592.   305 DOT=DOT + RSDCOS(I,N)*RSDCOS(I+3,N)
  2593.       IF (DABS(DOT).LT.1.D-06) GO TO 340
  2594.       WRITE (6,2600) N,DOT
  2595.       STOP
  2596. C
  2597. C     PRINT EULER ANGLES
  2598. C
  2599. C     THE ORDER OF ROTATION IS AS FOLLOWS -
  2600. C        1. PHI AROUND X-AXIS
  2601. C        2. THETA ABOUT DISPLACED Y-AXIS
  2602. C        3. PSI AROUND DISPLACED X-AXIS
  2603. C
  2604.   310 IF (IDATWR.LE.1) WRITE (6,2030) (PARMR(I),I=1,3)
  2605. C
  2606. C     COMPUTE THE DIRECTION COSINES FROM EULER ANGLES
  2607. C
  2608.       DO 315 I=1,3
  2609.   315 PARMR(I)=DEGRAD*PARMR(I)
  2610. C
  2611.       CPHI = DCOS(PARMR(1))
  2612.       SPHI = DSIN(PARMR(1))
  2613.       CTHT = DCOS(PARMR(2))
  2614.       STHT = DSIN(PARMR(2))
  2615.       CPSI = DCOS(PARMR(3))
  2616.       SPSI = DSIN(PARMR(3))
  2617. C
  2618.       RSDCOS(1,N) = CTHT
  2619.       RSDCOS(2,N) = SPHI*STHT
  2620.       RSDCOS(3,N) =-CPHI*STHT
  2621.       RSDCOS(4,N) = SPSI*STHT
  2622.       RSDCOS(5,N) = CPHI*CPSI - SPHI*SPSI*CTHT
  2623.       RSDCOS(6,N) = SPHI*CPSI + CPHI*SPSI*CTHT
  2624. C
  2625. C     CALCULATE C-AXIS DIRECTION COSINES VIA CROSS PRODUCT
  2626. C
  2627.   340 RSDCOS(7,N)=RSDCOS(2,N)*RSDCOS(6,N) - RSDCOS(3,N)*RSDCOS(5,N)
  2628.       RSDCOS(8,N)=RSDCOS(3,N)*RSDCOS(4,N) - RSDCOS(1,N)*RSDCOS(6,N)
  2629.       RSDCOS(9,N)=RSDCOS(1,N)*RSDCOS(5,N) - RSDCOS(2,N)*RSDCOS(4,N)
  2630. C
  2631. C     PRINT ACTUAL DIRECTION COSINES
  2632. C
  2633.       IF (IDATWR.LE.1) WRITE (6,2040) (RSDCOS(I,N),I=1,9)
  2634. C
  2635.   400 CONTINUE
  2636. C
  2637.       RETURN
  2638. C
  2639. C     F O R M A T S
  2640. C
  2641.  1000 FORMAT (2I5,6F10.0)
  2642. C
  2643.  2000 FORMAT (44H1A - B - C   S K E W   S Y S T E M   D A T A    )
  2644.  2010 FORMAT (//
  2645.      A 54H SKEW SET NUMBER . . . . . . . . . . . . . (N)       =,I5//
  2646.      B 54H SET DEFINITION CODE . . . . . . . . . . . (IDEF)    =,I5 /5X,
  2647.      C 54H    EQ.1, BY DIRECTION RATIOS                             /5X,
  2648.      D 54H    EQ.2, BY EULER ANGLES                                    )
  2649.  2020 FORMAT (//23H INPUT DIRECTION RATIOS,                       //20X,
  2650.      A 7H X-AXIS,13X,7H Y-AXIS,13X,7H Z-AXIS,                     // 4X,
  2651.      A 7H A-AXIS,3(7X,E13.6)/4X,7H B-AXIS,3(7X,E13.6))
  2652.  2030 FORMAT (//34H INPUT EULER ANGLES   (IN DEGREES)//22X,
  2653.      A 4H PHI,15X,6H THETA,15X,4H PSI                             //11X,
  2654.      B 3(7X,E13.6)                                                     )
  2655.  2040 FORMAT (//28H GENERATED DIRECTION COSINES,                  //20X,
  2656.      A 7H X-AXIS,13X,7H Y-AXIS,13X,7H Z-AXIS,                     // 4X,
  2657.      B 7H A-AXIS,3(7X,E13.6)/4X,7H B-AXIS,3(7X,E13.6)/4X,
  2658.      C 7H C-AXIS,3(7X,E13.6)///)
  2659. C
  2660.  2500 FORMAT (///24H I N P U T   E R R O R -/
  2661.      1        30H DETECTED BY SUBROUTINE RSTSYS/
  2662.      2        48H WHILE READING SKEW COORDINATE SYSTEM DEFINITION//
  2663.      3        27H SKEW SYSTEM SET NUMBER N =,I5/
  2664.      4        39H INADMISSIBLE DIRECTION NUMBERS FOR THE,A2,6H-AXIS./5X,
  2665.      5        34H (DIRECTION NUMBERS ARE ALL ZERO.)//8H S T O P)
  2666.  2600 FORMAT (///24H I N P U T   E R R O R -/
  2667.      1        30H DETECTED BY SUBROUTINE RSTSYS/
  2668.      2        48H WHILE READING SKEW COORDINATE SYSTEM DEFINITION//
  2669.      3        27H SKEW SYSTEM SET NUMBER N =,I5/
  2670.      4        32H INADMISSIBLE DIRECTION NUMBERS./5X,
  2671.      5        38H A-AXIS AND B-AXIS ARE NOT ORTHOGONAL.  /5X,
  2672.      6        14H DOT PRODUCT =,E14.6//8H S T O P)
  2673. C
  2674.       END
  2675. C *CDC* *DECK CONEQN
  2676. C *UNI* )FOR,IS N.CONEQN, R.CONEQN
  2677.       SUBROUTINE CONEQN (ID,NID,IDI,BETA,NODJ,IDIR,NDOF,NDISCE,NIDM)
  2678. C
  2679. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2680. C .                                                                   .
  2681. C .   PROGRAM .                                                       .
  2682. C .      TO READ IN CONSTRAINT EQUATIONS DATA AND RESET ID ARRAY      .
  2683. C .                                                                   .
  2684. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2685. C
  2686.       IMPLICIT REAL*8 (A-H,O-Z)
  2687. C
  2688.       COMMON /MDFRDM/ IDOF(6)
  2689.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  2690. C
  2691.       DIMENSION ID(NDOF,1),NID(1),IDI(NIDM,1),BETA(NIDM,1),
  2692.      1          NODJ(1),IDIR(1)
  2693.       DIMENSION BETAG(4),NODL(4)
  2694. C
  2695. C     READ CONSTRAINED DEGREE OF FREEDOM AND LOCATE IT IN ID ARRAY
  2696. C
  2697.       IF (IDATWR.LE.1) WRITE (6,2000)
  2698.       READ (5,1000) NCEI,NCEG
  2699.       NCTOT=NCEI + NCEG
  2700.       IF (NCTOT .NE. NDISCE) WRITE (6,3070)
  2701.       NCE=0
  2702.       IF (NCEI.EQ.0) GO TO 300
  2703.       DO 200 K=1,NCEI
  2704. C
  2705.       READ (5,1000) NCE,NODN,IDIRN,NID(K)
  2706.       IF (IDATWR.LE.1) WRITE (6,2010) NCE,NODN,IDIRN,NID(K)
  2707.       IF (NCE.EQ.K) GO TO 50
  2708.       WRITE (6,3000) K,NCE
  2709.       STOP
  2710. C
  2711.    50 IF (NID(K).LE.NIDM) GO TO 60
  2712.       WRITE (6,3010) NCE,NID(K),NIDM
  2713.       STOP
  2714. C
  2715.    60 IDUM=IDIRN
  2716.       DO 70 I=1,IDIRN
  2717.    70 IF (IDOF(I).EQ.1) IDUM=IDUM - 1
  2718.       KK=ID(IDUM,NODN)
  2719.       IF (KK.EQ.-2) GO TO 80
  2720.       WRITE (6,3020) NODN,IDIRN
  2721.       STOP
  2722. C
  2723.    80 ID (IDUM,NODN)=-NCE
  2724. C
  2725.       IDUM=NID(K)
  2726.       READ (5,1010) (NODJ(J),IDIR(J),BETA(J,K),J=1,IDUM)
  2727.       DO 100 I=1,IDUM
  2728.   100 IF (BETA(I,K).EQ.0.) BETA(I,K)=1.
  2729.       IF (IDATWR.LE.1)
  2730.      1 WRITE (6,2020) (NODJ(J),IDIR(J),BETA(J,K),J=1,IDUM)
  2731. C
  2732. C     ESTABLISH EQUATION NUMBER OF INDEPENDENT DEGREES OF FREEDOM
  2733. C
  2734.       DO 120 J=1,IDUM
  2735.       JJ=NODJ(J)
  2736.       IDIRN=IDIR(J)
  2737.       II=IDIRN
  2738.       DO 110 I=1,IDIRN
  2739.   110 IF (IDOF(I).EQ.1) II=II - 1
  2740.       IF (ID(II,JJ).GT.0) GO TO 120
  2741.       WRITE (6,3030) NCE,JJ,IDIRN
  2742.       STOP
  2743.   120 IDI(J,K)=ID(II,JJ)
  2744.   200 CONTINUE
  2745. C
  2746.   300 IF (NCEG.EQ.0) GO TO 600
  2747.       READ (5,1000) NDCTAB
  2748.       IF (NDCTAB.GE.1) GO TO 320
  2749.       WRITE (6,3040) NDCTAB
  2750.       STOP
  2751. C
  2752.   320 DO 500 K=1,NDCTAB
  2753.       READ (5,1020) NCFIRT,NCLAST,IDIRN,NIDG,(IDIR(J),BETAG(J),J=1,NIDG)
  2754.       NJ=NCE+1
  2755.       IF (NCFIRT.NE.NJ) WRITE (6,3000) NJ,NCFIRT
  2756. C
  2757.       MM=4
  2758.       IF (NIDG.LE.MM) GO TO 330
  2759.       WRITE (6,3010) NCFIRT,NIDG,MM
  2760.       STOP
  2761. C
  2762.   330 IF (NCLAST.GT.NCFIRT) GO TO 335
  2763.       WRITE (6,3050)
  2764.       STOP
  2765. C
  2766.   335 READ (5,1050) NCE,NODN,(NODJ(J),J=1,4),KN
  2767.       IF (KN.EQ.0) KN=1
  2768.       IF (NCE.NE.NCFIRT) WRITE (6,3060) NCE,NCFIRT
  2769.       NCEL=NCE
  2770.       GO TO 380
  2771. C
  2772.   340 READ (5,1050) NCEL,NODNL,(NODL(J),J=1,4),KNL
  2773.       IF (KNL.EQ.0) KNL=1
  2774.       NJ=NCE+1
  2775.       IF (NCEL-NJ) 350,360,370
  2776.   350 WRITE (6,3000) NJ,NCEL
  2777.       STOP
  2778. C
  2779.   370 NCE=NCE+1
  2780.       NODN=NODN+KN
  2781.       DO 375 J=1,NIDG
  2782.   375 NODJ(J)=NODJ(J)+KN
  2783.       GO TO 380
  2784. C
  2785.   360 NCE=NCEL
  2786.       NODN=NODNL
  2787.       KN=KNL
  2788.       DO 365 J=1,NIDG
  2789.   365 NODJ(J)=NODL(J)
  2790. C
  2791.   380 IDUM=IDIRN
  2792.       NID(NCE)=NIDG
  2793.       DO 390 I=1,IDIRN
  2794.   390 IF (IDOF(I).EQ.1) IDUM=IDUM - 1
  2795.       KK=ID(IDUM,NODN)
  2796.       IF (KK.EQ.-2) GO TO 395
  2797.       WRITE (6,3020) NODN,IDIRN
  2798.       STOP
  2799. C
  2800.   395 ID(IDUM,NODN)=-NCE
  2801. C
  2802.       IDUM=NIDG
  2803.       DO 400 J=1,IDUM
  2804.       BETA(J,NCE)=BETAG(J)
  2805.   400 IF (BETA(J,NCE).EQ.0.) BETA(J,NCE)=1.
  2806.       IF (IDATWR.GT.1) GO TO 410
  2807.       WRITE (6,2010) NCE,NODN,IDIRN,NIDG
  2808.       WRITE (6,2020) (NODJ(J),IDIR(J),BETA(J,NCE),J=1,IDUM)
  2809. C
  2810. C     ESTABLISH EQUATION NUMBER OF INDEPENDENT DEGREES OF FREEDOM
  2811. C
  2812.   410 DO 420 J=1,IDUM
  2813.       JJ=NODJ(J)
  2814.       IDIRJ=IDIR(J)
  2815.       II=IDIRJ
  2816.       DO 425 I=1,IDIRJ
  2817.   425 IF (IDOF(I).EQ.1) II=II-1
  2818.       IF (ID(II,JJ).GT.0) GO TO 420
  2819.       WRITE (6,3030) NCE,JJ,IDIRJ
  2820.       STOP
  2821.   420 IDI(J,NCE)=ID(II,JJ)
  2822. C
  2823.       NJ=NCE+1
  2824.       IF (NCEL-NJ) 430,360,370
  2825.   430 IF (NCE.EQ.NCLAST) GO TO 500
  2826.       GO TO 340
  2827. C
  2828.   500 CONTINUE
  2829.   600 RETURN
  2830. C
  2831.  1000 FORMAT (4I5)
  2832.  1010 FORMAT (4(2I5,F10.0))
  2833.  1020 FORMAT (4I5,4(I5,F10.0))
  2834.  1050 FORMAT (7I5)
  2835.  2000 FORMAT (1H1,50H C O N S T R A I N T   E Q U A T I O N S   D A T A,
  2836.      1//4X,51H    NCE   NODN  IDIRN    NID                        /4X,
  2837.      2 4(30H   NODJ   IDIR      BETA      ),/)
  2838.  2010 FORMAT (/2X,4(2X,I5))
  2839.  2020 FORMAT (4(2X,I5,2X,I5,E14.5,2X)/)
  2840.  3000 FORMAT (//48H *** ERROR CONSTRAINT EQUATIONS ARE OUT OF ORDER/
  2841.      115H EXPECTING NO =,I4,25H, BUT INPUT EQUATION NO =,I5)
  2842.  3010 FORMAT (//19H *** ERROR IN INPUT,/
  2843.      116H FOR EQUATION NO,I5,41H NUMBER OF INDEPENDENT DISPLACEMENTS,NID
  2844.      2=,I5,46H IS GREATER THAN THE MAXIMUM SPECIFIED ,NIDM =,I5//)
  2845.  3020 FORMAT (//19H *** ERROR IN INPUT,/
  2846.      112H FOR NODE NO,I5,29H DEGREE OF FREEDOM REFERENCED,I5/,
  2847.      284H WAS NOT SPECIFIED AS A DEPENDENT DEGREE OF FREEDOM IN THE NODA
  2848.      3L ID ARRAY INPUT DATA)
  2849.  3030 FORMAT (24H *** ERROR IN INPUT DATA,/
  2850.      116H FOR EQUATION NO,I5,37H THE SPECIFIED INDEPENDENT DOF (NODE=,I4
  2851.      2, 7H, IDIR=I4,36H) IS NOT AN ACTIVE DEGREE OF FREEDOM    )
  2852.  3040 FORMAT (//19H *** ERROR IN INPUT,/
  2853.      154H EXPECTING NDCTAB GREATER THAN ZERO, BUT INPUT NDCTAB=,I5)
  2854.  3050 FORMAT (//19H *** ERROR IN INPUT,/
  2855.      127H NCLAST MUST BE .GE. NCFIRT)
  2856.  3060 FORMAT (//19H *** ERROR IN INPUT,/
  2857.      149H EXPECTING NCE EQUAL TO NCFIRT, BUT INPUT IS NCE=,I5,
  2858.      212H AND NCFIRT=,I5)
  2859.  3070 FORMAT (//19H *** ERROR IN INPUT,/
  2860.      143H EXPECTING NCEI + NCEG=NDISCE, BUT INPUT IS,/,
  2861.      26H NCEI=,I5,6H NCEG=,I5,12H AND NCISCE=,I5)
  2862. C
  2863.       END
  2864. C *CDC* *DECK NODMAS
  2865. C *UNI* )FOR,IS  N.NODMAS, R.NODMAS
  2866.       SUBROUTINE NODMAS (ID,XMN,XSI,NID,IDI,BETA,ISUB,NDOF,NIDM,
  2867.      1                   IDOF,NUMNP,NEQ,IMASSN,IDAMPN,ISTAT)
  2868. C
  2869. C
  2870. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2871. C .                                                                   .
  2872. C .   READS THE NODAL CONCENTRATED NODAL MASSES AND DAMPERS           .
  2873. C .                                                                   .
  2874. C .   FINDS NODAL MASS VECTOR OR NODAL DAMPING VECTOR  ( XMN )        .
  2875. C .                                                                   .
  2876. C .   WRITES NODAL MASS AND DAMPING VECTORS ON TAPE11                 .
  2877. C .   (THESE VECTORS ARE STORED TEMPORARILY UNTIL USE IN ASSEM)       .
  2878. C .                                                                   .
  2879. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2880. C
  2881. C
  2882.       IMPLICIT REAL*8 (A-H,O-Z)
  2883.       COMMON /MSUPER/ IMODES,NMODES,IMDAMP
  2884.       COMMON /SKEW/ NSKEWS
  2885.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  2886.       COMMON /PRCONS/ IPRICS
  2887.       DIMENSION ID(NDOF,1),XMN(1),NID(1),IDI(NIDM,1),BETA(NIDM,1),
  2888.      1          XSI(1),XMASS(6),XDAMP(6),IDT(6),OXMASS(6),OXDAMP(6),
  2889.      2          DX(6),IDOF(6)
  2890. C
  2891. C     N O D A L   M A S S E S
  2892. C
  2893. C
  2894.       II=1
  2895.       DO 10 I=1,6
  2896.       JTEST=IDOF(I)
  2897.       IF (JTEST.EQ.1) GO TO 10
  2898.       IDT(II)=I
  2899.       II=II + 1
  2900.    10 CONTINUE
  2901. C
  2902.       DO 80 J=1,NEQ
  2903.    80 XMN(J)=0.
  2904.       IF (IMASSN.EQ.0)GO TO 200
  2905.       IF (IDATWR.GT.1) GO TO 82
  2906.       IF (NSKEWS.LE.0) WRITE (6,2000)
  2907.       IF (NSKEWS.GT.0) WRITE (6,2100)
  2908.    82 CONTINUE
  2909. C
  2910. C     READ  IN  NODAL  MASSES
  2911. C
  2912.       KNOLD=0
  2913. C
  2914.    20 READ (5,1000) N,KN,(XMASS(I),I=1,6),IDEBUG
  2915. C
  2916.       IF (KNOLD.EQ.0 .AND. IDATWR.LE.1) WRITE (6,2001) N,KN,(XMASS(I),
  2917.      1I=1,6)
  2918. C
  2919.       IF (N.LE.NUMNP .AND. N.GE.1) GO TO 30
  2920.       WRITE (6,1020) N, NUMNP
  2921.       STOP
  2922. C
  2923.    30 DO 90 J=1,NDOF
  2924.       JM=IDT(J)
  2925.       JJ=ID(J,N)
  2926.       IF (JJ) 87,90,89
  2927. C
  2928.    87 NCE=-JJ
  2929.       ND=NID(NCE)
  2930.       DO 88 I=1,ND
  2931.       JJ=IDI(I,NCE)
  2932.       FAC=BETA(I,NCE)
  2933.    88 XMN(JJ)=XMN(JJ) + FAC*XMASS(JM)*FAC
  2934.       GO TO 90
  2935. C
  2936.    89 XMN(JJ)=XMN(JJ) + XMASS(JM)
  2937.    90 CONTINUE
  2938. C
  2939.       IF (KNOLD.EQ.0) GO TO 170
  2940. C
  2941. C     GENERATION  OF  NODAL  MASSES
  2942. C
  2943.       NUM=(N - NOLD)/KNOLD
  2944.       NUMN=NUM - 1
  2945.       IF (NUMN.LT.1) GO TO 170
  2946.       XNUM=NUM
  2947. C
  2948.       DO 100 I=1,6
  2949.   100 DX(I)=(XMASS(I) - OXMASS(I))/XNUM
  2950. C
  2951.       K=NOLD
  2952. C
  2953. C
  2954.       DO 160 KJ=1,NUMN
  2955.       K=K + KNOLD
  2956. C
  2957.       DO 110 I=1,6
  2958.       XMASS(I)=OXMASS(I) + DX(I)
  2959.   110 OXMASS(I) = XMASS(I)
  2960. C
  2961.       IF (IDATWR.LE.1) WRITE (6,2001) K,KNOLD,(XMASS(I),I=1,6)
  2962. C
  2963.       DO 150 J=1,NDOF
  2964.       JM=IDT(J)
  2965.       JJ = ID(J,K)
  2966.       IF (JJ) 120, 150, 140
  2967. C
  2968.   120 NCE = -JJ
  2969.       ND=NID(NCE)
  2970.       DO 130 I=1,ND
  2971.       JJ=IDI(I,NCE)
  2972.       FAC=BETA(I,NCE)
  2973.   130 XMN(JJ)=XMN(JJ) + FAC*XMASS(JM)*FAC
  2974.       GO TO 150
  2975. C
  2976.   140 XMN(JJ)=XMN(JJ) + XMASS(JM)
  2977. C
  2978.   150 CONTINUE
  2979.   160 CONTINUE
  2980.       DO 165 I=1,6
  2981.   165 XMASS(I)=XMASS(I) + DX(I)
  2982. C
  2983. C
  2984.   170 IF (KNOLD.NE.0 .AND. IDATWR.LE.1) WRITE (6,2001) N,KN,(XMASS(I),
  2985.      1I=1,6)
  2986.       KNOLD=KN
  2987.       NOLD=N
  2988.       IF (KNOLD.EQ.0) GO TO 190
  2989.       DO 180 I=1,6
  2990.   180 OXMASS(I)=XMASS(I)
  2991.   190 CONTINUE
  2992. C
  2993.       IF (N.LT.NUMNP) GO TO 20
  2994. C
  2995. C     STORE NODAL MASS VECTOR ON TAPE 23
  2996. C
  2997.   200 WRITE (23) (XMN(I),I=1,NEQ)
  2998.       IF (IDEBUG.EQ.1) WRITE (6,3000) (XMN(I),I=1,NEQ)
  2999. C
  3000. C     N O D A L   D A M P E R S
  3001. C
  3002.       DO 210 I=1,NEQ
  3003.   210 XMN(I)=0.0
  3004.       IF (IDAMPN.EQ.0) GO TO 320
  3005.       IF (IDATWR.GT.1) GO TO 182
  3006.       IF (NSKEWS.LE.0) WRITE (6,2010)
  3007.       IF (NSKEWS.GT.0) WRITE (6,2200)
  3008.   182 CONTINUE
  3009. C
  3010. C     READ  IN  NODAL  DAMPERS
  3011. C
  3012.       KNOLD=0
  3013. C
  3014.   220 READ (5,1000) N,KN,(XDAMP(I),I=1,6),IDEBUG
  3015. C
  3016.       IF (KNOLD.EQ.0 .AND. IDATWR.LE.1) WRITE (6,2001) N,KN,(XDAMP(I),
  3017.      1I=1,6)
  3018. C
  3019.       IF (N.LE.NUMNP .AND. N.GE.1) GO TO 230
  3020.       WRITE (6,1030) N, NUMNP
  3021.       STOP
  3022. C
  3023.   230 DO 290 J=1,NDOF
  3024.       JM=IDT(J)
  3025.       JJ=ID(J,N)
  3026.       IF (JJ) 287,290,289
  3027. C
  3028.   287 NCE=-JJ
  3029.       ND=NID(NCE)
  3030.       DO 288 I=1,ND
  3031.       JJ=IDI(I,NCE)
  3032.       FAC=BETA(I,NCE)
  3033.   288 XMN(JJ)=XMN(JJ) + FAC*XDAMP(JM)*FAC
  3034.       GO TO 290
  3035. C
  3036.   289 XMN(JJ)=XMN(JJ) + XDAMP(JM)
  3037.   290 CONTINUE
  3038. C
  3039.       IF (KNOLD.EQ.0) GO TO 470
  3040. C
  3041. C     GENERATION  OF  NODAL  DAMPERS
  3042. C
  3043.       NUM=(N - NOLD)/KNOLD
  3044.       NUMN=NUM - 1
  3045.       IF (NUMN.LT.1)GO TO 470
  3046.       XNUM=NUM
  3047. C
  3048.       DO 400 I=1,6
  3049.   400 DX(I)=(XDAMP(I) - OXDAMP(I))/XNUM
  3050. C
  3051.       K=NOLD
  3052. C
  3053. C
  3054.       DO 460 KJ=1,NUMN
  3055.       K=K + KNOLD
  3056. C
  3057.       DO 410 I=1,6
  3058.       XDAMP(I)=OXDAMP(I) + DX(I)
  3059.   410 OXDAMP(I)=XDAMP(I)
  3060. C
  3061.       IF (IDATWR.LE.1) WRITE (6,2001) K,KNOLD,(XDAMP(I),I=1,6)
  3062. C
  3063.       DO 450 J=1,NDOF
  3064.       JM=IDT(J)
  3065.       JJ=ID(J,K)
  3066.       IF (JJ) 420, 450, 440
  3067. C
  3068.   420 NCE= -JJ
  3069.       ND=NID(NCE)
  3070.       DO 430 I=1,ND
  3071.       JJ=IDI(I,NCE)
  3072.       FAC=BETA(I,NCE)
  3073.   430 XMN(JJ)=XMN(JJ) + FAC*XDAMP(JM)*FAC
  3074.       GO TO 450
  3075. C
  3076.   440 XMN(JJ)=XMN(JJ) + XDAMP(JM)
  3077. C
  3078.   450 CONTINUE
  3079.   460 CONTINUE
  3080. C
  3081.       DO 465 I=1,6
  3082.   465 XDAMP(I)=XDAMP(I) + DX(I)
  3083. C
  3084.   470 IF (KNOLD.NE.0 .AND. IDATWR.LE.1) WRITE (6,2001) N,KN,(XDAMP(I),
  3085.      1I=1,6)
  3086.       KNOLD=KN
  3087.       NOLD=N
  3088.       IF (KNOLD.EQ.0) GO TO 490
  3089. C
  3090.       DO 480 I=1,6
  3091.   480 OXDAMP(I)=XDAMP(I)
  3092. C
  3093.   490 CONTINUE
  3094. C
  3095.       IF (N.LT.NUMNP) GO TO 220
  3096. C
  3097. C     STORE NODAL DAMPER VECTOR ON TAPE 23
  3098. C
  3099.   320 WRITE (23) (XMN(I),I=1,NEQ)
  3100.       IF (IDEBUG.EQ.1) WRITE (6,3010) (XMN(I),I=1,NEQ)
  3101.       IF (ISTAT.EQ.0) IDAMPN=0
  3102. C
  3103. C
  3104. C     M O D A L   D A M P I N G   F A C T O R S
  3105. C
  3106. C
  3107.       IF (IMODES.EQ.0) RETURN
  3108.       DO 330 I=1,NMODES
  3109.   330 XSI(I)=0.
  3110.       IF (IMDAMP.EQ.0) GO TO 340
  3111. C
  3112.       READ (5,1010) (XSI(I),I=1,NMODES)
  3113.       IF (IDATWR.GT.1) GO TO 340
  3114.       WRITE (6,2020)
  3115.       WRITE (6,2030) (I,XSI(I),I=1,NMODES)
  3116. C
  3117.   340 REWIND 7
  3118.       WRITE (7) (XSI(I),I=1,NMODES)
  3119. C
  3120.       RETURN
  3121. C
  3122.  1000 FORMAT (2I5,6F10.0,I5)
  3123.  1010 FORMAT (8F10.0)
  3124.  1020 FORMAT (///24H I N P U T  E R R O R -  /
  3125.      1        30H DETECTED BY SUBROUTINE NODMAS/
  3126.      2        30H WHILE READING NODAL MASS DATA//
  3127.      3        15H NODE NUMBER N=,I5,
  3128.      4        41H IS OUTSIDE THE ALLOWABLE RANGE (1,NUMNP=,I5,2H).//
  3129.      5        27H P R O G R A M  S T O P S .)
  3130.  1030 FORMAT (///24H I N P U T  E R R O R -  /
  3131.      1        30H DETECTED BY SUBROUTINE NODMAS/
  3132.      2        33H WHILE READING NODAL DAMPING DATA//
  3133.      3        15H NODE NUMBER N=,I5,
  3134.      4        41H IS OUTSIDE THE ALLOWABLE RANGE (1,NUMNP=,I5,2H).//
  3135.      5        27H P R O G R A M  S T O P S .)
  3136.  2000 FORMAT (1H1,31H N O D A L   M A S S   D A T A   ///
  3137.      1        ,7H   NODE,6H   KN ,11H     X-MASS,11H     Y-MASS,
  3138.      2        11H     Z-MASS,11H    XX-MASS,11H    YY-MASS,
  3139.      3        11H    ZZ-MASS//)
  3140.  2001 FORMAT ( I7,I5,2X,6E11.3/)
  3141.  2010 FORMAT (1H1,37H N O D A L   D A M P E R S   D A T A        ///
  3142.      1        ,7H   NODE,6H   KN ,11H   X-DAMPER,11H   Y-DAMPER,
  3143.      2        11H   Z-DAMPER,11H  XX-DAMPER,11H  YY-DAMPER,
  3144.      3        11H  ZZ-DAMPER//)
  3145.  2020 FORMAT (1H1,41HM O D A L   D A M P I N G   F A C T O R S  ///,
  3146.      1        7H   MODE,17H   DAMPING FACTOR  //)
  3147.  2030 FORMAT (2X,I5,5X,E12.4/)
  3148.  2100 FORMAT (1H1,30H N O D A L   M A S S   D A T A///
  3149.      A        40H CONCENTRATED NODAL MASSES ARE ASSUMED  /
  3150.      B 56H TO BE GIVEN IN THE SKEW COORDINATE SYSTEM OF EACH NODE.///
  3151.      C        7H   NODE,6H   KN ,5X,6HR-MASS,5X,6HS-MASS,5X,6HT-MASS,
  3152.      D        4X,7HRR-MASS,4X,7HSS-MASS,4X,7HTT-MASS//)
  3153.  2200 FORMAT (1H1,36H N O D A L   D A M P E R S   D A T A///
  3154.      A        40H CONCENTRATED NODAL DAMPERS ARE ASSUMED /
  3155.      B 56H TO BE GIVEN IN THE SKEW COORDINATE SYSTEM OF EACH NODE.///
  3156.      C        7H   NODE,6H   KN ,11H   R-DAMPER,11H   S-DAMPER,
  3157.      D        11H   T-DAMPER,11H  RR-DAMPER,11H  SS-DAMPER,
  3158.      E        11H  TT-DAMPER//)
  3159.  3000 FORMAT (//18H NODAL MASS VECTOR,/,(8E15.5/))
  3160.  3010 FORMAT (//20H NODAL DAMPER VECTOR,/,(8E15.5/))
  3161. C
  3162. C
  3163.       END
  3164. C *CDC* *DECK INITAL
  3165. C *UNI* )FOR,IS  N.INITAL, R.INITAL
  3166.       SUBROUTINE INITAL (DISP,DISPM,VEL,ACC,DUM,ID,ISUB,NDOF,
  3167.      1                   IDOF,NEQ,NUMNP)
  3168. C
  3169. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3170. C .                                                                   .
  3171. C .   P R O G R A M                                                   .
  3172. C .      TO INITIALIZE DISPLACEMENTS, VELOCITIES AND ACCELERATIONS    .
  3173. C .                                                                   .
  3174. C .        DISP = DISPLACEMENTS                                       .
  3175. C .        VEL  = VELOCITIES                                          .
  3176. C .        ACC  = ACCELERATIONS                                       .
  3177. C .                                                                   .
  3178. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3179. C
  3180.       IMPLICIT REAL*8 (A-H,O-Z)
  3181. C
  3182.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  3183.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  3184.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  3185.      1            ,NDOFDM,KLIN,IEIG,IMASSN,IDAMPN
  3186.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  3187.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  3188.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  3189.       COMMON /PRCONS/ IPRICS
  3190.       COMMON /TEMPRT/ TEMP1,TEMP2,ITEMPR,ITP96,N6A,N6B
  3191.       COMMON /TICON/ IPRIT
  3192. C
  3193.       DIMENSION DISP(1),VEL(1),ACC(1),DUM(1),ID(NDOF,1),DISPM(1),
  3194.      1           IDT(6),VAR(6),OLDVAR(6),DX(6),IDOF(6)
  3195. C
  3196.       IF (ISUB.GT.0) GO TO 40
  3197.       READ (5,1000) ICON,IPRIC,ICONT,IPRIT
  3198.       IF (ITP96.NE.2) GO TO 20
  3199.       IF (ICONT.NE.0) GO TO 20
  3200.       WRITE (6,2100) ITP96,ICONT
  3201.       STOP
  3202. C
  3203.    20 IF (ITP96.EQ.0) IPRIT=0
  3204.       IF (IDATWR.LE.1) WRITE (6,2000) ICON,IPRIC,ICONT,IPRIT
  3205.       GO TO 50
  3206.    40 READ (5,1000) ICON
  3207.       IF (IDATWR.LE.1) WRITE (6,2050) ICON
  3208.    50 IF (MODEX.EQ.2) RETURN
  3209. C
  3210.       IF (ICON.GT.0) GO TO 115
  3211. C
  3212. C     ZERO INITIAL CONDITIONS ARE GENERATED
  3213. C
  3214. C
  3215.       DO 100 I=1,NEQ
  3216.   100 DISP(I)=0.
  3217.       IF (ISTAT.EQ.0) GO TO 230
  3218.       DO 110 I=1,NEQ
  3219.       VEL(I)=0.
  3220.   110 ACC(I)=0.
  3221.       GO TO 200
  3222. C
  3223. C     READ IN INITIAL VALUES, VERIFY, AND
  3224. C     PRINT OR GENERATE AS NECESSARY
  3225. C
  3226.   115 II=1
  3227.       DO 30 I=1,6
  3228.       JTEST=IDOF(I)
  3229.       IF (JTEST.EQ.1) GO TO 30
  3230.       IDT(II)=I
  3231.       II=II + 1
  3232.    30 CONTINUE
  3233. C
  3234.       ICNC=-1
  3235. C
  3236.   120 KNOLD=0
  3237. C
  3238.       IF (IDATWR.GT.1) GO TO 160
  3239. C
  3240.       IF(ICNC) 130,140,150
  3241. C
  3242.   130 WRITE (6,1020)
  3243.       GO TO 160
  3244. C
  3245.   140 WRITE (6,1030)
  3246.       GO TO 160
  3247. C
  3248.   150 WRITE (6,1040)
  3249. C
  3250. C     DUM IS A DUMMY ARRAY OCCUPYING THE SAME
  3251. C     STORAGE LOCATIONS AS THE ARRAY ACC
  3252. C
  3253.   160 DO 165 I=1,NEQ
  3254.   165 DUM(I)=0.0
  3255. C
  3256. C
  3257.   170 READ (5,1010) N,KN,(VAR(I),I=1,6)
  3258. C
  3259.       IF (IDATWR.GT.1) GO TO 180
  3260. C
  3261. C     PRINT INITIAL VALUES
  3262. C
  3263.       WRITE (6,1050) N,KN,(VAR(I),I=1,6)
  3264. C
  3265.   180 IF (N.LE.NUMNP .AND. N.GE.1) GO TO 400
  3266.       WRITE (6,1060) N,NUMNP
  3267.       STOP
  3268. C
  3269.   400 DO 420 J=1,NDOF
  3270.       JM=IDT(J)
  3271.       JJ=ID(J,N)
  3272.       IF (JJ) 420,420,410
  3273.   410 DUM(JJ)=DUM(JJ) + VAR(JM)
  3274.   420 CONTINUE
  3275. C
  3276.       IF (KNOLD.EQ.0) GO TO 500
  3277. C
  3278. C     GENERATION OF INTERMEDIATE VALUES
  3279. C
  3280.       NUM=(N - NOLD)/KNOLD
  3281.       NUMN= NUM - 1
  3282.       IF (NUMN.LT.1) GO TO 500
  3283.       XNUM=NUM
  3284. C
  3285.       DO 430 I=1,6
  3286.   430 DX(I)=(VAR(I) - OLDVAR(I))/XNUM
  3287. C
  3288.       K=NOLD
  3289. C
  3290. C
  3291.       DO 470 KJ=1,NUMN
  3292.       K=K + KNOLD
  3293. C
  3294.       DO 440 I=1,6
  3295.       VAR(I)=OLDVAR(I) + DX(I)
  3296.   440 OLDVAR(I)=VAR(I)
  3297. C
  3298.       DO 460 J=1,NDOF
  3299.       JM=IDT(J)
  3300.       JJ=ID(J,K)
  3301.       IF (JJ) 460,460,450
  3302.   450 DUM(JJ)=DUM(JJ) + VAR(JM)
  3303.   460 CONTINUE
  3304. C
  3305.   470 CONTINUE
  3306. C
  3307.       DO 480 I=1,6
  3308.   480 VAR(I)=VAR(I) + DX(I)
  3309. C
  3310.   500 KNOLD=KN
  3311.       NOLD=N
  3312.       IF (KNOLD.EQ.0) GO TO 520
  3313. C
  3314.       DO 510 I=1,6
  3315.   510 OLDVAR(I)=VAR(I)
  3316. C
  3317.   520 CONTINUE
  3318. C
  3319.       IF (N.LT.NUMNP) GO TO 170
  3320. C
  3321. C
  3322.       IF(ICNC) 540,550,560
  3323. C
  3324. C     TRANSFER INITIAL DISPLACEMENTS FROM DUM TO DISP
  3325. C
  3326.   540 DO 545 I=1,NEQ
  3327.   545 DISP(I)=DUM(I)
  3328.       IF (ISTAT.EQ.0) GO TO 230
  3329.       GO TO 560
  3330. C
  3331. C     TRANSFER INITIAL VELOCITIES FROM DUM TO VEL
  3332. C
  3333.   550 DO 555 I=1,NEQ
  3334.   555 VEL(I)=DUM(I)
  3335. C
  3336. C     A TRANSFER HERE IS NOT NECESSARY SINCE
  3337. C     ACC AND DUM OCCUPY THE SAME STORAGE LOCATIONS
  3338. C
  3339.   560 ICNC=ICNC + 1
  3340. C
  3341.       IF(ICNC.LE.1) GO TO 120
  3342. C
  3343. C
  3344.   200 IF (IOPE.NE.3) GO TO 230
  3345. C
  3346. C     FOR EXPLICIT TIME INTEGRATION SCHEME CALCULATE DISPLACEMENTS
  3347. C     AT TIME=TSTART + DT AND STORE ON TAPE8
  3348. C
  3349.       DO 220 I=1,NEQ
  3350.   220 DISPM(I)=DISP(I) + DT*VEL(I) + A3*ACC(I)
  3351.       WRITE (8) (DISPM(I),I=1,NEQ)
  3352. C
  3353.   230 WRITE (8) (DISP(I),I=1,NEQ)
  3354.       IF (ISTAT.EQ.0) RETURN
  3355.       WRITE (8) (VEL(I),I=1,NEQ)
  3356.       WRITE(8) (ACC(I),I=1,NEQ)
  3357. C
  3358.   300 RETURN
  3359. C
  3360.  1000 FORMAT (16I5)
  3361.  1010 FORMAT (2I5,6F10.0)
  3362.  1020 FORMAT (///23H INITIAL DISPLACEMENTS      ///
  3363.      1        ,7H   NODE,6H   KN ,11H     X-DISP,11H     Y-DISP,
  3364.      2        11H     Z-DISP,11H     X-ROTN,11H     Y-ROTN,
  3365.      3        11H     Z-ROTN//)
  3366.  1030 FORMAT (///20H INITIAL VELOCITIES    ///
  3367.      1        ,7H   NODE,6H   KN ,11H      X-VEL,11H      Y-VEL,
  3368.      2        11H      Z-VEL,11H     X-ROTN,11H     Y-ROTN,
  3369.      3        11H     Z-ROTN//)
  3370.  1040 FORMAT (///23H INITIAL ACCELERATIONS   ///
  3371.      1        ,7H   NODE,6H   KN ,11H     X-ACCN,11H     Y-ACCN
  3372.      2        11H     Z-ACCN,11H     X-ROTN,11H     Y-ROTN,
  3373.      3        11H     Z-ROTN//)
  3374.  1050 FORMAT (I7,I5,2X,6E11.3/)
  3375.  1060 FORMAT( ///24H I N P U T  E R R O R -  /
  3376.      1        30H DETECTED BY SUBROUTINE INITAL  /
  3377.      2        29H WHILE READING INITIAL VALUES  //
  3378.      3        16H NODE NUMBER N =,I5,
  3379.      4        41H IS OUTSIDE THE ALLOWABLE RANGE (1,NUMNP=,I5,2H).//
  3380.      5        27H P R O G R A M  S T O P S .  )
  3381.  2000 FORMAT (1H1,36H I N I T I A L  C O N D I T I O N S     ///
  3382.      1  5X,51HINITIAL CONDITIONS CODE                    (ICON) =,I5/4X
  3383.      2            42H    EQ.0, ZERO INITIAL CONDITIONS              /4X,
  3384.      3            42H    EQ.1, INITIAL CONDITIONS ARE READ       /10X,
  3385.      4            34H    (BUT RESTART OVER-RIDES ICON)            //
  3386.      5  5X,51HINITIAL CONDITIONS PRINT-OUT CODE         (IPRIC) =,I5/4X
  3387.      6            42H    EQ.0, DO NOT PRINT                      /4X,
  3388.      A            15H    EQ.1, PRINT//
  3389.      B 5X,51HINITIAL TEMPERATURES CODE                 (ICONT) =,I5/
  3390.      C 8X,50HEQ.0, INITIAL TEMPERATURES ARE NOT                /
  3391.      D 8X,21H      READ FROM INPUT/
  3392.      E 8X,50HEQ.1, INITIAL TEMPERATURES ARE READ FROM INPUT    //
  3393.      E 5X,51HINITIAL TEMPERATURES PRINT-OUT CODE       (IPRIT) =,I5/
  3394.      F 8X,39HEQ.0, DO NOT PRINT INITIAL TEMPERATURES/
  3395.      G 8X,39HEQ.1, PRINT INITIAL TEMPERATURES       /)
  3396.  2050 FORMAT (1H1,36H I N I T I A L  C O N D I T I O N S             ///
  3397.      1  5X,51HINITIAL CONDITIONS CODE                    (ICON) =,I5/4X
  3398.      2            42H    EQ.0, ZERO INITIAL CONDITIONS              /4X,
  3399.      3            42H    EQ.1, INITIAL CONDITIONS ARE READ          /10X
  3400.      4            34H    (BUT RESTART OVER-RIDES ICON)               //)
  3401.  2100 FORMAT (///28H *** I N P U T   E R R O R -//
  3402.      1        30H DETECTED BY SUROUTINE INITAL /
  3403.      2        46H WHILE READING INITIAL CONDITIONS CONTROL CARD//
  3404.      3        5X,8H ITP96 =,I5/5X,8H ICONT =,I5//
  3405.      4        5X,48H WHEN TEMPERATURES ARE SPECIFIED VIA INPUT CARDS,
  3406.      5        19H (I.E. ITP96.EQ.2),/
  3407.      6 5X,50H INITIAL TEMPERATURES MUST BE READ IN THIS SECTION,
  3408.      7        27H (I.E. ICONT MUST BE GT.0).//12H *** S T O P )
  3409. C
  3410.       END
  3411. C *CDC* *DECK INITEM
  3412. C *UNI* )FOR,IS N.INITEM,R.INITEM
  3413.       SUBROUTINE INITEM (TEMP,NUMNP,TSTART)
  3414. C
  3415. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3416. C .   PROGRAM                                                         .
  3417. C .      . TO READ IN INITIAL TEMPERATURES (I.E. AT TIME TSTART)      .
  3418. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3419. C
  3420.       IMPLICIT REAL*8 (A-H,O-Z)
  3421. C
  3422.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  3423. C
  3424.       DIMENSION TEMP(1)
  3425. C
  3426.       DATA ITT /56/
  3427. C
  3428.       DO 10 I=1,NUMNP
  3429.    10 TEMP(I)=0.
  3430.       IF (IDATWR.LE.1) WRITE (6,2000)
  3431.       ICARD=1
  3432.       READ (5,1000) NOLD,TNOLD,KNOLD
  3433.       IF (IDATWR.LE.1) WRITE (6,2050) ICARD,NOLD,TNOLD,KNOLD
  3434.       IF (NOLD.GT.0 .AND. NOLD.LE.NUMNP) GO TO 25
  3435.       WRITE (6,2100) NOLD,TNOLD,KNOLD,NUMNP
  3436.       STOP
  3437.    25 TEMP(NOLD)=TNOLD
  3438. C
  3439.    30 ICARD=ICARD+1
  3440.       READ (5,1000) N,TN,KN
  3441.       IF (IDATWR.LE.1) WRITE (6,2050) ICARD,N,TN,KN
  3442.       IF (N.GT.0 .AND. N.LE.NUMNP) GO TO 50
  3443.       WRITE (6,2100) N,TN,KN,NUMNP
  3444.       STOP
  3445. C
  3446.    50 TEMP(N)=TN
  3447.       IF (KNOLD.EQ.0) GO TO 75
  3448. C
  3449. C     G E N E R A T I O N
  3450. C
  3451.       NUM=(N-NOLD)/KNOLD
  3452.       NUMN=NUM-1
  3453.       IF (NUMN.LT.1) GO TO 75
  3454.       DTEMP=(TEMP(N)-TEMP(NOLD))/DBLE(FLOAT(NUM))
  3455.       KJ=NOLD
  3456.       DO 60 J=1,NUMN
  3457.       KI=KJ
  3458.       KJ=KJ + KNOLD
  3459.       TEMP(KJ)=TEMP(KI) + DTEMP
  3460.    60 CONTINUE
  3461. C
  3462.    75 NOLD =N
  3463.       KNOLD=KN
  3464. C
  3465.       IF (N.NE.NUMNP) GO TO 30
  3466. C
  3467.       REWIND ITT
  3468. C
  3469.       WRITE (ITT) TSTART,(TEMP(I),I=1,NUMNP)
  3470.       BACKSPACE ITT
  3471. C
  3472.       RETURN
  3473. C
  3474. C
  3475.  1000 FORMAT (I5,F10.0,I5)
  3476. C
  3477.  2000 FORMAT (////42H INITIAL NODAL POINT TEMPERATURES AS INPUT//
  3478.      1        7H  CARD ,5X,6H NODE ,22X,11HNODE NUMBER/
  3479.      2        7H NUMBER,5X,6HNUMBER,5X,11HTEMPERATURE,6X,
  3480.      3        11H INCREMENT //)
  3481.  2050 FORMAT (I5,7X,I4,E18.6,5X,I7)
  3482.  2100 FORMAT (///28H *** I N P U T   E R R O R -//
  3483.      1        30H DETECTED BY SUBROUTINE INITEM/
  3484.      2        47H WHILE READING INITIAL NODAL POINT TEMPERATURES//
  3485.      3        5X,14H NODE NUMBER =,I5/
  3486.      4        5X,14H TEMPERATURE =,E14.6/
  3487.      4        5X,24H NODE NUMBER INCREMENT =,I5//
  3488.      4        5X,26H NUMBER OF NODES (NUMNP) =,I5//
  3489.      5        39H NODE NUMBER MUST BE GT.0 AND LE.NUMNP.//
  3490.      6        12H *** S T O P)
  3491. C
  3492.       END
  3493. C *CDC* *DECK OVL20
  3494. C *CDC*       OVERLAY (ADINA,2,0)
  3495. C *CDC* *DECK TRUSS
  3496. C *UNI* )FOR,IS  N.TRUSS,  R.TRUSS
  3497. C *CDC*       PROGRAM TRUSS
  3498.       SUBROUTINE TRUSS
  3499. C
  3500.       IMPLICIT REAL*8 (A-H,O-Z)
  3501. C
  3502. C
  3503. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3504. C .                                                                   .
  3505. C .   S T O R A G E                                                   .
  3506. C .                                                                   .
  3507. C .      N102    DEN    (NECESSARY FOR STATIC PROBLEMS, TOO)          .
  3508. C .      N103    AREA                                                 .
  3509. C .      N105    LM     CONNECTIVITY                                  .
  3510. C .      N106    XYZ    ELEMENT NODAL COORDINATES                     .
  3511. C .      N107    MATP   MATERIAL PROPERTY SET NUMBER                  .
  3512. C .      N108    EPSIN  INITIAL STRAIN                                .
  3513. C .      N109    IPS    STRESS PRINTING FLAG                          .
  3514. C .      N110    ETIMV  ELEMENT BIRTH/DEATH TIME (IF IDEATH.GT.0)     .
  3515. C .      N111    EDISB  ELEMENT DISPS AT BIRTH TIME (IF IDEATH.EQ.1)  .
  3516. C .      N112    WA=IWA WORKING ARRAY (SEE IDWAS)                     .
  3517. C .      N113    PROP   MATERIAL CONSTANTS (SEE NMCON)                .
  3518. C .      N114    NODGL  GLOBAL NODE NUMBERS (SEE NDWS)                .
  3519. C .      N115    IELTD  ELEMENT NUMBER OF NODES                       .
  3520. C .                                                                   .
  3521. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3522. C
  3523. C
  3524.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  3525.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  3526.       COMMON /FREQIF/ ISTOH,N1A,N1B,N1C
  3527.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  3528.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  3529.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  3530.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  3531.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  3532.       COMMON /DPR/ ITWO
  3533.       COMMON /ELGLTH/ NFIRST,NLAST,NBCEL
  3534.       COMMON /ELSTP / TIME,IDTHF
  3535.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  3536.       COMMON /PORT/ INPORT,JNPORT,NPUTSV,LUNODE,LU1,LU2,LU3,JDC,JVC,JAC
  3537.       COMMON /TMODEL/ LINEL,NONEL,ITEL,ISPEL,KINPEL,IEPCI,IEPCK,MODMAX
  3538.       COMMON /SKEW  / NSKEWS
  3539.       COMMON /ISUBST/ ISUBC,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  3540.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXESC,
  3541.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  3542. C
  3543.       COMMON A(1)
  3544.       COMMON /TEMPRT/ TEMP1,TEMP2,ITEMPR,ITP96,N6A,N6B
  3545.       REAL A
  3546.       DIMENSION IA(1)
  3547.       EQUIVALENCE (A(1),IA(1))
  3548. C
  3549.       DIMENSION DATA(20)
  3550. C
  3551.       EQUIVALENCE (NPAR(1),NPAR1), (NPAR(2),NUME), (NPAR(3),INDNL),
  3552.      1            (NPAR(4),IDEATH), (NPAR(5),ITYPT), (NPAR(7),MXNODS),
  3553.      2            (NPAR(10),NINT), (NPAR(15),MODEL), (NPAR(16),NUMMAT),
  3554.      3            (NPAR(17),NCON), (NPAR(19),IITEMP), (NPAR(6),NEGSKS)
  3555.       EQUIVALENCE (NPAR(18),IDW)
  3556. C
  3557.       DIMENSION NMCON(8),IDWAS(8),NDWS(8)
  3558.       DATA RECLB1/8HTYPE-1  /
  3559. C
  3560.       DATA NMCON / 1, 0,50, 3, 3,97,97, 0/
  3561.       DATA IDWAS / 0, 0, 0, 2, 2,12,12, 0/
  3562.       DATA NDWS / 0, 0, 1, 0, 0, 1, 1, 0/
  3563. C
  3564. C
  3565.       IF (IND.NE.0) GO TO 100
  3566. C
  3567. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3568. C .   I N P U T   P H A S E                                           .
  3569. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3570. C
  3571. C     CHECK ON RANGE AND SET DEFAULTS FOR NPAR VECTOR
  3572. C
  3573.       ISTOP=0
  3574. C
  3575.       LINEL=1
  3576.       NONEL=2
  3577.       ITEL=3
  3578.       ISPEL=4
  3579.       KINPEL=5
  3580.       IEPCI=6
  3581.       IEPCK=7
  3582.       MODMAX=8
  3583. C
  3584.       IF (NUME.GT.0) GO TO 10
  3585.       ISTOP=ISTOP+1
  3586.       IF (ISTOP.EQ.1) WRITE (6,2100) NG
  3587.       ISUB=2
  3588.       IRANGE=1
  3589.       WRITE (6,2400) ISTOP,ISUB,IRANGE,ISUB,NPAR(ISUB)
  3590. C
  3591.    10 IF (INDNL.GE.0 .AND. INDNL.LE.2) GO TO 15
  3592.       ISTOP=ISTOP+1
  3593.       IF (ISTOP.EQ.1) WRITE (6,2100) NG
  3594.       ISUB=3
  3595.       WRITE (6,2200) ISTOP,ISUB,ISUB,NPAR(ISUB)
  3596. C
  3597.    15 IF (IDEATH.NE.0) IDTHF=1
  3598.       IF (IDEATH.GE.0 .AND. IDEATH.LE.2) GO TO 20
  3599.       ISTOP=ISTOP+1
  3600.       IF (ISTOP.EQ.1) WRITE (6,2100) NG
  3601.       ISUB=4
  3602.       WRITE (6,2200) ISTOP,ISUB,ISUB,NPAR(ISUB)
  3603. C
  3604.    20 IF (ITYPT.GE.0 .AND. ITYPT.LE.1) GO TO 25
  3605.       ISTOP=ISTOP+1
  3606.       IF (ISTOP.EQ.1) WRITE (6,2100) NG
  3607.       ISUB=5
  3608.       WRITE (6,2200) ISTOP,ISUB,ISUB,NPAR(ISUB)
  3609. C
  3610.    25 IF (MXNODS.LE.0) MXNODS=2
  3611.       IF (MXNODS.LE.4) GO TO 30
  3612.       ISTOP=ISTOP+1
  3613.       IF (ISTOP.EQ.1) WRITE (6,2100) NG
  3614.       ISUB=7
  3615.       IRANGE=4
  3616.       WRITE (6,2300) ISTOP,ISUB,IRANGE,ISUB,NPAR(ISUB)
  3617. C
  3618.    30 NIPT=1
  3619.       IF (ITYPT.EQ.1) GO TO 34
  3620.       IF (MXNODS.GT.2) GO TO 32
  3621.       IF (MODEL.EQ.ITEL) GO TO 32
  3622.       IF(MODEL.EQ.IEPCI.OR.MODEL.EQ.IEPCK) GO TO 32
  3623.       GO TO 34
  3624.    32 NIPT=NINT
  3625.       IF (NINT.LE.0) NIPT=2
  3626.    34 NINT=NIPT
  3627.       IF (NINT.LE.4) GO TO 35
  3628.       ISTOP=ISTOP+1
  3629.       IF (ISTOP.EQ.1) WRITE (6,2100) NG
  3630.       ISUB=10
  3631.       IRANGE=4
  3632.       WRITE (6,2300) ISTOP,ISUB,IRANGE,ISUB,NPAR(ISUB)
  3633. C
  3634.    35 IF (MODEL.LE.0) MODEL=1
  3635.       IF (MODEL.LE.MODMAX) GO TO 40
  3636.       ISTOP=ISTOP+1
  3637.       IF (ISTOP.EQ.1) WRITE (6,2100) NG
  3638.       ISUB=15
  3639.       WRITE (6,2300) ISTOP,ISUB,MODMAX,ISUB,NPAR(ISUB)
  3640. C
  3641.    40 IF (NUMMAT.LE.0) NUMMAT=1
  3642. C
  3643.       IF (MODEL.EQ.MODMAX) GO TO 50
  3644.       IF (MODEL.NE.NONEL) GO TO 45
  3645.       IF (NCON.GE.4) GO TO 50
  3646.       ISTOP=ISTOP+1
  3647.       IF (ISTOP.EQ.1) WRITE (6,2100) NG
  3648.       ISUB=17
  3649.       IRANGE=4
  3650.       WRITE (6,2400) ISTOP,ISUB,NPAR(ISUB),IRANGE
  3651.       GO TO 50
  3652. C
  3653.    45 NCON=NMCON(MODEL)
  3654.       IDW=IDWAS(MODEL)
  3655. C
  3656. C     CHECK ON COMPATIBILITY BETWEEN ELEMENTS OF NPAR
  3657. C
  3658. C
  3659. C        1. COMPATIBILITY OF INDNL AND IDEATH
  3660. C
  3661.    50 ISUB=3
  3662.       IF (INDNL.GT.0) GO TO 55
  3663.       IF (IDEATH.EQ.0) GO TO 52
  3664.       ISTOP=ISTOP+1
  3665.       IF (ISTOP.EQ.1) WRITE (6,2100) NG
  3666.       ISUD=4
  3667.       WRITE (6,2500) ISTOP,ISUB,NPAR(ISUB),ISUD,NPAR(ISUD)
  3668. C
  3669. C        2. COMPATIBILITY OF INDNL AND ITYPT
  3670. C
  3671.    52 IF (ITYPT.NE.2) GO TO 54
  3672.       ISTOP=ISTOP+1
  3673.       IF (ISTOP.EQ.1) WRITE (6,2100) NG
  3674.       ISUD=5
  3675.       WRITE (6,2500) ISTOP,ISUB,NPAR(ISUB),ISUD,NPAR(ISUD)
  3676. C
  3677. C        3. COMPATIBILITY OF INDNL AND MODEL
  3678. C
  3679.    54 IF (MODEL.EQ.LINEL) GO TO 55
  3680.       ISTOP=ISTOP+1
  3681.       IF (ISTOP.EQ.1) WRITE (6,2100) NG
  3682.       ISUD=15
  3683.       WRITE (6,2500) ISTOP,ISUB,NPAR(ISUB),ISUD,NPAR(ISUD)
  3684. C
  3685. C        4. COMPATIBILITY OF MXNODS AND ITYPT
  3686. C
  3687.    55 ISUB=5
  3688.       ISUD=7
  3689.       IF (MXNODS.NE.1) GO TO 60
  3690.       IF (ITYPT.EQ.1) GO TO 56
  3691.       ISTOP=ISTOP+1
  3692.       IF (ISTOP.EQ.1) WRITE (6,2100) NG
  3693.       WRITE (6,2500) ISTOP,ISUB,NPAR(ISUB),ISUD,NPAR(ISUD)
  3694.       GO TO 60
  3695. C
  3696. C        5. COMPATIBILITY OF ITYPT AND NEGSKS
  3697. C
  3698.    56 ISUD=6
  3699.       IF (NEGSKS.EQ.0) GO TO 60
  3700.       ISTOP=ISTOP+1
  3701.       IF (ISTOP.EQ.1) WRITE (6,2100) NG
  3702.       WRITE (6,2500) ISTOP,ISUB,NPAR(ISUB),ISUD,NPAR(ISUD)
  3703. C
  3704. C        6. COMPATIBILITY OF NEGSKS AND NSKEWS
  3705. C
  3706.    60 IF (NEGSKS.EQ.0) GO TO 65
  3707.       IF (NSKEWS.GT.0) GO TO 65
  3708.       ISUB=6
  3709.       ISTOP=ISTOP+1
  3710.       IF (ISTOP.EQ.1) WRITE (6,2100) NG
  3711.       WRITE (6,2550) ISTOP,NSKEWS,ISUB,NPAR(ISUB)
  3712. C
  3713. C
  3714. C     CHECK FOR TEMPERATURE TAPE
  3715. C
  3716.    65 ITEMPR=0
  3717.       IF(MODEL.EQ.ITEL) ITEMPR=1
  3718.       IF(MODEL.EQ.IEPCI.OR.MODEL.EQ.IEPCK) ITEMPR=2
  3719.       IF (ITEMPR.EQ.0) GO TO 70
  3720.       IF (ITP96.GT.0) GO TO 70
  3721.       ISTOP=ISTOP+1
  3722.       IF (ISTOP.EQ.1) WRITE (6,2100) NG
  3723.       WRITE (6,2600) ISTOP
  3724. C
  3725.    70 IITEMP=ITEMPR
  3726. C
  3727.       IF (ISTOP.EQ.0) GO TO 75
  3728.       WRITE (6,2700) ISTOP
  3729.       INPUT=5
  3730.       BACKSPACE INPUT
  3731.       READ (5,1000) DATA
  3732.       WRITE (6,2800) (I,I=1,8),DATA
  3733.       IDATWR=1
  3734. C
  3735.    75 IF (IDATWR.GT.1) GO TO 90
  3736. C
  3737. C     PRINT OUT NPAR VECTOR
  3738. C
  3739.       WRITE (6,2900) NPAR1
  3740.       WRITE (6,2905) NUME,INDNL,IDEATH
  3741.       WRITE (6,2920) ITYPT,NEGSKS,MXNODS,NINT
  3742.       WRITE (6,2940) MODEL,NUMMAT,NCON
  3743. C
  3744.    90 IF (ISTOP.EQ.0) GO TO 95
  3745.       WRITE (6,2750)
  3746.       STOP
  3747. C
  3748. C
  3749. C***  DATA PORTHOLE  *************************** (START)
  3750. C
  3751.    95 IF (JNPORT.EQ.0 .OR. NPUTSV.EQ.0) GO TO 100
  3752.       RECLAB=RECLB1
  3753.       WRITE (LU1) RECLAB,NG,(NPAR(I),I=1,20),NSUB
  3754. C
  3755. C***  DATA PORTHOLE  *************************** ( END )
  3756. C
  3757. C
  3758. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3759. C .   E N D   O F   C H E C K   O N   N P A R   V E C T O R           .
  3760. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3761. C
  3762. C
  3763.   100 NDM=3*MXNODS
  3764.       IF (ITYPT.EQ.1) NDM=1
  3765.       NDW=NDWS(MODEL)
  3766.       IDWA=IDW*NINT
  3767. C
  3768.       NFIRST=N6
  3769.       IF (IND.EQ.4) NFIRST=N10
  3770.       N101=NFIRST + 20
  3771.       N102=N101
  3772.       N103=N102 + NUMMAT*ITWO
  3773.       N105=N103 + NUMMAT*ITWO
  3774.       N106=N105 + NDM*NUME
  3775.       N107=N106 + NDM*NUME*ITWO
  3776.       N108=N107 + NUME
  3777.       N109=N108 + NUME*ITWO
  3778.       N110=N109 + NUME
  3779.       MM=0
  3780.       IF (IDEATH.GT.0) MM=1
  3781.       N111=N110 + MM*NUME*ITWO
  3782.       MM=0
  3783.       IF (IDEATH.EQ.1) MM=1
  3784.       N112=N111 + MM*NDM*NUME*ITWO
  3785.       N113=N112 + NUME*IDWA*ITWO
  3786.       N114=N113 + NCON*NUMMAT*ITWO
  3787.       N115=N114 + NDW*NUME*MXNODS
  3788.       N116=N115 + NUME
  3789.       NLAST=N116 - 1
  3790.       IF (NEGSKS.GT.0) NLAST=N116 + (NUME*MXNODS) - 1
  3791. C
  3792. C *CDC*        IF (NLAST.GT.MTOT) CALL SIZE(NLAST+2000)
  3793.       IF (IND.NE.0) GO TO 105
  3794.       MIDEST=(NLAST-NFIRST) + 1
  3795.       IF (IDATWR.LE.1) WRITE (6,2000) NG,MIDEST
  3796.       CALL SIZE (NLAST)
  3797. C
  3798.   105 IF (IND.GT.3) GO TO 110
  3799.       M2=N2
  3800.       M3=N3
  3801.       M4=N4
  3802.       GO TO 120
  3803.   110 M2=N2
  3804.       M3=N7
  3805.       M4=N8
  3806.       IF (ICOUNT.LT.3) GO TO 120
  3807.       M2=N6
  3808. C
  3809.   120 CALL RUSS   (A(N06),A(N1A),
  3810.      1           A(N1),A(M2),A(M3),A(M4),A(N5),A(N113),A(N102),A(N103),
  3811.      1           A(N105),A(N106),A(N107),A(N108),A(N109),A(N110),
  3812.      2           A(N111),A(N112),A(N113),A(N114),A(N115),A(N116),
  3813.      2           NCON,NDOF,NDM,
  3814.      3           IDWA,A(N6A+ITWO),A(N6B+ITWO),MXNODS)
  3815.       IF (IND.GT.0) GO TO 150
  3816.       DO 140 I=1,20
  3817.   140 IA(NFIRST + I - 1)=NPAR(I)
  3818.   150 CONTINUE
  3819. C
  3820.       RETURN
  3821. C
  3822.  1000 FORMAT (20A4)
  3823. C
  3824.  2000 FORMAT (//49H LENGTH OF ARRAY NEEDED FOR STORING ELEMENT GROUP/
  3825.      3        12H DATA (GROUP,I3,26H). . . . . . . . . . . . .,
  3826.      4       15H( MIDEST ). . =,I5//)
  3827. C
  3828.  2100 FORMAT (1H1,45HERROR IN ELEMENT GROUP CONTROL CARDS  (TRUSS) /
  3829.      1        16H ELEMENT GROUP =, I5/)
  3830.  2200 FORMAT (I5,7H. NPAR(,I2,27H) IS OUT OF RANGE ... NPAR(,I2,
  3831.      1        3H) =,I5)
  3832.  2300 FORMAT (I5,7H. NPAR(,I2,16H) SHOULD BE .LE., I2,10H ... NPAR(,I2,
  3833.      1        3H) =,I5)
  3834.  2400 FORMAT (I5,7H. NPAR(,I2,16H) SHOULD BE .GE., I2,10H ... NPAR(,I2,
  3835.      1        3H) =,I5)
  3836.  2500 FORMAT (I5,7H. NPAR(,I2,3H) =,I2,10H AND NPAR(,I2,3H) =,I2,
  3837.      1        19H ARE NOT COMPATIBLE )
  3838.  2550 FORMAT (I5,10H. NSKEWS =,I2,10H AND NPAR(,I2,3H) =,I2,
  3839.      1        19H ARE NOT COMPATIBLE )
  3840.  2600 FORMAT (I5,37H. TEMPERATURE TAPE SHOULD BE PROVIDED )
  3841.  2700 FORMAT (//25H TOTAL NUMBER OF ERRORS =,I5//
  3842.      1        48H CARD IMAGE LISTING AND PRINT-OUT OF NPAR VECTOR/
  3843.      2        48H (WITH DEFAULTS ENFORCED) ARE GIVEN BELOW ------)
  3844.  2800 FORMAT (///34H CARD IMAGE LISTING OF NPAR VECTOR //29X,8(I1,9X)/
  3845.      1        15H COLUMN NUMBERS,5X,8(10H1234567890)/
  3846.      2        15H NPAR VECTOR   ,5X,20A4 // )
  3847.  2750 FORMAT (//// 23H STOP  (ERRORS IN NPAR)  )
  3848. C
  3849.  2900 FORMAT (36H E L E M E N T   D E F I N I T I O N ///,
  3850.      1        14H ELEMENT TYPE ,13(2H .),16H( NPAR(1) ). . =,I5/,
  3851.      2        25H     EQ.1, TRUSS ELEMENTS/,
  3852.      3        25H     EQ.2, 2-DIM ELEMENTS/,
  3853.      4        25H     EQ.3, 3-DIM ELEMENTS/,
  3854.      5        25H     EQ.4, BEAM  ELEMENTS/,
  3855.      5        28H     EQ.5, ISO/BEAM ELEMENTS/,
  3856.      6        28H     EQ.6, PLATE ELEMENTS   /,
  3857.      C        25H     EQ.7, SHELL ELEMENTS/,
  3858.      D        25H     EQ.8,9,10, EMPTY    /,
  3859.      G        32H     EQ.11, 2-DIM FLUID ELEMENTS/,
  3860.      5        32H     EQ.12, 3-DIM FLUID ELEMENTS   /)
  3861.  2905 FORMAT (20H NUMBER OF ELEMENTS.,10(2H .),16H( NPAR(2) ). . =,I5//,
  3862.      7        28H TYPE OF NONLINEAR ANALYSIS.,6(2H .),15H( NPAR(3) ). .
  3863.      8        1H=,I5/,
  3864.      9        38H     EQ.0, LINEAR                      /,
  3865.      A        38H     EQ.1, MATERIALLY NONLINEAR ONLY   /,
  3866.      1        45H     EQ.2, UPDATED LAGRANGIAN FORMULATION          //
  3867.      2        32H ELEMENT BIRTH AND DEATH OPTIONS ,4(2H .),
  3868.      3        16H( NPAR(4) ). . =,I5/,
  3869.      4        28H     EQ.0, OPTION NOT ACTIVE/,
  3870.      5        30H     EQ.1, BIRTH OPTION ACTIVE /,
  3871.      6        30H     EQ.2, DEATH OPTION ACTIVE //)
  3872.  2920 FORMAT (18H ELEMENT TYPE CODE,11(2H .),16H( NPAR(5) ). . =,I5/,
  3873.      1        40H     EQ.0, GENERAL 3-D TRUSS                   /,
  3874.      2        40H     EQ.1, RING ELEMENT                           //,
  3875.      A        23H SKEW COORDINATE SYSTEM/
  3876.      B        40H     REFERENCE INDICATOR . . . . . . . .,
  3877.      C        16H( NPAR(6) ). . =,I5/
  3878.      D        28H     EQ.0, ALL ELEMENT NODES/
  3879.      E        37H           USE THE GLOBAL SYSTEM ONLY/
  3880.      F        35H     EQ.1, ELEMENT NODES REFER     /
  3881.      G        36H           TO SKEW COORDINATE SYSTEM//
  3882.      4        42H MAXIMUM NUMBER OF NODES USED TO DESCRIBE  /,4X,
  3883.      5        16H ANY ONE ELEMENT,10(2H .),16H( NPAR(7) ). . =,I5//,
  3884.      6        35H INTEGRATION ORDER FOR STIFFNESS      /,4X,
  3885.      7        12H CALCULATION,12(2H .),16H( NPAR(10)). . =,I5///)
  3886.  2940 FORMAT (42H M A T E R I A L   D E F I N I T I O N     ///,
  3887.      1        16H MATERIAL MODEL.,12(2H .),16H( NPAR(15)). . =,I5/,
  3888.      2        40H    EQ.1,   LINEAR ELASTIC                     /,
  3889.      3        40H    EQ.2,   NONLINEAR ELASTIC                  /,
  3890.      4        42H            (STRESS-STRAIN LAW SPECIFIED)      /,
  3891.      5        40H    EQ.3,   THERMOELASTIC                      /,
  3892.      6        44H    EQ.4,   ELASTIC-PLASTIC (ISOTROPIC)     ,/,
  3893.      A        44H    EQ.5,   ELASTIC-PLASTIC (KINEMATIC)     ,/,
  3894.      7       48H    EQ.6,   ELASTIC-PLASTIC-CREEP (ISOTROPIC)   ,/,
  3895.      B       48H    EQ.7,   ELASTIC-PLASTIC-CREEP (KINEMATIC)   ,/,
  3896.      C       40H    EQ.8,   USER SUPPLIED MODEL         ,//,
  3897.      8        37H NUMBER OF DIFFERENT SETS OF MATERIAL          /,
  3898.      9        14H     CONSTANTS,13(2H .),16H( NPAR(16)). . =,I5//,
  3899.      B        40H NUMBER OF MATERIAL CONSTANTS PER SET. .  ,
  3900.      1        16H( NPAR(17)). . =,I5)
  3901. C
  3902.       END
  3903. C *CDC* *DECK RUSS
  3904. C *UNI* )FOR,IS  N.RUSS,   R.RUSS
  3905.       SUBROUTINE RUSS (RSDCOS,NODSYS,ID,X,Y,Z,HT,E,DEN,AREA,LM,XYZ,MATP,
  3906.      1                 EPSIN,IPS,ETIMV,EDISB,WA,PROP,NODGL,IELTD,ISKEW,
  3907.      2                 NCON,NDOF,NDM,IDWA,TEMPV1,TEMPV2,MXNODS)
  3908. C
  3909.       IMPLICIT REAL*8 (A-H,O-Z)
  3910.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  3911.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  3912.      1            ,NDOFDM,KLIN,IEIG,IMASSN,IDAMPN
  3913.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  3914.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  3915.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  3916.       COMMON /ELSTP/ TIME,IDTHF
  3917.       COMMON /EM1D/ S(78),XM(24),ST(6),D(4),RE(24)
  3918.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  3919.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  3920.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  3921.       COMMON /PORT/ INPORT,JNPORT,NPUTSV,LUNODE,LU1,LU2,LU3,JDC,JVC,JAC
  3922.       COMMON /MDFRDM/ IDOF(6)
  3923.       COMMON /RANDI/ N0A,N1D,IELCPL
  3924.       COMMON /GAUSS/ XG(4,4),WGT(4,4),EVAL2(9,2),EVAL3(27,3),E1,E2,E3
  3925.       COMMON /TRNODE/ IELD,ND,RST(12),DISP(12),PP(4),STS(4),STN(4),RL(4)
  3926.       COMMON /TMODEL/ LINEL,NONEL,ITEL,ISPEL,KINPEL,IEPCI,IEPCK,MODMAX
  3927.       COMMON /SKEW  / NSKEWS
  3928.       COMMON /ISUBST/ ISUBC,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  3929.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXESC,
  3930.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  3931. C
  3932.       COMMON A(1)
  3933.       REAL A
  3934. C
  3935.       DIMENSION ID(NDOF,1),X(1),Y(1),Z(1),HT(1),E(1),DEN(1),AREA(1),
  3936.      1          LM(NDM,1),XYZ(NDM,1),MATP(1),EPSIN(1),IPS(1),ETIMV(1),
  3937.      2          EDISB(NDM,1),WA(IDWA,1),PROP(NCON,1),
  3938.      3          NODGL(MXNODS,1),IELTD(1),TEMPV1(1),TEMPV2(1)
  3939.       DIMENSION RSDCOS(9,1),NODSYS(1),ISKEW(MXNODS,1)
  3940. C
  3941.       DIMENSION B(12),NODE(4),NODEM(4),PM(4),H(4),HR(4),XYZINT(3,4)
  3942. C
  3943.       EQUIVALENCE (NPAR(1),NPAR1), (NPAR(2),NUME), (NPAR(3),INDNL),
  3944.      1            (NPAR(4),IDEATH), (NPAR(5),ITYPT), (NPAR(10),NINT),
  3945.      2            (NPAR(15),MODEL), (NPAR(16),NUMMAT), (NPAR(6),NEGSKS)
  3946. C
  3947.       DATA RECLB1/8HMATERAL1/, RECLB2/8HELEMENT1/,
  3948.      1     RECLB3/8HNEWSTEP1/, RECLB4/8HOUTPUT-1/, RECLB5/8HIPOINT-1/
  3949.       DATA HEAD1/6HRADIUS/, HEAD2/6HLENGTH/
  3950. C
  3951. C     ** NOTE ** DURING THE TIME INTEGRATION, X=DISP, Y=VEL, Z=ACC
  3952. C
  3953.       IELCPL=0
  3954.       IF (KPRI.EQ.0) GO TO 800
  3955.       IF (IND.GT.0) GO TO 420
  3956.       IJPORT=1
  3957.       IF (JNPORT.EQ.0 .OR. NPUTSV.EQ.0) IJPORT=0
  3958. C
  3959. C
  3960. C
  3961. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3962. C .   R E A D   A N D   G E N E R A T E   E L E M E N T               .
  3963. C .   I N F O R M A T I O N                                           .
  3964. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3965. C
  3966. C
  3967. C
  3968. C        1. READ MATERIAL PROPERTIES
  3969. C
  3970. C
  3971.       IF (IDATWR.LE.1) WRITE (6,2000)
  3972.       IBUG=0
  3973. C
  3974.       GO TO (10,20,30,40,40,60,60,70), MODEL
  3975. C
  3976. C     LINEAR ELASTIC  (MODEL 1)
  3977. C
  3978.    10 IF (IDATWR.LE.1) WRITE (6,2010)
  3979.       DO 15 I=1,NUMMAT
  3980.       READ (5,1000) N,AREA(N),DEN(N)
  3981.       READ (5,1010) E(N)
  3982.       IF (IDATWR.LE.1) WRITE (6,2011) N,AREA(N),DEN(N),E(N)
  3983.    15 CONTINUE
  3984. C
  3985. C
  3986. C
  3987. C***  DATA PORTHOLE  **************************** (START)
  3988. C
  3989.       IF (IJPORT.EQ.0) GO TO 150
  3990.       RECLAB=RECLB1
  3991.       WRITE (LU1) RECLAB,NUMMAT,NCON,(DEN(I),I=1,NUMMAT),
  3992.      1            (E(I),I=1,NUMMAT),(AREA(I),I=1,NUMMAT)
  3993. C
  3994. C***  DATA PORTHOLE  **************************** ( END )
  3995. C
  3996.       GO TO 150
  3997. C
  3998. C     NONLINEAR ELASTIC  (MODEL 2)
  3999. C
  4000.    20 IP=NCON/2
  4001.       DO 25 I=1,NUMMAT
  4002.       KP=1
  4003.       READ (5,1000) N,AREA(N),DEN(N)
  4004.       READ (5,1010) (PROP(J,N),J=1,NCON)
  4005.       IF (IDATWR.GT.1) GO TO 25
  4006.       WRITE (6,2020) N,AREA(N),DEN(N),KP,PROP(1,N),PROP(IP+1,N)
  4007.       DO 22 K=2,IP
  4008.       KP=K+IP
  4009.       ETAN=(PROP(KP,N)-PROP(KP-1,N))/(PROP(K,N)-PROP(K-1,N))
  4010.    22 WRITE (6,2021) K,PROP(K,N),PROP(KP,N),ETAN
  4011.    25 CONTINUE
  4012.       GO TO 98
  4013. C
  4014. C     THERMOELASTIC  (MODEL 3)
  4015. C
  4016.    30 DO 39 I=1,NUMMAT
  4017.       READ (5,1000) N,AREA(N),DEN(N)
  4018.       READ (5,1010) (PROP(J,N),J=1,NCON)
  4019.       IF(IDATWR.LE.1) WRITE(6,2030) N,AREA(N),DEN(N)
  4020. C
  4021.       NPTS=IDINT(PROP(49,N))
  4022.       IF(NPTS.GT.0) GO TO 32
  4023.       PROP(49,N)=16.0
  4024.       NPTS=16
  4025.       GO TO 34
  4026. C
  4027.    32 IF(NPTS.GE.2 .AND. NPTS.LE.16) GO TO 34
  4028.       IBUG=1
  4029.       WRITE(6,3002)
  4030.       GO TO 37
  4031. C
  4032.    34 DO 35 J=2,NPTS
  4033.       JJ=J-1
  4034.       IF(PROP(J,N).GT.PROP(JJ,N)) GO TO 35
  4035.       IBUG=1
  4036.       WRITE(6,3003)
  4037.       GO TO 37
  4038.    35 CONTINUE
  4039. C
  4040.    37 IF(IDATWR.GT.1) GO TO 39
  4041.       WRITE(6,2031)
  4042.       DO 38 K=1,16
  4043.       IP1=K + 16
  4044.       IP2=K + 32
  4045.    38 WRITE(6,2032) PROP(K,N),PROP(IP1,N),PROP(IP2,N)
  4046.       WRITE(6,2033) PROP(49,N),PROP(50,N)
  4047. C
  4048.    39 CONTINUE
  4049.       IF(MODEX.EQ.0.OR.IBUG.EQ.0) GO TO 98
  4050.       STOP
  4051. C
  4052. C     ELASTIC-PLASTIC MODELS  (MODEL 4  AND  MODEL 5)
  4053. C
  4054.    40 IF (IDATWR.LE.1) WRITE (6,2040)
  4055.       DO 45 I=1,NUMMAT
  4056.       READ (5,1000) N,AREA(N),DEN(N)
  4057.       READ (5,1010) (PROP(J,N),J=1,NCON)
  4058.       IF (IDATWR.GT.1) GO TO 42
  4059.       WRITE (6,2011) N,AREA(N),DEN(N),(PROP(J, N),J=1,NCON)
  4060.    42 IF (PROP(2,N).GT.0.0) GO TO 41
  4061.       IBUG=1
  4062.       WRITE (6,3401) NG,N
  4063.    41 IF (PROP(3,N).LT.PROP(1,N)) GO TO 45
  4064.       IBUG=1
  4065.       WRITE (6,3402) NG,N
  4066.    45 CONTINUE
  4067.       IF (MODEX.EQ.0 .OR. IBUG.EQ.0) GO TO 98
  4068.       WRITE (6,3403)
  4069.       STOP
  4070. C
  4071. C
  4072. C      THERMO-ELASTIC-PLASTIC AND CREEP MODELS  (MODEL 6 AND MODEL 7)
  4073. C
  4074.    60 DO 69 I=1,NUMMAT
  4075.       READ (5,1000) N,AREA(N),DEN(N)
  4076.       READ (5,1010) (PROP(J,N),J=1,NCON)
  4077.       IF(IDATWR.LE.1) WRITE(6,2030) N,AREA(N),DEN(N)
  4078. C
  4079.       NPTS=IDINT(PROP(89,N))
  4080.       XCRP=PROP(91,N)
  4081.       XINTP=PROP(92,N)
  4082.       XSUBM=PROP(93,N)
  4083.       XITE=PROP(94,N)
  4084.       XALG=PROP(95,N)
  4085.       TOLIL=PROP(96,N)
  4086.       TOLPC=PROP(97,N)
  4087. C
  4088.       IF(NPTS.GT.0) GO TO 61
  4089.       PROP(89,N)=16.0
  4090.       NPTS=16
  4091. C
  4092.    61 IF (XSUBM.EQ.0.0) PROP(93,N)=10.0
  4093.       IF (XALG.EQ.2.0 .AND. XSUBM.LT.3.0) PROP(93,N)=3.0
  4094.       IF (XITE.EQ.0.0) PROP(94,N)=15.0
  4095.       IF (XALG.EQ.0.0) PROP(95,N)=1.0
  4096.       IF (TOLIL.EQ.0.0) PROP(96,N)=5.0D-3
  4097.       IF (TOLPC.EQ.0.0) PROP(97,N)=1.0D-1
  4098. C
  4099.       IF(XCRP.GE.0.0 .AND. XCRP.LE.2.0) GO TO 62
  4100.       WRITE(6,3000)
  4101.       IBUG=1
  4102. C
  4103.    62 IF(XINTP.GE.0.0 .AND. XINTP.LE.1.0) GO TO 63
  4104.       WRITE(6,3001)
  4105.       IBUG=1
  4106. C
  4107.    63 IF(NPTS.GE.2 .AND. NPTS.LE.16) GO TO 64
  4108.       IBUG=1
  4109.       WRITE(6,3002)
  4110.       GO TO 66
  4111. C
  4112.    64 DO 65 J=2,NPTS
  4113.       JJ=J - 1
  4114.       IF(PROP(J,N).GT.PROP(JJ,N)) GO TO 65
  4115.       IBUG=1
  4116.       WRITE(6,3003)
  4117.       GO TO 66
  4118.    65 CONTINUE
  4119. C
  4120.    66 IF(IDATWR.GT.1) GO TO 68
  4121.       WRITE(6,2061)
  4122.       DO 67 K=1,16
  4123.       IP1=K + 16
  4124.       IP2=K + 32
  4125.       IP3=K + 48
  4126.       IP4=K + 64
  4127.    67 WRITE(6,2062) PROP(K,N),PROP(IP1,N),PROP(IP2,N),PROP(IP3,N),
  4128.      1              PROP(IP4,N)
  4129.       WRITE(6,2063) (PROP(K,N),K=81,88)
  4130.       WRITE(6,2064) (PROP(K,N),K=89,97)
  4131. C
  4132.    68 IF(PROP(94,N).LT.6.0) WRITE(6,2065)
  4133. C
  4134.    69 CONTINUE
  4135.       IF(MODEX.EQ.0.OR.IBUG.EQ.0) GO TO 98
  4136.       STOP
  4137. C
  4138. C
  4139. C      USER SUPPLIED MODEL  (MODEL 8)
  4140. C
  4141.    70 DO 75 I=1,NUMMAT
  4142.       READ (5,1000) N,AREA(N),DEN(N)
  4143.       READ (5,1010) (PROP(J,N),J=1,NCON)
  4144.       IF (IDATWR.GT.1) GO TO 75
  4145.       WRITE (6,2030) N,AREA(N),DEN(N)
  4146.       WRITE (6,2071) (J,N,PROP(J,N),J=1,NCON)
  4147.    75 CONTINUE
  4148. C
  4149. C
  4150. C***  DATA PORTHOLE  *************************** (START)
  4151. C
  4152.    98 IF (IJPORT.EQ.0) GO TO 150
  4153.       RECLAB=RECLB1
  4154.       WRITE (LU1)  RECLAB,NUMMAT,NCON,(DEN(I),I=1,NUMMAT),
  4155.      1             ((PROP(I,J),I=1,NCON),J=1,NUMMAT),
  4156.      2             (AREA(I),I=1,NUMMAT)
  4157. C
  4158. C***  DATA PORTHOLE  *************************** ( END )
  4159. C
  4160. C
  4161. C        2. READ ELEMENT INFORMATION
  4162. C
  4163.   150 HEAD=HEAD1
  4164.       IF (ITYPT.EQ.0) HEAD=HEAD2
  4165.       ISCONT=0
  4166.       IF (NSKEWS.GT.0 .AND. NEGSKS.EQ.0) ISCONT=1
  4167.       IF (IDATWR.LE.1) WRITE(6,2200) HEAD
  4168.       N=1
  4169. C
  4170.       IREAD=5
  4171.       IF (INPORT.GT.0) IREAD=59
  4172.   160 READ (IREAD,1100) M,IELE,IS,MTYP,KG,EPS,ETIME,INTLOC
  4173.       READ (IREAD,1200) NODE
  4174. C
  4175.       IF (N.EQ.1 .AND. M.NE.1) GO TO 115
  4176.       IF (IDEATH.EQ.2 .AND. ETIME.EQ.0.) ETIME=100000.
  4177.       IF (IELE.EQ.0) IELE=MXNODS
  4178.       IF (MTYP.LE.0) MTYP=1
  4179.       IF (MTYP.GT.NUMMAT) GO TO 110
  4180.       IF (KG.LE.0) KG=1
  4181.       IF (IELE.LE.MXNODS) GO TO 120
  4182. C
  4183.       WRITE (6,2300) NG,M,IELE,MXNODS
  4184.       STOP
  4185. C
  4186.   110 WRITE (6,2310) NG,M,MTYP,NUMMAT
  4187.       STOP
  4188.   115 WRITE (6,2315) NSUB,NG
  4189.       STOP
  4190. C
  4191.   120 IF(M.NE.N) GO TO 200
  4192.   121 DO 122 I=1,IELE
  4193.   122 NODEM(I)=NODE(I)
  4194.       MTYPE=MTYP
  4195.       KKK=KG
  4196.       EPSI=EPS
  4197.       IPST=IS
  4198.       ETIM=ETIME
  4199.       IELD=IELE
  4200.       INTLM=INTLOC
  4201. C
  4202. C     SAVE ELEMENT INFORMATION
  4203. C
  4204.   200 IF (ITYPT.NE.1) GO TO 195
  4205.       I=NODEM(1)
  4206.       XYZ(1,N)=Y(I)
  4207.       GO TO 201
  4208. C
  4209.   195 L=-2
  4210.       DO 190 LL=1,IELD
  4211.       L=L + 3
  4212.       I=NODEM(LL)
  4213.       IF (ISCONT.EQ.0) GO TO 170
  4214.       IF (NODSYS(I).EQ.0) GO TO 175
  4215.       WRITE (6,2410) NG,N,NEGSKS
  4216.       STOP
  4217.   170 IF (NEGSKS.GT.0) ISKEW(LL,N)=NODSYS(I)
  4218.   175 XYZ(L,N)=X(I)
  4219.       XYZ(L+1,N)=Y(I)
  4220.   190 XYZ(L+2,N)=Z(I)
  4221.       IF (NEGSKS.EQ.0) GO TO 201
  4222.       DO 192 LL=1,IELD
  4223.       IF (ISKEW(LL,N).NE.0) GO TO 201
  4224.   192 CONTINUE
  4225.       ISKEW(1,N)=-1
  4226. C
  4227. C
  4228.   201 MATP(N)=MTYPE
  4229.       EPSIN(N)=EPSI
  4230.       IPS(N)=IPST
  4231.       IELTD(N)=IELD
  4232.       ND=3*IELD
  4233.       IF (ITYPT.EQ.1) ND=1
  4234. C
  4235. C     INITIALIZE WORKING STORAGE
  4236. C
  4237.       IF(MODEL.LT.3) GO TO 204
  4238. C
  4239.       CALL IMATB (PROP(1,MTYPE),WA(1,N),WA(1,N),NODGL(1,N),
  4240.      1            TEMPV1,NODEM,IELD)
  4241. C
  4242.   204 IF (IDEATH.EQ.0) GO TO 210
  4243.       IF (IDEATH.EQ.2) GO TO 207
  4244.       DO 208 L=1,ND
  4245.   208 EDISB(L,N)=0.
  4246.       ETIMV(N)=-ETIM
  4247.       GO TO 210
  4248.   207 ETIMV(N)=ETIM
  4249. C
  4250.   210 IF (ITYPT.NE.1) GO TO 211
  4251.       LDO=1
  4252.       IF (IDOF(1).EQ.0) LDO=2
  4253.       LM(1,N)=0
  4254.       IF (IDOF(2).EQ.1) GO TO 295
  4255.       II=NODEM(1)
  4256.       LM(1,N)=ID(LDO,II)
  4257.       GO TO 295
  4258. C
  4259.   211 DO 290 L=1,ND
  4260.   290 LM(L,N)=0
  4261.       LL=1
  4262.       DO 240 L=1,3
  4263.       IF (IDOF(L).EQ.1) GO TO 240
  4264.       LP=L - 3
  4265.       DO 241 LK=1,IELD
  4266.       LP=LP + 3
  4267.       II=NODEM(LK)
  4268.       LM(LP,N)=ID(LL,II)
  4269.   241 CONTINUE
  4270.       LL=LL + 1
  4271.   240 CONTINUE
  4272.   295 CONTINUE
  4273. C
  4274. C     UPDATE COLUMN HEIGHTS AND BANDWIDTH
  4275. C
  4276.       CALL COLHT (HT,ND,LM(1,N))
  4277. C
  4278.       IF (IDATWR.GT.1) GO TO 296
  4279.       RL(1)=XYZ(1,N)
  4280.       IF (ITYPT.EQ.0) CALL LENTH1 (XYZ(1,N),RL)
  4281.       WRITE (6,2210) N,IELTD(N),IPS(N),MATP(N),KKK,EPSIN(N),RL(1),ETIM,
  4282.      1               INTLM,(NODEM(LL),LL=1,IELD)
  4283. C
  4284. C     CALCULATE GLOBAL COORDINATES OF INTEGRATION POINTS
  4285. C     NOT APPLICABLE FOR RING ELEMENTS OR 2-NODE TRUSSES
  4286. C
  4287.   296 IF (ITYPT.EQ.1) GO TO 319
  4288.       IF (IJPORT.EQ.0 .AND. INTLM.EQ.0) GO TO 300
  4289.       KINTP=0
  4290.       DO 297 LX=1,NINT
  4291.       RINTP=XG(LX,NINT)
  4292.       KINTP=KINTP+1
  4293. C
  4294.       CALL FUNCT1 (H,HR,RINTP,IELD,1,0)
  4295. C
  4296.       IX=0
  4297.       XINT=0.
  4298.       YINT=0.
  4299.       ZINT=0.
  4300.       DO 299 NDPT=1,IELD
  4301.       IX=IX+3
  4302.       XINT=XINT + H(NDPT)*XYZ(IX-2,N)
  4303.       YINT=YINT + H(NDPT)*XYZ(IX-1,N)
  4304.   299 ZINT=ZINT + H(NDPT)*XYZ(IX,N)
  4305. C
  4306.       XYZINT(1,KINTP)=XINT
  4307.       XYZINT(2,KINTP)=YINT
  4308.       XYZINT(3,KINTP)=ZINT
  4309. C
  4310. C     PRINT LOCATIONS IF INTLM.GT.0
  4311. C
  4312.       IF (IDATWR.LE.1 .AND. INTLM.GT.0)
  4313.      1 WRITE (6,2208) KINTP,(XYZINT(L,KINTP),L=1,3)
  4314.   297 CONTINUE
  4315.       GO TO 298
  4316.   319 IF (IDATWR.LE.1 .AND. INTLM.GT.0)
  4317.      1 WRITE (6,2209)
  4318. C
  4319. C
  4320. C***  DATA PORTHOLE  *************************** (START)
  4321. C
  4322.   298 IF (IJPORT.EQ.0) GO TO 300
  4323.       RECLAB=RECLB2
  4324.       WRITE (LU1) RECLAB,N,IELTD(N),IPS(N),MATP(N),KKK,EPSIN(N),ETIM,
  4325.      1            (NODEM(LL),LL=1,IELD)
  4326.       RECLAB = RECLB5
  4327.       IF (ITYPT.NE.1)
  4328.      1  WRITE (LU1) RECLAB,NINT,((XYZINT(L,I),L=1,3),I=1,NINT)
  4329. C
  4330. C***  DATA PORTHOLE  *************************** ( END )
  4331. C
  4332. C
  4333.   300 IF (N.EQ.NUME) GO TO 325
  4334.       N=N+1
  4335.       DO 220 LL=1,IELD
  4336.   220 NODEM(LL)=NODEM(LL) + KKK
  4337.       IF (N-M) 200,121,160
  4338. C
  4339.   325 IF (NEGSKS.EQ.0) RETURN
  4340.       DO 340 N=1,NUME
  4341.       IF (ISKEW(1,N).GE.0) GO TO 350
  4342.   340 CONTINUE
  4343.       WRITE (6,2400) NG,NEGSKS
  4344. C
  4345.   350 RETURN
  4346. C
  4347. C
  4348.   420 GO TO (440,560,560,700) ,IND
  4349. C
  4350. C
  4351. C    A S S E M B L E   L I N E A R   S T I F F N E S S   M A T R I C E S
  4352. C
  4353. C
  4354.   440 DO 500 N=1,NUME
  4355.       IELD=IELTD(N)
  4356.       ND=IELD*3
  4357.       IF (ITYPT.EQ.1) ND=1
  4358.       CALL ECHECK (LM(1,N),ND,ICODE,IUPDT)
  4359.       IF (ICODE.EQ.1) GO TO 500
  4360.       MTYPE=MATP(N)
  4361.       IF (ITYPT.NE.1) GO TO 501
  4362. C
  4363. C     RING ELEMENT
  4364. C
  4365.       ND=1
  4366.       S(1)=E(MTYPE)*AREA(MTYPE)/XYZ(1,N)
  4367.       GO TO 520
  4368. C
  4369. C     2-4 NODE TRUSS
  4370. C
  4371.   501 AE=AREA(MTYPE)*E(MTYPE)
  4372.       CALL LENTH1 (XYZ(1,N),RL)
  4373.       CALL STIF1 (XYZ(1,N),AE,S)
  4374.       IF (NEGSKS.EQ.0) GO TO 520
  4375.       IF (ISKEW(1,N).LT.0) GO TO 520
  4376.       CALL ATKA (RSDCOS,S,ISKEW(1,N),IELD,3)
  4377. C
  4378.   520 CALL ADDBAN (A(N2),A(N1),S,RE,LM(1,N),ND,1)
  4379.   500 CONTINUE
  4380.       RETURN
  4381. C
  4382. C
  4383. C    A S S E M B L E   M A S S   M A T R I C E S
  4384. C
  4385. C
  4386.   560 IF (IMASS.EQ.2) GO TO 550
  4387. C
  4388. C     LUMPED MASS DISCRETIZATION
  4389. C
  4390.   545 DO 640 N=1,NUME
  4391.       MTYPE=MATP(N)
  4392.       IELD=IELTD(N)
  4393.       ND=IELD*3
  4394. C
  4395.       IF (ITYPT.NE.1) GO TO 546
  4396.       XM(1)=XYZ(1,N)*AREA(MTYPE)*DEN(MTYPE)
  4397.       ND=1
  4398.       GO TO 547
  4399. C
  4400.   546 CALL LENTH1 (XYZ(1,N),RL)
  4401. C
  4402.       PM(1)=.5*RL(2)
  4403.       GO TO (900,620,625,626), IELD
  4404.   620 PM(2)=PM(1)
  4405.       GO TO 627
  4406.   625 PM(2)=.5*(RL(1)-RL(2))
  4407.       PM(3)=.5*RL(1)
  4408.       GO TO 627
  4409.   626 PM(2)=.5*(RL(1)-RL(3))
  4410.       PM(3)=.5*RL(3)
  4411.       PM(4)=.5*(RL(1)-RL(2))
  4412. C
  4413.   627 K=0
  4414.       ADEN=AREA(MTYPE)*DEN(MTYPE)
  4415.       DO 628 I=1,IELD
  4416.       XMM=ADEN*PM(I)
  4417.       DO 628 L=1,3
  4418.       K=K+1
  4419.   628 XM(K)=XMM
  4420. C
  4421.   547 CALL ADDMA (A(N4),XM,LM(1,N),ND)
  4422.   640 CONTINUE
  4423. C
  4424.       RETURN
  4425. C
  4426. C     CONSISTENT MASS DISCRETIZATION
  4427. C
  4428.   550 DO 650 N=1,NUME
  4429.       IELD=IELTD(N)
  4430.       ND=IELD*3
  4431.       IF (ITYPT.EQ.1) ND=1
  4432.       CALL ECHECK(LM(1,N),ND,ICODE,IUPDT)
  4433.       IF (ICODE.EQ.1) GO TO 650
  4434.       MTYPE=MATP(N)
  4435. C
  4436.       IF (ITYPT.NE.1) GO TO 651
  4437.       XM(1)=XYZ(1,N)*AREA(MTYPE)*DEN(MTYPE)
  4438.       ND=1
  4439.       GO TO 655
  4440. C
  4441.   651 ADEN=AREA(MTYPE)*DEN(MTYPE)
  4442.       CALL LENTH1 (XYZ(1,N),RL)
  4443.       CALL MASBAR (XYZ(1,N),ADEN,S)
  4444.       IF (NEGSKS.EQ.0) GO TO 655
  4445.       IF (ISKEW(1,N).LT.0) GO TO 655
  4446.       CALL ATKA (RSDCOS,S,ISKEW(1,N),IELD,3)
  4447. C
  4448.   655 CALL ADDBAN (A(N2),A(N1),S,RE,LM(1,N),ND,1)
  4449.   650 CONTINUE
  4450. C
  4451.       RETURN
  4452. C
  4453. C
  4454. C     A S S E M B L E   N O N L I N E A R   F I N A L   S T R U C  -
  4455. C     T U R E   S T I F F N E S S   A N D   E F F E C T I V E   L O A D
  4456. C     V E C T O R S
  4457. C
  4458.   700 ISTIF=0
  4459.       IF (ICOUNT.EQ.3) GO TO 703
  4460.       IF (IREF.EQ.0) ISTIF=1
  4461.   703 CONTINUE
  4462.       MADR=N3
  4463.       IF (ICOUNT.EQ.3) MADR=N5
  4464. C
  4465.       DO 710 N=1,NUME
  4466.       IELD=IELTD(N)
  4467.       ND=IELD*3
  4468.       IF (ITYPT.EQ.1) ND=1
  4469.       CALL ECHECK (LM(1,N),ND,ICODE,IUPDT)
  4470.       IF (ICODE.EQ.1) IELCPL=IELCPL + 1
  4471.       IF (ICODE.EQ.1) GO TO 710
  4472.       IF (IDEATH.EQ.0) GO TO 692
  4473.       ETIM=DABS(ETIMV(N))
  4474.       IF (IDEATH.EQ.2) GO TO 690
  4475.       IF (TIME.LT.ETIM) GO TO 710
  4476.       IF (ETIMV(N).GE.0.) GO TO 692
  4477.       ETIMV(N)=ETIM
  4478.       DO 695 L=1,ND
  4479.       I=LM(L,N)
  4480.       IF (I) 693,695,694
  4481.   693 I=NEQ - I
  4482.   694 EDISB(L,N)=X(I)
  4483.   695 CONTINUE
  4484.       IF (ITYPT.EQ.1) GO TO 692
  4485.       IF (NEGSKS.EQ.0) GO TO 692
  4486.       IF (ISKEW(1,N).LT.0) GO TO 692
  4487.       CALL DIRCOS (RSDCOS,EDISB(1,N),ISKEW(1,N),IELD,3,1)
  4488.       GO TO 692
  4489.   690 IF (TIME.GT.ETIM) GO TO 710
  4490.   692 MTYPE=MATP(N)
  4491. C
  4492.       IF (ITYPT.NE.1) GO TO 701
  4493.       ND=1
  4494.       RST(1)=XYZ(1,N)
  4495.       DISP(1)=0.
  4496.       I=LM(1,N)
  4497.       IF (I.GT.0) DISP(1)=X(I)
  4498.       IF (I.LT.0) DISP(1)=X(NEQ - I)
  4499.       IF (IDEATH.NE.1) GO TO 706
  4500.       RST(1)=RST(1) + EDISB(1,N)
  4501.       DISP(1)=DISP(1) - EDISB(1,N)
  4502.       GO TO 706
  4503. C
  4504.   701 DO 702 L=1,ND
  4505.       RST(L)=XYZ(L,N)
  4506.       DISP(L)=0.
  4507.       I=LM(L,N)
  4508.       IF (I.GT.0) DISP(L)=X(I)
  4509.       IF (I.LT.0) DISP(L)=X(NEQ - I)
  4510.       IF (IDEATH.NE.1) GO TO 702
  4511.       RST(L)=RST(L) + EDISB(L,N)
  4512.   702 CONTINUE
  4513.       IF (NEGSKS.EQ.0) GO TO 720
  4514.       IF (ISKEW(1,N).LT.0) GO TO 720
  4515.       CALL DIRCOS (RSDCOS,DISP,ISKEW(1,N),IELD,3,1)
  4516.   720 IF (IDEATH.NE.1) GO TO 706
  4517.       DO 725 L=1,ND
  4518.   725 DISP(L)=DISP(L) - EDISB(L,N)
  4519. C
  4520. C
  4521.   706 CALL STIFN1 (N,AREA(MTYPE),PROP(1,MTYPE),WA(1,N),
  4522.      1             NODGL(1,N),TEMPV1,TEMPV2,EPSIN(N),S,RE,ISTIF,IPST)
  4523. C
  4524.       IF (NEGSKS.EQ.0) GO TO 730
  4525.       IF (ISKEW(1,N).LT.0) GO TO 730
  4526.       CALL DIRCOS (RSDCOS,RE,ISKEW(1,N),IELD,3,2)
  4527. C
  4528.   730 CALL ADDBAN (A(MADR),A(N1),S,RE,LM(1,N),ND,2)
  4529.       IF (ISTIF.EQ.0) GO TO 710
  4530. C
  4531. C     ADD ELEMENT STIFFNESS
  4532. C
  4533.       IF (NEGSKS.EQ.0) GO TO 735
  4534.       IF (ISKEW(1,N).LT.0) GO TO 735
  4535.       CALL ATKA (RSDCOS,S,ISKEW(1,N),IELD,3)
  4536.   735 CALL ADDBAN (A(N4),A(N1),S,RE,LM(1,N),ND,1)
  4537. C
  4538.   710 CONTINUE
  4539.       IF (IELCPL.EQ.NUME) IELCPL=-1
  4540.       RETURN
  4541. C
  4542. C
  4543. C     S T R E S S   C A L C U L A T I O N S
  4544. C
  4545. C
  4546. C
  4547. C***  DATA PORTHOLE  *************************** (START)
  4548. C
  4549.   800 IF (JNPORT.EQ.0 .OR. KPLOTE.NE.0) GO TO 802
  4550.       RECLAB=RECLB3
  4551.       WRITE (LU1)  RECLAB,NG,(NPAR(I),I=1,20),KSTEP,TIME,NEGL,NSUB
  4552. C
  4553. C***  DATA PORTHOLE  *************************** ( END )
  4554. C
  4555.   802 IF (NG.GT.NEGL) GO TO 805
  4556. C
  4557. C     GEOMETRIC AND MATERIAL LINEAR STRESS CALCULATION
  4558. C
  4559.       IPRNT=0
  4560.       IPORT=JNPORT*KPLOTE
  4561. C
  4562.       DO 830 N=1,NUME
  4563.       IPST=IPS(N)
  4564.       IF (IPST.EQ.0) GO TO 830
  4565.       IF (IPRI.NE.0) GO TO 801
  4566.       IPRNT=IPRNT + 1
  4567.       IF (IPRNT.NE.1) GO TO 801
  4568.       WRITE (6,2500) NG
  4569.   801 MTYPE=MATP(N)
  4570.       IELD=IELTD(N)
  4571.       ND=IELD*3
  4572. C
  4573.       IF (ITYPT.NE.1) GO TO 811
  4574.       ND=1
  4575.       EP=EPSIN(N)
  4576.       I=LM(1,N)
  4577.       IF (I.GT.0) EP=EP + X(I)/XYZ(1,N)
  4578.       IF (I.LT.0) EP=EP + X(NEQ - I)/XYZ(1,N)
  4579.       STN(1)=EP
  4580.       STS(1)=E(MTYPE)*EP
  4581.       PP(1)=AREA(MTYPE)*STS(1)
  4582.       IF (IPRI.EQ.0) WRITE(6,2510) N,ND,PP(1),STS(1),STN(1)
  4583.       GO TO 816
  4584. C
  4585.   811 CONTINUE
  4586.       DO 815 J=1,ND
  4587.       DISP(J)=0.
  4588.       I=LM(J,N)
  4589.       IF (I) 819,815,820
  4590.   819 I=NEQ - I
  4591.   820 DISP(J)=X(I)
  4592.   815 CONTINUE
  4593. C
  4594.       IF (NEGSKS.EQ.0) GO TO 812
  4595.       IF (ISKEW(1,N).LT.0) GO TO 812
  4596.       CALL DIRCOS (RSDCOS,DISP,ISKEW(1,N),IELD,3,1)
  4597.   812 CALL LENTH1 (XYZ(1,N),RL)
  4598. C
  4599.       DO 814 L=1,NINT
  4600.       EP=EPSIN(N)
  4601.       R=XG(L,NINT)
  4602.       CALL DERIQ1 (XYZ(1,N),R,B,XJ)
  4603.       DO 813 K=1,ND
  4604.   813 EP=EP + B(K)*DISP(K)
  4605.       STN(L)=EP
  4606.       STS(L)=E(MTYPE)*EP
  4607.       PP(L)=STS(L)*AREA(MTYPE)
  4608.       IF (IPRI.EQ.0) WRITE(6,2510) N,L,PP(L),STS(L),STN(L)
  4609.   814 CONTINUE
  4610.       IF (IPRI.EQ.0) WRITE(6,2520)
  4611. C
  4612. C
  4613. C***  DATA PORTHOLE  *************************** (START)
  4614. C
  4615.   816 IF (JNPORT.EQ.0 .OR. KPLOTE.NE.0) GO TO 830
  4616.       RECLAB=RECLB4
  4617.       DO 817 L=1,NINT
  4618.       WRITE (LU1) RECLAB,L,PP(L),STS(L),STN(L)
  4619.   817 CONTINUE
  4620. C
  4621. C***  DATA PORTHOLE  *************************** ( END )
  4622. C
  4623. C
  4624.   830 CONTINUE
  4625. C
  4626.       RETURN
  4627. C
  4628. C
  4629. C      NONLINEAR STRESS CALCULATION
  4630. C
  4631.   805 IPRNT=0
  4632.       DO 810 N=1,NUME
  4633.       IF (IDEATH.EQ.0) GO TO 910
  4634.       ETIM=DABS(ETIMV(N))
  4635.       IF (IDEATH.EQ.2) GO TO 890
  4636.       IF (TIME.LT.ETIM) GO TO 810
  4637.       GO TO 910
  4638.   890 IF (TIME.GT.ETIM) GO TO 810
  4639.   910 IPST=IPS(N)
  4640.       IF (IPST.EQ.0) GO TO 810
  4641.       IF(IPRI.NE.0) GO TO 803
  4642.       IPRNT=IPRNT + 1
  4643.       IF (IPRNT.NE.1) GO TO 803
  4644.       GO TO (870,870,872,874,874,875,875,870), MODEL
  4645.   870 WRITE(6,2650) NG
  4646.       GO TO 803
  4647.   872 WRITE(6,2500) NG
  4648.       GO TO 803
  4649.   874 WRITE(6,2600) NG
  4650.       GO TO 803
  4651.   875 WRITE(6,2550) NG
  4652. C
  4653.   803 IF (IPRI.EQ.0) WRITE(6,2520)
  4654.       MTYPE=MATP(N)
  4655.       IELD=IELTD(N)
  4656.       ND=IELD*3
  4657. C
  4658.       IF (ITYPT.NE.1) GO TO 850
  4659.       ND=1
  4660.       RST(1)=XYZ(1,N)
  4661.       DISP(1)=0.
  4662.       I=LM(1,N)
  4663.       IF (I.GT.0) DISP(1)=X(I)
  4664.       IF (I.LT.0) DISP(1)=X(NEQ - I)
  4665.       IF (IDEATH.NE.1) GO TO 860
  4666.       RST(1)=RST(1) + EDISB(1,N)
  4667.       DISP(1)=DISP(1) - EDISB(1,N)
  4668.       GO TO 860
  4669. C
  4670.   850 DO 851 L=1,ND
  4671.       RST(L)=XYZ(L,N)
  4672.       DISP(L)=0.
  4673.       I=LM(L,N)
  4674.       IF (I) 852,851,853
  4675.   852 I=NEQ - I
  4676.   853 DISP(L)=X(I)
  4677.       IF (IDEATH.NE.1) GO TO 851
  4678.       RST(L)=RST(L) + EDISB(L,N)
  4679.   851 CONTINUE
  4680.       IF (NEGSKS.EQ.0) GO TO 855
  4681.       IF (ISKEW(1,N).LT.0) GO TO 855
  4682.       CALL DIRCOS (RSDCOS,DISP,ISKEW(1,N),IELD,3,1)
  4683.   855 IF (IDEATH.NE.1) GO TO 860
  4684.       DO 856 L=1,ND
  4685.   856 DISP(L)=DISP(L) - EDISB(L,N)
  4686. C
  4687. C
  4688.   860 CALL STIFN1 (N,AREA(MTYPE),PROP(1,MTYPE),WA(1,N),
  4689.      1             NODGL(1,N),TEMPV1,TEMPV2,EPSIN(N),S,RE,0,IPST)
  4690. C
  4691. C
  4692. C***  DATA PORTHOLE  *************************** (START)
  4693. C
  4694.       IF (JNPORT.EQ.0 .OR. KPLOTE.NE.0) GO TO 810
  4695.       RECLAB=RECLB4
  4696.       DO 880 L=1,NINT
  4697.       WRITE (LU1) RECLAB,L,PP(L),STS(L),STN(L)
  4698.   880 CONTINUE
  4699. C
  4700. C***  DATA PORTHOLE  *************************** ( END )
  4701. C
  4702. C
  4703.   810 CONTINUE
  4704. C
  4705.       RETURN
  4706. C
  4707.   900 STOP
  4708. C
  4709. C
  4710.  1000 FORMAT (I5,4F10.0)
  4711.  1010 FORMAT (8F10.0)
  4712.  1100 FORMAT (5I5,2F10.0,I5)
  4713.  1200 FORMAT (16I5)
  4714. C
  4715.  2000 FORMAT (////37H M A T E R I A L    C O N S T A N T S)
  4716.  2010 FORMAT (///5H  SET,10X,5H AREA,10X,5H  DEN,10X,5H    E/)
  4717.  2011 FORMAT (I5,8E15.6)
  4718.  2020 FORMAT (///5H  SET,10X,5H AREA,10X,5H  DEN,12X,5HPOINT,9X,
  4719.      1        6HSTRAIN,9X,6HSTRESS,11X,4HETAN/ I5,2E15.6,12X,I5,2E15.6)
  4720.  2021 FORMAT (47X,I5,3E15.6)
  4721.  2030 FORMAT (///27H MATERIAL CONSTANTS SET NO.,I5/
  4722.      1        14H     AREA    =,E15.6/14H     DENSITY =,E15.6/)
  4723.  2031 FORMAT (1H ,4X,17HTEMP (PROP(1-16)),5X,15HE (PROP(17-32)),5X,
  4724.      1        19HALPHA (PROP(33-48)),/)
  4725.  2032 FORMAT (1H ,4X,3(E14.6,7X))
  4726.  2033 FORMAT ( //,4X,46HNUMBER OF TEMPERATURE POINTS ...(PROP(49)).. =,
  4727.      1        E14.6,/,
  4728.      2        1H ,3X,46HREFERENCE TEMPERATURE ..........(PROP(50)).. =,
  4729.      3        E14.6,//)
  4730.  2040 FORMAT (///5H  SET,10X,5H AREA,10X,5H  DEN,10X,5H    E,
  4731.      1        10X,5HYIELD,10X,5H   ET /)
  4732.  2061 FORMAT (1H ,4X,17HTEMP (PROP(1-16)),5X,15HE (PROP(17-32)),5X,
  4733.      1        19HYIELD (PROP(33-48)),3X,16HET (PROP(49-64)),4X,
  4734.      2        19HALPHA (PROP(65-80)),/)
  4735.  2062 FORMAT (1H ,4X,5(E14.6,7X))
  4736.  2063 FORMAT (1H ,//,5X,33HCREEP LAW COEFFICIENTS ..........,//,
  4737.      1        1H ,4X,29HA0 ............(PROP(81)).. =,E14.6,/,
  4738.      2        1H ,4X,29HA1 ............(PROP(82)).. =,E14.6,/,
  4739.      3        1H ,4X,29HA2 ............(PROP(83)).. =,E14.6,/,
  4740.      4        1H ,4X,29HA3 ............(PROP(84)).. =,E14.6,/,
  4741.      5        1H ,4X,29HA4 ............(PROP(85)).. =,E14.6,/,
  4742.      6        1H ,4X,29HA5 ............(PROP(86)).. =,E14.6,/,
  4743.      7        1H ,4X,29HA6 ............(PROP(87)).. =,E14.6,/,
  4744.      8        1H ,4X,29HA7 ............(PROP(88)).. =,E14.6,//)
  4745.  2064 FORMAT (1H ,4X,65HNUMBER OF TEMPERATURE POINTS ...................
  4746.      1...(PROP(89)).. =,E14.6,/,
  4747.      2        1H ,4X,65HREFERENCE TEMPERATURE ..........................
  4748.      3...(PROP(90)).. =,E14.6,/,
  4749.      4        1H ,4X,65HCREEP LAW KEY ..................................
  4750.      5...(PROP(91)).. =,E14.6,/,
  4751.      6        1H ,4X,65HINTEGRATION PARAMETER ..........................
  4752.      7...(PROP(92)).. =,E14.6,/,
  4753.      8        1H ,4X,65HMAXIMUM NUMBER OF SUBDIVISIONS .................
  4754.      9...(PROP(93)).. =,E14.6,/,
  4755.      A        1H ,4X,65HMAXIMUM NUMBER OF ITERATIONS PER SUBDIVISION ...
  4756.      B...(PROP(94)).. =,E14.6,/,
  4757.      C        1H ,4X,65HALGORITHM INDICATOR ............................
  4758.      D...(PROP(95)).. =,E14.6,/,
  4759.      E        1H ,4X,65HCONVERGENCE TOLERANCE ..........................
  4760.      F...(PROP(96)).. =,E14.6,/,
  4761.      G        1H ,4X,65HINELASTIC STRAIN TOLERANCE .....................
  4762.      H...(PROP(97)).. =,E14.6,//)
  4763.  2065 FORMAT (1H ,4X,92HWARNING   THE USE OF PROP(94) .LT. 6 CAN RESULT
  4764.      1IN A HIGHLY INACCURATE OR DIVERGENT SOLUTION)
  4765.  2071 FORMAT (6H PROP(,I2,1H,I2,3H) =,E15.6)
  4766.  2200 FORMAT (///38H E L E M E N T   I N F O R M A T I O N//
  4767.      1        39X,7HINITIAL/
  4768.      2        4X,1HN,3X,4HIELD,3X,3HIPS,2X,4HMTYP,4X,2HKG,
  4769.      3        9X,6HSTRAIN,6X,A6,6X,5HETIME,3X,6HINTLOC,13X,
  4770.      4        34HNODE(1)  NODE(2)  NODE(3)  NODE(4)/
  4771.      5        63X,11HINTEGRATION,20X,19HGLOBAL  COORDINATES/
  4772.      6        66X,5HPOINT,19X,1HX,12X,1HY,12X,1HZ)
  4773.  2208 FORMAT (1H ,64X,I4,15X,2(E11.4,2X),E11.4)
  4774.  2209 FORMAT (42H INTEGRATION POINT PRINTING NOT APPLICABLE   ,
  4775.      1        17H FOR RING ELEMENT   )
  4776.  2210 FORMAT (/I5,3I6,I7,5X,2(E11.4,2X),E11.4,1X,I3,15X,I4,3(5X,I4))
  4777.  2300 FORMAT (///16H ELEMENT GROUP =,I2,16H  (TRUSS / RUSS)/
  4778.      1        17H ELEMENT NUMBER =,I4/
  4779.      2        7H IELD =,I3,26H IS GREATER THAN NPAR(7) =,I3/
  4780.      3        5H STOP)
  4781.  2310 FORMAT (///16H ELEMENT GROUP =,I2,16H  (TRUSS / RUSS)/
  4782.      1        17H ELEMENT NUMBER =,I4/
  4783.      2        7H MTYP =,I3,27H IS GREATER THAN NPAR(16) =,I3/5H STOP)
  4784.  2315 FORMAT(///23H INPUT ERROR **********/
  4785.      1          19H SUBSTRUCTURE  NO =,I3/
  4786.      2          19H ELEMENT GROUP NO =,I3/
  4787.      3          31H FIRST ELEMENT NUMBER MUST BE 1)
  4788.  2400 FORMAT (///16H ELEMENT GROUP =,I2,16H  (TRUSS / RUSS)/
  4789.      1        19H ALTHOUGH NPAR(6) =,I2,22H, NONE OF THE ELEMENTS/
  4790.      2        49H IN THIS GROUP REFERS TO SKEW COORDINATE SYSTEMS./
  4791.      3        50H IT IS ADVISED THAT NPAR(6) BE SET TO ZERO TO SAVE,
  4792.      4        15H STORAGE SPACE.//
  4793.      5        39H THIS IS ONLY AN INFORMATIONAL MESSAGE.///)
  4794.  2410 FORMAT (///16H ELEMENT GROUP =,I2,16H  (TRUSS / RUSS)/
  4795.      1        16H ELEMENT NUMBER=,I4/10H NPAR(6) =,I2//
  4796.      2        53H SINCE NODES OF THIS ELEMENT REFER TO SKEW COORDINATE/
  4797.      3        37H SYSTEM(S), NPAR(6) MUST BE SET TO 1.//8H S T O P)
  4798.  2500 FORMAT (1H1,48HS T R E S S   C A L C U L A T I O N S   F O R     ,
  4799.      1        27HE L E M E N T   G R O U P  ,I5,14H  ( TRUSSES ) ///,4X,
  4800.      2        7HELEMENT,10H  LOCATION,8X,5HFORCE,12X,6HSTRESS,11X,
  4801.      3        6HSTRAIN,9X,11HTEMPERATURE,/)
  4802.  2510 FORMAT (I9,I10,3(2X,E15.6))
  4803.  2520 FORMAT (1H )
  4804.  2550 FORMAT (1H1,48HS T R E S S   C A L C U L A T I O N S   F O R     ,
  4805.      1        27HE L E M E N T  G R O U P  ,I5,14H  ( TRUSSES ) ,///,
  4806.      2        1X,7HELEMENT,2X,6HSTRESS,/,1X,7HNUM/IPT,3X,5HSTATE)
  4807.  2600 FORMAT (1H1,48HS T R E S S   C A L C U L A T I O N S   F O R     ,
  4808.      1        27HE L E M E N T   G R O U P  ,I5,14H  ( TRUSSES ) ///,4X,
  4809.      2        7HELEMENT,10H  LOCATION,5X,5HSTATE,8X,5HFORCE,10X,
  4810.      3        6HSTRESS,10X,6HSTRAIN,6X,14HPLASTIC STRAIN,/)
  4811.  2650 FORMAT (1H1,48HS T R E S S   C A L C U L A T I O N S   F O R     ,
  4812.      1        27HE L E M E N T   G R O U P  ,I5,14H  ( TRUSSES ) ///,4X,
  4813.      2        7HELEMENT,10H  LOCATION,8X,5HFORCE,12X,6HSTRESS,11X,
  4814.      3        6HSTRAIN,/)
  4815.  3000 FORMAT (//,38H    ERROR   INCORRECT CREEP LAW NUMBER,///)
  4816.  3001 FORMAT (//,43H    ERROR   INCORRECT INTEGRATION PARAMETER,///)
  4817.  3002 FORMAT (//,50H    ERROR   INCORRECT NUMBER OF TEMPERATURE POINTS,
  4818.      1        ///)
  4819.  3003 FORMAT(//,43H    ERROR   TEMPERATURE POINTS OUT OF ORDER,///)
  4820.  3401 FORMAT (//50H INPUT ERROR DETECTED IN (RUSS/TRUSS)              //
  4821.      1          19H ELEMENT GROUP NO =,I5/
  4822.      2          27H MATERIAL PROPERTY SET NO =,I5/
  4823.      2          38H ZERO OR NEGATIVE INITIAL YIELD STRESS  //)
  4824.  3402 FORMAT (//50H INPUT ERROR DETECTED IN (RUSS/TRUSS)              //
  4825.      1          19H ELEMENT GROUP NO =,I5/
  4826.      2          27H MATERIAL PROPERTY SET NO =,I5/
  4827.      3          44H HARDENING MODULUS (ET) GREATER OR EQUAL TO   ,
  4828.      4          44H YOUNG*S MODULUS (E) IS NOT ALLOWED           //)
  4829.  3403 FORMAT (//33H ERROR IN MATERIAL PROPERTY INPUT //
  4830.      5          15H *** STOP ***         //)
  4831. C
  4832.       END
  4833. C *CDC* *DECK ELPAL1
  4834. C *UNI* )FOR,IS N.ELPAL1, R.ELPAL1
  4835. C
  4836.       SUBROUTINE ELPAL1 (NEL,AREA,PROP,WA,IPT,EPST,ENEW,SIG,PF)
  4837. C
  4838.       IMPLICIT REAL*8 (A-H,O-Z)
  4839. C
  4840. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4841. C .   P R O G R A M                                                   .
  4842. C .       . TO EVALUATE STRESSES FOR ELASTIC-PLASTIC MODELS OF TRUSS  .
  4843. C .         ELEMENT (MODELS 4 AND 5)                                  .
  4844. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4845. C
  4846.       COMMON /EL    / IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,
  4847.      1                ISTAT,NDOFDM,KLIN,IEIG,IMASSN,IDAMPN
  4848.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  4849.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  4850. C
  4851.       DIMENSION STATE(2)
  4852.       DIMENSION PROP(1),WA(1)
  4853. C
  4854.       EQUIVALENCE (NPAR(15),MODEL)
  4855. C
  4856.       DATA STATE / 2H E, 2H*P /
  4857. C
  4858. C
  4859.       IF (MODEL-5) 300,600,900
  4860. C
  4861. C
  4862. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4863. C .   M O D E L  =  4                                                 .
  4864. C .   ELASTIC - PLASTIC WITH ISOTROPIC HARDENING                      .
  4865. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4866. C
  4867.   300 E=PROP(1)
  4868.       ET=PROP(3)
  4869. C
  4870.       IST=2*IPT - 1
  4871.       YLD=WA(IST)
  4872.       PLST=WA(IST+1)
  4873. C
  4874.       YLDEPS=YLD/E
  4875.       TENEPS=PLST + YLDEPS
  4876.       IF (EPST.GT.TENEPS) GO TO 330
  4877.       COMEPS=PLST - YLDEPS
  4878.       IF (EPST.LT.COMEPS) GO TO 340
  4879. C
  4880. C
  4881. C     ELEMENT IS ELASTIC
  4882. C
  4883.       SIG=E * (EPST-PLST)
  4884.       ENEW=E
  4885.       IPEL=1
  4886.       GO TO 360
  4887. C
  4888. C
  4889. C     ELEMENT IS PLASTIC  (TENSION)
  4890. C
  4891.   330 SIG=YLD + ET*(EPST-TENEPS)
  4892.       YLD=SIG
  4893.       GO TO 350
  4894. C
  4895. C
  4896. C     ELEMENT IS PLASTIC  (COMPRESSION)
  4897. C
  4898.   340 SIG=-YLD + ET*(EPST-COMEPS)
  4899.       YLD=-SIG
  4900. C
  4901.   350 PLST=EPST - (SIG/E)
  4902.       ENEW=ET
  4903.       IF (IEQREF.EQ.1) ENEW=E
  4904.       IPEL=2
  4905. C
  4906. C
  4907.   360 PF=AREA*SIG
  4908.       IF (KPRI.NE.0) GO TO 380
  4909.       IF (IPRI.EQ.0) WRITE (6,2000) NEL,IPT,STATE(IPEL),PF,SIG,EPST,PLST
  4910.       RETURN
  4911. C
  4912.   380 IF (IUPDT.EQ.1) RETURN
  4913.       WA(IST)=YLD
  4914.       WA(IST+1)=PLST
  4915.       RETURN
  4916. C
  4917. C
  4918. C
  4919. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4920. C .   M O D E L  =  5                                                 .
  4921. C .   ELASTIC - PLASTIC WITH KINEMATIC HARDENING                      .
  4922. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4923. C
  4924.   600 E=PROP(1)
  4925.       YLD=PROP(2)
  4926.       ET=PROP(3)
  4927. C
  4928.       IST=2*IPT - 1
  4929.       TENYLD=WA(IST)
  4930.       PLST=WA(IST+1)
  4931. C
  4932.       TENEPS=(TENYLD/E) + PLST
  4933.       IF (EPST.GT.TENEPS) GO TO 630
  4934.       COMYLD=TENYLD - (2.*YLD)
  4935.       COMEPS=(COMYLD/E) + PLST
  4936.       IF (EPST.LT.COMEPS) GO TO 640
  4937. C
  4938. C
  4939. C     ELEMENT IS ELASTIC
  4940. C
  4941.       SIG=E * (EPST-PLST)
  4942.       ENEW=E
  4943.       IPEL=1
  4944.       GO TO 660
  4945. C
  4946. C     ELEMENT IS PLASTIC  (TENSION)
  4947. C
  4948.   630 SIG=TENYLD + ET*(EPST-TENEPS)
  4949.       TENYLD=SIG
  4950.       GO TO 650
  4951. C
  4952. C
  4953. C     ELEMENT IS PLASTIC  (COMPRESSION)
  4954. C
  4955.   640 SIG=COMYLD + ET*(EPST-COMEPS)
  4956.       TENYLD=SIG + (2.*YLD)
  4957. C
  4958.   650 PLST=EPST - (SIG/E)
  4959.       ENEW=ET
  4960.       IF (IEQREF.EQ.1) ENEW=E
  4961.       IPEL=2
  4962. C
  4963. C
  4964.   660 PF=AREA*SIG
  4965.       IF (KPRI.NE.0) GO TO 680
  4966.       IF (IPRI.EQ.0) WRITE (6,2000) NEL,IPT,STATE(IPEL),PF,SIG,EPST,PLST
  4967.       RETURN
  4968. C
  4969.   680 IF (IUPDT.EQ.1) RETURN
  4970.       WA(IST)=TENYLD
  4971.       WA(IST+1)=PLST
  4972.       RETURN
  4973. C
  4974. C
  4975. C
  4976.   900 STOP
  4977. C
  4978. C
  4979.  2000 FORMAT (I9,I10,4X,A2,6HLASTIC,4(2X,E14.6))
  4980. C
  4981. C
  4982.       END
  4983. C *CDC* *DECK LENTH1
  4984. C *UNI* )FOR,IS N.LENTH1,R.LENTH1
  4985.       SUBROUTINE LENTH1 (XYZ,RL)
  4986. C
  4987. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4988. C .   P R O G R A M                                                   .
  4989. C .       . TO CALCULATE THE ARCLENGTH FOR VARIABLE NODE TRUSS        .
  4990. C .         ELEMENT                                                   .
  4991. C .                                                                   .
  4992. C .         RL(I) IS THE ARCLENGTH FROM NODE 1 TO NODE (I+1)          .
  4993. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4994. C
  4995. C     INTEG = NO OF INTEGRATION POINTS USED IN CALCULATING ARCLENGTH
  4996. C             BETWEEN ARCLENGTH NODES (MAX=4 - SEE COMMON /GAUSS/ )
  4997. C
  4998.       IMPLICIT REAL*8 (A-H,O-Z)
  4999.       COMMON /TRNODE/ IELD,IDIM,RST(12),DISP(12),PP(4),STS(4),STN(4),
  5000.      1                ARL(4)
  5001.       COMMON /GAUSS / XG(4,4),WGT(4,4),EVAL2(9,2),EVAL3(27,3),E1,E2,E3
  5002. C
  5003.       DIMENSION XYZ(1),RL(1)
  5004.       DIMENSION INTEGS(4),HR(4)
  5005. C
  5006.       DATA INTEGS /0,1,2,3/
  5007. C
  5008. C
  5009.       INTEG=INTEGS(IELD)
  5010.       ARC=2./DBLE(FLOAT(IELD-1))
  5011.       BETA=ARC/2.
  5012.       ALFA=-(1.+BETA)
  5013. C
  5014. C
  5015.       RL(1)=0.
  5016.       DO 100 N=2,IELD
  5017.       RL(N)=0.
  5018.       ALFA=ALFA+ARC
  5019.       DO 90 I=1,INTEG
  5020.       R=ALFA + BETA*XG(I,INTEG)
  5021.       FACT=BETA*WGT(I,INTEG)
  5022.       CALL FUNCT1 (ADUM,HR,R,IELD,0,1)
  5023.       DUM=0.
  5024.       DO 75 J=1,3
  5025.       TEMP=0.
  5026.       KK=J-3
  5027.       DO 60 K=1,IELD
  5028.       KK=KK+3
  5029.    60 TEMP=TEMP + HR(K)*XYZ(KK)
  5030. C
  5031.    75 DUM=DUM + TEMP*TEMP
  5032.       TEMP=DSQRT(DUM)
  5033. C
  5034.    90 RL(N)=RL(N) + FACT*TEMP
  5035. C
  5036.   100 CONTINUE
  5037. C
  5038. C
  5039.       DO 125 N=2,IELD
  5040.   125 RL(N)=RL(N) + RL(N-1)
  5041.       RL(1)=RL(IELD)
  5042. C
  5043.       RETURN
  5044. C
  5045. C
  5046.       END
  5047. C *CDC* *DECK FUNCT1
  5048. C *UNI* )FOR,IS N.FUNCT1,R.FUNCT1
  5049.       SUBROUTINE FUNCT1 (H,HR,R,IELD,IH,IHR)
  5050. C
  5051. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5052. C .   P R O G R A M                                                   .
  5053. C .       . TO CALCULATE INTERPOLATION FUNCTIONS, AND THEIR           .
  5054. C .         DERIVATIVES FOR VARIABLE NODE TRUSS ELEMENT               .
  5055. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5056. C
  5057. C
  5058.       IMPLICIT REAL*8 (A-H,O-Z)
  5059.       DIMENSION H(1),HR(1)
  5060. C
  5061. C
  5062.       GO TO (10,20,30,40), IELD
  5063. C
  5064.    10 RETURN
  5065. C
  5066. C
  5067.    20 IF (IH.EQ.0) GO TO 24
  5068.       H(1)=.5*(1-R)
  5069.       H(2)=.5*(1+R)
  5070.    23 IF (IHR.EQ.0) RETURN
  5071.    24 HR(1)=-.5
  5072.       HR(2)= .5
  5073. C
  5074.       RETURN
  5075. C
  5076. C
  5077. C
  5078.    30 IF (IH.EQ.0) GO TO 34
  5079. C
  5080.       RR=R*R
  5081.       H(1)=(-.5)*(R-RR)
  5082.       H(2)=( .5)*(R+RR)
  5083.       H(3)=(1.-RR)
  5084. C
  5085.    33 IF (IHR.EQ.0) RETURN
  5086. C
  5087.    34 HR(1)=(-.5)+R
  5088.       HR(2)=( .5)+R
  5089.       HR(3)=(-2.)*R
  5090. C
  5091.       RETURN
  5092. C
  5093. C
  5094.    40 TR=3.*R
  5095.       R1=TR+3.
  5096.       R2=TR-3.
  5097.       R3=TR+1.
  5098.       R4=TR-1.
  5099. C
  5100.       IF (IH.EQ.0) GO TO 44
  5101. C
  5102.       H(1)=(R2*R3*R4) / (-48.)
  5103.       H(2)=(R1*R3*R4) / ( 48.)
  5104.       H(3)=(R1*R2*R4) / ( 16.)
  5105.       H(4)=(R1*R2*R3) / (-16.)
  5106. C
  5107.    43 IF (IHR.EQ.0) RETURN
  5108. C
  5109.    44 HR(1)=(-.0625) * (R3*R4 + R2*R4 + R2*R3)
  5110.       HR(2)=( .0625) * (R3*R4 + R1*R4 + R1*R3)
  5111.       HR(3)=( .1875) * (R2*R4 + R1*R4 + R1*R2)
  5112.       HR(4)=(-.1875) * (R2*R3 + R1*R3 + R1*R2)
  5113. C
  5114.       RETURN
  5115. C
  5116. C
  5117.       END
  5118. C *CDC* *DECK STIF1
  5119. C *UNI* )FOR,IS N.STIF1,R.STIF1
  5120.       SUBROUTINE STIF1 (XYZ,AE,S)
  5121. C
  5122. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5123. C .   P R O G R A M                                                   .
  5124. C .       . TO CALCULATE LINEAR ELASTIC STIFFNESS MATRIX OF           .
  5125. C .         2 TO 4 NODE TRUSS ELEMENT IN THE GLOBAL COORDINATES       .
  5126. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5127. C
  5128.       IMPLICIT REAL*8 (A-H,O-Z)
  5129. C
  5130.       COMMON /TRNODE/ IELD,IDIM,RST(12),DISP(12),PP(4),STS(4),STN(4),
  5131.      1                RL(4)
  5132.       COMMON /EL    / IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,
  5133.      1                IDAMP,ISTAT,NDOFDM,KLIN,IEIG,IMASSN,IDAMPN
  5134.       COMMON /GAUSS / XG(4,4),WGT(4,4),EVAL2(9,2),EVAL3(27,3),E1,E2,E3
  5135. C
  5136.       DIMENSION XYZ(1),S(1)
  5137.       DIMENSION B(12)
  5138. C
  5139.       EQUIVALENCE (NPAR(10),NINT)
  5140. C
  5141. C
  5142.       IDUM=IDIM*(IDIM+1)/2
  5143.       DO 110 I=1,IDUM
  5144.   110 S(I)=0.
  5145. C
  5146. C
  5147. C
  5148.       DO 200 IPT=1,NINT
  5149. C
  5150.       R=XG(IPT,NINT)
  5151.       CALL DERIQ1 (XYZ,R,B,XJ)
  5152.       FACT=AE*XJ*WGT(IPT,NINT)
  5153. C
  5154.       K=0
  5155.       DO 160 I=1,IDIM
  5156.       DUM=B(I)*FACT
  5157.       DO 160 J=I,IDIM
  5158.       K=K+1
  5159.       S(K)=S(K) + DUM*B(J)
  5160.   160 CONTINUE
  5161. C
  5162.   200 CONTINUE
  5163. C
  5164.       RETURN
  5165. C
  5166. C
  5167.       END
  5168. C *CDC* *DECK DERIQ1
  5169. C *UNI* )FOR,IS N.DERIQ1,R.DERIQ1
  5170.       SUBROUTINE DERIQ1 (XYZ,R,B,SR)
  5171. C
  5172. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5173. C .   P R O G R A M                                                   .
  5174. C .       . TO CALCULATE STRAIN-DISPLACEMENT MATRIX                   .
  5175. C .         FOR MULTI-NODED TRUSS ELEMENTS                            .
  5176. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5177. C
  5178. C
  5179.       IMPLICIT REAL*8 (A-H,O-Z)
  5180.       COMMON /TRNODE/ IELD,IDIM,RST(12),DISP(12),PP(4),STS(4),STN(4),
  5181.      1                RL(4)
  5182. C
  5183.       DIMENSION XYZ(1),B(1)
  5184.       DIMENSION HR(4)
  5185. C
  5186. C
  5187.       XR=0.
  5188.       YR=0.
  5189.       ZR=0.
  5190. C
  5191.       CALL FUNCT1 (H,HR,R,IELD,0,1)
  5192. C
  5193. C
  5194. C     CALCULATION OF XR=(DX/DR)
  5195. C
  5196.       DO 100 I=1,IELD
  5197.       K=3*(I-1)
  5198.       DUM=HR(I)
  5199.       XR=XR + DUM*XYZ(K+1)
  5200.       YR=YR + DUM*XYZ(K+2)
  5201.       ZR=ZR + DUM*XYZ(K+3)
  5202. C
  5203.   100 CONTINUE
  5204. C
  5205. C
  5206. C     CALCULATE SR=(DS/DR)
  5207. C
  5208.       SR=0.
  5209.       DO 200 I=2,IELD
  5210.   200 SR=SR + HR(I)*RL(I-1)
  5211. C
  5212.       RS=1./SR
  5213. C
  5214.       DUM=RS*RS
  5215.       XS=XR*DUM
  5216.       YS=YR*DUM
  5217.       ZS=ZR*DUM
  5218. C
  5219. C     CALCULATE THE B-MATRIX
  5220. C
  5221.       DO 300 I=1,IELD
  5222.       K=3*(I-1)
  5223.       DUM=HR(I)
  5224.       B(K+1)=XS*DUM
  5225.       B(K+2)=YS*DUM
  5226.       B(K+3)=ZS*DUM
  5227.   300 CONTINUE
  5228. C
  5229. C
  5230.       RETURN
  5231. C
  5232.       END
  5233. C *CDC* *DECK MASBAR
  5234. C *UNI* )FOR,IS N.MASBAR,R.MASBAR
  5235.       SUBROUTINE MASBAR (XYZ,ADEN,S)
  5236. C
  5237. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5238. C .   P R O G R A M                                                   .
  5239. C .       . TO CALCULATE THE CONSISTENT MASS MATRIX FOR               .
  5240. C .         VARIABLE NODE TRUSS ELEMENT                               .
  5241. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5242. C
  5243.       IMPLICIT REAL*8 (A-H,O-Z)
  5244.       COMMON /TRNODE/ IELD,IDIM,RST(12),DISP(12),PP(4),STS(4),STN(4),
  5245.      1                RL(4)
  5246.       COMMON /GAUSS / XG(4,4),WGT(4,4),EVAL2(9,2),EVAL3(27,3),E1,E2,E3
  5247. C
  5248.       DIMENSION XYZ(1),S(1)
  5249.       DIMENSION MINTEG(4),H(4),HR(4)
  5250. C
  5251.       DATA MINTEG /0,2,4,4/
  5252. C
  5253. C
  5254.       IDUM=IDIM*(IDIM+1)/2
  5255.       DO 210 I=1,IDUM
  5256.   210 S(I)=0.
  5257. C
  5258.       INTEG=MINTEG(IELD)
  5259. C
  5260.       DO 250 I=1,INTEG
  5261.       R=XG(I,INTEG)
  5262.       CALL FUNCT1 (H,HR,R,IELD,1,1)
  5263. C
  5264.       XJ=0.
  5265.       DO 220 J=2,IELD
  5266.   220 XJ=XJ + HR(J)*RL(J-1)
  5267. C
  5268.       FACT=XJ*ADEN*WGT(I,INTEG)
  5269. C
  5270.       IDUM=IDIM
  5271.       JF=1
  5272.       DO 240 J=1,IELD
  5273. C
  5274.       JK=JF
  5275.       ADUM=H(J)*FACT
  5276.       DO 225 K=J,IELD
  5277.       S(JK)=S(JK) + ADUM*H(K)
  5278.       JK=JK + 3
  5279.   225 CONTINUE
  5280. C
  5281.       JF=JF + 3*(IDUM-1)
  5282.       IDUM=IDUM-3
  5283. C
  5284.   240 CONTINUE
  5285. C
  5286.   250 CONTINUE
  5287. C
  5288. C
  5289.       IDUM=IDIM
  5290.       JF=1
  5291.       DO 275 J=1,IELD
  5292. C
  5293.       JK=JF
  5294.       DO 260 K=J,IELD
  5295.       I=JK+IDUM
  5296.       S(I)=S(JK)
  5297.       I=I + (IDUM-1)
  5298.       S(I)=S(JK)
  5299.       JK=JK+3
  5300.   260 CONTINUE
  5301. C
  5302.       JF=JF + 3*(IDUM-1)
  5303.       IDUM=IDUM-3
  5304. C
  5305.   275 CONTINUE
  5306. C
  5307.       RETURN
  5308. C
  5309. C
  5310.       END
  5311. C *CDC* *DECK STIFN1
  5312. C
  5313. C *UNI* )FOR,IS N.STIFN1,R.STIFN1
  5314. C
  5315. C
  5316.       SUBROUTINE STIFN1 (NEL,AREA,PROP,WA,NODGL,TEMPV1,TEMPV2,
  5317.      1                   EPSI,S,RE,ISTIF,IPS)
  5318. C
  5319.       IMPLICIT REAL*8 (A-H,O-Z)
  5320. C
  5321. C
  5322. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5323. C .                                                                   .
  5324. C .   P R O G R A M                                                   .
  5325. C .       . TO EVALUATE TRUSS ELEMENT STIFFNESS MATRIX                .
  5326. C .         IN NONLINEAR ANALYSIS (INDNL= 1 OR 2)                     .
  5327. C .                                                                   .
  5328. C .   MATERIAL SUBROUTINES SHOULD -                                   .
  5329. C .                                                                   .
  5330. C .       1.CALCULATE AND RETURN STRESS (SIG) AND FORCE (PF)          .
  5331. C .       2.PRINT STRESSES IF KPRI.EQ.0                               .
  5332. C .       3.IF KPRI.NE.0, AND ISTIF.EQ.1, CALCULATE AND RETURN        .
  5333. C .         CURRENT YOUNG*S MODULUS (E)                               .
  5334. C .       4.IF KPRI.NE.0, AND IUPDT.EQ.0, UPDATE WA,IWA               .
  5335. C .                                                                   .
  5336. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5337. C
  5338. C
  5339.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  5340.      1            ,NDOFDM,KLIN,IEIG,IMASSN,IDAMPN
  5341.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  5342.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  5343.       COMMON /GAUSS/ XG(4,4),WGT(4,4),EVAL2(9,2),EVAL3(27,3),E1,E2,E3
  5344.       COMMON /TRNODE/ IELD,IDIM,XYZ(12),DISP(12),PP(4),STS(4),STN(4),
  5345.      1                RL(4)
  5346. C
  5347.       DIMENSION PROP(1),WA(1),NODGL(1),TEMPV1(1),TEMPV2(1),S(1),RE(1)
  5348.       DIMENSION B(12),H(4),HR(4)
  5349.       DIMENSION RLT(4),RST(12)
  5350. C
  5351.       EQUIVALENCE (NPAR(3),INDNL),(NPAR(15),MODEL),(NPAR(5),ITYPT),
  5352.      1            (NPAR(10),NINT),(NPAR(17),NCON)
  5353. C
  5354.       IF (ITYPT.EQ.1) GO TO 60
  5355.       CALL LENTH1 (XYZ,RL)
  5356.       IF (INDNL.NE.2) GO TO 60
  5357.       DO 50 I=1,IDIM
  5358.    50 RST(I)=XYZ(I)+DISP(I)
  5359.       CALL LENTH1 (RST,RLT)
  5360.    60 CONTINUE
  5361. C
  5362.       IF (KPRI.EQ.0) GO TO 125
  5363. C
  5364.       DO 110 I=1,IDIM
  5365.   110 RE(I)=0.
  5366. C
  5367.       IF (ISTIF.EQ.0) GO TO 125
  5368. C
  5369.       IDUM=IDIM*(IDIM+1)/2
  5370.       DO 120 I=1,IDUM
  5371.   120 S(I)=0.
  5372. C
  5373. C
  5374.   125 DO 400 IPT=1,NINT
  5375. C
  5376.       IF (ITYPT.NE.1) GO TO 140
  5377.       EPST=EPSI + (DISP(1)/XYZ(1))
  5378.       GO TO 225
  5379. C
  5380. C        A. FIND THE STRAINS
  5381. C
  5382.   140 R=XG(IPT,NINT)
  5383.       CALL FUNCT1 (H,HR,R,IELD,0,1)
  5384. C
  5385.       XR=0.
  5386.       YR=0.
  5387.       ZR=0.
  5388. C
  5389.       K=1
  5390.       DO 150 I=1,IELD
  5391.       HRI=HR(I)
  5392.       XR=XR + HRI*XYZ(K  )
  5393.       YR=YR + HRI*XYZ(K+1)
  5394.       ZR=ZR + HRI*XYZ(K+2)
  5395.       K=K+3
  5396.   150 CONTINUE
  5397. C
  5398.       SRZERO=0.
  5399.       DO 155 I=2,IELD
  5400.   155 SRZERO=SRZERO + HR(I)*RL(I-1)
  5401.       IF (INDNL.EQ.2) GO TO 175
  5402. C
  5403. C        A.1. MATERIALLY NONLINEAR FORMULATION
  5404. C
  5405.       XJ=SRZERO
  5406. C
  5407.       DUM=1./(XJ**2)
  5408.       XS=XR*DUM
  5409.       YS=YR*DUM
  5410.       ZS=ZR*DUM
  5411. C
  5412. C     CALCULATE THE B-MATRIX
  5413. C
  5414.       K=1
  5415.       DO 160 I=1,IELD
  5416.       HRI=HR(I)
  5417.       B(K  )=XS*HRI
  5418.       B(K+1)=YS*HRI
  5419.       B(K+2)=ZS*HRI
  5420.       K=K+3
  5421.   160 CONTINUE
  5422. C
  5423. C     CALCULATE STRAINS
  5424. C
  5425.       EPST=EPSI
  5426.       DO 170 I=1,IDIM
  5427.   170 EPST=EPST + B(I)*DISP(I)
  5428.       GO TO 225
  5429. C
  5430. C
  5431. C        A.2. UPDATED LAGRANGIAN FORMULATION
  5432. C
  5433.   175 XRT=XR
  5434.       YRT=YR
  5435.       ZRT=ZR
  5436. C
  5437.       K=1
  5438.       DO 180 I=1,IELD
  5439.       HRI=HR(I)
  5440.       XRT=XRT + HRI*DISP(K  )
  5441.       YRT=YRT + HRI*DISP(K+1)
  5442.       ZRT=ZRT + HRI*DISP(K+2)
  5443.   180 K=K+3
  5444. C
  5445.       XJ=0.
  5446.       DO 185 I=2,IELD
  5447.   185 XJ=XJ + HR(I)*RLT(I-1)
  5448. C
  5449.       EPST=EPSI + (XJ/SRZERO - 1.)
  5450. C
  5451.       IF (KPRI.EQ.0) GO TO 225
  5452. C
  5453.       DUM=1./(XJ**2)
  5454.       XS=XRT*DUM
  5455.       YS=YRT*DUM
  5456.       ZS=ZRT*DUM
  5457. C
  5458. C     CALCULATE THE B-MATRIX
  5459. C
  5460.       K=1
  5461.       DO 190 I=1,IELD
  5462.       HRI=HR(I)
  5463.       B(K  )=XS*HRI
  5464.       B(K+1)=YS*HRI
  5465.       B(K+2)=ZS*HRI
  5466.       K=K+3
  5467.   190 CONTINUE
  5468. C
  5469. C
  5470. C        B. CALCULATE STRESSES
  5471. C
  5472.   225 GO TO(230,240,260,270,270,280,280,290), MODEL
  5473. C
  5474. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5475. C .   M O D E L  =  1   ( LINEAR ELASTIC )                            .
  5476. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5477. C
  5478.   230 E=PROP(1)
  5479.       SIG=E*EPST
  5480.       PF=AREA*SIG
  5481.       IF (KPRI.NE.0) GO TO 300
  5482.       IF (IPRI.EQ.0) WRITE (6,2100) NEL,IPT,PF,SIG,EPST
  5483.       GO TO 375
  5484. C
  5485. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5486. C .   M O D E L  =  2   ( NONLINEAR ELASTIC )                         .
  5487. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5488. C
  5489.   240 IF (EPST.GE.PROP(1)) GO TO 245
  5490.       WRITE (6,2200) NG,NEL,KSTEP,ITE,MODEL,EPST,PROP(1)
  5491.       STOP
  5492. C
  5493.   245 IP=NCON/2
  5494.       DO 250 I=2,IP
  5495.       L=I
  5496.       IF (EPST.LE.PROP(I)) GO TO 255
  5497.   250 CONTINUE
  5498. C
  5499.       WRITE (6,2210) NG,NEL,KSTEP,ITE,MODEL,EPST,IP,PROP(IP)
  5500.       STOP
  5501. C
  5502.   255 DE=PROP(L) - PROP(L-1)
  5503.       LL=L + IP
  5504.       DS=PROP(LL) - PROP(LL-1)
  5505.       E=DS/DE
  5506.       SIG=PROP(LL-1) + E*(EPST-PROP(L-1))
  5507.       PF=AREA*SIG
  5508.       IF (KPRI.NE.0) GO TO 300
  5509.       IF (IPRI.EQ.0) WRITE (6,2100) NEL,IPT,PF,SIG,EPST
  5510.       GO TO 375
  5511. C
  5512. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5513. C .   M O D E L  =  3   ( THERMOELASTIC )                             .
  5514. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5515. C
  5516.   260 CALL FUNCT1 (H,HR,R,IELD,1,0)
  5517.       CALL MTBTHE (PROP,AREA,EPST,PF,SIG,TEMPV1,TEMPV2,NODGL,
  5518.      1             H,IELD,E,NEL,IPT)
  5519.       IF (KPRI) 300,375,300
  5520. C
  5521. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5522. C .   M O D E L  =  4  AND  5   ( ELASTIC-PLASTIC )                   .
  5523. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5524. C
  5525.   270 CALL ELPAL1 (NEL,AREA,PROP,WA,IPT,EPST,E,SIG,PF)
  5526.       IF (KPRI) 300,375,300
  5527. C
  5528. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5529. C     M O D E L = 6  AND  7   (ELASTIC-PLASTIC AND CREEP)
  5530. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5531. C
  5532.   280 CALL FUNCT1 (H,HR,R,IELD,1,0)
  5533.       CALL MTBEPC (WA,WA,PROP,AREA,EPST,PF,SIG,TEMPV1,TEMPV2,NODGL,
  5534.      1             H,IELD,E,NEL,IPT,IPS)
  5535.       IF (KPRI) 300,375,300
  5536. C
  5537. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5538. C     M O D E L = 8  (USER SUPPLIED MODEL)
  5539. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5540. C
  5541. C 290 CALL TUSMOD
  5542. C     IF(KPRI) 300,375,300
  5543.   290 RETURN
  5544. C
  5545. C
  5546. C        C. CALCULATE NODAL FORCES
  5547. C
  5548.   300 IF (ITYPT.NE.1) GO TO 305
  5549.       RE(1)=PF
  5550.       IF (ISTIF.EQ.0) GO TO 400
  5551.       S(1)=AREA*E/(XYZ(1)+DISP(1))
  5552.       GO TO 400
  5553. C
  5554.   305 FACT=PF*XJ*WGT(IPT,NINT)
  5555.       DO 310 I=1,IDIM
  5556.   310 RE(I)=RE(I) + FACT*B(I)
  5557. C
  5558.       IF (ISTIF.EQ.0) GO TO 400
  5559. C
  5560. C        D. CALCULATE STIFFNESS MATRIX
  5561. C
  5562. C        D.1. MATERIAL STIFFNESS MATRIX
  5563. C
  5564.       FACT=AREA*E*XJ*WGT(IPT,NINT)
  5565. C
  5566.       L=0
  5567.       DO 340 I=1,IDIM
  5568.       DUM=FACT*B(I)
  5569.       DO 340 J=I,IDIM
  5570.       L=L+1
  5571.       S(L)=S(L) + DUM*B(J)
  5572.   340 CONTINUE
  5573. C
  5574.       IF (INDNL.NE.2) GO TO 400
  5575. C
  5576. C        D.2. GEOMETRIC STIFFNESS MATRIX
  5577. C
  5578.       FACT=PF*WGT(IPT,NINT)/XJ
  5579. C
  5580.       IDUM=IDIM
  5581.       JF=1
  5582.       DO 360 J=1,IELD
  5583.       JK=JF
  5584.       DUM=FACT*HR(J)
  5585.       DO 350 K=J,IELD
  5586.       ADUM=DUM*HR(K)
  5587.       S(JK)=S(JK) + ADUM
  5588.       L=JK + IDUM
  5589.       S(L)=S(L) + ADUM
  5590.       L=L + (IDUM-1)
  5591.       S(L)=S(L) + ADUM
  5592.       JK=JK+3
  5593.   350 CONTINUE
  5594. C
  5595.       JF=JF + 3*(IDUM-1)
  5596.       IDUM=IDUM-3
  5597. C
  5598.   360 CONTINUE
  5599. C
  5600.       GO TO 400
  5601. C
  5602. C
  5603.   375 STN(IPT)=EPST
  5604.       STS(IPT)=SIG
  5605.       PP (IPT)=PF
  5606. C
  5607. C
  5608.   400 CONTINUE
  5609. C
  5610. C
  5611.       RETURN
  5612. C
  5613. C
  5614.  2100 FORMAT (I9,I10,3(2X,E15.6))
  5615.  2200 FORMAT (///25H ERROR IN ELEMENT GROUP =,I3,19H   (TRUSS / STIFN1)/
  5616.      1        17H ELEMENT NUMBER =,I5//
  5617.      1        5X,12H TIMESTEP  =,I5 / 5X,12H ITERATION =,I5 //
  5618.      2        5X,17H MATERIAL MODEL =,I5 / 5X, 9H STRAIN =,E12.6,
  5619.      3        23H IS LESS THAN PROP(1) =,E12.6 //  5H STOP)
  5620.  2210 FORMAT (///25H ERROR IN ELEMENT GROUP =,I3,19H   (TRUSS / STIFN1)/
  5621.      1        17H ELEMENT NUMBER =,I5//
  5622.      1        5X,12H TIMESTEP  =,I5 / 5X,12H ITERATION =,I5 //
  5623.      2        5X,17H MATERIAL MODEL =,I5 / 5X, 9H STRAIN =,E12.6,
  5624.      3        22H IS GREATER THAN PROP(,I2,3H) =,E12.6 // 5H STOP)
  5625. C
  5626.       END
  5627. C *CDC* *DECK IMATB
  5628. C *UNI* )FOR,IS N.IMATB,R.IMATB
  5629.       SUBROUTINE IMATB(PROP,WA,IWA,NODGL,TEMPV1,NODE,IELD)
  5630. C
  5631. C
  5632. C     THIS SUBROUTINE INITIALIZES THE WORKING STORAGE FOR TRUSS
  5633. C     MATERIAL MODELS  3-7
  5634. C
  5635. C
  5636.       IMPLICIT REAL*8 (A-H,O-Z)
  5637.       COMMON /DPR/ ITWO
  5638.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  5639.      1            ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  5640.       COMMON /GAUSS/ XG(4,4),WGT(4,4),EVAL2(9,2),EVAL3(27,3),E1,E2,E3
  5641.       COMMON /SOLPM1/ TREF,XINTP,XCON1,XCON2,XPARM1,XPARM2,TOLIL,TOLPC,
  5642.      1                TOL1,TOL2,TOL3,TOL4,TOL5,TOL6,TCHK,CRPCON(8),DTMN,
  5643.      2                SUBDD,RNGL,RNGU,DTT,TOL7,
  5644.      3                KCRP,NITE,NALG,IINTP,NPTS,ITCHK
  5645. C
  5646.       DIMENSION PROP(1),WA(1),IWA(1),NODGL(1),TEMPV1(1),NODE(1)
  5647. C
  5648.       DIMENSION H(4),PROP1(4)
  5649. C
  5650.       EQUIVALENCE (NPAR(15),MODEL),(NPAR(10),NINT),(NPAR(5),ITYPT)
  5651. C
  5652. C
  5653.       IMOD=MODEL-2
  5654.       GO TO(30,40,40,50,50,70), IMOD
  5655. C
  5656. C     THERMOELASTIC
  5657. C
  5658. C        STORE GLOBAL NODAL POINT NUMBERS IN NODGL ARRAY
  5659. C
  5660.    30 DO 35 K=1,IELD
  5661.       NODGL(K)=NODE(K)
  5662.    35 CONTINUE
  5663.       RETURN
  5664. C
  5665. C
  5666. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5667. C .   M O D E L S   4  AND  5                                         .
  5668. C .   ELASTIC - PLASTIC WITH ISOTROPIC / KINEMATIC HARDENING          .
  5669. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5670. C
  5671. C     WA(IST  )= YIELD IN TENSION
  5672. C     WA(IST+1)= PLASTIC STRAIN
  5673. C
  5674.    40 DO 45 K=1,NINT
  5675.       IST=2*(K-1) + 1
  5676.       WA(IST  )=PROP(2)
  5677.       WA(IST+1)=0.
  5678.    45 CONTINUE
  5679.       RETURN
  5680. C
  5681. C
  5682. C     THERMO-ELASTIC-PLASTIC AND CREEP
  5683. C
  5684.    50 NPTS=IDINT(PROP(89))
  5685.       TOLMT=1.0D-2
  5686. C
  5687.       TOLL=TOLMT*DABS(PROP(1))
  5688.       IF(TOLL.EQ.0.0) TOLL=TOLMT
  5689.       TOLU=TOLMT*DABS(PROP(NPTS))
  5690.       IF(TOLU.EQ.0.0) TOLU=TOLMT
  5691. C
  5692.       RNGL=PROP(1) - TOLL
  5693.       RNGU=PROP(NPTS) + TOLU
  5694. C
  5695. C        STORE GLOBAL NODAL POINT NUMBERS IN NODGL ARRAY
  5696. C
  5697.       DO 55 K=1,IELD
  5698.       NODGL(K)=NODE(K)
  5699.    55 CONTINUE
  5700. C
  5701. C        LOOP OVER ALL INTEGRATION POINTS
  5702. C
  5703.       DO 100 KK=1,NINT
  5704.       IST=12*(KK - 1) + 1
  5705.       IST1=IST + 9
  5706.       IST2=IST + 4
  5707. C
  5708. C        SET ALL FLOATING POINT VARIABLES IN THE WORKING ARRAY
  5709. C        TO ZERO
  5710. C
  5711.       DO 60 K=IST,IST1
  5712.    60 WA(K)=0.0
  5713. C
  5714. C        INTERPOLATE INITIAL TEMPERATURE DISTRIBUTION
  5715. C
  5716.       IF(ITYPT.EQ.0) GO TO 63
  5717.       JJ=NODGL(1)
  5718.       WA(IST1)=TEMPV1(JJ)
  5719.       GO TO 66
  5720. C
  5721.    63 R=XG(KK,NINT)
  5722.       CALL FUNCT1 (H,HR,R,IELD,1,0)
  5723.       TEMP1=0.0
  5724. C
  5725.       DO 64 J=1,IELD
  5726.       JJ=NODGL(J)
  5727.    64 TEMP1=TEMP1 + H(J)*TEMPV1(JJ)
  5728. C
  5729. C
  5730. C        INITIALIZE AND STORE YIELD STRESS
  5731. C
  5732.       CALL MTITP1(PROP,TEMP1,PROP1)
  5733.       YS1=PROP1(2)
  5734.       WA(IST2)=YS1
  5735.       WA(IST1)=TEMP1
  5736. C
  5737. C        INITIALIZE INTEGER VARIABLES IN THE WORKING ARRAY TO 1
  5738. C
  5739.    66 IST=(12*KK - 2)*ITWO + 1
  5740.       IST1=IST+ITWO
  5741.       IWA(IST)=1
  5742.       IWA(IST1)=1
  5743.   100 CONTINUE
  5744. C
  5745.       RETURN
  5746. C
  5747. C
  5748. C     USER MODEL  (MODEL 8)
  5749. C
  5750.    70 WRITE (6,2000) MODEL
  5751.       STOP
  5752. C
  5753. C
  5754.  2000 FORMAT (//23H TRUSS MATERIAL MODEL =,I3,10X,17H( TRUSS / IMATB )/,
  5755.      1        46H USER SHOULD PROVIDE AN INITIALIZATION ROUTINE/
  5756.      2        //5H STOP)
  5757. C
  5758.       END
  5759. C *CDC* *DECK MTBTHE
  5760. C *UNI* )FOR,IS N.MTBTHE,R.MTBTHE
  5761.       SUBROUTINE MTBTHE(PROP,AREA,   EPST,PF,SIG,TEMPV1,TEMPV2,NODGL,H,
  5762.      1                  IELD,E,NEL,IPT)
  5763. C
  5764.       IMPLICIT REAL*8 (A-H,O-Z)
  5765. C
  5766.       COMMON /SOLPM1/ TREF,XINTP,XCON1,XCON2,XPARM1,XPARM2,TOLIL,TOLPC,
  5767.      1               TOL1,TOL2,TOL3,TOL4,TOL5,TOL6,TCHK,CRPCON(8),DTMN,
  5768.      2               SUBDD,RNGL,RNGU,DTT,TOL7,
  5769.      3               KCRP,NITE,NALG,IINTP,NPTS,ITCHK
  5770.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  5771.      1            ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  5772.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  5773.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  5774. C
  5775.       DIMENSION PROP(16,1),TEMPV1(1),TEMPV2(1),NODGL(1),H(1),
  5776.      1          PROP1(2),PROP2(2),DTEMP(2)
  5777. C
  5778.       EQUIVALENCE (NPAR(15),MODEL), (NPAR(5),ITYPT)
  5779. C
  5780. C
  5781. C     THIS SUBROUTINE CALCULATES THE STRESSES AND STRESS-STRAIN LAW
  5782. C     FOR THE THERMOELASTIC MATERIAL MODEL  (MODEL = 3)
  5783. C
  5784. C
  5785. C
  5786.       IF(IPT.GT.1) GO TO 5
  5787.       NPTS=IDINT(PROP(1,4))
  5788.       TOLMT=1.0D-2
  5789. C
  5790.       TOLL=TOLMT*DABS(PROP(1,1))
  5791.       IF(TOLL.EQ.0.0) TOLL=TOLMT
  5792.       TOLU=TOLMT*DABS(PROP(NPTS,1))
  5793.       IF(TOLU.EQ.0.0) TOLU=TOLMT
  5794. C
  5795.       RNGL=PROP(1,1) - TOLL
  5796.       RNGU=PROP(NPTS,1) + TOLU
  5797. C
  5798. C
  5799. C        1. INTERPOLATE NODAL POINT TEMPERATURES AT START AND END
  5800. C           OF CURRENT SOLUTION STEP
  5801. C
  5802. C     AXISYMMETRIC TRUSS **
  5803. C
  5804.     5 IF(ITYPT.EQ.0) GO TO 10
  5805.       KK=NODGL(1)
  5806.       TEMP1=TEMPV1(KK)
  5807.       TEMP2=TEMPV2(KK)
  5808.       GO TO 20
  5809. C
  5810. C     GENERAL TRUSS **
  5811. C
  5812.    10 TEMP1=0.0
  5813.       TEMP2=0.0
  5814. C
  5815.       DO 15 K=1,IELD
  5816.       KK=NODGL(K)
  5817.       TEMP1=TEMP1+H(K)*TEMPV1(KK)
  5818.    15 TEMP2=TEMP2+H(K)*TEMPV2(KK)
  5819. C
  5820. C        2. INTERPOLATE MATERIAL PROPERTY TABLES
  5821. C
  5822.    20 DTEMP(1)=TEMP1
  5823.       DTEMP(2)=TEMP2
  5824. C
  5825.       DO 75 J=1,2
  5826.       DTEM=DTEMP(J)
  5827.       IF(DTEM.GE.RNGL) GO TO 35
  5828.       WRITE(6,3001)
  5829.       STOP
  5830. C
  5831.    35 L=0
  5832.       DO 40 K=2,NPTS
  5833.       L=L+1
  5834.       DUM=PROP(K,1)
  5835.       IF(K.EQ.NPTS) DUM=RNGU
  5836.       IF(DTEM.GT.DUM) GO TO 40
  5837.       GO TO 45
  5838.    40 CONTINUE
  5839.       WRITE(6,3001)
  5840.       STOP
  5841. C
  5842.    45 XRATIO=(DTEM-PROP(L,1))/(PROP(L+1,1)-PROP(L,1))
  5843. C
  5844. C     CORRECT XRATIO FOR THE CASE WHEN DTEM LIES OUTSIDE TABLE, BUT
  5845. C     WITHIN THE TOLERANCE RANGE **
  5846. C
  5847.       IF(XRATIO.GT.1.0) XRATIO=1.0
  5848.       IF(XRATIO.LT.0.0) XRATIO=0.0
  5849.       IF(J.EQ.2) GO TO 65
  5850. C
  5851. C     PROP1(I) CONTAINS MATERIAL PROPERTIES AT TEMP1 **
  5852. C     PROP2(I) CONTAINS MATERIAL PROPERTIES AT TEMP2 **
  5853. C
  5854.       DO 60 M=2,3
  5855.    60 PROP1(M-1)=PROP(L,M)+XRATIO*(PROP(L+1,M)-PROP(L,M))
  5856.       GO TO 75
  5857.    65 DO 70 M=2,3
  5858.    70 PROP2(M-1)=PROP(L,M)+XRATIO*(PROP(L+1,M)-PROP(L,M))
  5859.    75 CONTINUE
  5860. C
  5861.       E1=PROP1(1)
  5862.       ALPHA1=PROP1(2)
  5863.       E2=PROP2(1)
  5864.       ALPHA2=PROP2(2)
  5865.       TREF=PROP(2,4)
  5866. C
  5867. C        3. COMPUTE AXIAL STRESS AND FORCE
  5868. C
  5869. C     CHECK FOR START OF A SOLUTION STEP **
  5870. C     (ICOUNT .NE. 3 AND KPRI .NE. 0 INDICATE THE START OF A
  5871. C      SOLUTION STEP)
  5872. C
  5873.       IF(ICOUNT.NE.3.AND.KPRI.NE.0) GO TO 150
  5874.       EPSTH=ALPHA2*(TEMP2-TREF)
  5875.       SIG=E2*(EPST-EPSTH)
  5876.       PF=SIG*AREA
  5877.       IF (ICOUNT.EQ.3) RETURN
  5878.       IF(IPRI.EQ.0) WRITE(6,2100) NEL,IPT,PF,SIG,EPST,TEMP2
  5879.       RETURN
  5880. C
  5881. C     CALCULATE STRESS CONTRIBUTION TO  GEOMETRICALLY NONLINEAR
  5882. C     STIFFNESS MATRIX AND EFFECTIVE LOAD VECTOR **
  5883. C
  5884.   150 EPSTH=ALPHA1*(TEMP1-TREF)
  5885.       SIG=E1*(EPST-EPSTH)
  5886.       DEPSTH=ALPHA2*(TEMP2-TREF) - ALPHA1*(TEMP1-TREF)
  5887.       PF=(SIG-E2*DEPSTH)*AREA
  5888.       E=E2
  5889.       RETURN
  5890. C
  5891.  2100 FORMAT (I9,I10,4(2X,E15.6))
  5892.  3001 FORMAT(93H    ERROR   TEMPERATURE OUTSIDE RANGE OF MATERIAL PROPER
  5893.      1TY TEMPERATURES   (SUBROUTINE MTBTHE))
  5894.       END
  5895. C *CDC* *DECK MTBEPC
  5896. C *UNI* )FOR,IS N.MTBEPC,R.MTBEPC
  5897. C
  5898.       SUBROUTINE MTBEPC(WA,IWA,PROP,AREA,STRAIN,PF,STRESS,TEMPV1,
  5899.      1                  TEMPV2,NDS,H,IELD,CEP,NEL,IPT,IPS)
  5900. C
  5901. C
  5902. C
  5903. C     THIS SUBROUTINE CALCULATES THE STRESS, PLASTIC STRAIN,
  5904. C     CREEP STRAIN AND THE CONSTITUTIVE LAW FOR THE
  5905. C     THERMO-ELASTIC-PLASTIC AND CREEP MATERIAL MODELS
  5906. C     (MODELS = 6 AND 7)
  5907. C
  5908. C
  5909. C
  5910. C     NALG = 1  ALGORITHM USES ISUBM SUBDIVISIONS OF EQUAL SIZE
  5911. C
  5912. C          = 2  ALGORITHM USES VARIABLE SIZE SUBDIVISIONS UP TO A
  5913. C               MAXIMUM OF ISUBM
  5914. C
  5915. C
  5916. C
  5917. C     THE FOLLOWING VARIABLES ARE USED
  5918. C
  5919. C        SIG = STRESS AT TIME OF LAST UPDATE
  5920. C        EPS = TOTAL STRAIN AT TIME OF LAST UPDATE
  5921. C        EPSP = PLASTIC STRAIN AT TIME OF LAST UPDATE
  5922. C        EPSC = CREEP STRAIN AT TIME OF LAST UPDATE
  5923. C        YLD = YIELD STRESS AT TIME OF LAST UPDATE
  5924. C        EPSTR = ACCUMULATED EFFECTIVE PLASTIC STRAIN AT TIME OF LAST
  5925. C                UPDATE
  5926. C        ALFA = YIELD SURFACE TRANSLATION AT TIME OF LAST UPDATE
  5927. C        IPEL = ELASTIC-PLASTIC INDICATOR AT TIME OF LAST UPDATE
  5928. C        NORG = CYCLIC CREEP ORIGIN INDICATOR AT TIME OF LAST UPDATE
  5929. C        TREF = REFERENCE TEMPERATURE
  5930. C        KCRP = CREEP LAW NUMBER
  5931. C        CRPCON = CREEP LAW COEFFICIENTS
  5932. C        XINTP = INTEGRATION PARAMETER
  5933. C        ISUBM = MAXIMUM NUMBER OF SUBDIVISIONS
  5934. C        NITE = MAXIMUM NUMBER OF ITERATIONS PER SUBDIVISION
  5935. C        NALG = ALGORITHM INDICATOR
  5936. C        TOLIL,TOL1 = CONVERGENCE TOLERANCES
  5937. C        TOL2,TOL5 = ZERO TOLERANCES
  5938. C        TOL3,TOL4 = ROUNDOFF TOLERANCES
  5939. C        TOL6,TOL7 = YIELD SURFACE TOLERANCES
  5940. C        TOLPC = INELASTIC STRAIN TOLERANCE
  5941. C        TOLMT = MATERIAL PROPERTY TABLE TEMPERATURE TOLERANCE
  5942. C        DTT = CURRENT TIME STEP
  5943. C        DTOD = OLD TIME STEP WHEN USING RESTART
  5944. C        DELT = TIME STEP SUBDIVISION
  5945. C        STRAIN = TOTAL STRAIN
  5946. C        STRESS=STRESS
  5947. C        DELEPS = INCREMENT IN TOTAL STRAIN
  5948. C        EPS1,EPS2 = TOTAL STRAIN AT START AND END OF SUBDIVISION
  5949. C        DEPS = CHANGE IN TOTAL STRAIN FOR THE SUBDIVISION
  5950. C        STRSS1,STRSS2 = STRESS AT START AND END OF SUBDIVISION
  5951. C        STRSSM = WEIGHTED STRESS
  5952. C        DELSIG = CHANGE IN STRESS FOR THE SUBDIVISION
  5953. C        EPST1,EPST2 = THERMAL STRAIN AT START AND END OF SUBDIVISION
  5954. C        THSTR1 = THERMAL STRAIN RATE AT START OF SUBDIVISION
  5955. C        DPST = CHANGE IN THERMAL STRAIN FOR THE SUBDIVISION
  5956. C        EPSC1,EPSC2 = CREEP STRAIN AT START AND END OF SUBDIVISION
  5957. C        EPSCM = WEIGHTED CREEP STRAIN
  5958. C        DPSC = CHANGE IN CREEP STRAIN FOR THE SUBDIVISION
  5959. C        EPSP1,EPSP2 = PLASTIC STRAIN AT START AND END OF SUBDIVISION
  5960. C        DPSP = CHANGE IN PLASTIC STRAIN FOR THE SUBDIVISION
  5961. C        EPSTR1,EPSTR2 = ACCUMULATED EFFECTIVE PLASTIC STRAIN AT START
  5962. C                        AND END OF SUBDIVISION
  5963. C        EPSTRM = WEIGHTED ACCUMULATED EFFECTIVE PLASTIC STRAIN
  5964. C        TEMP1,TEMP2 = TEMPERATURES AT START AND END OF CURRENT
  5965. C                      SOLUTION STEP
  5966. C        TMP1,TMP2 = TEMPERATURES AT START AND END OF SUBDIVISION
  5967. C        TMPM = WEIGHTED TEMPERATURE
  5968. C        ALFA1,ALFA2 = YIELD SURFACE TRANSLATION AT START AND END OF
  5969. C                      SUBDIVISION
  5970. C        ALFAM = WEIGHTED YIELD SURFACE TRANSLATION
  5971. C        PROP1,PROP2 = MATERIAL PROPERTIES AT START AND END OF
  5972. C                      SUBDIVISION
  5973. C        PROPM = WEIGHTED MATERIAL PROPERTIES
  5974. C        YLD1,YLD2 = YIELD STRESS AT START AND END OF SUBDIVISION
  5975. C        YLDM = WEIGHTED YIELD STRESS
  5976. C        XLAMDA = LOADING/UNLOADING/NEUTRAL LOADING INDICATOR
  5977. C        NDS = ELEMENT GLOBAL NODAL POINT NUMBERS
  5978. C        PF = AXIAL FORCE
  5979. C        CEP = MATERIAL MODULUS
  5980. C
  5981. C
  5982. C
  5983.       IMPLICIT REAL*8 (A-H,O-Z)
  5984. C
  5985.       COMMON /DPR/ ITWO
  5986.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  5987.      1            ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  5988.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  5989.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  5990.       COMMON /SOLPM1/ TREF,XINTP,XCON1,XCON2,XPARM1,XPARM2,TOLIL,TOLPC,
  5991.      1               TOL1,TOL2,TOL3,TOL4,TOL5,TOL6,TCHK,CRPCON(8),DTMN,
  5992.      2               SUBDD,RNGL,RNGU,DTT,TOL7,
  5993.      3               KCRP,NITE,NALG,IINTP,NPTS,ITCHK
  5994.       COMMON /CONST/ DT,DTA,CONS(21),DTOD,IOPE
  5995. C
  5996.       DIMENSION WA(1),IWA(1),PROP(16,1),TEMPV1(1),TEMPV2(1),NDS(1),
  5997.      1          H(1),PROP1(4),PROPM(4),PROP2(4),ORIG(2),STATE(2)
  5998. C
  5999.       EQUIVALENCE (NPAR(5),ITYPT),(NPAR(15),MODEL)
  6000. C
  6001.       DATA STATE /2H E,2H*P/
  6002. C
  6003. C
  6004. C
  6005. C        1. INITIALIZE SOLUTION PARAMETERS
  6006. C
  6007.       INDEX=1
  6008.       ISUB=1
  6009.       ISUBM=IDINT(PROP(13,6))
  6010. C
  6011.       IF(IPT.GT.1) GO TO 10
  6012. C
  6013. C     SET TIME STEP SIZE **
  6014. C
  6015.       DTT=DT
  6016.       IF(MODEX.EQ.2.AND.KSTEP.EQ.1.AND.ICOUNT.NE.3.AND.
  6017.      1   KPRI.NE.0) DTT=DTOD
  6018. C
  6019.       SUBDD=5.0
  6020.       DTMN=DTT/PROP(13,6)
  6021.       IINTP=1
  6022. C
  6023.       DO 5 J=1,8
  6024.     5 CRPCON(J)=PROP(J,6)
  6025. C
  6026.       NPTS=IDINT(PROP(9,6))
  6027.       TREF=PROP(10,6)
  6028.       KCRP=IDINT(PROP(11,6))
  6029.       XINTP=PROP(12,6)
  6030.       NITE=IDINT(PROP(14,6))
  6031.       NALG=IDINT(PROP(15,6))
  6032.       TOLIL=PROP(16,6)
  6033.       TOLPC=PROP(1,7)
  6034. C
  6035.       XCON1=2.0/3.0
  6036.       XCON2=1.0/3.0
  6037. C
  6038.       ITCHK=1
  6039.       IF(NITE.LT.6) ITCHK=0
  6040. C
  6041. C     SET INTEGRATION PARAMETERS **
  6042. C
  6043.       XPARM1=1.0 - XINTP
  6044.       XPARM2=XINTP
  6045. C
  6046. C     SET TOLERANCES **
  6047. C
  6048.       TOL1=TOLIL*TOLIL
  6049.       TOL4=5.0D-6
  6050.       TOL5=1.0D-20
  6051.       TOL2=TOL5*TOL5
  6052.       TOL3=2.0*TOL4
  6053.       TOL6=0.1
  6054.       TOL7=2.0
  6055.       TOLMT=1.0D-2
  6056.       TCHK=DTT*(1.0 - TOL4)
  6057. C
  6058.       TOLL=TOLMT*DABS(PROP(1,1))
  6059.       IF(TOLL.EQ.0.0) TOLL=TOLMT
  6060.       TOLU=TOLMT*DABS(PROP(NPTS,1))
  6061.       IF(TOLU.EQ.0.0) TOLU=TOLMT
  6062. C
  6063.       RNGL=PROP(1,1) - TOLL
  6064.       RNGU=PROP(NPTS,1) + TOLU
  6065. C
  6066. C        2. INITIALIZE SOLUTION VARIABLES
  6067. C
  6068.    10 IWAD=12*(IPT - 1) + 1
  6069.       SIG=WA(IWAD)
  6070.       EPS=WA(IWAD + 1)
  6071.       EPSP=WA(IWAD + 2)
  6072.       EPSC=WA(IWAD + 3)
  6073.       YLD=WA(IWAD + 4)
  6074.       EPSTR=WA(IWAD + 5)
  6075.       ALFA=WA(IWAD + 6)
  6076.       ORIG(1)=WA(IWAD + 7)
  6077.       ORIG(2)=WA(IWAD + 8)
  6078.       TMPOLD=WA(IWAD + 9)
  6079. C
  6080.       IWAD=(12*IPT - 2)*ITWO + 1
  6081.       IPEL=IWA(IWAD)
  6082.       NORG=IWA(IWAD + ITWO)
  6083. C
  6084.       EPS1=EPS
  6085.       EPSP1=EPSP
  6086.       EPSP2=EPSP
  6087.       ALFA1=ALFA
  6088.       ALFA2=ALFA
  6089.       EPSC1=EPSC
  6090.       EPSC2=EPSC
  6091.       DPSC=0.0
  6092.       STRSS2=SIG
  6093.       STRSS1=SIG
  6094. C
  6095.       YLD1=YLD
  6096.       EPSTR1=EPSTR
  6097.       EPSTR2=EPSTR
  6098.       ECSTR1=0.0
  6099.       CRSRM=0.0
  6100.       TMP1=TMPOLD
  6101.       TAU=0.0
  6102.       ESTM=0.0
  6103. C
  6104. C        3. CALCULATE TOTAL STRAIN INCREMENT
  6105. C
  6106.       DELEPS=STRAIN - EPS
  6107. C
  6108. C        4. CALCULATE TEMPERATURE INCREMENT
  6109. C
  6110. C     CALCULATE INTEGRATION POINT TEMPERATURES **
  6111. C
  6112.       IF(ITYPT.EQ.0) GO TO 20
  6113.       KK=NDS(1)
  6114.       TEMP1=TEMPV1(KK)
  6115.       TEMP2=TEMPV2(KK)
  6116.       GO TO 35
  6117. C
  6118.    20 TEMP1=0.0
  6119.       TEMP2=0.0
  6120. C
  6121.       DO 30 K=1,IELD
  6122.       KK=NDS(K)
  6123.       TEMP2=TEMP2 + H(K)*TEMPV2(KK)
  6124.    30 TEMP1=TEMP1 + H(K)*TEMPV1(KK)
  6125. C
  6126.    35 CTEMP=TEMP2
  6127. C
  6128. C     CHECK FOR START OF A SOLUTION STEP *
  6129. C
  6130.       IF(ICOUNT.NE.3.AND.KPRI.NE.0) CTEMP=TEMP1
  6131. C
  6132.       DELTMP=CTEMP - TMPOLD
  6133. C
  6134. C        5. CALCULATE MATERIAL PROPERTIES AT TIME OF LAST UPDATE
  6135. C
  6136.       CALL MTITP1(PROP,TMPOLD,PROP1)
  6137. C
  6138.       YM1=PROP1(1)
  6139.       ET1=PROP1(3)
  6140.       YS1=PROP1(2)
  6141. C
  6142.       EET1=YM1*ET1/(YM1 - ET1)
  6143. C
  6144. C        6. CALCULATE SIZE OF FIRST SUBDIVISION
  6145. C           (STRESS LOOP NO. 1)
  6146. C
  6147.    40 DELT=DTMN
  6148.       IF(KCRP.EQ.0.AND.NALG.EQ.2) DELT=DTT
  6149. C
  6150. C        7. CALCULATE TOTAL STRAINS AT END OF SUBDIVISION
  6151. C
  6152.    60 XFAC=(TAU + DELT)/DTT
  6153.       EPS2=EPS + XFAC*DELEPS
  6154.       DEPS=EPS2 - EPS1
  6155. C
  6156. C        8. CALCULATE MATERIAL PROPERTIES AT END OF SUBDIVISION
  6157. C
  6158.       TMP2=TMPOLD + XFAC*DELTMP
  6159.       TMPM=XPARM1*TMP1 + XPARM2*TMP2
  6160. C
  6161.       CALL MTITP1(PROP,TMP2,PROP2)
  6162. C
  6163.       YM2=PROP2(1)
  6164. C
  6165. C        9. CALCULATE THERMAL STRAIN AT END OF SUBDIVISION
  6166. C
  6167.       ALPHA2=PROP2(4)
  6168.       EPST2=ALPHA2*(TMP2 - TREF)
  6169. C
  6170. C        10. CALCULATE WEIGHTED STRESS
  6171. C
  6172.       IF(KCRP.EQ.0) GO TO 95
  6173. C
  6174.    70 STRSSM=XPARM1*STRSS1 + XPARM2*STRSS2
  6175. C
  6176. C        11. PRELIMINARY CREEP CALCULATIONS
  6177. C
  6178.       DPSC=0.0
  6179.       CRSRM=0.0
  6180. C
  6181.       ESTM=DABS(STRSSM)
  6182.       IF(ESTM.LE.TOL5.AND.INDEX.GT.1) GO TO 95
  6183. C
  6184.       EPSCM=XPARM1*EPSC1 + XPARM2*EPSC2
  6185. C
  6186.       CALL CREEP1(DELT,DPSC,TMPM,EPSCM,ORIG,NORG,STRSSM,GAMA,CRSRM,
  6187.      1            PTIME,ESTM,FF,RR,GG,INDEX,ECSTRM)
  6188. C
  6189.       IF(INDEX.EQ.1) ECSTR1=ECSTRM
  6190. C
  6191. C        12. CALCULATE THE STRESS AND CREEP STRAIN AT END OF
  6192. C             SUBDIVISION, ASSUMING THERMO-ELASTIC AND CREEP BEHAVIOR
  6193. C
  6194.    95 CALL SIGMA1(STRSS2,EPS2,EPSP2,EPST2,EPSC1,EPSC2,DPSC,GAMA,PTIME,
  6195.      1            CRSRM,FF,RR,GG,ESTM,DELT,YM2)
  6196. C
  6197. C        13. CHECK FOR CONVERGENCE OF ITERATION
  6198. C
  6199. C     NO CONVERGENCE/DIVERGENCE CHECK WHEN NITE .LT. 6 (ITCHK .EQ. 0),
  6200. C     WHEN KCRP .EQ. 0, OR WHEN XPARM2 .EQ. 0 **
  6201. C
  6202.   100 IF(KCRP.EQ.0) GO TO 215
  6203.       IF(XPARM2.EQ.0.0) GO TO 205
  6204.       IF(ITCHK.EQ.1) GO TO 120
  6205. C
  6206.       INDEX=INDEX + 1
  6207.       IF(INDEX.LE.NITE) GO TO 70
  6208.       GO TO 205
  6209. C
  6210. C     CALCULATE THE NORM OF THE CHANGE IN THE CURRENT STRESS **
  6211. C
  6212.   120 IF(INDEX - 4) 122,135,125
  6213. C
  6214.   122 INDEX=INDEX + 1
  6215.       GO TO 70
  6216. C
  6217.   125 DNORM2=(STRSS2 - STRSSD)*(STRSS2 - STRSSD)
  6218. C
  6219. C     CALCULATE THE NORM OF THE CURRENT STRESS **
  6220. C
  6221.   135 SNORM=STRSS2*STRSS2
  6222. C
  6223. C     VALUE OF INDEX .LE. 5 **
  6224. C
  6225.       IF(INDEX.GT.5) GO TO 155
  6226.       SNORM2=SNORM
  6227.       IF(INDEX.EQ.4) SNORM1=SNORM2
  6228.       IF(INDEX.EQ.5) DNORM1=DNORM2
  6229.       INDEX=INDEX + 1
  6230. C
  6231.       STRSSD=STRSS2
  6232.       GO TO 70
  6233. C
  6234. C     APPLY CONVERGENCE CRITERIA FOR INDEX .GE. 6 **
  6235. C
  6236. C     INITIAL CHECK FOR CONVERGENCE *
  6237. C
  6238.   155 IF(DNORM2.LE.DNORM1) GO TO 185
  6239. C
  6240. C     CHECK IF DNORM1 AND DNORM2 ARE WITHIN THE ROUNDOFF
  6241. C     TOLERANCE BAND
  6242. C
  6243.       XTOL=TOL3*SNORM1
  6244.       IF(SNORM1.LE.TOL2) XTOL=TOL2
  6245.       IF(DNORM1.LE.XTOL.AND.DNORM2.LE.XTOL) GO TO 205
  6246. C
  6247. C     DIVERGENCE IS INDICATED, CALCULATE NEW SUBDIVISION SIZE
  6248. C     (NALG .EQ. 2) *
  6249. C
  6250.       DELT=DELT*(DSQRT(DNORM1/DNORM2))/SUBDD
  6251.       IF(NALG.EQ.2.AND.ISUB.LT.ISUBM) GO TO 170
  6252. C
  6253.       WRITE(6,3004)
  6254.       WRITE(6,3002) NEL,IPT,ISUB,TAU,DELT
  6255.       STOP
  6256. C
  6257. C     RESET VARIABLES FOR NEW SUBDIVISION SIZE
  6258. C
  6259.   170 INDEX=1
  6260.       STRSS2=STRSS1
  6261.       EPSC2=EPSC1
  6262. C
  6263.       GO TO 60
  6264. C
  6265. C     FINAL CHECK FOR CONVERGENCE *
  6266. C
  6267.   185 XTOL=TOL1*SNORM1
  6268.       IF(SNORM1.LE.TOL2) XTOL=TOL2
  6269.       IF(DNORM1.LE.XTOL) GO TO 205
  6270. C
  6271. C     NO CONVERGENCE
  6272. C
  6273.   190 INDEX=INDEX + 1
  6274.       IF(INDEX.LE.NITE) GO TO 195
  6275. C
  6276.       WRITE(6,3001)
  6277.       WRITE(6,3011) NEL,IPT,ISUB,TAU,DELT
  6278.       STOP
  6279. C
  6280.   195 DNORM1=DNORM2
  6281.       SNORM1=SNORM2
  6282.       SNORM2=SNORM
  6283.       STRSSD=STRSS2
  6284. C
  6285.       GO TO 70
  6286. C
  6287. C        14. CHECK SIZE OF CREEP STRAIN INCREMENT
  6288.  
  6289. C     CHECK IS BYPASSED WHEN THE MODIFIED EFFECTIVE CREEP STRAIN AT
  6290. C     THE START OF THE SUBDIVISION AND/OR THE EFFECTIVE CREEP STRAIN
  6291. C     RATE FOR THE SUBDIVISION .EQ. 0, OR WHEN KCRP .EQ. 0 **
  6292. C
  6293.   205 DECSTR=CRSRM*DELT
  6294.       IF(DECSTR.LE.TOL5 .OR. ECSTR1.LE.TOL5) GO TO 215
  6295. C
  6296.       CHECK=DECSTR/(ECSTR1*TOLPC)
  6297.       IF(CHECK.LE.1.1) GO TO 215
  6298. C
  6299. C     CREEP STRAIN INCREMENT IS TOO LARGE, CALCULATE NEW
  6300. C     SUBDIVISION SIZE **
  6301. C
  6302.       DELT=DELT/CHECK
  6303.       IF(NALG.EQ.2.AND.ISUB.LT.ISUBM) GO TO 208
  6304. C
  6305.       WRITE(6,3006)
  6306.       WRITE(6,3002) NEL,IPT,ISUB,TAU,DELT
  6307.       STOP
  6308. C
  6309. C     RESET VARIABLES FOR NEW SUBDIVISION SIZE **
  6310. C
  6311.   208 INDEX=1
  6312.       STRSS2=STRSS1
  6313.       EPSC2=EPSC1
  6314. C
  6315.       GO TO 60
  6316. C
  6317. C        15. CHECK FOR YIELDING
  6318. C
  6319. C     DETERMINE LOCATION OF THE STRESS-TEMPERATURE STATE AT END OF
  6320. C     SUBDIVISION WITH RESPECT TO THE YIELD SURFACE (ASSUMING NO
  6321. C     PLASTICITY) **
  6322. C
  6323.   215 DELSIG=STRSS2 - STRSS1
  6324.       EST2=DABS(STRSS2)
  6325. C
  6326. C     CALCULATE YIELD STRESS AT END OF SUBDIVISION *
  6327. C
  6328.       YM2=PROP2(1)
  6329.       ET2=PROP2(3)
  6330.       YS2=PROP2(2)
  6331. C
  6332.       EET2=YM2*ET2/(YM2 - ET2)
  6333. C
  6334.       DYLD=YS2 - YS1
  6335.       IF(MODEL.EQ.6)  DYLD=DYLD + (EET2 - EET1)*EPSTR1
  6336.       YLD2=YLD1 + DYLD
  6337. C
  6338.   225 RA=DELSIG*DELSIG
  6339.       FTA=EST2
  6340. C
  6341. C     KINEMATIC HARDENING *
  6342. C
  6343.       IF(MODEL.EQ.7) FTA=DABS(STRSS2 - 1.5*ALFA1)
  6344. C
  6345. C     CHECK FOR NO CHANGE IN THE STRESS-TEMPERATURE STATE *
  6346. C
  6347.       IF(RA.EQ.0.0 .AND. TMP1.EQ.TMP2) GO TO 228
  6348. C
  6349.       FTB=YLD2
  6350.       IF(FTA.GT.FTB) GO TO 250
  6351. C
  6352. C        16. STRESS STATE IS WITHIN THE YIELD SURFACE---
  6353. C            THERMO-ELASTIC/CREEP BEHAVIOR
  6354. C
  6355.       IPEL=1
  6356.   228 TAU=TAU + DELT
  6357. C
  6358. C     CALCULATE SIZE OF NEXT SUBDIVISION **
  6359. C
  6360.       IF(NALG.EQ.2) GO TO 230
  6361. C
  6362. C     NALG .EQ. 1 *
  6363. C
  6364.       IF(ISUB.EQ.ISUBM) GO TO 240
  6365.       GO TO 235
  6366. C
  6367. C    NALG .EQ. 2 *
  6368. C
  6369.   230 IF(TAU.GE.TCHK .OR. KCRP.EQ.0) GO TO 240
  6370.       IF(DECSTR.LE.TOL5) GO TO 232
  6371. C
  6372.       DELT=DELT*TOLPC*(1.0 + (ECSTR1/DECSTR))
  6373.       IF(TAU + DELT.GE.TCHK) DELT=DTT - TAU
  6374.       GO TO 233
  6375. C
  6376.   232 DELT=DTT - TAU
  6377. C
  6378. C     IF NEXT SUBDIVISION IS THE LAST ONE, MAKE SURE DELT IS
  6379. C     LARGE ENOUGH
  6380. C
  6381.   233 IF(ISUB + 1.LT.ISUBM.OR.TAU + DELT.GE.TCHK) GO TO 235
  6382. C
  6383.       WRITE(6,3007)
  6384.       WRITE(6,3011) NEL,IPT,ISUBM,TAU,DELT
  6385.       STOP
  6386. C
  6387. C     UPDATE VARIABLES **
  6388. C
  6389.   235 ISUB=ISUB + 1
  6390.       INDEX=1
  6391.       YS1=YS2
  6392.       EET1=EET2
  6393.       YLD1=YLD2
  6394.       TMP1=TMP2
  6395. C
  6396.       EPS1=EPS2
  6397.       STRSS1=STRSS2
  6398.       EPSC1=EPSC2
  6399. C
  6400.       GO TO 60
  6401. C
  6402. C     AT END OF TIME STEP, CALCULATE YIELD STRESS USING DEFINITION
  6403. C     BASED ON TEMPERATURE AND ACCUMULATED EFFECTIVE PLASTIC STRAIN **
  6404. C
  6405.   240 YLDC=YS2
  6406.       IF(MODEL.EQ.6) YLDC=EET2*EPSTR2 + YLDC
  6407. C
  6408.       GO TO 440
  6409. C
  6410. C        17. STRESS-TEMPERATURE STATE IS OUTSIDE THE YIELD
  6411. C            SURFACE---THERMO-ELASTIC-PLASTIC/CREEP BEHAVIOR
  6412. C
  6413. C            THERMO-ELASTIC-PLASTIC/CREEP STRESS CALCULATIONS
  6414. C            FOLLOW
  6415. C
  6416. C     CALCULATE THE FRACTION OF THE STRAIN SUBDIVISION OVER WHICH
  6417. C     THERE IS NO PLASTIC STRAINING **
  6418. C
  6419.   250 SX1=STRSS1
  6420. C
  6421. C     KINEMATIC HARDENING *
  6422. C
  6423.       IF(MODEL.EQ.7) SX1=STRSS1 - 1.5*ALFA1
  6424. C
  6425.       RB=SX1*DELSIG
  6426.       RD=SX1*SX1
  6427.       RE=RB - YLD1*DYLD
  6428.       RF=RA - DYLD*DYLD
  6429.       RG=RD - YLD1*YLD1
  6430. C
  6431.       IF(IPEL.EQ.2.OR.RG.GE.0.0) GO TO 270
  6432. C
  6433. C     STRESS-TEMPERATURE STATE IS WITHIN THE YIELD SURFACE AT
  6434. C     START OF SUBDIVISION *
  6435. C
  6436.   260 IF(DABS(RF).GT.TOL5) GO TO 265
  6437.       RATIO=-RG/(2.0*RE)
  6438.       GO TO 275
  6439. C
  6440.   265 RATIO=(-RE + DABS(SX1*DYLD - YLD1*DELSIG))/RF
  6441.       GO TO 275
  6442. C
  6443. C     STRESS-TEMPERATURE STATE IS ON THE YIELD SURFACE AT START
  6444. C     OF SUBDIVISION *
  6445. C
  6446.   270 RATIO=0.0
  6447.       IF(RF.GT.TOL5.AND.RE.LT.0.0) RATIO=-2.0*RE/RF
  6448. C
  6449. C     CHECK CALCULATED VALUE OF RATIO **
  6450. C
  6451.   275 IF(RATIO.GE.(-TOL6) .AND. RATIO.LE.(1.0 + TOL6)) GO TO 280
  6452. C
  6453.       WRITE(6,3012)
  6454.       WRITE(6,3013) NEL,IPT,ISUB,TAU,IPEL,RA,RB,RD,RE,RF,RG,RATIO
  6455.       STOP
  6456. C
  6457.   280 IF(RATIO.GT.1.0) RATIO=1.0
  6458.       IF(RATIO.LT.0.0) RATIO=0.0
  6459.       IPEL=2
  6460. C
  6461. C        18. UPDATE ALL VARIABLES TO START OF YIELDING
  6462. C
  6463.       TAU=TAU + RATIO*DELT
  6464.       TMP1=TMPOLD + DELTMP*TAU/DTT
  6465.       YLD1=YLD1 + RATIO*DYLD
  6466.       IF(RATIO.GT.TOL5) ISUB=ISUB + 1
  6467.       IF(ISUB.GT.ISUBM) ISUBM=ISUBM + 1
  6468. C
  6469. C     CALCULATE STRESS, TOTAL STRAIN, AND CREEP STRAIN AT
  6470. C     START OF YIELDING **
  6471. C
  6472.       EPSC1=EPSC1 + RATIO*DPSC
  6473.       EPSC2=EPSC1
  6474.       STRSS1=STRSS1 + RATIO*DELSIG
  6475.       STRSS2=STRSS1
  6476.       EPS1=EPS1 + RATIO*DEPS
  6477. C
  6478. C     CALCULATE MATERIAL PROPERTIES AT START OF YIELDING **
  6479. C
  6480.   285 CALL MTITP1(PROP,TMP1,PROP1)
  6481. C
  6482. C     CALCULATE THERMAL STRAIN AT START OF YIELDING **
  6483. C
  6484.       ALPHA1=PROP1(4)
  6485.       EPST1=ALPHA1*(TMP1 - TREF)
  6486. C
  6487. C        19. CALCULATE SIZE OF FIRST SUBDIVISION AFTER YIELDING
  6488. C            (STRESS LOOP NO. 2)
  6489. C
  6490.   290 XNWDT=DTT - TAU
  6491.       DELT=XNWDT/DBLE(FLOAT(ISUBM - ISUB + 1))
  6492.       INDEX=1
  6493.       DEPSTR=0.0
  6494.       DESTR=1.0
  6495.       DENOM=0.0
  6496. C
  6497. C        20. CALCULATE TEMPERATURE AT END OF SUBDIVISION
  6498. C            AND WEIGHTED TEMPERATURE
  6499. C
  6500.   292 TMP2=TMPOLD + DELTMP*(TAU + DELT)/DTT
  6501.       TMPM=XPARM1*TMP1 + XPARM2*TMP2
  6502. C
  6503. C        21. CALCULATE MATERIAL PROPERTIES AT END OF SUBDIVISION
  6504. C            CALCULATE WEIGHTED MATERIAL PROPERTIES
  6505. C
  6506.       CALL MTITP1(PROP,TMP2,PROP2)
  6507. C
  6508.       DO 295 J=1,4
  6509.   295 PROPM(J)=XPARM1*PROP1(J) + XPARM2*PROP2(J)
  6510. C
  6511.       YM2=PROP2(1)
  6512.       YMM=PROPM(1)
  6513.       ETM=PROPM(3)
  6514. C
  6515.       EETM=YMM*ETM/(YMM - ETM)
  6516.       CEM=XCON1*EETM
  6517. C
  6518. C        22. CALCULATE THERMAL STRAIN AT END OF SUBDIVISION
  6519. C            AND THERMAL STRAIN CHANGE FOR THE SUBDIVISION
  6520. C
  6521.       ALPHA2=PROP2(4)
  6522. C
  6523.       EPST2=ALPHA2*(TMP2 - TREF)
  6524.       DPST=EPST2 - EPST1
  6525. C
  6526. C        23. CALCULATE TOTAL STRAIN AT END OF SUBDIVISION
  6527. C            AND TOTAL STRAIN CHANGE FOR THE SUBDIVISION
  6528. C
  6529.   300 XFAC=(TAU + DELT)/DTT
  6530.       EPS2=EPS + XFAC*DELEPS
  6531.       DEPS=EPS2 - EPS1
  6532. C
  6533. C        24. CALCULATE WEIGHTED STRESS
  6534. C
  6535.   310 STRSSM=XPARM1*STRSS1 + XPARM2*STRSS2
  6536. C
  6537.       ESTM=DABS(STRSSM)
  6538. C
  6539. C        25. CALCULATE WEIGHTED ACCUMULATED EFFECTIVE PLASTIC STRAIN
  6540. C
  6541.       EPSTRM=XPARM1*EPSTR1 + XPARM2*EPSTR2
  6542. C
  6543. C        26. CALCULATE WEIGHTED YIELD SURFACE TRANSLATION
  6544. C
  6545.       ALFAM=XPARM1*ALFA1 + XPARM2*ALFA2
  6546. C
  6547. C        27. CALCULATE WEIGHTED YIELD STRESS
  6548. C
  6549.       YLDM=ESTM
  6550.       IF(MODEL.EQ.7)  YLDM=DABS(STRSSM - 1.5*ALFAM)
  6551. C
  6552. C        28. PRELIMINARY CREEP CALCULATIONS
  6553. C
  6554.   328 IF(KCRP.EQ.0) GO TO 335
  6555. C
  6556.       DPSC=0.0
  6557.       CRSRM=0.0
  6558. C
  6559.       EPSCM=XPARM1*EPSC1 + XPARM2*EPSC2
  6560. C
  6561.       CALL CREEP1(DELT,DPSC,TMPM,EPSCM,ORIG,NORG,STRSSM,GAMA,CRSRM,
  6562.      1            PTIME,ESTM,FF,RR,GG,INDEX,ECSTRM)
  6563. C
  6564.       IF(INDEX.EQ.1) ECSTR1=ECSTRM
  6565. C
  6566. C        29. CALCULATE PLASTIC STRAIN AT END OF SUBDIVISION
  6567. C
  6568.   335 CALL EPMAT1(STRSSM,ALFAM,EPSTRM,DEPS,DPSC,DPST,XLAMDA,PROP1,
  6569.      1            PROP2,PROPM,YLDM,1,DPSP,INDEX,EETM)
  6570. C
  6571.       EPSP2=EPSP1 + DPSP
  6572. C
  6573. C        30. CALCULATE ACCUMULATED EFFECTIVE PLASTIC STRAIN AT END
  6574. C            OF SUBDIVISION
  6575. C
  6576.       DEPSTR=DABS(DPSP)
  6577.       EPSTR2=EPSTR1 + DEPSTR
  6578. C
  6579. C        31. CALCULATE YIELD SURFACE TRANSLATION AT END
  6580. C            OF SUBDIVISION
  6581. C
  6582.       ALFA2=ALFA1 + CEM*DPSP
  6583. C
  6584. C        32. CALCULATE THE STRESS AND CREEP STRAIN AT END
  6585. C            OF SUBDIVISION
  6586. C
  6587.   345 CALL SIGMA1(STRSS2,EPS2,EPSP2,EPST2,EPSC1,EPSC2,DPSC,GAMA,PTIME,
  6588.      1            CRSRM,FF,RR,GG,ESTM,DELT,YM2)
  6589. C
  6590. C        33. CHECK FOR CONVERGENCE OF ITERATION
  6591. C
  6592. C     NO CONVERGENCE/DIVERGENCE CHECK WHEN NITE .LT. 6 (ITCHK .EQ. 0)
  6593. C     OR WHEN XPARM2 .EQ. 0.0 **
  6594. C
  6595.   350 IF(XPARM2.EQ.0.0) GO TO 400
  6596.       IF(ITCHK.EQ.1) GO TO 358
  6597. C
  6598.       INDEX=INDEX + 1
  6599.       IF(INDEX.LE.NITE) GO TO 310
  6600.       GO TO 400
  6601. C
  6602. C     CALCULATE NORM OF THE CHANGE IN THE CURRENT STRESS **
  6603. C
  6604.   358 IF(INDEX - 4) 360,366,362
  6605. C
  6606.   360 INDEX=INDEX + 1
  6607.       GO TO 310
  6608. C
  6609.   362 DNORM2=(STRSS2 - STRSSD)*(STRSS2 - STRSSD)
  6610. C
  6611. C     CALCULATE NORM OF THE CURRENT STRESS **
  6612. C
  6613.   366 SNORM=STRSS2*STRSS2
  6614. C
  6615. C     VALUE OF INDEX .LE. 5 **
  6616. C
  6617.       IF(INDEX.GT.5) GO TO 375
  6618.       SNORM2=SNORM
  6619.       IF(INDEX.EQ.4) SNORM1=SNORM2
  6620.       IF(INDEX.EQ.5) DNORM1=DNORM2
  6621.       INDEX=INDEX + 1
  6622. C
  6623.       STRSSD=STRSS2
  6624. C
  6625.       GO TO 310
  6626. C
  6627. C     APPLY CONVERGENCE CRITERIA FOR INDEX .GE. 6 **
  6628. C
  6629. C     INITIAL CHECK FOR CONVERGENCE *
  6630. C
  6631.   375 IF(DNORM2.LE.DNORM1) GO TO 390
  6632. C
  6633. C     CHECK IF DNORM1 AND DNORM2 ARE WITHIN THE ROUNDOFF
  6634. C     TOLERANCE BAND
  6635. C
  6636.       XTOL=TOL3*SNORM1
  6637.       IF(SNORM1.LE.TOL2) XTOL=TOL2
  6638.       IF(DNORM1.LE.XTOL.AND.DNORM2.LE.XTOL) GO TO 400
  6639. C
  6640. C     DIVERGENCE IS INDICATED, CALCULATE NEW SUBDIVISION SIZE
  6641. C     (NALG .EQ. 2) *
  6642. C
  6643.       DELT=DELT*(DSQRT(DNORM1/DNORM2))/SUBDD
  6644.       IF(NALG.EQ.2.AND.ISUB.LT.ISUBM) GO TO 380
  6645. C
  6646.   378 WRITE(6,3008)
  6647.       WRITE(6,3002) NEL,IPT,ISUB,TAU,DELT
  6648.       STOP
  6649. C
  6650. C     RESET VARIABLES FOR NEW SUBDIVISION SIZE
  6651. C
  6652.   380 INDEX=1
  6653.       DEPSTR=0.0
  6654.       DESTR=1.0
  6655.       DENOM=0.0
  6656.       EPSTR2=EPSTR1
  6657. C
  6658.       STRSS2=STRSS1
  6659.       EPSP2=EPSP1
  6660.       ALFA2=ALFA1
  6661.       EPSC2=EPSC1
  6662. C
  6663.       GO TO 292
  6664. C
  6665. C     FINAL CHECK FOR CONVERGENCE *
  6666. C
  6667.   390 XTOL=TOL1*SNORM1
  6668.       IF(SNORM1.LE.TOL2) XTOL=TOL2
  6669.       IF(DNORM1.LE.XTOL) GO TO 400
  6670. C
  6671. C     NO CONVERGENCE
  6672. C
  6673.       INDEX=INDEX + 1
  6674.       IF(INDEX.LE.NITE) GO TO 395
  6675. C
  6676.       WRITE(6,3003)
  6677.       WRITE(6,3011) NEL,IPT,ISUB,TAU,DELT
  6678.       STOP
  6679. C
  6680.   395 DNORM1=DNORM2
  6681.       SNORM1=SNORM2
  6682.       SNORM2=SNORM
  6683.       STRSSD=STRSS2
  6684. C
  6685.       GO TO 310
  6686. C
  6687. C        34. CHECK SIZE OF INELASTIC STRAIN INCREMENT
  6688. C
  6689. C     CHECK IS BYPASSED WHEN THE EFFECTIVE INELASTIC STRAIN AT THE
  6690. C     START OF THE SUBDIVISION AND/OR THE EFFECTIVE INELASTIC STRAIN
  6691. C     RATE FOR THE SUBDIVISION .EQ. 0 **
  6692. C
  6693.   400 DECSTR=CRSRM*DELT
  6694.       DESTR=DECSTR + DEPSTR
  6695.       DENOM=ECSTR1 + EPSTR1
  6696.       IF(DESTR.LE.TOL5.OR.DENOM.LE.TOL5) GO TO 410
  6697. C
  6698.       CHECK=DESTR/(DENOM*TOLPC)
  6699.       IF(CHECK.LE.1.1) GO TO 410
  6700. C
  6701. C     INELASTIC STRAIN INCREMENT IS TOO LARGE, CALCULATE NEW
  6702. C     SUBDIVISION SIZE **
  6703. C
  6704.       DELT=DELT/CHECK
  6705.       IF(NALG.EQ.2.AND.ISUB.LT.ISUBM) GO TO 405
  6706. C
  6707.       WRITE(6,3009)
  6708.       WRITE(6,3002) NEL,IPT,ISUB,TAU,DELT
  6709.       STOP
  6710. C
  6711. C     RESET VARIABLES FOR NEW SUBDIVISION SIZE **
  6712. C
  6713.   405 INDEX=1
  6714.       DEPSTR=0.0
  6715.       DESTR=1.0
  6716.       DENOM=0.0
  6717.       EPSTR2=EPSTR1
  6718. C
  6719.       STRSS2=STRSS1
  6720.       EPSP2=EPSP1
  6721.       ALFA2=ALFA1
  6722.       EPSC2=EPSC1
  6723. C
  6724.       GO TO 292
  6725. C
  6726. C        35. CALCULATE YIELD STRESS AT END OF SUBDIVISION
  6727. C
  6728.   410 ET2=PROP2(3)
  6729.       YS2=PROP2(2)
  6730. C
  6731.       EET2=YM2*ET2/(YM2 - ET2)
  6732. C
  6733. C     USING DEFINITION BASED ON TEMPERATURE AND ACCUMULATED EFFECTIVE
  6734. C     PLASTIC STRAIN **
  6735. C
  6736. C     KINEMATIC HARDENING *
  6737. C
  6738.       YLDC=YS2
  6739. C
  6740. C     ISOTROPIC HARDENING *
  6741. C
  6742.       IF(MODEL.EQ.6)  YLDC=EET2*EPSTR2 + YLDC
  6743. C
  6744. C     USING STRESS STATE **
  6745. C
  6746.       EST2=DABS(STRSS2)
  6747. C
  6748. C     ISOTROPIC HARDENING *
  6749. C
  6750.       YLD2=EST2
  6751. C
  6752. C     KINEMATIC HARDENING *
  6753. C
  6754.       IF(MODEL.EQ.7)  YLD2=DABS(STRSS2 - 1.5*ALFA2)
  6755. C
  6756. C        36. CORRECT STRESS STATE TO YIELD SURFACE
  6757. C
  6758. C     CHECK YIELD SURFACE ERROR **
  6759. C
  6760.   414 CHECK=DABS(YLD2 - YLDC)/DMIN1(YLD2,YLDC)
  6761.       IF(CHECK.LE.TOL7) GO TO 415
  6762. C
  6763.       WRITE(6,3014)
  6764.       WRITE(6,3015) NEL,IPT,ISUB,TAU,YLD2,YLDC
  6765.       STOP
  6766. C
  6767. C        37. UPDATE VARIABLES FOR NEXT SUBDIVISION
  6768. C
  6769.   415 TAU=TAU + DELT
  6770. C
  6771. C     CALCULATE SIZE OF NEXT SUBDIVISION **
  6772. C
  6773.       IF(NALG.EQ.2) GO TO 416
  6774. C
  6775. C     NALG .EQ. 1 *
  6776. C
  6777.       IF(ISUB.EQ.ISUBM) GO TO 440
  6778.       GO TO 425
  6779. C
  6780. C     NALG .EQ. 2 *
  6781. C
  6782.   416 IF(TAU.GE.TCHK) GO TO 440
  6783.       IF(DESTR.LE.TOL5) GO TO 420
  6784. C
  6785.       DELT=DELT*TOLPC*(1.0 + (DENOM/DESTR))
  6786.       IF(TAU + DELT.GE.TCHK) DELT=DTT - TAU
  6787.       GO TO 422
  6788. C
  6789.   420 DELT=DTT - TAU
  6790. C
  6791. C     IF NEXT SUBDIVISION IS THE LAST ONE, MAKE SURE DELT IS
  6792. C     LARGE ENOUGH
  6793. C
  6794.   422 IF(ISUB + 1.LT.ISUBM.OR.TAU + DELT.GE.TCHK) GO TO 425
  6795. C
  6796.       WRITE(6,3010)
  6797.       WRITE(6,3011) NEL,IPT,ISUBM,TAU,DELT
  6798.       STOP
  6799. C
  6800. C     UPDATE VARIABLES **
  6801. C
  6802.   425 ISUB=ISUB + 1
  6803.       INDEX=1
  6804.       DEPSTR=0.0
  6805.       DESTR=1.0
  6806.       DENOM=0.0
  6807.       TMP1=TMP2
  6808.       EPSTR1=EPSTR2
  6809.       EPST1=EPST2
  6810. C
  6811.       EPS1=EPS2
  6812.       STRSS1=STRSS2
  6813.       EPSC1=EPSC2
  6814.       ALFA1=ALFA2
  6815.       EPSP1=EPSP2
  6816. C
  6817.       DO 435 J=1,4
  6818.   435 PROP1(J)=PROP2(J)
  6819. C
  6820.       GO TO 292
  6821. C
  6822. C        38. PERMANENT UPDATING OF VARIABLES
  6823. C
  6824.   440 IF(IUPDT.NE.0) GO TO 455
  6825. C
  6826.       IWAD=12*(IPT - 1) + 1
  6827.       WA(IWAD)=STRSS2
  6828.       WA(IWAD + 1)=STRAIN
  6829.       WA(IWAD + 2)=EPSP2
  6830.       WA(IWAD + 3)=EPSC2
  6831.       WA(IWAD + 4)=YLD2
  6832.       WA(IWAD + 5)=EPSTR2
  6833.       WA(IWAD + 6)=ALFA2
  6834.       WA(IWAD + 7)=ORIG(1)
  6835.       WA(IWAD + 8)=ORIG(2)
  6836.       WA(IWAD + 9)=TMP2
  6837. C
  6838.       IWAD=(12*IPT - 2)*ITWO + 1
  6839.       IWA(IWAD)=IPEL
  6840.       IWA(IWAD + ITWO)=NORG
  6841. C
  6842. C        39. CALCULATE LATEST CONSTITUTIVE LAW
  6843. C
  6844. C     CHECK FOR EQUILIBRIUM ITERATION **
  6845. C
  6846.   455 STRESS=STRSS2
  6847.       PF=STRSS2*AREA
  6848.       IF(ICOUNT.EQ.3) RETURN
  6849. C
  6850. C     CHECK FOR PRINTING OF STRESSES **
  6851. C
  6852.       IF(KPRI.EQ.0) GO TO 600
  6853. C
  6854. C     UPDATE SOLUTION VARIABLES **
  6855. C
  6856.       EPSC1=EPSC2
  6857.       EPSP1=EPSP2
  6858.       EPST1=EPST2
  6859.       STRSS1=STRSS2
  6860.       ALFA1=ALFA2
  6861.       YLD1=YLD2
  6862.       EPSTR1=EPSTR2
  6863.       EST1=EST2
  6864. C
  6865. C     CALCULATE MATERIAL PROPERTIES AT END OF NEXT TIME STEP **
  6866. C
  6867.       DO 460 I=1,4
  6868.   460 PROP1(I)=PROP2(I)
  6869. C
  6870.       CALL MTITP1(PROP,TEMP2,PROP2)
  6871.       YM2=PROP2(1)
  6872. C
  6873. C     CALCULATE THERMAL STRAIN AT END OF NEXT TIME STEP **
  6874. C
  6875.       ALPHA2=PROP2(4)
  6876.       EPST2=ALPHA2*(TEMP2 - TREF)
  6877.       DPST=EPST2 - EPST1
  6878. C
  6879. C     ESTIMATE CREEP STRAIN AT END OF NEXT TIME STEP **
  6880. C
  6881.       INDEX=1
  6882. C
  6883.       IF(KCRP.EQ.0) GO TO 480
  6884. C
  6885.       DPSC=0.0
  6886. C
  6887.       IF(EST1.LE.TOL5) GO TO 480
  6888.       TMPM=XPARM1*TEMP1 + XPARM2*TEMP2
  6889. C
  6890.       CALL CREEP1(DT,DPSC,TMPM,EPSC1,ORIG,NORG,STRSS1,GAMA,CRSR1,
  6891.      1            PTIME,EST1,FF,RR,GG,INDEX,ECSTR1)
  6892. C
  6893.       EPSC2=EPSC1 + DPSC
  6894. C
  6895. C     CHECK ELASTIC-PLASTIC INDICATOR **
  6896. C
  6897.   480 IF(IPEL.EQ.2) GO TO 490
  6898. C
  6899. C     THERMO-ELASTIC AND CREEP BEHAVIOR **
  6900. C
  6901.       STRESS=YM2*(STRAIN - EPSP2 - EPSC2 - EPST2)
  6902. C
  6903.       PF=STRESS*AREA
  6904.       CEP=YM2
  6905. C
  6906.       RETURN
  6907. C
  6908. C     THERMO-ELASTIC-PLASTIC AND CREEP BEHAVIOR **
  6909. C
  6910. C
  6911. C     CALCULATE WEIGHTED MATERIAL PROPERTIES *
  6912. C
  6913.   490 DO 494 J=1,4
  6914.   494 PROPM(J)=XPARM1*PROP1(J) + XPARM2*PROP2(J)
  6915. C
  6916. C     ESTIMATE PLASTIC STRAIN AT END OF NEXT TIME STEP *
  6917. C
  6918.   500 YMM=PROPM(1)
  6919.       ETM=PROPM(3)
  6920.       EETM=YMM*ETM/(YMM - ETM)
  6921. C
  6922.       CALL EPMAT1(STRSS1,ALFA1,EPSTR1,DELEPS,DPSC,DPST,XLAMDA,PROP1,
  6923.      1            PROP2,PROPM,YLD1,2,DPSP,INDEX,EETM)
  6924. C
  6925.       EPSP2=EPSP1 + DPSP
  6926. C
  6927.       IF(IEQREF.EQ.1 .OR. XLAMDA.LT.0.0) GO TO 520
  6928. C
  6929. C     ITERATION WITH ELASTIC-PLASTIC STIFFNESS MATRIX *
  6930. C
  6931.       STRESS=-ETM*(DPSC + DPST) + YM2*(STRAIN - EPSP1 - EPSC1 -
  6932.      1       EPST1 - DPSP)
  6933. C
  6934.       PF=STRESS*AREA
  6935.       CEP=ETM
  6936. C
  6937.       RETURN
  6938. C
  6939. C     ITERATION WITH ELASTIC STIFFNESS MATRIX WHEN GLOBAL DIVERGENCE
  6940. C     PROCEDURE IS ACTIVATED OR UNLOADING IS DETECTED *
  6941. C
  6942.   520 STRESS=YM2*(STRAIN - EPSP2 - EPSC2 - EPST2)
  6943. C
  6944.       PF=STRESS*AREA
  6945.       CEP=YM2
  6946. C
  6947.       RETURN
  6948. C
  6949. C        40. PRINTING OF STRESSES
  6950. C
  6951. C     CALCULATE EFFECTIVE STRESS **
  6952. C
  6953.   600 FT=YLD2
  6954.       IF(IPEL.EQ.1) FT=FTA
  6955. C
  6956.   610 IF(IPRI.NE.0) RETURN
  6957. C
  6958. C     STRESS AND STRAIN PRINTOUT **
  6959. C
  6960.   700 IF(IPT.GT.1) GO TO 720
  6961. C
  6962. C     PRINT ELEMENT NUMBER *
  6963. C
  6964.       WRITE(6,2005) NEL
  6965. C
  6966. C     PRINT INTEGRATION POINT STRESS AND STRAINS *
  6967. C
  6968.   720 WRITE(6,2200) IPT,STATE(IPEL),PF,STRSS2,STRAIN,TEMP2,EPSTR2,ISUB
  6969.       WRITE(6,2400) EPSP2,EPSC2,EPST2,FT,YLD2,YLDC
  6970. C
  6971.       RETURN
  6972. C
  6973.  2005 FORMAT (/,1X,I3)
  6974.  2200 FORMAT (/,6X,I2,2X,A2,6HLASTIC,6X,5HFORCE,10X,6HSTRESS,6X,
  6975.      1        12HTOTAL STRAIN,3X,11HTEMPERATURE,4X,
  6976.      2        26HACCUM. EFF. PLASTIC STRAIN,2X,
  6977.      3        22HNUMBER OF SUBDIVISIONS,/,18X,4(E14.6,1X),9X,E14.6,
  6978.      4        14X,I5)
  6979.  2400 FORMAT (/,20X,14HPLASTIC STRAIN,2X,12HCREEP STRAIN,2X,
  6980.      1        14HTHERMAL STRAIN,4X,9HEFFECTIVE,4X,12HYIELD STRESS,
  6981.      2        6X,32HYIELD STRESS (BASED ON TEMP. AND,/,69X,6HSTRESS,25X,
  6982.      3        27HACCUM. EFF. PLASTIC STRAIN),/,18X,5(E14.6,1X),13X,
  6983.      4        E14.6)
  6984.  3001 FORMAT(//,70H    ERROR   STRESS LOOP NO. 1 FAILED TO CONVERGE   (S
  6985.      1UBROUTINE MTBEPC))
  6986.  3002 FORMAT(//,5X,10HELEMENT = ,I5,2X,20HINTEGRATION POINT = ,I5,2X,
  6987.      1       13HSUBDIVISION = ,I5,/,5X,
  6988.      2       38HTIME RELATIVE TO START OF TIME STEP = ,E14.6,2X,
  6989.      3       40HAPPROXIMATE REQUIRED SUBDIVISION SIZE = ,E14.6)
  6990.  3003 FORMAT(//,70H    ERROR   STRESS LOOP NO. 2 FAILED TO CONVERGE   (S
  6991.      1UBROUTINE MTBEPC))
  6992.  3004 FORMAT(//,117H    ERROR   SUBDIVISION SIZE REQUIRED TO ELIMINATE D
  6993.      1IVERGENCE IS TOO SMALL IN STRESS LOOP NO. 1   (SUBROUTINE MTBEPC))
  6994.  3006 FORMAT(//,131H    ERROR   SUBDIVISION SIZE REQUIRED TO SATISFY INE
  6995.      1LASTIC STRAIN TOLERANCE IS TOO SMALL IN STRESS LOOP NO. 1   (SUBRO
  6996.      2UTINE MTBEPC))
  6997.  3007 FORMAT(//,117H    ERROR   MAXIMUM NUMBER OF SUBDIVISIONS WILL NOT
  6998.      1REACH END OF TIME STEP IN STRESS LOOP NO. 1   (SUBROUTINE MTBEPC))
  6999.  3008 FORMAT(//,117H    ERROR   SUBDIVISION SIZE REQUIRED TO ELIMINATE D
  7000.      1IVERGENCE IS TOO SMALL IN STRESS LOOP NO. 2   (SUBROUTINE MTBEPC))
  7001.  3009 FORMAT(//,131H    ERROR   SUBDIVISION SIZE REQUIRED TO SATISFY INE
  7002.      1LASTIC STRAIN TOLERANCE IS TOO SMALL IN STRESS LOOP NO. 2   (SUBRO
  7003.      1UTINE MTBEPC))
  7004.  3010 FORMAT(//,117H    ERROR   MAXIMUM NUMBER OF SUBDIVISIONS WILL NOT
  7005.      1REACH END OF TIME STEP IN STRESS LOOP NO. 2   (SUBROUTINE MTBEPC))
  7006.  3011 FORMAT(//,5X,10HELEMENT = ,I5,2X,20HINTEGRATION POINT = ,I5,2X,
  7007.      1       14HSUBDIVISION = ,I5,/,5X,
  7008.      2       38HTIME RELATIVE TO START OF TIME STEP = ,E14.6,2X,
  7009.      3       24HLAST SUBDIVISION SIZE = ,E14.6)
  7010.  3012 FORMAT(//,72H    ERROR   INCORRECT VALUE CALCULATED FOR *RATIO*
  7011.      1(SUBROUTINE MTBEPC))
  7012.  3013 FORMAT(//,5X,10HELEMENT = ,I5,1X,20HINTEGRATION POINT = ,I5,1X,
  7013.      1       14HSUBDIVISION = ,I5,1X,
  7014.      2       38HTIME RELATIVE TO START OF TIME STEP = ,E14.6,1X,
  7015.      3        7HIPEL = ,I2,/,5X,
  7016.      4        5HRA = ,E14.6,1X,5HRB = ,E14.6,1X,5HRD = ,E14.6,
  7017.      5        5HRE = ,E14.6,1X,5HRF = ,E14.6,1X,5HRG = ,E14.6,/,5X,
  7018.      6        8HRATIO = ,E14.6,//)
  7019.  3014 FORMAT(//,103H    ERROR   DIFFERENCE BETWEEN THE TWO MEASURES OF Y
  7020.      1IELD STRESS EXCEEDS TOLERANCE   (SUBROUTINE MTBEPC))
  7021.  3015 FORMAT(//,5X,10HELEMENT = ,I5,2X,20HINTEGRATION POINT = ,I5,2X,
  7022.      1       14HSUBDIVISION = ,I5,2X,
  7023.      2       38HTIME RELATIVE TO START OF TIME STEP = ,E14.6,/,5X,
  7024.      3       35HYIELD STRESS (FROM STRESS STATE) = ,E14.6,2X,
  7025.      4       54HYIELD STRESS (FROM TEMPERATURE AND ACCUM. EFF. PLASTIC,
  7026.      5       11H STRAIN) = ,E14.6,//)
  7027. C
  7028.       END
  7029. C *CDC* *DECK SIGMA1
  7030. C *UNI* )FOR,IS  N.SIGMA1, R.SIGMA1
  7031. C
  7032.       SUBROUTINE SIGMA1(STRSS2,EPS2,EPSP2,EPST2,EPSC1,EPSC2,DPSC,GAMA,
  7033.      1                  PTIME,STRNR,F,R,G,EST,DELT,YM2)
  7034. C
  7035. C
  7036. C
  7037. C     THIS SUBROUTINE USES A NEWTON-RAPHSON METHOD TO CALCULATE
  7038. C     UNIAXIAL STRESS AND CREEP STRAIN
  7039. C
  7040. C
  7041. C
  7042.       IMPLICIT REAL*8 (A-H,O-Z)
  7043. C
  7044.       COMMON /SOLPM1/ TREF,XINTP,XCON1,XCON2,XPARM1,XPARM2,TOLIL,TOLPC,
  7045.      1               TOL1,TOL2,TOL3,TOL4,TOL5,TOL6,TCHK,CRPCON(8),DTMN,
  7046.      2               SUBDD,RNGL,RNGU,DTT,TOL7,
  7047.      3               KCRP,NITE,NALG,IINTP,NPTS,ITCHK
  7048. C
  7049. C
  7050. C
  7051.       TSTRSS=STRSS2
  7052. C
  7053. C        1. FORM FIRST PART OF R.H.S.
  7054. C
  7055.       RH=YM2*(EPS2 - EPSP2 - EPSC1 - DPSC - EPST2)
  7056. C
  7057.       IF(XPARM2.GT.0.0.AND.KCRP.GT.0.AND.EST.GT.TOL5) GO TO 35
  7058. C
  7059.       EPSC2=EPSC1 + DPSC
  7060.       STRSS2=RH
  7061. C
  7062.       RETURN
  7063. C
  7064. C        2. FORM THE PART OF THE ITERATION FUNCTION USED TO CALCULATE
  7065. C           THE R.H.S. AND THE CREEP STRAIN INCREMENT
  7066. C
  7067.    35 A0=CRPCON(1)
  7068.       A1=CRPCON(2)
  7069.       A2=CRPCON(3)
  7070.       A3=CRPCON(4)
  7071.       A4=CRPCON(5)
  7072.       A5=CRPCON(6)
  7073.       A6=CRPCON(7)
  7074. C
  7075.       IF(KCRP.EQ.2) GO TO 40
  7076. C
  7077. C     CREEP LAW NO. 1 **
  7078. C
  7079.       GG=(A1 - A2)*GAMA/A2
  7080.       GO TO 50
  7081. C
  7082. C     CREEP LAW NO. 2 **
  7083. C
  7084.    40 C2=A4 - 1.0
  7085.       C1=1.5*A2*A4*(A3**(-A4))
  7086.       C3=1.5*A1
  7087.       C4=1.5*A6
  7088. C
  7089.       D1=DEXP(-R*PTIME)*F
  7090.       D2=EST**C2
  7091. C
  7092.       DTPSP=(D1*(C3 - PTIME*C1*D2) - C3*F - PTIME*C4*G)/STRNR
  7093. C
  7094.       GG=D1*(C1*D2 - R*(PTIME*C1*D2 + R*DTPSP - C3)) + C4*G - GAMA
  7095. C
  7096.    50 TTC=XCON1*XPARM2*DELT*(GG + GAMA)
  7097.       TC=YM2*TTC
  7098. C
  7099. C        3. FORM ITERATION FUNCTION AND SECOND PART OF R.H.S.
  7100. C
  7101.       RH=RH + TC*STRSS2
  7102.       TC=TC + 1.0
  7103. C
  7104. C        4. CALCULATE STRESS AT END OF SUBDIVISION
  7105. C
  7106.       STRSS2=RH/TC
  7107. C
  7108. C        5. CALCULATE CREEP STRAIN AT END OF SUBDIVISION
  7109. C
  7110.       DPSC=DPSC + TTC*(STRSS2 - TSTRSS)
  7111.       EPSC2=EPSC1 + DPSC
  7112. C
  7113.       RETURN
  7114. C
  7115.       END
  7116. C *CDC* *DECK EPMAT1
  7117. C *UNI* )FOR,IS  N.EPMAT1, R.EPMAT1
  7118. C
  7119.       SUBROUTINE EPMAT1(STRSSM,ALFAM,EPSTRM,DEPS,DPSC,DPST,XLAMDA,PROP1,
  7120.      1                  PROP2,PROPM,YLDM,KEY,DPSP,INDEX,EETM)
  7121. C
  7122. C
  7123. C     THIS SUBROUTINE CALCULATES THE UNIAXIAL PLASTIC STRAIN
  7124. C     INCREMENT
  7125. C
  7126. C
  7127. C
  7128. C     KEY = 1  CALCULATE PLASTIC STRAIN INCREMENT  (STRESS CALCULATIONS)
  7129. C         = 2  CALCULATE PLASTIC STRAIN INCREMENT  (FORMING
  7130. C              STIFFNESS MATRIX)
  7131. C
  7132. C
  7133. C
  7134.       IMPLICIT REAL*8 (A-H,O-Z)
  7135. C
  7136.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  7137.      1            ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  7138.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  7139.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  7140.       COMMON /SOLPM1/ TREF,XINTP,XCON1,XCON2,XPARM1,XPARM2,TOLIL,TOLPC,
  7141.      1               TOL1,TOL2,TOL3,TOL4,TOL5,TOL6,TCHK,CRPCON(8),DTMN,
  7142.      2               SUBDD,RNGL,RNGU,DTT,TOL7,
  7143.      3               KCRP,NITE,NALG,IINTP,NPTS,ITCHK
  7144.       COMMON /TPLAS1/ EETD,YSD
  7145. C
  7146.       DIMENSION PROP1(1),PROP2(1),PROPM(1)
  7147. C
  7148.       EQUIVALENCE (NPAR(15),MODEL)
  7149. C
  7150. C
  7151. C
  7152. C        1. INITIALIZE VARIABLES
  7153. C
  7154.       IF(INDEX.GT.1) GO TO 40
  7155. C
  7156.       YMM=PROPM(1)
  7157.       ETM=PROPM(3)
  7158. C
  7159.       YMD=PROP2(1) - PROP1(1)
  7160.       ETD=PROP2(3) - PROP1(3)
  7161.       YSD=PROP2(2) - PROP1(2)
  7162. C
  7163.       EETD=((YMM*YMM*ETD) - (ETM*ETM*YMD))/((YMM - ETM)*(YMM - ETM))
  7164. C
  7165. C        2. CALCULATE PLASTIC STRAIN INCREMENT
  7166. C
  7167.    40 DENMP=(YMM + EETM)*YLDM*YLDM
  7168.       IF(MODEL.EQ.7) GO TO 50
  7169. C
  7170. C     ISOTROPIC HARDENING **
  7171. C
  7172.       WP1=YMM*STRSSM*(DEPS - DPSC - DPST)
  7173.       WP2=(YMD/YMM)*YLDM*YLDM - YLDM*(EPSTRM*EETD + YSD)
  7174.       STM=STRSSM
  7175.       GO TO 70
  7176. C
  7177. C     KINEMATIC HARDENING **
  7178. C
  7179.    50 STM=STRSSM - 1.5*ALFAM
  7180.       WP1=YMM*STM*(DEPS - DPSC - DPST)
  7181.       WP2=(YMD/YMM)*STM*STRSSM - YLDM*YSD
  7182. C
  7183.    70 WP=WP1 + WP2
  7184.       XLAMDA=WP/DENMP
  7185.       WPP=XLAMDA
  7186. C
  7187. C     CHECK FOR UNLOADING OR NEUTRAL LOADING **
  7188. C
  7189.       IF(XLAMDA.GT.0.0) GO TO 75
  7190.       XLAMDA=0.0
  7191.       GO TO 80
  7192. C
  7193.    75 IF(KEY.EQ.2 .AND. IEQREF.NE.1) XLAMDA=XLAMDA - WP1/DENMP
  7194. C
  7195.    80 DPSP=XLAMDA*STM
  7196.       XLAMDA=WPP
  7197. C
  7198.       RETURN
  7199. C
  7200.       END
  7201. C *CDC* *DECK MTITP1
  7202. C *UNI* )FOR,IS  N.MTITP1, R.MTITP1
  7203. C
  7204.       SUBROUTINE MTITP1(PROP,TMP,PROPI)
  7205. C
  7206. C
  7207. C
  7208. C     THIS SUBROUTINE LINEARLY INTERPOLATES THE MATERIAL PROPERTY
  7209. C     TABLES AND OBTAINS THE FOLLOWING PROPERTIES AT THE
  7210. C     SPECIFIED TEMPERATURE
  7211. C
  7212. C        YOUNGS MODULUS
  7213. C        VIRGIN MATERIAL YIELD STRESS
  7214. C        HARDENING MODULUS
  7215. C        MEAN COEFFICIENT OF THERMAL EXPANSION
  7216. C
  7217. C
  7218. C
  7219.       IMPLICIT REAL*8 (A-H,O-Z)
  7220. C
  7221.       COMMON /SOLPM1/ TREF,XINTP,XCON1,XCON2,XPARM1,XPARM2,TOLIL,TOLPC,
  7222.      1               TOL1,TOL2,TOL3,TOL4,TOL5,TOL6,TCHK,CRPCON(8),DTMN,
  7223.      2               SUBDD,RNGL,RNGU,DTT,TOL7,
  7224.      3               KCRP,NITE,NALG,IINTP,NPTS,ITCHK
  7225. C
  7226.       DIMENSION PROP(16,1),PROPI(1)
  7227. C
  7228. C
  7229. C
  7230. C
  7231. C        1. ENTER TEMPERATURE TABLE AND DETERMINE
  7232. C           INTERPOLATION FACTOR
  7233. C
  7234.     5 IF(TMP.GE.RNGL) GO TO 10
  7235.       WRITE(6,3001)
  7236.       STOP
  7237. C
  7238.    10 L=0
  7239.       DO 20 K=2,NPTS
  7240.       L=L + 1
  7241.       DUM=PROP(K,1)
  7242.       IF(K.EQ.NPTS) DUM=RNGU
  7243.       IF(TMP.GT.DUM) GO TO 20
  7244.       GO TO 25
  7245.    20 CONTINUE
  7246.       WRITE(6,3001)
  7247.       STOP
  7248. C
  7249.    25 XRATIO=(TMP - PROP(L,1))/(PROP(L + 1,1) - PROP(L,1))
  7250. C
  7251. C     CORRECT XRATIO FOR THE CASE WHEN TMP LIES OUTSIDE TABLE
  7252. C     BUT WITHIN THE TOLERANCE RANGE **
  7253. C
  7254.       IF(XRATIO.GT.1.0) XRATIO=1.0
  7255.       IF(XRATIO.LT.0.0) XRATIO=0.0
  7256. C
  7257. C        2. INTERPOLATE MATERIAL PROPERTIES
  7258. C
  7259. C     PROPI(J) CONTAINS INTERPOLATED VALUES **
  7260. C
  7261. C        PROPI(1) = YOUNGS MODULUS
  7262. C        PROPI(2) = VIRGIN MATERIAL YIELD STRESS
  7263. C        PROPI(3) = HARDENING MODULUS
  7264. C        PROPI(4) = MEAN COEFFICIENT OF THERMAL EXPANSION
  7265. C
  7266.       DO 30 M=2,5
  7267.    30 PROPI(M - 1)=PROP(L,M) + XRATIO*(PROP(L + 1,M) - PROP(L,M))
  7268. C
  7269.       RETURN
  7270. C
  7271.  3001 FORMAT(//,92H    ERROR   TEMPERATURE OUTSIDE RANGE OF MATERIAL PRO
  7272.      1PERTY TEMPERATURES  (SUBROUTINE MTITP1))
  7273. C
  7274.       END
  7275. C *CDC* *DECK CREEP1
  7276. C *UNI* )FOR,IS N.CREEP1,R.CREEP1
  7277. C
  7278.       SUBROUTINE CREEP1(DDT,DEPSC,TEMPD,EPSC,ORIG,NORG,STRESS,GAMA,
  7279.      1                  STRNR,PTIME2,EST,F,R,G,INDEX,ECSTR)
  7280. C
  7281. C
  7282. C
  7283. C     THIS SUBROUTINE CALCULATES THE CREEP STRAIN RATE USING TOTAL
  7284. C     CREEP STRAIN HARDENING AND THE ORNL AUXILIARY HARDENING RULES FOR
  7285. C     CYCLIC CREEP
  7286. C
  7287. C
  7288. C
  7289.       IMPLICIT REAL*8 (A-H,O-Z)
  7290. C
  7291.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  7292.      1,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  7293.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  7294.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  7295.       COMMON /ADINAI/ OPVAR(7),TSTART,IRINT,ISTOTE
  7296.       COMMON /SOLPM1/ TREF,XINTP,XCON1,XCON2,XPARM1,XPARM2,TOLIL,TOLPC,
  7297.      1               TOL1,TOL2,TOL3,TOL4,TOL5,TOL6,TCHK,CRPCON(8),DTMN,
  7298.      2               SUBDD,RNGL,RNGU,DTT,TOL7,
  7299.      3               KCRP,NITE,NALG,IINTP,NPTS,ITCHK
  7300. C
  7301.       DIMENSION ORIG(1)
  7302. C
  7303. C
  7304. C
  7305.       IMAX=50
  7306.       ETOL1=5.0D-3
  7307.       ETOL4=5.0D-6
  7308.       ETOL5=1.0D-20
  7309. C
  7310. C        1. CALCULATE THE CURRENT VALUE OF EFFECTIVE CREEP STRAIN
  7311. C
  7312.       CALL CYCRP1(ECSTR,EPSC,ORIG,NORG,STRESS,INDEX)
  7313.       IF(EST.LE.TOL5) RETURN
  7314. C
  7315.       IF(KCRP.EQ.2) GO TO 20
  7316. C
  7317. C        2. ANALYTICAL SOLUTION FOR CREEP LAW NO. 1
  7318. C
  7319.       CALL CRPLW1(EST,ECSTR,STRN,STRNR,DDT,TEMPD,F,R,G)
  7320.       GO TO 60
  7321. C
  7322. C        3. NUMERICAL SOLUTION FOR CREEP LAW NO. 2
  7323. C
  7324. C
  7325. C     USE NEWTON ITERATION TO SOLVE FOR CURRENT EFFECTIVE
  7326. C     CREEP STRAIN RATE **
  7327. C
  7328. C
  7329. C     MAKE INITIAL GUESS OF PSEUDO-TIME *
  7330. C
  7331.    20 PTIME1=DBLE(FLOAT(KSTEP))*DTT + TSTART
  7332.       PTIME2=PTIME1
  7333. C
  7334.       KOUNT=1
  7335.    25 CALL CRPLW1(EST,ECSTR,STRN,STRNR,PTIME2,TEMPD,F,R,G)
  7336. C
  7337.       IMOD=0
  7338.       FUNCT=STRN-ECSTR
  7339.       DELTA=FUNCT/STRNR
  7340.       IF(ECSTR.EQ.0.0) DELTA=PTIME2
  7341. C
  7342. C     MODIFY DELTA, IF NECESSARY, TO OBTAIN A VALUE
  7343. C     OF PSEUDO-TIME .GE. 0.0 **
  7344. C
  7345.       IF((PTIME2 - DELTA).GE.0.0) GO TO 30
  7346.       DELTA=0.5*PTIME2
  7347.       IMOD=1
  7348. C
  7349.    30 IF(KOUNT.GT.1) GO TO 40
  7350.       PTIME2=PTIME1 - DELTA
  7351.       DNORM1=DABS(DELTA)
  7352.       KOUNT=KOUNT + 1
  7353.       GO TO 25
  7354. C
  7355. C     APPLY CONVERGENCE CRITERIA FOR KOUNT .GT.1 **
  7356. C
  7357.    40 DNORM2=DABS(DELTA)
  7358.       IF(IMOD.EQ.1) GO TO 50
  7359.       IF(DNORM2.LE.DNORM1) GO TO 45
  7360. C
  7361. C     CHECK IF DNORM1 AND DNORM2 ARE WITHIN THE ROUNDOFF
  7362. C     TOLERANCE BAND **
  7363. C
  7364.       XTOL=ETOL4*PTIME1
  7365.       IF(PTIME1.LE.ETOL5) XTOL=ETOL5
  7366.       IF(DNORM2.LE.XTOL.AND.DNORM1.LE.XTOL) GO TO 60
  7367.       GO TO 50
  7368. C
  7369.    45 XTOL=ETOL1*PTIME1
  7370.       IF(PTIME1.LE.ETOL5) XTOL=ETOL5
  7371.       IF(DNORM1.LE.XTOL) GO TO 60
  7372. C
  7373. C     NO CONVERGENCE *
  7374. C
  7375.    50 KOUNT=KOUNT + 1
  7376.       IF(KOUNT.LE.IMAX) GO TO 55
  7377.       WRITE(6,2000)
  7378.       STOP
  7379. C
  7380.    55 PTIME1=PTIME2
  7381.       PTIME2=PTIME2 - DELTA
  7382.       DNORM1=DNORM2
  7383.       GO TO 25
  7384. C
  7385. C        4. CALCULATE INITIAL ESTIMATE OF INCREMENTAL CREEP STRAINS
  7386. C
  7387.    60 GAMA=1.5*STRNR/EST
  7388.       DEPSC=DDT*STRNR*STRESS/EST
  7389. C
  7390.       RETURN
  7391. C
  7392.  2000 FORMAT(//,69H    ERROR   NEWTON ITERATION FAILED TO CONVERGE   (SU
  7393.      1BROUTINE CREEP1))
  7394. C
  7395.       END
  7396. C *CDC* *DECK CYCRP1
  7397. C *UNI* )FOR,IS N.CYCRP1,R.CYCRP1
  7398. C
  7399.       SUBROUTINE CYCRP1(ECSTR,EPSC,ORIG,NORG,STRESS,INDEX)
  7400. C
  7401. C
  7402. C
  7403. C     THIS SUBROUTINE PERFORMS THE ORNL-TM-3602 AUXILIARY STRAIN
  7404. C     HARDENING CALCULATIONS FOR CYCLIC CREEP
  7405. C
  7406. C     THE FOLLOWING VARIABLES ARE USED
  7407. C
  7408. C        ORIG(I)     =  ARRAY CONTAINING POSITIVE ORIGIN IN THE FIRST
  7409. C                       ROW AND NEGATIVE ORIGIN IN THE SECOND
  7410. C        EPSD        =  DISTANCE BETWEEN CURRENT ORIGINS
  7411. C        EPSC        =  CURRENT CREEP STRAIN
  7412. C        NORG        =  DENOTES CURRENT ORIGIN
  7413. C                    =  1 POSITIVE ORIGIN
  7414. C                    =  2 NEGATIVE ORIGIN
  7415. C        STRESS      =  CURRENT STRESS
  7416. C        ECSTR       =  EFFECTIVE STRAIN MEASURE OF THE DISTANCE BETWEEN
  7417. C                       THE CURRENT CREEP STRAIN STATE AND ORIGIN
  7418. C
  7419. C
  7420. C
  7421.       IMPLICIT REAL*8 (A-H,O-Z)
  7422. C
  7423.       DIMENSION ORIG(1)
  7424. C
  7425. C
  7426. C     STRESS REVERSAL CAN OCCUR ONLY AT THE START OF A
  7427. C     SUBDIVISION (INDEX = 1)
  7428. C
  7429.       IF(INDEX.GT.1) GO TO 50
  7430. C
  7431. C
  7432. C        1. CALCULATE CURRENT DISTANCE BETWEEN ORIGINS
  7433. C
  7434.       EPSD=DABS(ORIG(1) - ORIG(2))
  7435. C
  7436. C        2. CHECK FOR STRESS REVERSAL
  7437. C
  7438.       DUM=(EPSC - ORIG(NORG))*STRESS
  7439.       IF(DUM.GE.0.0) GO TO 50
  7440. C
  7441. C     STRESS REVERSAL IS INDICATED **
  7442. C
  7443.       ECSTR=DABS(EPSC - ORIG(NORG))
  7444. C
  7445. C     CHECK IF OPPOSITE ORIGIN COORDINATES MUST BE RESET TO
  7446. C     NEW VALUES **
  7447. C
  7448.       IF(ECSTR.GT.EPSD) GO TO 40
  7449. C
  7450. C     CHECK FOR FALSE STRESS REVERSAL *
  7451. C
  7452.       IF(NORG.EQ.2) GO TO 18
  7453.    17 NN=2
  7454.       GO TO 20
  7455.    18 NN=1
  7456.    20 DUM=(EPSC - ORIG(NN))*STRESS
  7457.       IF(DUM.GE.0.0) GO TO 25
  7458. C
  7459. C     FALSE REVERSAL IS INDICATED
  7460. C
  7461.       TECSTR=DABS(EPSC - ORIG(NN))
  7462.       IF(ECSTR.GE.TECSTR) RETURN
  7463. C
  7464. C        3. RESET ORIGIN INDICATOR ONLY
  7465. C
  7466.    25 IF(NORG.EQ.2) GO TO 35
  7467.    30 NORG=2
  7468.       GO TO 50
  7469.    35 NORG=1
  7470.       GO TO 50
  7471. C
  7472. C        4. RESET ORIGIN INDICATOR AND COORDINATES
  7473. C
  7474.    40 IF(NORG.EQ.2) GO TO 42
  7475.    41 NORG=2
  7476.       GO TO 45
  7477.    42 NORG=1
  7478. C
  7479.    45 ORIG(NORG)=EPSC
  7480. C
  7481. C        5. CALCULATE NEW VALUE OF EFFECTIVE CREEP STRAIN
  7482. C
  7483.    50 ECSTR=DABS(EPSC - ORIG(NORG))
  7484. C
  7485.       RETURN
  7486. C
  7487.       END
  7488. C *CDC* *DECK CRPLW1
  7489. C *UNI* )FOR,IS N.CRPLW1,R.CRPLW1
  7490. C
  7491.       SUBROUTINE CRPLW1(STRESS,ECSTR,STRAIN,STRNR,TIME,TEMPD,F,R,G)
  7492. C
  7493. C
  7494. C
  7495. C     THIS SUBROUTINE CONTAINS THE UNIAXIAL CREEP LAWS FOR MATERIAL
  7496. C     MODELS 6 AND 7  (1-D)
  7497. C
  7498. C
  7499. C     THE FOLLOWING VARIABLES ARE USED FOR THE UNIAXIAL LAWS
  7500. C
  7501. C        STRESS = UNIAXIAL STRESS
  7502. C        STRAIN = UNIAXIAL CREEP STRAIN
  7503. C        STRNR = UNIAXIAL CREEP STRAIN RATE
  7504. C        TIME = TIME
  7505. C        TEMPD = TEMPERATURE
  7506. C        CRPCON = CONSTANTS FOR UNIAXIAL CREEP LAW
  7507. C        ECSTR = MODIFIED EFFECTIVE CREEP STRAIN (O.R.N.L. RULES)
  7508. C
  7509. C
  7510. C
  7511.       IMPLICIT REAL*8 (A-H,O-Z)
  7512. C
  7513.       COMMON /SOLPM1/ TREF,XINTP,XCON1,XCON2,XPARM1,XPARM2,TOLIL,TOLPC,
  7514.      1               TOL1,TOL2,TOL3,TOL4,TOL5,TOL6,TCHK,CRPCON(8),DTMN,
  7515.      2               SUBDD,RNGL,RNGU,DTT,TOL7,
  7516.      3               KCRP,NITE,NALG,IINTP,NPTS,ITCHK
  7517. C
  7518. C
  7519. C
  7520.       A0=CRPCON(1)
  7521.       A1=CRPCON(2)
  7522.       A2=CRPCON(3)
  7523.       A3=CRPCON(4)
  7524.       A4=CRPCON(5)
  7525.       A5=CRPCON(6)
  7526.       A6=CRPCON(7)
  7527. C
  7528.       IF(KCRP.EQ.2) GO TO 50
  7529. C
  7530. C        1. CREEP LAW NO. 1
  7531. C
  7532.       IF(A2.GE.1.0) GO TO 20
  7533. C
  7534.       RTTOL=20.
  7535.       EX1=1./(1.-A2)
  7536.       EX2=A1*EX1
  7537.       EX3=A2*EX1
  7538.       EX4=-RTTOL*EX3
  7539. C
  7540. C     CALCULATE MINIMUM ALLOWABLE EFFECTIVE CREEP STRAIN **
  7541. C
  7542.       ECMIN=(A0**EX1)*(STRESS**EX2)*(A2**EX3)*(10.0**EX4)
  7543.       IF(ECSTR.LE.ECMIN) GO TO 40
  7544. C
  7545.    20 EX5=1.0/A2
  7546.       EX6=A1*EX5
  7547.       EX7=(A2-1.)/A2
  7548.       IF(A2.EQ.1.0.AND.ECSTR.EQ.0.0) GO TO 25
  7549.       EX8=ECSTR**EX7
  7550.       GO TO 30
  7551.    25 EX8=1.0
  7552. C
  7553.    30 STRNR=(A0**EX5)*(STRESS**EX6)*A2*EX8
  7554. C
  7555.       RETURN
  7556. C
  7557.    40 STRAIN=A0*(STRESS**A1)*(TIME**A2)
  7558.       STRNR=STRAIN/TIME
  7559. C
  7560.       RETURN
  7561. C
  7562. C        2. CREEP LAW NO. 2
  7563. C
  7564.    50 F=A0*DEXP(A1*STRESS)
  7565.       R=A2*((STRESS/A3)**A4)
  7566.       G=A5*DEXP(A6*STRESS)
  7567.       STRAIN=F*(1.-DEXP(-R*TIME)) + (G*TIME)
  7568.       STRNR=F*R*DEXP(-R*TIME) + G
  7569. C
  7570.       RETURN
  7571. C
  7572.       END
  7573. C *CDC* *DECK TUSMOD
  7574. C *UNI* )FOR,IS N.TUSMOD,R.TUSMOD
  7575.       SUBROUTINE TUSMOD
  7576.       IMPLICIT REAL*8 (A-H,O-Z)
  7577.       RETURN
  7578.       END
  7579.