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

  1. C *** OVLMAIN
  2. C
  3.       IMPLICIT REAL*8 (A-H,O-Z)
  4.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  5.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  6.       COMMON /DIMN/ N3A,N4A,N4B,N4C
  7.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  8.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  9.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  10.       COMMON /DIMEL/ N101,N102,N103,N104,N105,N106,N107,N108,N109,N110,
  11.      1           N111,N112,N113,N114,N120,N121,N122,N123,N124,N125
  12.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  13.       COMMON /SHV1/ N010
  14.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  15.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  16.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  17.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  18.       COMMON /TEMP/ ISPEC
  19.       COMMON /MSUPER/ IMODES,NMODES,IMDAMP
  20.       COMMON /MSUPCF/ B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,B10
  21.       COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
  22.      1             NPDIS,NTEMP
  23.       COMMON /TIMFN/ TEND,NTFN,NPTM
  24.       COMMON /DISCON/ NDISCE,NIDM
  25.       COMMON /JUNK/ IHED(18),MTOT,LPROG
  26.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  27.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  28.       COMMON /EQIT/ METHOD,IATKEN,NLSTPD,NLSTEP,ITEDIV,ISDVG
  29.       COMMON /ITMTHD/ MAXUP,NUMUPD,NTBFGS,NATKN
  30.       COMMON /NORMS/ RNORM,RENORM,RTOL,DTOL,STOL,SMAX,SMIN,
  31.      1               DMAX,DMIN,ETOL
  32.       COMMON /ENERGY/ PE,PEOLD,PEINIT
  33.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  34.       COMMON /PRCONS/ IPRICS
  35.       COMMON /TICON/ IPRIT
  36.       COMMON /ADINAI/ OPVAR(7),TSTART,IRINT,ISTOTE
  37.       COMMON /DPR/ ITWO
  38.       COMMON /GAUSS/ XG(4,4),WGT(4,4),EVAL2(9,2),EVAL3(27,3),E1,E2,E3
  39.       COMMON /ELGLTH/ NFIRST,NLAST,NBCEL
  40.       COMMON /ELSTP/ TIME,IDTHF
  41.       COMMON /ADDB/ NEQL,NEQR,MLA,NBLOCK
  42.       COMMON /RANDI/ N0A,N1D,IELCPL
  43.       COMMON /SRANDI/ N09A,N09B
  44.       COMMON /STORES/ MXTMPS,MDVAS,MXSTHS,MXNEQS,MXBLCS,MXNN1
  45.       COMMON /FREQIF/ ISTOH,N1A,N1B,N1C,N1S
  46.       COMMON /EIGIF/ COFQ,RBMSH,IESTYP,NFREQ,NMODE,IFPR,IRBM
  47.       COMMON /TEMPRT/ TEMP1,TEMP2,ITEMPR,ITP96,N6A,N6B
  48.       COMMON /MDFRDM/ IDOF(6)
  49.       COMMON /BLOCKS/ NSREFB,NEQITB,NPRIB,NODSVB,LEMSVB,ISREFB(3,10),
  50.      1                IEQITB(3,10),IPRIB(3,10),INODB(3,10),IELMB(3,10)
  51.       COMMON /PORT/ INPORT,JNPORT,NPUTSV,LUNODE,LU1,LU2,LU3,JDC,JVC,JAC
  52.       COMMON /PORTT/ JTC
  53.       COMMON /MINDEX/ MITWO(2),MITEN(2)
  54.       COMMON /RANDAC/ NR(5),LR(5)
  55.       COMMON /SKEW/ NSKEWS
  56.       COMMON /MIDSYS/ NMIDSS,MIDIND,MAXMSS
  57.       COMMON /PRGCON/ ICPRI,NTU
  58.       COMMON /PRSHAP/ KSHAPE
  59.       COMMON /NMDATA/ KSET
  60.       COMMON /FACDBL/ JFAC
  61. C
  62.       COMMON A(65015)
  63.       INTEGER IA(1)
  64.       REAL A
  65.       EQUIVALENCE (A(1),IA(1))
  66. C
  67. C     RANDOM ACCESS I/O IS USED IN THE FOLLOWING SUBROUTINES ALSO -
  68. C     *  SUBSTR, ELCAL, ASSEM, LOADEF, COLSOL, UNBLD, STRESS,
  69. C        SUBSKR, RSTART, BANDET, MSUBSP *
  70. C
  71. C     C D C  RANDOM ACCESS EXTERNAL SUBROUTINES -
  72. C     OPENMS, STINDX, READMS, WRITMS, CLOSMS
  73. C
  74. C     I B M RANDOM ACCESS EXTERNAL SUBROUTINE - DEFINE FILE
  75. C     SPECIAL ADINA SUBROUTINES FOR IBM ONLY - READMS, WRITMS
  76. C
  77. C         PRIOR AND AFTER A RANDOM ACCESS READ/WRITE THE FOLLOWING CARDS
  78. C     HAVE BEEN INCLUDED
  79. C
  80. C        * * * * *        R A N D O M  A C C E S S        * * * *
  81. C
  82. C
  83. C     CREATE RANDOM FILES 2,10 WITH NUMBER INDEX
  84. C
  85. C        * * * * * *          R A N D O M  A C C E S S        * * * *
  86. C
  87. C   NOTE/ THIS IBM VERSION OF ADINA CAN BE USED TO STORE ONLY 190*3000
  88. C     SINGLE PRECISION WORDS ON EACH OF THE UNITS 2 AND 10. RESET NR, LR
  89. C     IN THE FOLLOWING CARDS TO OBTAIN MORE SPACE AND ALSO MODIFY
  90. C     DEFINE FILE STATEMENTS ACCORDINGLY -
  91. C     NR(I) = MAX. NUMBER OF LOGICAL RECORDS ON UNIT I
  92. C     LR(I) = LENGTH OF EACH LOGICAL RECORD ON UNIT I
  93. C
  94.       NR(1)=190
  95.       NR(2)=190
  96.       LR(1)=3000
  97.       LR(2)=3000
  98.       DEFINE FILE 10 (190,3000,U,NREC10)
  99.       DEFINE FILE 2 (190,3000,U,NREC2)
  100. C
  101. C        * * * * * *          R A N D O M  A C C E S S        * * * *
  102. C
  103. C   NOTE/ THIS VERSION OF ADINA USES ONLY A LIMITED BLANK COMMON OF
  104. C     SIZE=25000, DEFINED BY THE VARIABLE MTOT. RESET MTOT AND
  105. C     REDIMENSION COMMON A TO OBTAIN LARGER/SMALLER BLANK COMMON STORAGE
  106. C
  107.       CALL ERRSET (187,256,-1,1)
  108.       CALL ERRSET (208,256,-1,1)
  109. C     CALL CPUINT
  110.       MTOT=65000
  111. C
  112. C     ITWO IS THE VARIABLE THAT GOVERNS STORAGE ALLOCATION FOR REAL
  113. C     VARIABLES STORED IN BLANK COMMON.
  114. C     ITWO = 1, SINGLE PRECISION
  115. C     ITWO = 2, DOUBLE PRECISION
  116. C
  117. C *CDC*      ITWO=1
  118.       ITWO=2
  119.       NBCST=MTOT
  120.       NBCST=0
  121.       KSET=0
  122.       JFAC=0
  123.       WRITE (6,2000)
  124.       WRITE (6,2005)
  125. C     WRITE (6,2006)
  126. C     WRITE (6,2007)
  127.   200 NUMEST=0
  128.       MAXEST=0
  129.       NBCEL=0
  130.       NUMREF=0
  131.       ITE=0
  132.       KPRI=1
  133.       KSTEP=0
  134.       IND=0
  135.       ISUB=0
  136.       NSTAPE=14
  137.       ICOUNT=2
  138.       MIDIND=0
  139.       MXTMPS=0
  140.       MDVAS=0
  141.       MXSTHS=0
  142.       MXNEQS=0
  143.       MXBLCS=0
  144.       KPLOTN = 0
  145.       NSUB = 0
  146.       MXNN1=0
  147.       KSHAPE=0
  148. C
  149. C
  150. C     I N P U T   P H A S E
  151. C
  152. C
  153.       CALL SECOND (TIM1)
  154. C
  155.       N0=1 + NBCST
  156. C
  157. C     R E A D   F I N I T E   E L E M E N T   M E S H   D A T A
  158. C
  159. C
  160. C *CDC*      CALL OVERLAY (5HADINA,1,0,6HRECALL)
  161.       CALL ADINI
  162. C
  163. C     CLEAR ARRAY FOR CALCULATION OF COLUMN HEIGHTS
  164. C
  165.       NN=N5 + NEQ - 1
  166.       DO 2 I=N5,NN
  167.     2 IA(I)=0
  168.       N6=N5 + NEQ
  169. C
  170. C     INITIALIZE TEMPERATURE ARRAY
  171. C
  172.       IF (ITP96.EQ.0) GO TO 14
  173.       N6A=N5 + NEQ
  174.       N6B=N6A
  175.       N6=N6A + (NUMNP+1)*ITWO
  176.       NN=N6 - 1
  177.       READ (56) (A(I),I=N6A,NN)
  178.       CALL TCHECK (A(N6A),TSTART)
  179.       BACKSPACE 56
  180. C
  181. C     O B T A I N   E L E M E N T   I N F O R M A T I O N S
  182. C
  183.    14 CALL ELCAL (NEGL,NEGNL,MAXEST,ISUB)
  184. C
  185.       CALL SECOND (TIM2)
  186. C
  187. C     COMPACT THE MID-SURFACE NORMAL SYSTEM
  188. C
  189.       N1=N08
  190.       IF (NMIDSS .EQ. 0 .OR. MIDIND .EQ. 0) GO TO 12
  191.       N09A=N09 + 3*MAXMSS*ITWO
  192.       N09B=N09A + MIDIND
  193.       CALL COMPCT (IA(N08),A(N09),IA(N09A),A(N09B))
  194.       N09=N08 + MIDIND
  195.       MAXST=3*MIDIND*ITWO
  196.       DO 11 I=1,MAXST
  197.    11 A(N09+I-1)=A(N09B+I-1)
  198.       N010=N09 + MAXST
  199.       N1=N010 + MAXST
  200.    12 MAXMSS=MIDIND
  201. C
  202. C
  203. C     S U B S T R U C T U R E   D A T A   I N P U T
  204. C
  205. C
  206.       IF (NSUBST.EQ.0) GO TO 20
  207. C
  208.       IF (NMIDSS.EQ.0) GO TO 15
  209.       NN=N1 + NDOF*NUMNP - 1
  210.       REWIND 8
  211.       READ (8) (IA(I),I=N1,NN)
  212. C
  213.    15 ISUB=1
  214.       CALL SUBSTR
  215.       ISUB=0
  216.    20 CALL SECOND (TIM3)
  217. C
  218. C     COMPUTE MAXA ARRAY
  219. C
  220.       IF (IOPE.NE.3) CALL ADDRES (A(N1),A(N5),NEQ,NWK,MA)
  221. C
  222. C
  223. C     S T O R A G E   C A L C U L A T I O N S
  224. C
  225. C
  226. C     TEST FOR AVAILABILITY OF HIGH SPEED STORAGE AND CALCULATE
  227. C     MAXIMUM BLOCKSIZE, NUMBER OF BLOCKS, AND BLOCK COUPLING
  228. C
  229.       CALL STORE (NUMNP,NDOF,NEQ,NWK,MA,NEGNL,MAXEST,NBLOCK,ISTOH,1)
  230. C
  231.       IF (MODEX.GT.0) GO TO 50
  232.       IND=2
  233.       GO TO 51
  234. C
  235. C
  236. C     S U B S T R U C T U R E   S T I F F N E S S   M A T R I C E S
  237. C
  238. C
  239.    50 IND=1
  240.       IREF=0
  241.       IF (NSUBST.EQ.0) GO TO 51
  242.       ISUB=1
  243.       CALL SUBSTR
  244.       ISUB=0
  245. C
  246. C     CREATE RANDOM ACCESS FILE 10 WITH ASSOCIATED RECORD NUMBER INDEX
  247. C
  248. C       * * * * *        R A N D O M  A C C E S S        * * * *
  249. C
  250.    51 NBLOC1=(IEIG + 1)*NBLOCK + 1
  251.       IF (IOPE.EQ.3) GO TO 55
  252. C *CDC*      CALL OPENMS (10,MITEN,2,0)
  253. C *IBM DEACTIVATE ABOVE 1 CARD FOR  IBM
  254.       DO 52 I=1,NBLOC1
  255.       J=N1D + (I-1)
  256.    52 IA(J)=0
  257. C *CDC*      CALL STINDX (10,IA(N1D),NBLOC1,0)
  258. C *IBM* DEACTIVATE ABOVE CARD FOR IBM
  259. C
  260. C       * * * * *        R A N D O M  A C C E S S        * * * *
  261. C
  262. C     A S S E M B L A G E   O F   L I N E A R   M A T R I C E S
  263. C
  264. C
  265.    55 IF (MODEX.EQ.0) GO TO 60
  266.       CALL ASSEM (A(N1),A(N2),A(N3),A(N4),A(N5),A(N5),A(N6),A(N1A),
  267.      1            A(N4),A(N1C),A(N6),A(N04),A(N05),ISTOH,NBLOCK)
  268. C
  269. C
  270. C     C A L C U L A T E   A N D   S T O R E   L O A D   V E C T O R S
  271. C
  272. C
  273. C *CDC*   60 CALL OVERLAY (5HADINA,17B,0B,6HRECALL)
  274.    60 CALL LOAD
  275. C
  276. C
  277. C     S U B S T R U C T U R E   L O A D   V E C T O R S
  278. C
  279. C
  280.       IF (NSUBST.EQ.0) GO TO 61
  281.       ISUB=1
  282.       CALL SUBSTR
  283.       ISUB=0
  284. C
  285.    61 CALL SECOND (TIM4)
  286. C
  287.       IF (IDATWR.LE.1) WRITE (6,2010)
  288. C
  289. C
  290. C     S T O R A G E   F O R   T I M E   I N T E G R A T I O N
  291. C
  292. C
  293.       CALL STORE (NUMNP,NDOF,NEQ,NWK,MA,NEGNL,MAXEST,NBLOCK,ISTOH,2)
  294. C
  295. C
  296. C     I N I T I A L    C O N D I T I O N S
  297. C
  298. C
  299. C        1. MASTER STRUCTURE
  300. C
  301.       NEQT=NEQ + NDISCE
  302. C
  303. C     TAKE INITIAL CONDITIONS INTO CORE FORM TAPE8. GENERATE FOR
  304. C     CONSTRAINED DEGREES OF FREEDOM
  305. C
  306.       CALL WRITE (A(N1),A(N2),A(N7),A(N8),A(N5),IDOF,ISUB,NEQ,NDOF,0)
  307. C
  308. C     IF THIS IS A RESTART JOB, TRANSFER NONLINEAR ELEMENT GROUP
  309. C     DATA TO TAPE 2
  310. C
  311.       IF (MODEX.NE.2) GO TO 64
  312.       CALL RSTART (A(N1),A(N2),A(N7),A(N8),A(N10),A(N1C),NEQ,NBLOCK,2)
  313. C
  314.    64 IF (IOPE.EQ.3 .AND. NDISCE.GT.0)
  315.      1 CALL CONDIS (A(N01),A(N02),A(N03),A(N1),A(N7),A(N8),NIDM,0)
  316. C
  317.       IF (NDISCE.GT.0)
  318.      1 CALL CONDIS (A(N01),A(N02),A(N03),A(N2),A(N7),A(N8),NIDM,ISTAT)
  319. C
  320. C     WRITE INITIALIZED DISPLACEMENTS, VELOCITIES, AND ACCELERATIONS
  321. C        ( OR STARTING DISPL/VEL/ACC IF THIS IS A RESTART JOB )
  322. C
  323.       MM=N2
  324.       IF (IOPE.EQ.3) MM=N1
  325.       ICPRI=1
  326.       TIME = TSTART
  327.       NSUB = 0
  328.       CALL WRITE (A(N1),A(MM),A(N7),A(N8),A(N5),IDOF,ISUB,NEQT,NDOF,1)
  329. C
  330. C        2. SUBSTRUCTURES
  331. C
  332.       IF (NSUBST.EQ.0 .OR. ISTAT.EQ.0) GO TO 82
  333.       ISUB=1
  334.       REWIND NSTAPE
  335.       NEQT=NEQ + NDISCE
  336.       M2=N2 + NEQT*ITWO
  337.       M7=N7 + NEQT*ITWO
  338.       M8=N8 + NEQT*ITWO
  339.       IF (IPRIC.EQ.0) GO TO 74
  340.       REWIND 15
  341.       DO 72 I=1,NTFN
  342.    72 READ (15)
  343.    74 DO 76 NSUB=1,NSUBST
  344.       NN=N07 + 8*(NSUB - 1)
  345.       NEQS=IA(NN)
  346.       READ (NSTAPE) NTUSE,NEGLS,NUMNPS,NODCON,NODRET,(IDOFS(I),I=1,6),
  347.      1              NDOFS
  348.       IF (IPRIC.EQ.0) GO TO 75
  349.       NN=N5 + NDOFS*NUMNPS - 1
  350.       READ (15) (IA(I),I=N5,NN)
  351.       READ (15)
  352.       READ (15)
  353.       READ (15)
  354.    75 DO 76 NTU =1,NTUSE
  355.       READ (NSTAPE)
  356.       CALL WRITE (A(N1),A(M2),A(M7),A(M8),A(N5),IDOFS,
  357.      1            ISUB,NEQS,NDOFS,0)
  358.       ICPRI=1
  359.       CALL WRITE (A(N1),A(M2),A(M7),A(M8),A(N5),IDOFS,
  360.      1            ISUB,NEQS,NDOFS,1)
  361.       M2=M2 + NEQS*ITWO
  362.       M7=M7 + NEQS*ITWO
  363.       M8=M8 + NEQS*ITWO
  364.    76 CONTINUE
  365.       ISUB=0
  366. C     INITIALIZE TEMPERATURE ARRAY AND PRINT THEM, IF REQUESTED
  367. C
  368.    82 IF (ITEMPR.EQ.0) GO TO 65
  369.       NN=N6A + (NUMNP + 1)*ITWO - 1
  370.       READ (56) (A(I),I=N6A,NN)
  371.       NN=N6A + ITWO
  372.       CALL WRITEM (A(N6A),A(NN),NUMNP,1)
  373. C
  374. C
  375. C     F R E Q U E N C Y   S O L U T I O N
  376. C
  377. C
  378.    65 CALL SECOND (TIM5)
  379.       IF (IEIG.EQ.0) GO TO 69
  380.       IND=3
  381.       TIME=TSTART + DT
  382.       CALL ASSEM (A(N1),A(N4),A(N4A),A(N2),A(N3),A(N5),A(N10),A(N1A),
  383.      1            A(N6B),A(N1C),A(N6),A(N04),A(N05),ISTOH,NBLOCK)
  384.    69 CALL SECOND (TIM6)
  385. C
  386. C     INITIALISE VARIABLES FOR MODE SUPERPOSITION ANALYSIS
  387. C
  388.       IF (IMODES.EQ.0) GO TO 70
  389.       IF (MODEX.EQ.0) GO TO 70
  390.       IND=3
  391. C
  392. C *CDC*      CALL OVERLAY (5HADINA,21B,0B,6HRECALL)
  393.       CALL MODSUP
  394.    70 CALL SECOND (TIM7)
  395. C
  396. C
  397. C     T I M E   I N T E G R A T I O N
  398. C
  399. C
  400.       TSUM1=0.
  401.       TSUM2=0.
  402.       TSUM3=0.
  403.       TSUM4=0.
  404.       TSUM4A=0.
  405.       TSUM5=0.
  406.       TSUM6=0.
  407.       TIM8=TIM7
  408.       IF (MODEX.GT.0) GO TO 88
  409.       WRITE(6,2030)
  410.       GO TO 190
  411.    88 IF (NSTE.EQ.0) GO TO 190
  412. C
  413. C
  414. C     FOR MID-SURFACE SYSTEMS STORE INITIAL NORMALS ON TAPE9
  415. C
  416.       IF (MAXMSS.EQ.0) GO TO 90
  417.       REWIND 9
  418.       NN=N010-1
  419.       WRITE (9) (A(I),I=N09,NN)
  420. C
  421. C     INITIAL VECTORS V1 ARE TO BE CALCULATED
  422. C     AND STORED ON TAPE 9
  423. C
  424.       KNOR=1
  425.       CALL NORMAL (A(N08),A(N09),A(N010),A(N3),A(N5),NDOF,KNOR)
  426.       KNOR=2
  427. C
  428.    90 TIME=TSTART
  429.       TIMEP=TSTART
  430.       REWIND 3
  431.       REWIND 13
  432.       IND=4
  433.       KRINT=0
  434.       NUMP1=(NUMNP+1)*ITWO
  435. C
  436. C     IN CASE OF LINEAR ANALYSIS TRIANGULARIZE EFFECTIVE LINEAR
  437. C     STIFFNESS MATRIX (THE TRIANGULAR FACTORS REMAIN IN CORE
  438. C     PROVIDED THAT
  439. C              1.   LINEAR ANALYSIS
  440. C              2.   ONE BLOCK CASE
  441. C              3.   IMPLICIT TIME INTEGRATION SCHEME IS USED)
  442. C
  443.       CALL SECOND (TIM7)
  444.       IF (KLIN.GT.0 .OR. IOPE.EQ.3) GO TO 94
  445.       IF (IMODES.GT.0) GO TO 94
  446.       NTAPE=4
  447.       IF (ISTAT.EQ.1) NTAPE=7
  448.       CALL COLSOL (A(N1),A(N1A),A(N1B),A(N4),A(N4A),A(N4B),A(N3),A(N04),
  449.      1            NEQ,NBLOCK,ISTOH,NTAPE,10,1)
  450.       WRITE (6,2320) SMAX,SMIN,DMAX,DMIN
  451.       RATIO=DMAX/DMIN
  452.       IF (RATIO.LT.1.D+11) GO TO 94
  453.       WRITE (6,2330)
  454.    94 CALL SECOND (TIM8)
  455.       IF (IMODES.GT.0) GO TO 100
  456.       IF (IOPE.NE.3) GO TO 95
  457. C
  458. C     FOR CENTRAL DIFFERENCE METHOD TAKE EFFECTIVE MASS INTO CORE.
  459. C     HOWEVER IF DAMPING TERMS ARE PRESENT,  THEN AT EACH TIME STEP BOTH
  460. C     LUMPED AND EFFECTIVE MASS MATRICES ARE READ INTO CORE FROM TAPE
  461. C
  462.       REWIND 7
  463.       NN=N5 - 1
  464.       READ (7) (A(I),I=N4,NN)
  465.       GO TO 100
  466. C
  467. C     LUMPED MASS MATRIX IS TAKEN INTO CORE AND NODAL DAMPING VECTOR
  468. C     IS STORED AS FIRST RECORD (IMPLICIT TIME INTEGRATION)
  469. C
  470.    95 IF (IMASS.NE.1) GO TO 100
  471.       REWIND 11
  472.       IF (NSUBST.EQ.0 .OR. ISTAT.EQ.0) GO TO 97
  473.       II=NSUBST*2
  474.       DO 96 I=1,II
  475.    96 READ (11)
  476.    97 NN=N9 + NEQ*ITWO - 1
  477.       READ (11) (A(I),I=N9,NN)
  478.       NN=N6 + NEQ*ITWO - 1
  479.       READ (11) (A(I),I=N6,NN)
  480.       IF (NSUBST.EQ.0 .OR. ISTAT.EQ.0) GO TO 98
  481.       BACKSPACE 11
  482.       BACKSPACE 11
  483.       WRITE (11) (A(I),I=N6,NN)
  484.       BACKSPACE 11
  485.       GO TO 100
  486.    98 REWIND 11
  487.       WRITE (11) (A(I),I=N6,NN)
  488.       REWIND 11
  489. C
  490. C
  491. C     T I M E   S T E P   I N C R E M E N T A T I O N
  492. C
  493. C        KSTEP .EQ. STEP COUNTER
  494. C        TIME .EQ. TIME AT WHICH SOLUTION IS REQUIRED
  495. C
  496. C
  497.   100 KSTEP=KSTEP + 1
  498.       TIMEP=TIME + DTA
  499.       TIME=TIME + DT
  500. C
  501. C     STIFFNESS REFORMATION FLAG
  502. C        IREF.EQ.0 IF STIFFNESS IS TO BE REFORMED
  503. C
  504.       CALL BLKCNT(KSTEP,NSREFB,IREF,ISREFB,NSTE,1)
  505.       IF (KSTEP.EQ.1) IREF=0
  506.       IF (IOPE.EQ.3 .OR. IMODES.GT.0) IREF=1
  507. C
  508. C     FLAG FOR EQUILIBRIUM ITERATION
  509. C        IEQUIT.EQ.0 IF ITERATION IS TO BE PERFORMED
  510. C        IEQUIT.GT.0 IF NO ITERATION IS TO BE PERFORMED
  511. C
  512.       CALL BLKCNT(KSTEP,NEQITB,IEQUIT,IEQITB,NSTE,2)
  513. C
  514. C     FLAG FOR TRIANGULARIZATION AND/OR SIMPLE REDUCTION AND
  515. C     BACKSUBSTITUTION IN COLSOL
  516. C        KTR.EQ.1   FOR TRIANGULARIZATION PLUS SOLUTION
  517. C        KTR.EQ.2   FOR VECTOR SOLUTION ONLY
  518. C
  519.       KTR=1
  520.       IF (IREF.NE.0) KTR=2
  521.       IF (KLIN.EQ.0) KTR=2
  522. C
  523. C     NEQREF IS THE NUMBER OF TIMES THE NONLINEAR STIFFNESS MATRIX
  524. C     WAS REFORMED
  525. C
  526.       NEQREF=0
  527.   140 REWIND 4
  528.       REWIND 7
  529. C
  530. C     FLAG TO INDICATE CONVERGENCE IN EQUILIBRIUM ITERATION
  531. C        IEQREF.EQ.0   CONVERGENCE
  532. C        IEQREF.EQ.1   NORM OF OUT-OF-BALANCE LOADS IS LARGER THAN NORM
  533. C                      OF INCREMENTAL LOADS (SEE EQUIT)
  534. C
  535.       ISDVG=0
  536.       IEQREF=0
  537. C
  538. C
  539. C     S O L U T I O N   O F   I N C R E M E N T A L   E Q U A T I O N S
  540. C
  541. C
  542. C     UPDATE NORMAL VECTORS IF MID-SURFACE SYSTEMS ARE USED AND
  543. C     MAXMSS IS GREATER THAN 0 ( FOR CENTRAL DIFFERENCE METHOD ONLY)
  544. C
  545.       IF (IOPE.NE.3 .OR. MAXMSS.EQ.0) GO TO 148
  546.       NN=NEQ + NDISCE
  547.       FACTOR=0.
  548.       CALL SHTADV (A(N3),A(N2),A(N1),FACTOR,NN,1)
  549.       CALL NORMAL (A(N08),A(N09),A(N010),A(N3),A(N5),NDOF,KNOR)
  550. C
  551. C     CALCULATE LINEAR EFFECTIVE LOADS BALANCED IN CURRENT CONFIGURATION
  552. C
  553.   148 CALL SECOND (TIM9)
  554. C
  555.       CALL LOADMS
  556. C
  557.       CALL SECOND (TIM10)
  558. C
  559. C     CALCULATE EFFECTIVE NONLINEAR MATRIX AND FINAL EFFECTIVE LOADS
  560. C
  561.       CALL ASSEM (A(N1),A(N4),A(N4A),A(N2),A(N3),A(N5),A(N10),A(N1A),
  562.      1            A(N6B),A(N1C),A(N10),A(N04),A(N05),ISTOH,NBLOCK)
  563. C
  564.       CALL SECOND (TIM11)
  565.       IF (KSTEP.EQ.1 .AND. IREF.EQ.0) WRITE (6,2300) TIM11
  566. C
  567. C     IF ITERATION IS TO BE PERFORMED, SAVE LOAD INCREMENT IN A(N5)
  568. C
  569.       IF (IEQUIT.NE.0 .OR. IMODES.GT.0) GO TO 155
  570.       NN=NEQ*ITWO
  571.       DO 150 I=1,NN
  572.   150 A(N5 + I - 1)=A(N3 + I - 1)
  573.   155 CONTINUE
  574. C
  575. C     SOLVE FOR INCREMENT IN DISPLACEMENT VECTOR
  576. C      CENTRAL DIFF METHOD - IN NEWDAV
  577. C      STATICS OR DIRECT INTEGRATION - IN COLSOL
  578. C      MODE SUPERPOSITION ANALYSIS - IN MODSUP (OVERLAY 21)
  579. C
  580.       IF (IOPE.EQ.3) GO TO 158
  581.       IF (IMODES.GT.0) GO TO 157
  582.       CALL COLSOL (A(N1),A(N1A),A(N1B),A(N4),A(N4A),A(N4B),A(N3),
  583.      1             A(N04),NEQ,NBLOCK,ISTOH,12,10,KTR)
  584.       GO TO 158
  585. C
  586. C *CDC*   157 CALL OVERLAY (5HADINA,21B,0B,6HRECALL)
  587.   157 CALL MODSUP
  588. C
  589.   158 CALL SECOND (TIM12)
  590.       IF (KSTEP.EQ.1 .AND. IREF.EQ.0) WRITE (6,2310) TIM12
  591. C
  592. C     FLAG FOR PRINTING NODAL AND ELEMENT RESPONSES
  593. C        IPRI .EQ. 0 FOR PRINTOUT OF DISP,VEL,ACC AND STRESSES
  594. C
  595.       CALL BLKCNT (KSTEP,NPRIB,IPRI,IPRIB,NSTE,3)
  596.       IF (IPRI.NE.0) GO TO 151
  597.       ICPRI=1
  598.       WRITE (6,2020) KSTEP,TIME
  599.       IF (NSKEWS.LE.0) GO TO 152
  600.       ICPRI=ICPRI+2
  601.       WRITE (6,2025)
  602.       GO TO 152
  603.   151 WRITE (6,2290) KSTEP,TIME
  604.   152 IF (IOPE.EQ.3 .OR. KTR.NE.1) GO TO 153
  605.       IF (IPRI.EQ.0) ICPRI=ICPRI+10
  606.       WRITE (6,2320) SMAX,SMIN,DMAX,DMIN
  607.       RATIO=DMAX/DMIN
  608.       IF (RATIO.LT.1.E+11) GO TO 153
  609.       WRITE (6,2330)
  610.   153 CONTINUE
  611.       TSUM1=TSUM1 + (TIM10 - TIM9)
  612.       TSUM2=TSUM2 + (TIM11 - TIM10)
  613.       TSUM3=TSUM3 + (TIM12 - TIM11)
  614. C
  615. C
  616. C     I T E R A T I O N   F O R   D Y N A M I C   E Q U I L I B R I U M
  617. C
  618. C
  619. C     NO ITERATION IN LINEAR ANALYSIS
  620. C
  621.       IF (KLIN.EQ.0) GO TO 110
  622. C
  623.       IF (IEQUIT.NE.0) GO TO 110
  624. C
  625.       CALL SECOND (TIM13)
  626. C
  627.       IF (NDISCE.GT.0)
  628.      1  CALL CONDIS (A(N01),A(N02),A(N03),A(N3),A(N7),A(N8),NIDM,0)
  629. C
  630.       CALL EQUIT (A(N4),A(N3),A(N3A),A(N5),A(N2),A(N7),A(N8),A(N1),
  631.      1            A(N6),A(N9),A(N10),A(N4A),A(N4B),A(N1A),A(N1B),ISTOH)
  632. C
  633. C     IF NO CONVERGENCE IN ITERATION PROCEED TO NEXT DATA CASE
  634. C
  635.       CALL SECOND (TIM14)
  636.       TSUM4=TSUM4 + (TIM14 - TIM13)
  637. C
  638.       IF(ITE.GT.ITEMAX) GO TO 190
  639. C
  640. C     CHECK FOR NO CONVERGENCE IN EQUILIBRIUM ITERATION AND
  641. C     POSSIBLE REFORMATION OF STIFFNESS
  642. C
  643.       IDVRG=0
  644.       IF (IEQREF.EQ.0) GO TO 110
  645.       IDVRG=1
  646. C
  647.       CALL SECOND (TIM13A)
  648. C
  649.       CALL DIVERG (A(N2),A(N3),A(N3A),A(N4),A(N5),A(N6),A(N7),A(N8),
  650.      1             A(N9),A(N10),A(N4A),A(N4B),A(N1A),A(N1B),A(N1),
  651.      2             A(N1C),A(N6B))
  652. C
  653.       CALL SECOND (TIM14A)
  654.       TSUM4A=TSUM4A + (TIM14A - TIM13A)
  655. C
  656.       IF (ITE.GT.ITEMAX) GO TO 190
  657.       IF (ISDVG.EQ.0) GO TO 110
  658.       WRITE (6,2040)
  659.       KSTEP=KSTEP - 1
  660.       GO TO 190
  661. C
  662.   110 CALL SECOND (TIM15)
  663. C
  664. C
  665. C     FLAGS FOR PRINTING, SAVING NODAL AND ELEMENT RESPONSES
  666. C        KPRI MASTER CONTROL- .EQ.0  STRESS CALCULATIONS
  667. C                             FOR PRINTING OR SAVING PURPOSES ONLY
  668. C        KPLOTN.EQ.0 FOR SAVING NODAL DISP, VEL, ACC VECTORS
  669. C        KPLOTE.EQ.0 FOR SAVING ELEMENT STRESSES
  670. C
  671.       CALL BLKCNT(KSTEP,NODSVB,KPLOTN,INODB,NSTE,4)
  672.       CALL BLKCNT(KSTEP,LEMSVB,KPLOTE,IELMB,NSTE,5)
  673.       KPRI=IPRI
  674.       IF (KPRI.NE.0) KPRI=KPLOTE
  675. C
  676. C     CALCULATE NEW DISP, VEL, ACC VECTORS AT TIME=TSTART + KSTEP*DT
  677. C     FOR STATIC ANALYSIS AND IMPLICIT TIME INTEGRATION AND ALSO DISP
  678. C     VECTOR AT TIME=TSTART + (KSTEP + 1)*DT FOR CENTRAL DIFFERENCE
  679. C     METHOD
  680. C
  681.       CALL NDAVMS
  682. C
  683.       MM=N2
  684.       IF (IOPE.EQ.3) MM=N3
  685.       IF (NDISCE.GT.0)
  686.      1 CALL CONDIS (A(N01),A(N02),A(N03),A(MM),A(N7),A(N8),NIDM,ISTAT)
  687. C
  688. C     UPDATE NORMAL VECTORS IF MID-SURFACE SYSTEMS ARE USED AND
  689. C     MAXMSS IS GREATER THAN 0
  690. C
  691.       IF (IOPE.EQ.3 .OR. MAXMSS.EQ.0) GO TO 159
  692.       IF (NDISCE.GT.0)
  693.      1  CALL CONDIS (A(N01),A(N02),A(N03),A(N3),A(N7),A(N8),NIDM,0)
  694. C
  695.       CALL NORMAL (A(N08),A(N09),A(N010),A(N3),A(N5),NDOF,KNOR)
  696. C
  697.   159 CALL SECOND (TIM16)
  698.       TSUM5=TSUM5 + (TIM16 - TIM15)
  699.       IF (IDVRG.EQ.1) GO TO 160
  700.       IF (IEQUIT.EQ.0) WRITE (6,2060) ITE
  701.       IF (IEQUIT.GT.0) WRITE (6,2050)
  702.       IF (IREF.EQ.0) WRITE(6,2070)
  703.       IF (IREF.NE.0) WRITE(6,2080)
  704.       IF (IPRI.EQ.0) ICPRI=ICPRI+3
  705.   160 CONTINUE
  706. C
  707. C     PRINT DISPLACEMENTS,VELOCITIES AND ACCELERATIONS
  708. C
  709.       NSUB = 0
  710.       CALL WRITE (A(N1),A(N2),A(N7),A(N8),A(N5),IDOF,ISUB,NEQT,NDOF,2)
  711. C
  712.       IF (KPRI.NE.0) GO TO 170
  713.       CALL SECOND (TIM17)
  714.       TSUM5=TSUM5 + (TIM17 - TIM16)
  715. C
  716. C
  717. C     C A L C U L A T I O N   O F   S T R E S S E S
  718. C
  719. C
  720.       CALL STRESS (A(N10),ISUB,NEGL,NEGNL)
  721. C
  722.       CALL SECOND (TIM18)
  723.       TSUM6=TSUM6 + (TIM18 - TIM17)
  724.       KPRI=1
  725. C
  726. C     UPDATE DISPLACEMENT VECTORS, IF CENTRAL DIFFERENCE METHOD IS USED
  727. C
  728.   170 IF (IOPE.EQ.3)
  729.      1   CALL NEWDAV (A(N4),A(N3),A(N5),A(N1),A(N2),A(N3),A(N7),A(N8),
  730.      2               A(N04),A(N05),NEQT,2)
  731. C
  732. C     SHIFT TEMPERATURE ARRAY (IF APPLICABLE)
  733. C
  734.       IF (ITEMPR.LT.2) GO TO 175
  735.       DO 174 I=1,NUMP1
  736.   174 A(N6A+I-1)=A(N6B+I-1)
  737.   175 N6ANN = N6A + ITWO
  738.       IF (ITEMPR.GT.0) CALL WRITEM (A(N6A),A(N6ANN),NUMNP,1)
  739. C
  740. C
  741. C     P R E P A R E   T A P E S   F O R    P O S S I B L E
  742. C                      F U T U R E   R E S T A R T   J O B
  743. C
  744. C
  745. C     FLAG FOR SAVING RESTART INFORMATION
  746. C        IRR.EQ.0 SAVE INFORMATION
  747. C        IRR.GT.0 NO SAVE
  748. C
  749.   180 KRINT=KRINT + 1
  750.       IRR=IRINT - KRINT
  751.       IF (KSTEP.EQ.NSTE) IRR=0
  752.       IF (IRR.GT.0) GO TO 120
  753.       KRINT=0
  754. C
  755.       CALL RSTART (A(N1),A(N2),A(N7),A(N8),A(N10),A(N1C),NEQ,NBLOCK,1)
  756.       IF (NSUBST.EQ.0 .OR. ISTAT.EQ.0) GO TO 120
  757.       ISUB=1
  758.       REWIND NSTAPE
  759.       NEQT=NEQ + NDISCE
  760.       M2=N2 + NEQT*ITWO
  761.       M7=N7 + NEQT*ITWO
  762.       M8=N8 + NEQT*ITWO
  763.       DO 125 NSUB=1,NSUBST
  764.       NN=N07 + 8*(NSUB - 1)
  765.       NEQS=IA(NN)
  766.       READ (NSTAPE) NTUSE
  767.       DO 125 NTU=1,NTUSE
  768.       READ (NSTAPE)
  769.       CALL RSTART (A(N1),A(M2),A(M7),A(M8),A(N10),A(N1C),NEQS,NBLOCK,1)
  770.       M2=M2 + NEQS*ITWO
  771.       M7=M7 + NEQS*ITWO
  772.       M8=M8 + NEQS*ITWO
  773.   125 CONTINUE
  774.       ISUB=0
  775. C
  776. C     SAVE MASTER DISPLACEMENTS ON TAPE15, IF SUBSTRUCTURES ARE USED
  777. C
  778.   120 IF (NSUBST.EQ.0) GO TO 130
  779.       NN=N3 - 1
  780.       WRITE (15) (A(I),I=N2,NN)
  781. C
  782. C
  783.   130 IF (KSTEP.LT.NSTE) GO TO 100
  784. C
  785. C
  786. C     S U B S T R U C T U R E S   R E S P O N S E S
  787. C
  788. C
  789.   190 CALL SECOND (TIM19)
  790.       IF (MODEX.EQ.0) GO TO 191
  791.       IF (NSUBST.EQ.0) GO TO 191
  792.       IND=4
  793.       ISUB=1
  794.       CALL SUBSTR
  795. C
  796. C
  797. C     P R I N T   T I M E   L O G
  798. C
  799.   191 CALL SECOND (TIM20)
  800.       WRITE (6,2090) IHED
  801.       TIM10=TIM2 - TIM1
  802.       TIM10A=TIM3 - TIM2
  803.       TIM11=TIM4 - TIM3
  804.       TIM12=TIM6 - TIM5
  805.       TIM12A=TIM7 - TIM6
  806.       TIM13=TIM8 - TIM7
  807.       TIM14=TIM19 - TIM8
  808.       TIM14A=TIM20 - TIM19
  809.       TIM15=TIM20 - TIM1
  810.       WRITE (6,2100) TIM10,TIM10A,TIM11,TIM12,TIM12A,TIM13
  811.       WRITE (6,2110) KSTEP,TSUM1,TSUM2,TSUM3,TSUM4,TSUM4A,TSUM5,TSUM6,
  812.      1               TIM14,TIM14A,TIM15
  813. C
  814. C        * * * * * *          R A N D O M  A C C E S S        * * * *
  815. C
  816.       IF (KLIN.EQ.0) GO TO 192
  817. C *CDC*      CALL STINDX (2,MITWO,2,0)
  818. C *CDC*      CALL CLOSMS (2)
  819.   192 IF (IOPE.EQ.3) GO TO 195
  820. C *CDC*      CALL STINDX (10,MITEN,2,0)
  821. C *CDC*      CALL CLOSMS (10)
  822. C
  823. C *IBM*   DEACTIVATE ABOVE TWO CARDS FOR IBM MACHINE
  824. C
  825. C        * * * * * *          R A N D O M  A C C E S S        * * * *
  826. C
  827.   195 KSET=KSET+1
  828.       GO TO 200
  829. C
  830. C
  831.  2000 FORMAT (1H1,//////////,21X,92(1H*),/,21X,92(1H*),/,2(21X,2H**,
  832.      1 88X,2H**,/),
  833.      2 21X,2H**,30X,28HA FINITE ELEMENT PROGRAM FOR ,30X,2H**,/,
  834.      1 21X,2H**,20X,48HAUTOMATIC DYNAMIC INCREMENTAL NONLINEAR ANALYSIS,
  835.      2               20X,2H**,/,2(21X,2H**,88X,2H**,/),21X,2H**,9X,
  836.      310(1HA),4X,9(1HD),6X,12(1HI),3X,2HNN,8X,2HNN,4X,10(1HA),9X,2H**,/,
  837.      4 21X,2H**,8X,12(1HA),3X,10(1HD),5X,12(1HI),3X,3HNNN,7X,2HNN,3X,
  838.      5 12(1HA),8X,2H**,/,21X,2H**,8X,2HAA,8X,2HAA,3X,2HDD,7X,2HDD,9X,
  839.      6 2HII,8X,4(1HN),6X,2HNN,3X,2HAA,8X,2HAA,8X,2H**,/,21X,2H**,8X,
  840.      7 2HAA,8X,2HAA,3X,2HDD,8X,2HDD,8X,2HII,8X,2HNN,1X,2HNN,5X,2HNN,3X,
  841.      82HAA,8X,2HAA,8X,2H**,/,21X,2H**,8X,2HAA,8X,2HAA,3X,2HDD,8X,2HDD,
  842.      9 8X,2HII,8X,2HNN,2X,2HNN,4X,2HNN,3X,2HAA,8X,2HAA,8X,2H**,/,21X,2H*
  843.      1*,8X,12(1HA),3X,2HDD,8X,2HDD,8X,2HII,8X,2HNN,3X,2HNN,3X,2HNN,3X,
  844.      2 12(1HA),8X,2H**)
  845.  2005 FORMAT (21X,2H**,8X,12(1HA),3X,2HDD,8X,2HDD,8X,2HII,8X,2HNN,4X,
  846.      12HNN,2X,2HNN,3X,12(1HA),8X,2H**,/,21X,2H**,8X,2HAA,8X,2HAA,3X,2HDD
  847.      2,8X,2HDD,8X,2HII,8X,2HNN,5X,2HNN,1X,2HNN,3X,2HAA,8X,2HAA,8X,2H**,/
  848.      3 ,21X,2H**,8X,2HAA,
  849.      4 8X,2HAA,3X,2HDD,8X,2HDD,8X,2HII,8X,2HNN,6X,4(1HN),3X,2HAA,8X,
  850.      5 2HAA,8X,2H**,/,21X,2H**,8X,2HAA,8X,2HAA,3X,2HDD,7X,2HDD,9X,2HII,
  851.      6 8X,2HNN,7X,3HNNN,3X,2HAA,8X,2HAA,8X,2H**,/,21X,2H**,8X,2HAA,8X,
  852.      7 2HAA,3X,10(1HD),5X,12(1HI),3X,2HNN,8X,2HNN,3X,2HAA,8X,2HAA,8X,
  853.      8 2H**,/,21X,2H**,8X,2HAA,8X,2HAA,3X,9(1HD),6X,12(1HI),3X,2HNN,9X,
  854.      9 1HN,3X,2HAA,8X,2HAA,8X,2H**,/,2(21X,2H**,88X,2H**,/),
  855.      A 21X,2H**,23X,43HREFERENCE- ADINA ENGINEERING REPORT AE 81-1,22X,
  856.      B 2H**,/2(21X,2H**,88X,2H**,/),21X,92(1H*),/21X,92(1H*),///)
  857.  2006 FORMAT (45X,46HTHIS PROGRAM IS IN ITS ENTIRETY PROPRIETARY TO/,
  858.      1        48X,44H   AND IS SUPPORTED AND MAINTAINED BY        //,
  859.      1        51X,31HADINA ENGINEERING AB   (SWEDEN) ,/,
  860.      2        51X,31HADINA ENGINEERING INC  (USA)    ,//,
  861.      3        38X,40HADINA ENGINEERING MAKES NO WARRANTY WHAT ,
  862.      4        21HSOEVER , EXPRESSED OR ,/,
  863.      5        38X,40HIMPLIED, THAT THE PROGRAM AND ITS DOCUME ,
  864.      6        21HNTATION INCLUDING ANY ,/,
  865.      7        38X,40HMODIFICATIONS AND UPDATES ARE FREE FROM  ,
  866.      8        21HERRORS AND DEFECTS.IN ,/,
  867.      9        38X,40HNO EVENT  SHALL  ADINA ENGINEERING  BECO ,
  868.      9        21HME LIABLE TO THE USER )
  869.  2007 FORMAT (38X,40HOR ANY PARTY FOR ANY LOSS , INCLUDING BU ,
  870.      1        21HT NOT LIMITED TO LOSS ,/,
  871.      2        38X,40HOF TIME , MONEY OR GOODWILL , WHICH MAY   ,
  872.      3        21HARISE FROM THE USE OF ,/,
  873.      4        38X,40HTHE PROGRAM AND ITS DOCUMENTATION INCLUD ,
  874.      5        21HING ANY MODIFICATIONS ,/,38X,12HAND UPDATES.    //
  875.      6        21X,20HADINA ENGINEERING AB,51X,21HADINA ENGINEERING INC/
  876.      7        21X,13HMUNKGATAN 20D,58X,15H71 ELTON AVENUE   /
  877.      8        21X,8HS-722 12,63X,9HWATERTOWN                /
  878.      9        21X,16HVASTERAS  SWEDEN,55X,18HMASSACHUSETTS  USA   /
  879.      A        21X,16HTEL 021-14 40 50,55X,18HTEL (617) 926-5199  /
  880.      B        21X,19HTELEX 40630 ADINA S      //)
  881.  2010 FORMAT (////40X,40H *  E N D   O F   D A T A   P R I N T  * )
  882.  2020 FORMAT (1H1,46H P R I N T   O U T   F O R   T I M E   S T E P ,I5,
  883.      1 40X,12H ( AT TIME  ,E10.4,2H ) )
  884.  2025 FORMAT (/84H ( NODAL RESPONSES PRINTED ARE MEASURED IN THE SKEW CO
  885.      1ORDINATE SYSTEM OF EACH NODE )   )
  886.  2030 FORMAT(////41H  D A T A   C H E C K   C O M P L E T E D)
  887.  2040 FORMAT (//// 64H STOP BECAUSE OUT-OF-BALANCE LOADS LARGER THAN INC
  888.      1REMENTAL LOADS )
  889.  2050 FORMAT (/2X,44HNO EQUILIBRIUM ITERATION IN THIS TIME STEP       )
  890.  2060 FORMAT (/1X,I5,79H EQUILIBRIUM ITERATIONS PERFORMED IN THIS TIME
  891.      1STEP TO REESTABLISH EQUILIBRIUM  )
  892.  2070 FORMAT (2X,48HSTIFFNESS REFORMED FOR THIS TIME STEP            )
  893.  2080 FORMAT (2X,42HSTIFFNESS NOT REFORMED FOR THIS TIME STEP         )
  894.  2090 FORMAT (1H1,44H S O L U T I O N   T I M E   L O G (IN SEC) //12X,
  895.      1        11HFOR PROBLEM//1X,18A4////)
  896.  2100 FORMAT (49H INPUT PHASE  . . . . . . . . . . . . . . . . . .F9.2//
  897.      A        49H SUBSTRUCTURES INPUT PHASE. . . . . . . . . . . .F9.2//
  898.      1        49H ASSEMBLAGE OF LINEAR STIFFNESS,EFFECTIVE STIFF-      /
  899.      2        49H NESS,MASS MATRICES AND LOAD VECTORS . . . . . . F9.2//
  900.      3        49H FREQUENCY ANALYSIS . . . . . . . . . . . . . . .F9.2//
  901.      B        49H INITIAL CALCULATIONS FOR MODE SUPERPOSITION        /
  902.      C        49H                      ANALYSIS . . . . . . . . . F9.2//
  903.      4        49H TRIANGULARIZATION OF LINEAR (EFFECTIVE)          /
  904.      +        49H                      STIFFNESS MATRIX  . . . . .F9.2//
  905.      6            )
  906.  2110 FORMAT (
  907.      5        24H STEP-BY-STEP SOLUTION (,I5,12H TIME STEPS)          //
  908.      6        43H    CALCULATION OF EFFECTIVE LOAD VECTORS .      ,F9.2/
  909.      7        43H    UPDATING EFFECTIVE STIFFNESS MATRICES             /
  910.      8        43H      AND LOAD VECTORS FOR NONLINEARITIES .      ,F9.2/
  911.      9        43H    SOLUTION OF EQUATIONS . . . . . . . . .      ,F9.2/
  912.      A        43H    EQUILIBRIUM ITERATIONS  . . . . . . . .      ,F9.2/
  913.      +        43H    DIVERGENCE PROCEDURE  . . . . . . . . .      ,F9.2/
  914.      B        43H    CALCULATION AND PRINTING OF DISPLACE-             /
  915.      C        43H      MENTS, VELOCITIES, AND ACCELERATIONS       ,F9.2/
  916.      D        43H    CALCULATION AND PRINTING OF STRESSES  .      F9.2//
  917.      E        49H                               STEP-BY-STEP TOTALF9.2//
  918.      F        49H CALCULATION AND PRINTING OF SUBSTRUCTURE            /
  919.      G        16X,33H INTERNAL RESPONSES . . . . . . .,F9.2/////,
  920.      F        49H T O T A L   S O L U T I O N   T I M E (SEC). . .,F9.2)
  921.  2290 FORMAT (//15H  STEP NUMBER =,I5,5X,12H ( AT TIME  ,E10.4,2H )  )
  922.  2300 FORMAT (////69H TIMING INFORMATION FOR THE SOLUTION OF EQUATIONS F
  923.      1OR THE FIRST STEP ,//45H  TIME AT ENTERING THE EQUATION SOLVER
  924.      2  =, F10.2)
  925.  2310 FORMAT (45H  TIME AT THE END OF SOLUTION OF EQUATIONS  =,F10.2)
  926.  2320 FORMAT (//39H CONDITIONING OF THE COEFFICIENT MATRIX,//,
  927.      154H LARGEST ELEMENT OF THE UNFACTORED STIFFNESS MATRIX  =,E15.5/,
  928.      254H SMALLEST ELEMENT OF THE UNFACTORED STIFFNESS MATRIX =,E15.5/,
  929.      354H LARGEST DIAGONAL ELEMENT OF THE FACTORIZED MATRIX   =,E15.5/,
  930.      454H SMALLEST DIAGONAL ELEMENT OF THE FACTORIZED MATRIX  =,E15.5//)
  931.  2330 FORMAT (///38H *** STRUCTURAL MODEL IS UNSTABLE *** //
  932.      1           38H RATIO OF LARGEST TO SMALLEST DIAGONAL  ,
  933.      2           50H ELEMENTS IN FACTORIZED STIFFNESS MATRIX GT 1.E+11/)
  934.       END
  935. C *UNI* )FOR,IS N.SECOND,R.SECOND
  936.       SUBROUTINE SECOND (TIM)
  937.       IMPLICIT REAL*8 (A-H,O-Z)
  938. C
  939. C     CALL TIMING (TIM)
  940.       RETURN
  941.       END
  942. C ***** OVL00
  943. C *CDC* *DECK SHTADV
  944. C *UNI* )FOR,IS N.SHTADV, R.SHTADV
  945.       SUBROUTINE SHTADV (A,B,C,AA,NN,IIND)
  946. C
  947. C     IIND.EQ.1     SUBROUTINE CALCULATES  A = B - C
  948. C     IIND.EQ.2     SUBROUTINE CALCULATES  A = B + C
  949. C     IIND.EQ.3     SUBROUTINE CALCULATES  A = A - B*C*AA
  950. C
  951.       IMPLICIT REAL*8 (A-H,O-Z)
  952.       DIMENSION A(1),B(1),C(1)
  953. C
  954.       GO TO (5,15,25),IIND
  955. C
  956.     5 DO 10 I=1,NN
  957.    10 A(I)=B(I) - C(I)
  958.       RETURN
  959. C
  960.    15 DO 20 I=1,NN
  961.    20 A(I)=B(I) + C(I)
  962.       RETURN
  963. C
  964.    25 DO 30 I=1,NN
  965.    30 A(I)=A(I) - B(I)*C(I)*AA
  966.       RETURN
  967. C
  968.       END
  969. C *CDC* *DECK SUBSTR
  970. C *UNI* )FOR,IS N.SUBSTR, R.SUBSTR
  971.       SUBROUTINE SUBSTR
  972. C
  973. C . . . . . . . . . . . . . .  . . .   . . . . . . . . . .  . . . . . .
  974. C .                                                                   .
  975. C .      . PROGRAM                                                    .
  976. C .          TO PERFORM SUBSTRUCTURE ANALYSIS                        .
  977. C .                                                                   .
  978. C .      IND=0, READ NODAL/ELEMENT DATA                               .
  979. C .             CHECK FOR HIGH SPEED STORAGE AVAILABILITY             .
  980. C .             MODIFY COLUMN HEIGHTS OF MASTER NODES                 .
  981. C .                                                                   .
  982. C .      IND=1, ASSEMBLE LINEAR MATRICES FOR SUBSTRUCTURES            .
  983. C .             MODIFY MASTER STIFFNESS MATRIX                        .
  984. C .                                                                   .
  985. C .      IND=2, ASSEMBLE SUBSTRUCTURE LOAD VECTORS                    .
  986. C .             MODIFY MASTER LOADS                                   .
  987. C .                                                                   .
  988. C .      IND=4, CALCULATE DISPLACEMENTS AT CONDENSED DOF              .
  989. C .             CALCULATE AND PRINT-OUT STRESSES                      .
  990. C .                                                                   .
  991. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  992. C
  993.       IMPLICIT REAL*8 (A-H,O-Z)
  994. C
  995.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  996.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  997.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  998.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  999.       COMMON /DIMN/ N3A,N4A,N4B,N4C
  1000.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  1001.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  1002.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  1003.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  1004.       COMMON /SUBSTF/ NREC16
  1005.       COMMON /SLOA/ N09C,ITMFN,ICOORD,NUSE
  1006.       COMMON /TIMFN/ TEND,NTFN,NPTM
  1007.       COMMON /FREQIF/ ISTOH,N1A,N1B,N1C,N1S
  1008.       COMMON /STORES/ MXTMPS,MDVAS,MXSTHS,MXNEQS,MXBLCS,MXNN1
  1009.       COMMON /RANDI/ N0A,N1D,IELCPL
  1010.       COMMON /TEMPRT/ TEMP1,TEMP2,ITEMPR,ITP96,N6A,N6B
  1011.       COMMON /ADDB/ NEQL,NEQR,MLA,NBLOCK
  1012.       COMMON /ELGLTH/ NFIRST,NLAST,NBCEL
  1013.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  1014.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  1015.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  1016.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  1017.       COMMON /ELSTP/ TIME,IDTHF
  1018.       COMMON /ADINAI/ OPVAR(7),TSTART,IRINT,ISTOTE
  1019.       COMMON /SKEW/ NSKEWS
  1020.       COMMON /DISCON/ NDISCE,NIDM
  1021.       COMMON /MDFRDM/ IDOF(6)
  1022.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  1023.       COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
  1024.      1             NPDIS,NTEMP
  1025.       COMMON /MIDSYS/ NMIDSS,MIDIND,MAXMSS
  1026.       COMMON /LOACHK/ LSC
  1027.       COMMON /DPR/ ITWO
  1028.       COMMON /RANDAC/ NR(5),LR(5)
  1029.       COMMON /SRANDI/ N09A,N09B
  1030.       COMMON /PRGCON/ ICPRI,NTU
  1031.       COMMON /BLOCKS/ NSREFB,NEQITB,NPRIB,NODSVB,LEMSVB,ISREFB(3,10),
  1032.      1                IEQITB(3,10),IPRIB(3,10),INODB(3,10),IELMB(3,10)
  1033. C
  1034.       COMMON A(1)
  1035.       REAL A
  1036.       INTEGER IA(1)
  1037.       EQUIVALENCE (A(1),IA(1))
  1038. C
  1039.       DATA ICASE / 0 /
  1040. C
  1041.       IF (IND.NE.0) GO TO 400
  1042. C
  1043.       IF (ICASE.NE.0) GO TO 5
  1044.       ICASE=1
  1045.       NR(3)=190
  1046.       NR(4)=190
  1047.       LR(3)=3000
  1048.       LR(4)=3000
  1049.       DEFINE FILE 16 (190,3000,U,IDUM)
  1050.       DEFINE FILE 17 (190,3000,U,NDUM)
  1051.     5 CONTINUE
  1052. C
  1053.       REWIND NSTAPE
  1054. C
  1055. C     SHIFT MASTER STRUCTURE COLUMN HEIGHTS INTO A LOWER STORAGE
  1056. C
  1057.       N09A=N1
  1058.       N09B=N09A + NDOF*NUMNP
  1059.       N1=N09B + NEQ
  1060.       DO 10 I=1,NEQ
  1061.    10 IA(N09B+I-1)=IA(N5+I-1)
  1062. C
  1063.       MAXES=0
  1064.       KRSIZM=0
  1065. C
  1066. C     SAVE SOME MASTER CONTROL INFORMATION
  1067. C
  1068.       CALL LOADSV (ILOA,NLOADS,NPR2S,NPR3S,NPBMS,NP3DBS,NPPLS,NPSHS,
  1069.      1             NODE3S,1)
  1070.       IGTEMP=ITEMPR
  1071.       NI=NBCEL
  1072.       MAXMST=MAXMSS
  1073.       NBLOCT=0
  1074. C
  1075. C
  1076. C     I N P U T   P H A S E
  1077. C
  1078. C
  1079.       IF (IDATWR.LE.1) WRITE (6,2000)
  1080.       DO 300 NSUB=1,NSUBST
  1081.       NBCEL=0
  1082.       MAXMSS=0
  1083.       MIDIND=0
  1084. C
  1085. C     CALL ADINI TO READ/GENERATE DATA FOR EACH SUBSTRUCTURE
  1086. C
  1087. C *CDC*      CALL OVERLAY (5HADINA,1,0,6HRECALL)
  1088.       CALL ADINI
  1089. C
  1090. C     CLEAR ARRAY FOR CALCULATION OF SUBSTRUCTURE COLUMN HEIGHTS
  1091. C
  1092.       NN=N5 + NEQS - 1
  1093.       DO 20 I=N5,NN
  1094.    20 IA(I)=0
  1095.       N6=N5 + NEQS
  1096.       N08=N1B
  1097.       N09=N1C
  1098. C
  1099. C     READ ELEMENT GROUPS DATA
  1100. C
  1101.       CALL ELCAL (NEGLS,NEGNLS,MAXES,ISUB)
  1102. C
  1103. C     COMPUTE MAXA ARRAY
  1104. C
  1105.       N09C=N1
  1106.       N1=N09C + NDOFS*NUMNPS
  1107.       IF (IOPE.NE.3) CALL ADDRES (A(N1),A(N5),NEQS,NWKS,MAS)
  1108. C
  1109. C     TEST FOR AVAILABILITY OF HIGH SPEED STORAGE AND CALCULATE
  1110. C     MAXIMUM BLOCKSIZE, NUMBER OF BLOCKS AND BLOCK COUPLING
  1111. C
  1112.       LSC=0
  1113.       NDISCE=0
  1114.       CALL STORE (NUMNPS,NDOFS,NEQS,NWKS,MAS,NEGNLS,MAXES,NBLOCS,
  1115.      1            ISTOHS,1)
  1116. C
  1117.       NN=N07 + 8*(NSUB - 1)
  1118.       IA(NN  )=NEQS
  1119.       IA(NN+1)=NWKS
  1120.       IA(NN+2)=MAXES
  1121.       IA(NN+3)=NBCEL
  1122.       IA(NN+4)=NBLOCS
  1123.       IA(NN+5)=ISTOHS
  1124.       IA(NN+6)=NEQC
  1125.       IA(NN+7)=NTUSE
  1126. C
  1127. C     IN A DYNAMIC ANALYSIS, CALCULATE STORAGE NEEDS
  1128. C
  1129.       IF (ISTAT.EQ.0) GO TO 80
  1130.       IF (NEQS.GT.MXNEQS) MXNEQS=NEQS
  1131.       MDVAS=MDVAS + NEQS*NTUSE
  1132.       MTMPS=NEQS + 1 + NBLOCS + NBLOCS
  1133.       IF (MTMPS.GT.MXTMPS) MXTMPS=MTMPS
  1134.       IF (ISTOHS.GT.MXSTHS) MXSTHS=ISTOHS
  1135.       IF (NBLOCS.GT.MXBLCS) MXBLCS=NBLOCS
  1136.       NN1=NDOFS*NUMNPS
  1137.       IF (NN1.GT.MXNN1 .AND. IPRIC.NE.0) MXNN1=NN1
  1138.    80 CONTINUE
  1139.       NBLOCT=NBLOCT + NBLOCS + 1
  1140.       NN=N1C - 1
  1141.       WRITE (NSTAPE) NTUSE,NEGLS,NUMNPS,NODCON,NODRET,(IDOFS(I),I=1,6),
  1142.      1               NDOFS,(IA(I),I=N1,NN)
  1143. C
  1144. C     READ CONNECTIVITY ARRAYS
  1145. C
  1146.       M1=N09C
  1147.       M2=M1 + NDOFS*NUMNPS
  1148.       M3=M2 + NODRET
  1149.       M4=M3 + NODRET*NDOF
  1150. C
  1151.       DO 100 M=1,NTUSE
  1152. C
  1153.       CALL MODMHT (M,A(N09A),A(N09B),A(M1),A(M2),A(M3),NDOF,NDOFS,NUMNP)
  1154. C
  1155.   100 CONTINUE
  1156. C
  1157.   300 CONTINUE
  1158. C
  1159. C     REINSTATE MASTER LOAD CONTROL INFORMATION
  1160. C
  1161.       CALL LOADSV (ILOA,NLOADS,NPR2S,NPR3S,NPBMS,NP3DBS,NPPLS,NPSHS,
  1162.      1             NODE3S,3)
  1163. C
  1164. C     RESET ADDRESS OF MASTER STRUCTURE COLUMN HEIGHTS
  1165. C
  1166.       N1=N09A
  1167.       N5=N09B
  1168.       NBCEL=NI
  1169.       ITEMPR=IGTEMP
  1170.       MAXMSS=MAXMST
  1171.       MIDIND=MAXMST
  1172.       N08=N07 + 8*NSUBST
  1173.       N09=N08 + MIDIND
  1174. C
  1175.       RETURN
  1176. C
  1177.   400 IF (IND - 2) 410,500,600
  1178. C
  1179. C
  1180. C     A S S E M B L A G E   O F   S T I F F N E S S   M A T R I C E S
  1181. C
  1182. C
  1183.   410 NN=N2 - 1
  1184.       WRITE (NSTAPE) (IA(I),I=N1,NN)
  1185.       REWIND NSTAPE
  1186. C
  1187. C     * * * * *    R A N D O M   A C C E S S      * * *
  1188. C
  1189.       NBLOC1=NBLOCT + 1
  1190.       N09A=N1
  1191.       N1=N09A + NBLOC1
  1192. C *CDC*      CALL OPENMS (16,IDUM,1,0)
  1193. C *IBM*     DEACTIVATE THE ABOVE 1 CARD FOR  IBM
  1194.       DO 412 I=1,NBLOC1
  1195.       J=N09A + I - 1
  1196.   412 IA(J)=0
  1197. C *CDC*      CALL STINDX (16,IA(N09A),NBLOC1,0)
  1198. C
  1199. C *IBM*      DEACTIVATE THE ABOVE CARD FOR  IBM
  1200. C
  1201. C     * * * * *    R A N D O M   A C C E S S      * * *
  1202. C
  1203.       REWIND 1
  1204.       IF (NEGL.EQ.0) GO TO 425
  1205.       DO 420 I=1,NEGL
  1206.   420 READ (1)
  1207.   425 NREC16=0
  1208. C
  1209.       REWIND 11
  1210.       REWIND 18
  1211.       REWIND 23
  1212.       READ (23)
  1213.       READ (23)
  1214.       DO 450 NSUB=1,NSUBST
  1215. C
  1216.       NN=N07 + 8*(NSUB - 1)
  1217.       NEQS=IA(NN)
  1218.       NWKS=IA(NN + 1)
  1219.       MAXES=IA(NN + 2)
  1220.       NBCEL=IA(NN + 3)
  1221.       NBLOCS=IA(NN + 4)
  1222.       ISTOHS=IA(NN + 5)
  1223.       NEQC=IA(NN + 6)
  1224. C
  1225.       N1A=N1 + NEQS + 1
  1226.       N1B=N1A + NBLOCS
  1227.       N1C=N1B + NBLOCS
  1228.       N1D=N1C
  1229.       N2=N1D
  1230.       N3=N2 + ISTOHS*ITWO
  1231.       N4=N3 + ISTOHS*ITWO
  1232.       IF (NBLOCS.EQ.1 .AND. IMASS.LT.2) N4=N3
  1233.       N5=N4 + NEQS*ITWO
  1234.       IF (ISTAT.EQ.0) N5=N4 + NEQC*ITWO
  1235.       N6=N5 + NEQS*ITWO
  1236.       IF (ISTAT.EQ.0) N6=N5
  1237.       N7=N6 + MAXES + NBCEL
  1238.       CALL SIZE (N7)
  1239. C
  1240.       NN=N1C - 1
  1241.       READ (NSTAPE) NTUSE,NEGLS,NUMNPS,NODCON,NODRET,(IDOFS(I),I=1,6),
  1242.      1              NDOFS,(IA(I),I=N1,NN)
  1243. C
  1244. C     ENTIRE SUBSTRUCTURE STIFFNESS MATRIX IS TEMPORARILY WRITTEN ONTO
  1245. C     TAPE 12
  1246. C
  1247.       CALL ASSEM (A(N1),A(N2),A(N3),A(N4),A(N5),A(N5),A(N6),A(N1A),
  1248.      1            A(N4),A(N1C),A(N6),A(N04),A(N05),ISTOHS,NBLOCS)
  1249.       IND=1
  1250. C
  1251. C     REDUCE STIFFNESS MATRIX. L, D FACTORS ARE WRITTEN ONTO TAPE16.
  1252. C
  1253.       CALL COLSOL (A(N1),A(N1A),A(N1B),A(N2),A(N3),A(N4),A(N4),A(N04),
  1254.      1             NEQS,NBLOCS,ISTOHS,12,16,1)
  1255. C
  1256. C     * * * * *    R A N D O M   A C C E S S      * * *
  1257. C
  1258.       NREC16=NREC16 + NBLOCS + 1
  1259.       CALL WRITMS (16,A(N4),NEQC,NREC16,-1)
  1260. C
  1261. C     * * * * *    R A N D O M   A C C E S S      * * *
  1262. C
  1263.       NRD=NEQS - NEQC
  1264.       KRSIZE=NRD*(NRD + 1)/2
  1265.       N3=N2 + KRSIZE*ITWO
  1266. C
  1267.       CALL SUBSKR (A(N2),A(N3),A(N3),A(N3),A(N1),A(N1A),ISTOHS,NBLOCS,
  1268.      1             NREC16,NREC17,KRSIZE,NEQ)
  1269. C
  1270.   450 CONTINUE
  1271. C
  1272.       IF (ISTAT.GT.0) GO TO 460
  1273.       READ (NSTAPE)
  1274.       NN=N1 - 1
  1275.       WRITE (NSTAPE) (IA(I),I=N09A,NN)
  1276.       BACKSPACE NSTAPE
  1277.       BACKSPACE NSTAPE
  1278. C
  1279.       N1=N09A
  1280.   460 N1A=N1 + NEQ + 1
  1281.       N1B=N1A + NBLOCK
  1282.       N1C=N1B + NBLOCK
  1283.       N1D=N1C + NBLOCK*NEGNL
  1284.       IF (NBLOCK.EQ.1) N1D=N1C
  1285.       N1S=N1D + (IEIG + 1)*NBLOCK + 1
  1286.       N2=N1S + MXTMPS
  1287.       NN=N1S - 1
  1288.       READ (NSTAPE) (IA(I),I=N1,NN)
  1289.       CALL STORE (NUMNP,NDOF,NEQ,NWK,MA,NEGNL,MAXEST,NBLOCK,ISTOH,1)
  1290. C
  1291.       RETURN
  1292. C
  1293. C
  1294. C     L O A D   V E C T O R   C A L C U L A T I O N
  1295. C
  1296. C
  1297.   500 NN=N2 - 1
  1298.       IF (MODEX.GT.0 .AND. ISTAT.EQ.0) READ (NSTAPE)
  1299.       IF (ISTAT.GT.0) BACKSPACE NSTAPE
  1300.       WRITE (NSTAPE) (IA(I),I=N1,NN)
  1301.       BACKSPACE NSTAPE
  1302. C
  1303. C     ALLOCATE STORAGE FOR READING IN TIME FUNCTIONS, RANDOM ACCESS
  1304. C     INFORMATIONS FOR TAPE16, TAPE17
  1305. C
  1306.       IF (ISTAT.EQ.0) N09A=N1
  1307.       NBLOC1=NBLOCT + 1
  1308.       N09B=N09A + NBLOC1
  1309.       IF (MODEX.EQ.0) GO TO 505
  1310.       IF (ISTAT.GT.0) GO TO 505
  1311.       NN=N09B - 1
  1312.       BACKSPACE NSTAPE
  1313.       READ (NSTAPE) (IA(I),I=N09A,NN)
  1314.   505 REWIND NSTAPE
  1315. C
  1316.       NREC17=0
  1317.       DO 510 NSUB=1,NSUBST
  1318.       NN=N07 + 8*(NSUB - 1) + 7
  1319.       NTUSE=IA(NN)
  1320.   510 NREC17=NREC17 + NTUSE
  1321.       NREC17=NREC17*NSTE + NSTE + 1
  1322.       N09C=N09B + NREC17
  1323.       IF (MODEX.EQ.0) GO TO 515
  1324. C
  1325. C     * * * * *    R A N D O M   A C C E S S      * * *
  1326. C
  1327. C *CDC*      CALL OPENMS (17,NDUM,1,0)
  1328. C            DEACTIVATE THE ABOVE CARD FOR  IBM
  1329.       DO 512 I=1,NREC17
  1330.       J=N09B + I - 1
  1331.   512 IA(J)=0
  1332. C *CDC*      CALL STINDX (17,IA(N09B),NREC17,0)
  1333. C            DEACTIVATE THE ABOVE CARD FOR  IBM
  1334. C
  1335. C     * * * * *    R A N D O M   A C C E S S      * * *
  1336. C
  1337.   515 N1=N09C + NTFN*(NSTE + 1 + 2*NPTM)*ITWO + NTFN
  1338. C
  1339.       NREC16=0
  1340.       ITMFN=0
  1341. C
  1342. C     ASSEMBLE SUBSTRUCTURE LOAD VECTORS AND ADD TO MASTER LOADS
  1343. C
  1344.       DO 550 NSUB=1,NSUBST
  1345.       ICOORD=0
  1346. C
  1347.       NN=N07 + 8*(NSUB - 1)
  1348.       NEQS=IA(NN)
  1349.       NWKS=IA(NN + 1)
  1350.       MAXES=IA(NN + 2)
  1351.       NBCEL=IA(NN + 3)
  1352.       NBLOCS=IA(NN + 4)
  1353.       ISTOHS=IA(NN + 5)
  1354.       NEQC=IA(NN + 6)
  1355. C
  1356.       N1A=N1 + NEQS + 1
  1357.       N1B=N1A + NBLOCS
  1358.       N1C=N1B + NBLOCS
  1359.       N1D=N1C
  1360.       N2=N1D
  1361.       N3=N2 + ISTOHS*ITWO
  1362.       N4=N3 + NEQS*ITWO
  1363.       N5=N4 + NEQ*ITWO
  1364.       N6=N5 + NODRET*NDOF
  1365.       NN=N1C - 1
  1366.       READ (NSTAPE) NTUSE,NEGLS,NUMNPS,NODCON,NODRET,(IDOFS(I),I=1,6),
  1367.      1              NDOFS,(IA(I),I=N1,NN)
  1368. C
  1369.       KRSIZE=NEQS
  1370.       CALL SUBSKR (A(N3),A(N2),A(N4),A(N5),A(N1),A(N1A),ISTOHS,NBLOCS,
  1371.      1             NREC16,NREC17,KRSIZE,NEQ)
  1372. C
  1373.       NREC16=NREC16 + NBLOCS + 1
  1374.   550 CONTINUE
  1375. C
  1376.       IF (MODEX.EQ.0) GO TO 560
  1377.       IF (ISTAT.GT.0) GO TO 560
  1378.       READ (NSTAPE)
  1379.       READ (NSTAPE)
  1380.       READ (NSTAPE)
  1381.       NN=N09C - 1
  1382.       WRITE (NSTAPE) (IA(I),I=N09B,NN)
  1383.       BACKSPACE NSTAPE
  1384.       BACKSPACE NSTAPE
  1385. C
  1386.   560 N1=N09A
  1387.       IF (ISTAT.GT.0) N1=N09C
  1388.       N1A=N1 + NEQ + 1
  1389.       N1B=N1A + NBLOCK
  1390.       N1C=N1B + NBLOCK
  1391.       N1D=N1C + NBLOCK*NEGNL
  1392.       IF (NBLOCK.EQ.1) N1D=N1C
  1393.       N1S=N1D + (IEIG + 1)*NBLOCK + 1
  1394.       N2=N1S + MXTMPS
  1395.       NN=N2 - 1
  1396.       READ (NSTAPE) (IA(I),I=N1,NN)
  1397. C
  1398. C     CHANGE STARTING LOCATION OF INDEX ARRAY FOR
  1399. C     TAPE 10 SINCE N1D HAS BEEN CHANGED
  1400. C
  1401. C
  1402. C   * * * * *    R A N D O M   A C C E S S   * * *
  1403. C
  1404.       IF (IOPE.EQ.3) GO TO 575
  1405.       NBLOC1=(IEIG + 1)*NBLOCK + 1
  1406. C *CDC*      CALL STINDX (10,IA(N1D),NBLOC1,0)
  1407. C            DEACTIVATE THE ABOVE CARD FOR  IBM
  1408. C
  1409. C   * * * * *    R A N D O M   A C C E S S   * * *
  1410. C
  1411.   575 CONTINUE
  1412. C
  1413.       RETURN
  1414. C
  1415. C
  1416. C     T I M E   I N T E G R A T I O N   F O R   S U B S T R U C T U R E
  1417. C
  1418. C
  1419.   600 IF (NSTE.EQ.0) GO TO 900
  1420.       IF (KSTEP.EQ.0) GO TO 900
  1421.       IND=4
  1422.       ICOUNT=2
  1423.       ITE=0
  1424.       KLINSV=KLIN
  1425.       KLIN=0
  1426.       ITEMPR=0
  1427.       ITP96=0
  1428.       IEQREF=0
  1429.       NPDIS=0
  1430.       NDISCE=0
  1431.       NMIDSS=0
  1432.       MIDIND=0
  1433.       MAXMSS=MIDIND
  1434.       NEGNLS=0
  1435.       NSTET=KSTEP
  1436. C
  1437. C
  1438. C     FOR STATIC ANALYSIS CALCULATE INTERNAL DISPLACEMENTS
  1439. C
  1440. C
  1441.       IF (ISTAT.GT.0) GO TO 856
  1442. C
  1443. C     TRANSFER MASTER DISPLACEMENTS FROM TAPE15 TO TAPE3
  1444. C
  1445.       NT=15
  1446.       DO 630 K=1,NSTET
  1447.   630 BACKSPACE NT
  1448.       REWIND 3
  1449.       NN=N1 + (NEQ+ILOA(12))*ITWO - 1
  1450.       DO 635 K=1,NSTET
  1451.       READ (NT) (A(I),I=N1,NN)
  1452.       WRITE (3) (A(I),I=N1,NN)
  1453.   635 CONTINUE
  1454. C
  1455.       IF (ISTAT.EQ.0) N09A=N1
  1456.       NBLOC1=NBLOCT + 1
  1457.       N09B=N09A + NBLOC1
  1458.       NN=N09B - 1
  1459.       BACKSPACE NSTAPE
  1460.       BACKSPACE NSTAPE
  1461.       READ (NSTAPE) (IA(I),I=N09A,NN)
  1462.       READ (NSTAPE)
  1463. C
  1464.       NREC17=0
  1465.       DO 610 NSUB=1,NSUBST
  1466.       NN=N07 + 8*(NSUB - 1) + 7
  1467.       NTUSE=IA(NN)
  1468.   610 NREC17=NREC17 + NTUSE
  1469.       NREC17=NREC17*NSTE + NSTE + 1
  1470.       N09C=N09B + NREC17
  1471.       NN=N09C - 1
  1472.       READ (NSTAPE) (IA(I),I=N09B,NN)
  1473.       REWIND NSTAPE
  1474.       REWIND 23
  1475.       NREC16=0
  1476.       NREC17=NSTE
  1477.       N1=N09C
  1478. C
  1479.       IMASS=0
  1480.       IVC=0
  1481.       IAC=0
  1482. C
  1483. C     RESPONSE OF INDIVIDUAL SUBSTRUCTURES
  1484. C
  1485.       DO 850 NSUB=1,NSUBST
  1486. C
  1487.       NN=N07 + 8*(NSUB - 1)
  1488.       NEQS=IA(NN)
  1489.       NWKS=IA(NN + 1)
  1490.       MAXES=IA(NN + 2)
  1491.       NBCEL=IA(NN + 3)
  1492.       NBLOCS=IA(NN + 4)
  1493.       ISTOHS=IA(NN + 5)
  1494.       NEQC=IA(NN + 6)
  1495. C
  1496.       N1A=N1 + NEQS + 1
  1497.       N1B=N1A + NBLOCS
  1498.       N1C=N1B + NBLOCS
  1499.       N1D=N1C
  1500.       N2=N1D
  1501.       NN=N1C - 1
  1502.       READ (NSTAPE) NTUSE,NEGLS,NUMNPS,NODCON,NODRET,(IDOFS(I),I=1,6),
  1503.      1              NDOFS,(IA(I),I=N1,NN)
  1504. C
  1505. C     STORAGE CALCULATIONS
  1506. C
  1507.       CALL STORE (NUMNPS,NDOFS,NEQS,NWKS,MAS,NEGNLS,MAXES,NBLOCS,
  1508.      1            ISTOHS,2)
  1509. C
  1510. C     READ L AND D FACTORS OF STIFFNESS MATRIX INTO CORE
  1511. C
  1512.       IF (NBLOCS.NE.1) GO TO 645
  1513. C
  1514. C     * * * * *    R A N D O M   A C C E S S      * * *
  1515. C
  1516.       KK=NREC16 + 1
  1517.       CALL READMS (16,A(N4),ISTOHS,KK)
  1518. C
  1519.   645 KK=NREC16 + NBLOCS + 1
  1520.       CALL READMS (16,A(N4B),NEQC,KK)
  1521. C
  1522. C     * * * * *    R A N D O M   A C C E S S      * * *
  1523. C
  1524. C     RESPONSE OF REPEATED SUBSTRUCTURES
  1525. C
  1526.       DO 800 M=1,NTUSE
  1527. C
  1528.       KSTEP=0
  1529.       TIME=TSTART
  1530.       TIMEP=TSTART
  1531.       REWIND 3
  1532. C
  1533. C
  1534. C     T I M E   S T E P   I N C R E M E N T A T I O N
  1535. C
  1536. C        KSTEP .EQ. STEP COUNTER
  1537. C        TIME .EQ. TIME AT WHICH SOLUTION IS REQUIRED
  1538. C
  1539. C
  1540.   700 KSTEP=KSTEP + 1
  1541.       TIMEP=TIME + DTA
  1542.       TIME=TIME + DT
  1543. C
  1544. C     READ MASTER DISPLACEMENTS FROM TAPE15
  1545. C
  1546.       NN=N4 - 1
  1547.       READ (3) (A(I),I=N3,NN)
  1548.       NREC17=NREC17 + 1
  1549. C
  1550. C     EXTRACT DISP AT RETAINED DOF FROM MASTER DOF DISPLACEMENTS
  1551. C
  1552.       KRSIZE=NEQS
  1553.       CALL SUBSKR (A(N2),A(N4),A(N3),A(N6),A(N1),A(N1A),ISTOHS,NBLOCS,
  1554.      1             NREC16,NREC17,KRSIZE,NEQ)
  1555. C
  1556. C
  1557. C     CALCULATE INTERNAL DISPLACEMENTS
  1558. C
  1559.   701 CALL COLSOL (A(N1),A(N1A),A(N1B),A(N4),A(N4A),A(N4B),A(N2),
  1560.      1             A(N04),NEQS,NBLOCS,ISTOHS,12,16,3)
  1561.       CALL WRITMS (17,A(N2),NEQS,NREC17,-1)
  1562.   750 IF (KSTEP.LT.NSTET) GO TO 700
  1563. C
  1564.       IF (NSTET.EQ.NSTE) GO TO 800
  1565.       NREC17=NREC17 + NSTE - NSTET
  1566. C
  1567.   800 CONTINUE
  1568. C
  1569.       NREC16=NREC16 + NBLOCS + 1
  1570. C
  1571.   850 CONTINUE
  1572. C
  1573. C     WRITE DISPLACEMENTS ON TAPE 23
  1574. C
  1575.       DO 855 KSTEP=1,NSTET
  1576.       NREC17=KSTEP
  1577.       DO 855 NSUB=1,NSUBST
  1578.       NN=N07 + 8*(NSUB - 1)
  1579.       NEQS=IA(NN)
  1580.       NTUSE=IA(NN+7)
  1581.       DO 855 M=1,NTUSE
  1582.       NREC17=NREC17 + NSTE
  1583.       CALL READMS (17,A(N2),NEQS,NREC17)
  1584.       NN=N2 + NEQS*ITWO - 1
  1585.   855 WRITE (23) (A(I),I=N2,NN)
  1586. C
  1587.   856 REWIND 23
  1588.       TIME=TSTART
  1589.       TIMEP=TSTART
  1590.       KSTEP=0
  1591.   860 KSTEP=KSTEP + 1
  1592.       REWIND NSTAPE
  1593. C
  1594. C     POSITION TAPE1 CONTAINING SUBSTRUCTURE ELEMENT GROUP DATA
  1595. C
  1596.       REWIND 1
  1597.       IF (NEGL.EQ.0) GO TO 864
  1598.       DO 863 I=1,NEGL
  1599.   863 READ (1)
  1600.   864 REWIND 15
  1601.       DO 865 I=1,NTFN
  1602.   865 READ (15)
  1603.       TIMEP=TIMEP + DTA
  1604.       TIME=TIME + DT
  1605. C
  1606. C     FLAGS FOR SAVING NODAL AND ELEMENT RESPONSES
  1607. C
  1608. C     KPLOTN.EQ.0  FOR SAVING NODAL DISP, VEL, ACC VECTORS
  1609. C     KPLOTE.EQ.0  FOR SAVING ELEMENT RESPONSES
  1610. C
  1611.       CALL BLKCNT (KSTEP,NODSVB,KPLOTN,INODB,NSTE,4)
  1612.       CALL BLKCNT (KSTEP,LEMSVB,KPLOTE,IELMB,NSTE,5)
  1613. C
  1614.       DO 885 NSUB=1,NSUBST
  1615.       NN=N07 + 8*(NSUB - 1)
  1616.       NEQS=IA(NN)
  1617.       NWKS=IA(NN + 1)
  1618.       MAXES=IA(NN + 2)
  1619.       NBCEL=IA(NN + 3)
  1620.       NBLOCS=IA(NN + 4)
  1621.       ISTOHS=IA(NN + 5)
  1622.       NEQC=IA(NN + 6)
  1623.       IREAD=0
  1624.       READ (NSTAPE) NTUSE,NEGLS,NUMNPS,NODCON,NODRET,(IDOFS(I),I=1,6),
  1625.      1              NDOFS
  1626.       N2=N1
  1627. C
  1628. C     STORAGE CALCULATIONS
  1629. C
  1630.       CALL STORE (NUMNPS,NDOFS,NEQS,NWKS,MAS,NEGNLS,MAXES,NBLOCS,
  1631.      1            0,2)
  1632.       NN=N5 + NDOFS*NUMNPS - 1
  1633.       READ (15) (IA(I),I=N5,NN)
  1634.       READ (15)
  1635.       READ (15)
  1636.       READ (15)
  1637.       DO 880 M=1,NTUSE
  1638. C
  1639. C     READ SUBSTRUCTURE DISPLACEMENTS,VELOCITIES,ACCELERATIONS
  1640. C
  1641.       NN=N2 + NEQS*ITWO - 1
  1642.       READ (23) (A(I),I=N2,NN)
  1643.       IF (ISTAT.EQ.0) GO TO 866
  1644.       NN=N7 + NEQS*ITWO - 1
  1645.       READ (23) (A(I),I=N7,NN)
  1646.       NN=N8 + NEQS*ITWO - 1
  1647.       READ (23) (A(I),I=N8,NN)
  1648.   866 IND=5
  1649.       CALL SUBSKR (A(N2),A(N4),A(N3),A(N6),A(N1),A(N1A),ISTOHS,NBLOCS,
  1650.      1             NREC16,NREC17,KRSIZE,NEQ)
  1651.       IND=4
  1652.       IF (KPRI.NE.0) KPRI = KPLOTE
  1653.       IF (IPRI.NE.0) GO TO 867
  1654.       ICPRI=3
  1655.       WRITE (6,2020) KSTEP,TIME,NSUB,M
  1656.       IF (NSKEWS.LE.0) GO TO 867
  1657.       WRITE (6,2025)
  1658.       ICPRI=ICPRI + 2
  1659. C
  1660. C     PRINT SUBSTRUCTURE RESPONSES
  1661. C
  1662.   867 CALL WRITE (A(N1),A(N2),A(N7),A(N8),A(N5),IDOFS,ISUB,NEQS,NDOFS,2)
  1663. C
  1664. C     CALCULATE AND PRINT STRESSES
  1665. C
  1666.       IF (KPRI.NE.0) GOTO 880
  1667.       IF (IREAD.EQ.0) GO TO 869
  1668.       DO 868 I=1,NEGLS
  1669.   868 BACKSPACE 1
  1670.   869 CALL STRESS (A(N10),ISUB,NEGLS,NEGNLS)
  1671.       IREAD=1
  1672.   880 CONTINUE
  1673.       IREAD=0
  1674.   885 CONTINUE
  1675.       IF (KSTEP.LT.NSTET) GO TO 860
  1676.       KLIN=KLINSV
  1677.   900 CONTINUE
  1678. C
  1679. C *CDC*  900 CALL STINDX (16,IDUM,1,0)
  1680. C *CDC*      CALL CLOSMS (16)
  1681. C *CDC*      CALL STINDX (17,NDUM,1,0)
  1682. C *CDC*      CALL CLOSMS (17)
  1683. C
  1684.       RETURN
  1685. C
  1686.  2000 FORMAT (1H1,34HS U B S T R U C T U R E   D A T A ,///)
  1687.  2020 FORMAT (1H1,46H P R I N T   O U T   F O R   T I M E   S T E P ,I5,
  1688.      1 7X,26H ( SUBSTRUCTURE RESPONSE ),7X,12H ( AT TIME  ,E10.4,2H ),//
  1689.      2 22H SUBSTRUCTURE NUMBER =,I5,20X,28H IDENTIFICATION SET NUMBER =,
  1690.      3 I5)
  1691.  2025 FORMAT (/84H ( NODAL RESPONSES PRINTED ARE MEASURED IN THE SKEW CO
  1692.      1ORDINATE SYSTEM OF EACH NODE )   )
  1693. C
  1694.       END
  1695. C *CDC* *DECK STORE
  1696. C *UNI* )FOR,IS N.STORE, R.STORE
  1697.       SUBROUTINE STORE (NUMNP,NDOF,NEQ,NWK,MA,NEGNL,MAXEST,NBLOCK,ISTOH,
  1698.      1                  KKK)
  1699. C
  1700. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  1701. C .                                                                   .
  1702. C .   PROGRAM.                                                        .
  1703. C .      TO ALLOCATE STORAGE IN BLANK COMMON DURING DIFFERENT         .
  1704. C .      PHASES OF THE ANALYSIS                                       .
  1705. C .                                                                   .
  1706. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  1707. C
  1708.       IMPLICIT REAL*8 (A-H,O-Z)
  1709. C
  1710.       COMMON /SOL/ NUMP,MEQ,NWA,NWM,NWC,NUMEST,MIDEST,MAXSET,NSTE,MAA
  1711.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  1712.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  1713.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  1714.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NENGL,IMASS,IDAMP,ISTAT
  1715.      1           ,NDOM,KLIN,IEIG,IMASSN,IDAMPN
  1716.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  1717.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  1718.       COMMON /MSUPER/ IMODES,NMODES,IMDAMP
  1719.       COMMON /EQIT/ METHOD,IATKEN,NLSTPD,NLSTEP,ITEDIV,ISDVG
  1720.       COMMON /ADINAI/ OPVAR(7),TSTART,IRINT,ISTOTE
  1721.       COMMON /JUNK/ IHED(18),MTOT,LPROG
  1722.       COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
  1723.      1             NPDIS,NTEMP
  1724.       COMMON /LOACHK/ LSC
  1725.       COMMON /TIMFN/ TEND,NTFN,NPTM
  1726.       COMMON /DISCON/ NDISCE,NIDM
  1727.       COMMON /SKEW/ NSKEWS
  1728.       COMMON /ELGLTH/ NFIRST,NLAST,NBCEL
  1729.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  1730.       COMMON /PORT/ INPORT,JNPORT,NPUTSV,LUNODE,LU1,LU2,LU3,JDC,JVC,JAC
  1731.       COMMON /EIGIF/ COFQ,RBMSH,IESTYP,NFREQ,NMODE,IFPR,IRBM
  1732. C
  1733.       COMMON /DPR/ ITWO
  1734.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  1735.       COMMON /DIMN/ N3A,N4A,N4B,N4C
  1736.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  1737.       COMMON /DIMEL/ N101,N102,N103,N104,N105,N106,N107,N108,N109,N110,
  1738.      1           N111,N112,N113,N114,N120,N121,N122,N123,N124,N125
  1739.       COMMON /RANDI/ N0A,N1D,IELCPL
  1740.       COMMON /FREQIF/ ISTOW,N1A,N1B,N1C,N1S
  1741.       COMMON /STORES/ MXTMPS,MDVAS,MXSTHS,MXNEQS,MXBLCS,MXNN1
  1742.       COMMON /SCRAP/ SHIFT,RLQ1,NLQ,NITE,NSTEP,JR,ICONV,NCEV,NP,NQ,IFSS
  1743.       COMMON /TEMPRT/ TEMP1,TEMP2,ITEMPR,ITP96,N6A,N6B
  1744.       COMMON /MPRNT/ IOUTPT,ISTPRT
  1745. C
  1746.       COMMON A(1)
  1747.       REAL A
  1748.       INTEGER IA(1)
  1749.       EQUIVALENCE (A(1),IA(1))
  1750. C
  1751. C
  1752.       NEQT=NEQ + NDISCE
  1753.       IF (KKK - 1) 1, 2, 100
  1754. C
  1755. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  1756. C .                                                                   .
  1757. C .   STORAGE OF ARRAYS PERMANENTLY STORED IN-CORE                    .
  1758. C .                                                                   .
  1759. C . ADDRESS   LENGTH         VARIABLE                                 .
  1760. C .                                                                   .
  1761. C .    N0     NEGNL          LENGTHS OF ELEMENT GROUPS                .
  1762. C .    N0A    NEGNL + 1      RANDOM ACCESS INFORMATION                .
  1763. C .    N01    NDISCE         NID                                      .
  1764. C .    N02    NDISCE*NIDM    IDI                                      .
  1765. C .    N03  NDISCE*NIDM*ITWO BETA                                     .
  1766. C .    N04    NPDIS          NOD                                      .
  1767. C .    N05    NPDIS*ITWO     PRDIS                                    .
  1768. C .    N06    9*NSKEWS*ITWO  RSDCOS                                   .
  1769. C .    N07    8*NSUBST       STORAGE SIZES FOR SUBSTRUCTURES          .
  1770. C .    N08   MIDSS   MID-SURFACE NODES INDICATOR                      .
  1771. C .                  STORAGE WILL BE ALLOCATED IN ADINI AND ADINA     .
  1772. C .    N09   FMIDSS  NORMAL VECTORS AT MID-SURFACE NODES              .
  1773. C .    N010  FMV1    V1 VECTORS AT MID-SURFACE NODES                  .
  1774. C .                  STORAGE WILL BE ALLOCATED IN ADINI AND ADINA     .
  1775. C .                                                                   .
  1776. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  1777. C
  1778.     1 N0A=N0 + NEGNL
  1779.       N01=N0A + NEGNL + 1
  1780.       N02=N01 + NDISCE
  1781.       N03=N02 + NDISCE*NIDM
  1782.       N04=N03 + NDISCE*NIDM*ITWO
  1783.       N05=N04 + NPDIS
  1784.       N06=N05 + NPDIS*ITWO
  1785.       N07=N06 + 9*NSKEWS*ITWO
  1786.       N08=N07 + 8*NSUBST
  1787.       N1=N08
  1788.       RETURN
  1789. C
  1790. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  1791. C .                                                                   .
  1792. C .   TEST FOR AVAILABILITY OF HIGH SPEED STORAGE AND CALCULATE       .
  1793. C .   MAXIMUM BLOCKSIZE, NUMBER OF BLOCKS, AND BLOCK COUPLING         .
  1794. C .                                                                   .
  1795. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  1796. C
  1797. C       1. STORAGE FOR LOAD VECTOR CALCULATIONS
  1798. C
  1799.     2 IF (IND.GT.0) GO TO 50
  1800.       IF (ISUB.EQ.0) GO TO 3
  1801.       IF (LSC.EQ.0) GO TO 31
  1802.     3 MSTORE=N1 + NEQ + (NEQ + (2*NPTM+NSTE+1)*NTFN)*ITWO + NTFN + 100
  1803.       IF (NSTE.GT.0) MSTORE=MSTORE + NDOF*NUMNP
  1804.       IF (ISUB.EQ.0 .AND. NSKEWS.GT.0) MSTORE=MSTORE + NUMNP
  1805.       MMC=4*NLOAD + 2*NLOAD*ITWO
  1806.       MMP=3*NUMNP*ITWO + 12*NPR2*ITWO + 15*NPR2
  1807.       IF (NPR2.GT.0 .AND. MMP.GT.MMC) MMC=MMP
  1808.       MMP=3*NUMNP*ITWO + (3*NODE3 + 5)*NPR3*ITWO + (4*NODE3 + 3)*NPR3
  1809.       IF (NPR3.GT.0 .AND. MMP.GT.MMC) MMC=MMP
  1810.       MMP=(3*NUMNP*ITWO)+(15*NPBM*ITWO)+(19*NPBM)
  1811.       IF(NPBM.GT.0 .AND. MMP.GT.MMC)MMC=MMP
  1812.       MMP=NEQ*ITWO
  1813.       IF (IDGRAV.GT.0 .AND. MMP.GT.MMC) MMC=MMP
  1814.       MMP=2*NPDIS*ITWO + 4*NPDIS
  1815.       IF (MMP.GT.MMC) MMC=MMP
  1816.       MMP=2*NTEMP*ITWO + 3*NTEMP
  1817.       IF (MMP.GT.MMC) MMC=MMP
  1818.       MSTORE=MSTORE + MMC
  1819.       IF (ISTPRT.GT.0)
  1820.      *  WRITE (6,2200)
  1821.       CALL SIZE(MSTORE)
  1822.       IF (ISUB.GT.0) RETURN
  1823. C
  1824. C       2. STORAGE FOR MATRIX ASSEMBLAGE PHASE AND TIME INTEGRATION
  1825. C
  1826. C     CENTRAL DIFFERENCE METHOD
  1827. C
  1828.     4 IF (IOPE.NE.3) GO TO 5
  1829.       ISV=(IVC + JVC + 1)/2
  1830.       ISA=(IAC + JAC + 1)/2
  1831.       MSTORE=N1 + (3 + ISV + ISA)*NEQT*ITWO + ITEMPR*(NUMNP + 1)*ITWO
  1832.       MTEMP=NDOF*NUMNP
  1833.       IF (MTEMP.LT.NEQ*ITWO) MTEMP=NEQ*ITWO
  1834.       MSTORE=MSTORE + MTEMP + MAXEST + NBCEL
  1835.       NBLOCK=1
  1836.       ISTOH=0
  1837.       IF (MSTORE.LE.MTOT) GO TO 45
  1838.       IF (ISTPRT.GT.0)
  1839.      *  WRITE (6,3000)
  1840.       CALL SIZE (MSTORE)
  1841. C
  1842. C     STATIC ANALYSIS AND IMPLICIT TIME INTEGRATION
  1843. C
  1844.     5 MSTORE=N1 + 2*NEQT*ITWO + ITEMPR*(NUMNP + 1)*ITWO + MAXEST + NBCEL
  1845.       MSTORE=MSTORE + NEQ*ITWO
  1846.       IF (NLSTPD.GT.0 .OR. METHOD.EQ.2) MSTORE=MSTORE + NEQT*ITWO
  1847.       MTEMP=2*NEQT*ITWO
  1848.       IF (MTEMP.LT.(NDOF*NUMNP)) MTEMP=NDOF*NUMNP
  1849.       MSTORE=MSTORE + MTEMP
  1850.       IF (IMODES.EQ.0 .AND. IMASS.EQ.1) MSTORE=MSTORE + NEQ*ITWO
  1851.       IF (ISTAT.EQ.1) MSTORE=MSTORE + 2*NEQT*ITWO
  1852.       N1A=N1 + NEQ + 1
  1853.       N1B=N1A + NEQ
  1854.       IBLOCK=4
  1855.       NBLOCK=1
  1856.       MTEMP=0
  1857.       IF (IMODES.EQ.0) GO TO 10
  1858.       MTEMP=8*NMODES*ITWO
  1859.       IF (KLIN.GT.0 .AND. (NEGL.GT.0 .OR. NSUBST.GT.0))
  1860.      *    MTEMP=MTEMP + (NMODES + 1)*NMODES*ITWO/2
  1861.    10 MELST=NEQ + 1 + (3 + IEIG + NEGNL)*IBLOCK + 1
  1862.       IF (MELST.GT.MTEMP) MTEMP=MELST
  1863.       ISTORL=(MTOT - MSTORE - MTEMP)/ITWO
  1864.       IF (ISTOTE.GT.0) ISTORL=ISTOTE
  1865.       IF (ISTORL.GT.0) GO TO 15
  1866.       WRITE (6,3010)
  1867.       STOP
  1868. C
  1869.    15 CALL SBLOCK (A(N1),A(N1A),A(N1B),ISTORL,NBLOCK,NEQ,NWK,ISTOH)
  1870. C
  1871.       IF (ISTOTE.GT.0) GO TO 20
  1872.    16 IF (NBLOCK.LE.IBLOCK) GO TO 20
  1873.       IBLOCK=IBLOCK*2
  1874.       IF (IBLOCK.LT.1000) GO TO 10
  1875.       WRITE (6,3020)
  1876.       STOP
  1877.    20 N2=N1 + MTEMP
  1878. C
  1879. C     3. SPECIAL CASES
  1880. C       (1) MULTIPLE BLOCK CASE AND SUBSTRUCTURES ARE USED
  1881. C
  1882.       IF (NSUBST.EQ.0) GO TO 25
  1883.       IF (NBLOCK.EQ.1) GO TO 22
  1884.       IF (KRSIZM.LE.ISTOH) GO TO 25
  1885.       MM=2*(KRSIZM - ISTOH)*ITWO + 1000
  1886.       IF (ISTOTE.GT.0) MM=MM - 1000
  1887.       WRITE (6,3030) MM
  1888.       STOP
  1889. C
  1890. C       (2) ONE BLOCK CASE AND SUBSTRUCTURES ARE USED
  1891. C
  1892.    22 MM=N2 + 2*NEQ*ITWO + MAXEST + NBCEL
  1893.       MSTORE=MM + ISTOH*ITWO + KRSIZM*ITWO
  1894.       IF (MTOT.GE.MSTORE) GO TO 25
  1895.       MSTORE=(MTOT - (MM + KRSIZM*ITWO))/ITWO
  1896.       IF (MSTORE.LT.ISTORL) ISTORL=MSTORE
  1897.       NBLOCK=2
  1898.       CALL SBLOCK (A(N1),A(N1A),A(N1B),ISTORL,NBLOCK,NEQ,NWK,ISTOH)
  1899. C
  1900. C       (3) ONE BLOCK CASE AND CONSISTENT MASS MATRIX IS USED
  1901. C
  1902.    25 IF (IMASS.NE.2 .OR. NBLOCK.GT.1) GO TO 30
  1903.       MM=N2 + 2*ISTOH*ITWO + 2*NEQ*ITWO + MAXEST + NBCEL
  1904.       IF (MM.LE.MTOT) GO TO 30
  1905.       NBLOCK=2
  1906.       CALL SBLOCK (A(N1),A(N1A),A(N1B),ISTORL,NBLOCK,NEQ,NWK,ISTOH)
  1907. C
  1908. C        4. STORAGE FOR FREQUENCY ANALYSIS
  1909. C
  1910.    30 IF (IEIG.EQ.0) GO TO 35
  1911.       IF (IESTYP.EQ.0)
  1912.      * MSTORE=N2 + 9*NEQ*ITWO + 4*(NFREQ + 3)*ITWO + NFREQ + 4
  1913.       NP=MIN0(2*NFREQ,NFREQ + 8)
  1914.       NCM=NQ
  1915.       IF (NQ.LT.NP) NCM=MIN0(NFREQ + NQ/2,NFREQ + 8)
  1916.       IF (IESTYP.EQ.1)
  1917.      * MSTORE=N2 + (NQ + 3)*NEQ*ITWO + NQ*(2*NQ + 6)*ITWO + NCM*ITWO
  1918.      *           + NCM + NQ + 150
  1919.       IF (IMASS.EQ.1) MSTORE=MSTORE + NEQ*ITWO
  1920.       MM=(MTOT - MSTORE)/ITWO
  1921.       IF (NBLOCK.GT.1 .OR. IMASS.EQ.2) MM=MM/2
  1922.       IF (MM.GE.ISTOH) GO TO 35
  1923.       IF (NBLOCK.GT.1 .OR. IMASS.EQ.2) MM=2*MM
  1924.       NBLOCK=2
  1925.       CALL SBLOCK (A(N1),A(N1A),A(N1B),MM,NBLOCK,NEQ,NWK,ISTOH)
  1926.       GO TO 35
  1927. C
  1928. C     STORAGE CALCULATIONS FOR SUBSTRUCTURE ANALYSIS
  1929. C
  1930.    31 MSTORE=N1 + (NEQ + MEQ+ILOA(12) + NEQC)*ITWO + MAXEST + NBCEL +
  1931.      *       NDOF*NUMNP + NEQ-NEQC + 1000
  1932.       N1A=N1 + NEQ + 1
  1933.       N1B=N1A + NEQ
  1934.       IBLOCK=4
  1935.       NBLOCK=1
  1936.    32 MELST=NEQ + 1 + 2*IBLOCK
  1937.       ISTORL=(MTOT - MSTORE - MELST)/ITWO
  1938.       IF (ISTOTE.GT.0) ISTORL=ISTOTE
  1939.       CALL SBLOCK (A(N1),A(N1A),A(N1B),ISTORL,NBLOCK,NEQ,NWK,ISTOH)
  1940.       IF (ISTOTE.GT.0) GO TO 33
  1941.       IF (NBLOCK.LE.IBLOCK) GO TO 33
  1942.       IBLOCK=IBLOCK*2
  1943.       IF (IBLOCK.LT.1000) GO TO 32
  1944.       WRITE (6,3020)
  1945.       STOP
  1946. C
  1947.    33 NRD=NEQ - NEQC
  1948.       KRSIZE=NRD*(NRD + 1)/2
  1949.       N2=N1 + MELST
  1950.       MM=N2 + (ISTOH + KRSIZE)*ITWO
  1951.       IF (MM.LE.MTOT) GO TO 35
  1952.       NBLOCK=2
  1953.       ISTORL=2*(MTOT - N2 - KRSIZE*ITWO)/ITWO
  1954.       CALL SBLOCK (A(N1),A(N1A),A(N1B),ISTORL,NBLOCK,NEQ,NWK,ISTOH)
  1955. C
  1956. C     WRITE MASTER/SUBSTRUCTURE TOTAL SYSTEM DATA
  1957. C
  1958.    35 CONTINUE
  1959.       MAM=NWK/NEQ
  1960.       IF (NWK.GT.MAM*NEQ) MAM=MAM + 1
  1961.       IF (ISUB.EQ.0) WRITE (6,2203)
  1962.       IF (ISUB.GT.0) WRITE (6,2206)
  1963.       WRITE (6,2210) NEQ,NWK,MA,MAM,ISTOH,NBLOCK,MTOT
  1964.       WRITE (6,2220)
  1965.       NN=N1A + NBLOCK - 1
  1966.       WRITE (6,2230) (I,I=1,NBLOCK)
  1967.       WRITE (6,2240) (IA(I),I=N1A,NN)
  1968.       NN=N1B + NBLOCK - 1
  1969.       WRITE (6,2250) (IA(I),I=N1B,NN)
  1970.       NN=N1A + NBLOCK
  1971.       DO 40 I=1,NBLOCK
  1972.    40 IA(NN+I-1)=IA(N1B+I-1)
  1973.       N1B=NN
  1974.       N1C=N1B + NBLOCK
  1975.       N1D=N1C + NBLOCK*NEGNL
  1976.       IF (NBLOCK.EQ.1) N1D=N1C
  1977.       N2=N1D + (IEIG + 1)*NBLOCK + 1
  1978.    45 IF (IOPE.EQ.3) N2=N1
  1979.       IF (ISUB.GT.0) RETURN
  1980. C
  1981. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  1982. C .                                                                   .
  1983. C .   A S S E M B L A G E   O F   L I N E A R   M A T R I C E S       .
  1984. C .                                                                   .
  1985. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  1986. C
  1987.    50 N3=N2 + ISTOH*ITWO
  1988.       N4=N3 + ISTOH*ITWO
  1989.       IF (NBLOCK.EQ.1 .AND. IMASS.LT.2) N4=N3
  1990.       IF (NSUBST.EQ.0) GO TO 70
  1991.       IF (NBLOCK.EQ.1 .AND. IMASS.LT.2) GO TO 65
  1992.       IF (KRSIZM.LT.ISTOH) GO TO 70
  1993.    65 N4=N3 + KRSIZM*ITWO
  1994.    70 N5=N4 + NEQ*ITWO
  1995.       N6=N5 + NEQ*ITWO
  1996.       IF (IMASS.EQ.0) N6=N4
  1997.       IF (ISTAT.EQ.0 .AND. IDGRAV.EQ.1) N6=N5
  1998.       N7=N6 + MAXEST + NBCEL
  1999.       IF (ISTPRT.GT.0)
  2000.      *  WRITE (6,2260)
  2001.       CALL SIZE(N7)
  2002.       RETURN
  2003. C
  2004. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2005. C .                                                                   .
  2006. C .   S T O R A G E   F O R   T I M E   I N T E G R A T I O N         .
  2007. C .                                                                   .
  2008. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2009. C
  2010.   100 IF (ISUB.GT.0) GO TO 200
  2011.       IF (IOPE.EQ.3) N2=N1 + NEQT*ITWO
  2012.       IF (IMODES.EQ.0) GO TO 110
  2013.       MTEMP=8*NMODES*ITWO
  2014.       IF (KLIN.GT.0 .AND. (NEGL.GT.0 .OR. NSUBST.GT.0))
  2015.      *    MTEMP=MTEMP + (NMODES + 1)*NMODES*ITWO/2
  2016.       IF (MTEMP.LE.(N2 - N1)) GO TO 110
  2017.       N2=N1 + MTEMP
  2018.   110 N3=N2 + NEQT*ITWO + MDVAS*ITWO
  2019.       N3A=N3 + NEQT*ITWO + MDVAS*ITWO
  2020.       N4=N3A + NEQT*ITWO
  2021.       IF (NLSTPD.EQ.0 .AND. METHOD.EQ.1) N4=N3A
  2022.       N4A=N4 + ISTOH*ITWO
  2023.       IF (MXSTHS.GT.ISTOH) N4A=N4 + MXSTHS*ITWO
  2024.       N4B=N4A + ISTOH*ITWO
  2025.       IF (NBLOCK.EQ.1) N4B=N4A
  2026.       IF (MXBLCS.LE.1) GO TO 116
  2027.       MXTEMP=MXSTHS*ITWO
  2028.       IF (MXTEMP.GT.(N4B-N4A)) N4B=N4A + MXTEMP
  2029.   116 N4C=N4B + NEQ*ITWO
  2030.       N5=N4C + MXNEQS*ITWO
  2031.       IF (IOPE.EQ.3) GO TO 120
  2032. C
  2033.       N6=N5 + NEQT*ITWO
  2034.       IF (MXNEQS.GT.NEQT) N6=N5 + MXNEQS*ITWO
  2035.       N6A=N6 + NEQT*ITWO
  2036.       IF (MXNEQS.GT.NEQT) N6A=N6 + MXNEQS*ITWO
  2037.       NN1=NDOF*NUMNP
  2038.       IF (MXNN1.GT.NN1) NN1=MXNN1
  2039.       NN2=N6A - N5
  2040.       IF (NN1.GT.NN2) N6A=N5 + NN1
  2041.       GO TO 140
  2042. C
  2043.   120 NN1=NDOF*NUMNP
  2044.       NN2=NEQT*ITWO
  2045.       IF (NN2.GT.NN1) NN1=NN2
  2046.       N6=N5
  2047.       N6A=N6 + NN1
  2048. C
  2049.   140 IF (IMODES.EQ.0) GO TO 145
  2050.       IF (KLIN.EQ.0 .OR. (NEGL.EQ.0 .AND. NSUBST.EQ.0)) GO TO 145
  2051.       MTEMP=NMODES*(NMODES + 1)*ITWO/2
  2052.       IF (MTEMP.GT.(N6A-N5)) N6A=N5 + MTEMP
  2053.   145 N6B=N6A + (ITEMPR - 1)*(NUMNP + 1)*ITWO
  2054.       N7=N6B + (NUMNP+1)*ITWO
  2055.       IF (IOPE.EQ.3) GO TO 150
  2056. C
  2057.       N8=N7 + NEQT*ITWO + MDVAS*ITWO
  2058.       N9=N8 + NEQT*ITWO + MDVAS*ITWO
  2059.       N10=N9 + NEQ*ITWO + MXNEQS*ITWO
  2060.       IF (NSTE.EQ.0 .AND. IEIG.EQ.1) N10=N9
  2061.       IF (IMODES.GT.0) N10=N9
  2062.       IF (IMASS.EQ.2) N10=N9
  2063.       IF (ISTAT.EQ.0) N10=N7
  2064.       GO TO 160
  2065. C
  2066.   150 N8=N7 + NEQT*ITWO
  2067.       IF (IVC.EQ.0 .AND. JVC.EQ.0) N8=N7
  2068.       N9=N8 + NEQT*ITWO
  2069.       IF (IAC.EQ.0 .AND. JAC.EQ.0) N9=N8
  2070.       N10=N9
  2071. C
  2072.   160 N11=N10 + MAXEST + NBCEL
  2073.       IF (ISTPRT.GT.0)
  2074.      *  WRITE (6,2280)
  2075.       CALL SIZE (N11)
  2076.       RETURN
  2077. C
  2078. C     STORAGE ALLOCATION DURING TIME INTEGRATION FOR SUBSTRUCTURES
  2079. C
  2080.   200 N3=N2 + NEQ*ITWO
  2081.       N4=N3+(MEQ+ILOA(12))*ITWO
  2082.       N4A=N4 + ISTOH*ITWO
  2083.       N4B=N4A + ISTOH*ITWO
  2084.       IF (NBLOCK.EQ.1) N4B=N4A
  2085.       N5=N4B + NEQC*ITWO
  2086.       N6=N5 + NDOF*NUMNP
  2087.       N7=N6 + NEQ - NEQC
  2088.       N8=N7 + NEQ*ITWO
  2089.       N9=N8 + NEQ*ITWO
  2090.       N10=N9
  2091.       N11=N10 + MAXEST + NBCEL
  2092.       IF (ISTPRT.GT.0)
  2093.      *  WRITE (6,2280)
  2094.       CALL SIZE (N11)
  2095.       RETURN
  2096. C
  2097.  2200 FORMAT (//30H STORAGE CHECK FOR LOAD INPUT )
  2098.  2203 FORMAT (1H1,20HTOTAL SYSTEM DATA            //)
  2099.  2206 FORMAT (1H1,25HSUBSTRUCTURE SYSTEM DATA        //)
  2100.  2210 FORMAT (5X,
  2101.      255HNUMBER OF EQUATIONS . . . . . . . . . . . . . .(NEQ)  =,I8//5X,
  2102.      355HNUMBER OF MATRIX ELEMENTS . . . . . . . . . . .(NWK)  =,I8//5X,
  2103.      455HMAXIMUM HALF BANDWIDTH . . . . . . . . . . . . (MA )  =,I8//5X,
  2104.      555HMEAN HALF BANDWIDTH . . . . . . . . . . . . . .(MAM)  =,I8//5X,
  2105.      655HMAXIMUM BLOCK LENGTH . . . . . . . . . . . . (ISTOH)  =,I8//5X,
  2106.      755HNUMBER OF BLOCKS . . . . . . . . . . . . . .(NBLOCK)  =,I8//5X,
  2107.      855HMAXIMUM TOTAL STORAGE AVAILABLE. . . . . . .( MTOT )  =,I8//)
  2108.  2220 FORMAT(/4X,51H NUMBER OF COLUMNS PER BLOCK AND 1ST COUPLING BLOCK)
  2109.  2230 FORMAT (//6X,16H NUMBER OF BLOCK,12X,(15I5,/34X))
  2110.  2240 FORMAT (6X,28H NUMBER OF COLUMNS PER BLOCK,(15I5,/,34X))
  2111.  2250 FORMAT (6X,21H FIRST COUPLING BLOCK,7X,(15I5,/,34X))
  2112.  2260 FORMAT (//50H0**STORAGE CHECK FOR ASSEMBLAGE OF LINEAR MATRICES )
  2113.  2280 FORMAT (//50H0**STORAGE CHECK FOR TIME INTEGRATION PHASE        )
  2114. C
  2115.  3000 FORMAT(//53H STORAGE CHECK FOR TIME INTEGRATION                  )
  2116.  3010 FORMAT (//60H  ** STOP ** NO STORAGE AVAILABLE TO STORE STIFFNESS
  2117.      1MATRIX. ,/68H INCREASE MTOT AND/OR BREAK ELEMENTS INPUT INTO MORE
  2118.      2ELEMENT GROUPS.   )
  2119.  3020 FORMAT (// 22H STOP  ERROR IN INPUT   //
  2120.      1           38H MORE THAN 1000 SOLUTION BLOCKS REQD   )
  2121.  3030 FORMAT (1H1////,43H SOLUTION STOP DUE TO INSUFFICIENT STORAGE ,/,
  2122.      1 62H AN OUT-OF-CORE SOLUTION IS REQUIRED FOR THE MASTER STRUCTURE
  2123.      2/62H AND THE REDUCED SUBSTRUCTURE STIFFNESS MATRIX IS LARGER THAN
  2124.      3 50HONE BLOCK OF THE MASTER STIFFNESS MATRIX.
  2125.      4/56H HENCE EITHER INCREASE THE BLANK COMMON SIZE AT LEAST BY,I8,
  2126.      5/68H OR DECREASE THE RETAINED NUMBER OF DOF FOR THE LARGEST SUBSTR
  2127.      6UCTURE    ///)
  2128. C
  2129.       END
  2130. C *CDC* *DECK SIZE
  2131. C *UNI* )FOR,IS  N.SIZE,   R.SIZE
  2132.       SUBROUTINE SIZE(N)
  2133. C
  2134.       IMPLICIT REAL*8 (A-H,O-Z)
  2135.       COMMON A(1)
  2136.       COMMON /JUNK/ IHED(18),MTOT,LPROG
  2137.       COMMON /MPRNT/ IOUTPT,ISTPRT
  2138.       REAL A
  2139. C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  2140. C     THE OPTION OF MTOT.EQ.0 MUST BE VERIFIED BY THE USER ON THE
  2141. C     MACHINE USED
  2142. C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  2143. C
  2144.       IF(MTOT.NE.0) GO TO 10
  2145. C
  2146. C *CDC*       LPROG=LOCF(A)
  2147. C *UNI*       LPROG=LOC (A)
  2148. C  10 LCORE=LPROG+N+10
  2149. C     MTOT=N
  2150. C     CALL XRFL (LCORE)
  2151. C
  2152.    10 IF (N.LT.(MTOT+10)) GO TO 20
  2153.       WRITE (6,1000)
  2154.       WRITE (6,1001) N
  2155.       WRITE (6,1004)
  2156.       STOP
  2157.    20 IF (ISTPRT.EQ.0) RETURN
  2158.       WRITE (6,1000)
  2159.       WRITE (6,1001) N
  2160.       WRITE (6,1008)
  2161.       RETURN
  2162.  1000 FORMAT(/,4X,35HCORE INFORMATION . . . (DECIMAL). .     )
  2163.  1001 FORMAT(     4X,20H    REQUESTED CORE=  ,5X,I6    )
  2164.  1004 FORMAT (    4X,24H    NOT AVAILABLE  STOP  )
  2165.  1008 FORMAT(     4X,20H    OBTAINED . . .        //)
  2166.       END
  2167. C *CDC* *DECK GAUSSD
  2168. C *UNI* )FOR,IS  N.GAUSSD, R.GAUSSD
  2169.       BLOCK DATA
  2170. C
  2171.       IMPLICIT REAL*8 (A-H,O-Z)
  2172. C
  2173. C     EVAL2 - STRESS OUTPUT LOCATION USED IN STRESS TABLES
  2174. C             ( 2-D ELEMENTS )
  2175. C     EVAL3 - STRESS OUTPUT LOCATION USED IN STRESS TABLES
  2176. C             ( 3-D ELEMENTS )
  2177. C
  2178. C     XG    - GAUSS INTEGRATION POINTS IN THE INTERVAL (-1,1)
  2179. C     WGT   - GAUSS INTEGRATION WEIGHTS
  2180. C             ( XG,WGT USED FOR ISOPARAMETRIC ELEMENTS )
  2181. C
  2182. C     TRAPS - TRAPEZOIDAL RULE INTEGRATION POINTS IN THE INTERVAL
  2183. C             (-1, 1) FOR PERIODIC FUNCTIONS
  2184. C     GATES - FIRST 4 COLUMNS FOR GAUSS INTEGRATION
  2185. C             COLS 5,6,7 - CLOSED NEWTON-COTES FOR 3,5,7 POINTS IN THE
  2186. C             INTERVAL (-1,1)
  2187. C     WATES - WEIGHTS FOR GATES
  2188. C             ( TRAPS,GATES,WATES USED FOR BEAM ELEMENTS )
  2189. C             ( GATES, WATES USED FOR ISO/BEAM ELEMENTS )
  2190. C
  2191. C     TRLW4 -  4 POINTS TRIANGULAR INTEGERATION
  2192. C     TRLW7 -  7 POINTS TRIANGULAR INTEGERATION
  2193. C     TRLWD - 13 POINTS TRIANGULAR INTEGERATION
  2194. C         L1=A1/A , STORED IN THE FIRST COLUMN
  2195. C         L2=A2/A , STORED IN THE SECOND COLUMN
  2196. C         TRWT=TRIANGULAR WEIGHT , STORED IN THE THIRD COLUMN
  2197. C             ( TRLW4,TRLW7,TRLWD USED FOR TRIANGULAR SHELL EL. )
  2198. C
  2199. C     HAMMS - HAMMER INTEGRATION FORMULAS FOR TRIANGLES
  2200. C             PSIV= A2/A,   ETAV= A3/A,   WGTV= WEIGHT
  2201. C             ( PSIV,ETAV,WGTV USED FOR PLATE ELEMENTS )
  2202. C
  2203.       COMMON /GAUSS/ XG(4,4),WGT(4,4),EVAL2(9,2),EVAL3(27,3),E1,E2,E3
  2204.       COMMON /PIE/ PI,TOPI,DEGRAD,RADEG
  2205.       COMMON /GASNEW/ TRAPS(12,3),GATES(7,7),WATES(7,7)
  2206.       COMMON /TRANG/ TRLW4(4,3),TRLW7(7,3),TRLWD(13,3),
  2207.      1               XGRS(16,2),WGTRS(16)
  2208.       COMMON /HAMMS / PSIV(14),ETAV(14),WGTV(14)
  2209.       COMMON /ICA/ IC(16,3),NCOL,IBC,NC
  2210. C
  2211. C *CDC*       DATA PI,TOPI/ 3.141592653590, 6.283185307180 /
  2212. C *CDC*       DATA DEGRAD,RADEG/ .0174532925199, 57.29577951308 /
  2213. C
  2214. C *CDC*       DATA EVAL2 / 1.0,-1.0,-1.0, 1.0, 0.0,-1.0, 0.0, 1.0, 0.0,
  2215. C *CDC*      1             1.0, 1.0,-1.0,-1.0, 1.0, 0.0,-1.0, 0.0, 0.0/
  2216. C
  2217. C *CDC*       DATA EVAL3 /
  2218. C *CDC*      1     1.,-1.,-1., 1., 1.,-1.,-1., 1., 0.,-1., 0., 1.,
  2219. C *CDC*      1     0.,-1., 0., 1., 1.,-1.,-1., 1., 0., 0.,-1., 0.,
  2220. C *CDC*      2     1., 0., 0.,
  2221. C *CDC*      3     1., 1.,-1.,-1., 1., 1.,-1.,-1., 1., 0.,-1., 0.,
  2222. C *CDC*      4     1., 0.,-1., 0., 1., 1.,-1.,-1., 0., 1., 0.,-1.,
  2223. C *CDC*      5     0., 0., 0.,
  2224. C *CDC*      6     1., 1., 1., 1.,-1.,-1.,-1.,-1., 1., 1., 1., 1.,
  2225. C *CDC*      7    -1.,-1.,-1.,-1., 0., 0., 0., 0., 0., 0., 0., 0.,
  2226. C *CDC*      8     0., 1.,-1. /
  2227. C
  2228. C *CDC*       DATA XG /     0.,             0.,             0., 0.,
  2229. C *CDC*      1 -.5773502691896, .5773502691896,             0., 0.,
  2230. C *CDC*      2 -.7745966692415, .0000000000000, .7745966692415, 0.,
  2231. C *CDC*      3 -.8611363115941,-.3399810435849, .3399810435849,
  2232. C *CDC*      4  .8611363115941 /
  2233. C
  2234. C *CDC*       DATA WGT / 2.000,             0.,             0., 0.,
  2235. C *CDC*      1 1.0000000000000,1.0000000000000,             0., 0.,
  2236. C *CDC*      2  .5555555555556, .8888888888889, .5555555555556, 0.,
  2237. C *CDC*      3  .3478548451375, .6521451548625, .6521451548625,
  2238. C *CDC*      4  .3478548451375 /
  2239. C
  2240. C
  2241. C *CDC*       DATA TRAPS /-1., -.5, 0., .5, 8*0.,
  2242. C *CDC*      1            -1., -.5, 0., .5, -.75, -.25, .25, .75, 4*0.,
  2243. C *CDC* 2            -1., -.5, 0., .5, -.8333333333333, -.6666666666667,
  2244. C *CDC* 3            -.3333333333333,  -.1666666666667,  .1666666666667,
  2245. C *CDC* 4             .3333333333333,   .6666666666667,  .8333333333333
  2246. C
  2247. C *CDC*       DATA GATES / 0., 6*0.,
  2248. C *CDC*      1 -.5773502691896, .5773502691896, 5*0.,
  2249. C *CDC*      2 -.7745966692415, .0000000000000, .7745966692415, 4*0.,
  2250. C *CDC*      3 -.8611363115941,-.3399810435849, .3399810435849,
  2251. C *CDC*      4  .8611363115941, 3*0.,
  2252. C *CDC*      5 -1., 1., 0., 4*0.,   -1., 1., 0., -.5, .5, 2*0.,
  2253. C *CDC*      6  -1., 1., 0., -.3333333333333, .3333333333333,
  2254. C *CDC*      7  -.6666666666667, .6666666666667 /
  2255. C
  2256. C *CDC*       DATA WATES / 2.0, 6*0.,
  2257. C *CDC*      1 1.0000000000000,1.0000000000000, 5*0.,
  2258. C *CDC*      2  .5555555555556, .8888888888889, .5555555555556, 4*0.,
  2259. C *CDC*      3  .3478548451375, .6521451548625, .6521451548625,
  2260. C *CDC*      4  .3478548451375, 3*0.,
  2261. C *CDC*      5  .3333333333333, .3333333333333, 1.333333333333, 4*0.,
  2262. C *CDC*      6  2*.1555555555556, .2666666666667, 2*.7111111111111, 2*0.
  2263. C *CDC*      6  2*.0976190476190, .6476190476190, 2*.0642857142857,
  2264. C *CDC*      7  2*.5142857142857 /
  2265. C
  2266. C *CDC*       DATA TRLW4/  .2,  .2,  .3333333333333,  .6,
  2267. C *CDC*      1             .2,  .6,  .3333333333333,  .2,
  2268. C *CDC*      2        .5208333333333,  .5208333333333, -.5625000000000,
  2269. C *CDC*      3        .5208333333333/
  2270. C
  2271. C *CDC*  DATA TRLW7/  .1012865073235,  .0597158717898,  .1012865073235,
  2272. C *CDC* 1             .4701420641051,  .3333333333333,  .4701420641051,
  2273. C *CDC* 2             .7974269853531,
  2274. C *CDC* 3             .1012865073235,  .4701420641051,  .7974269853531,
  2275. C *CDC* 4             .0597158717898,  .3333333333333,  .4701420641051,
  2276. C *CDC* 5             .1012865073235,
  2277. C *CDC* 6             .1259391805448,  .1323941527885,  .1259391805448,
  2278. C *CDC* 7             .1323941527885,  .2250000000000,  .1323941527885,
  2279. C *CDC* 8             .1259391805448/
  2280. C
  2281. C *CDC*  DATA TRLWD/  .0651301029022,  .0486903154253,  .0486903154253,
  2282. C *CDC* 1             .0651301029022,  .3128654960049,  .2603459660790,
  2283. C *CDC* 2             .2603459660790,  .3128654960049,  .6384441885698,
  2284. C *CDC* 3             .3333333333333,  .4793080678419,  .6384441885698,
  2285. C *CDC* 4             .8697397941956,
  2286. C *CDC* 5             .0651301029022,  .3128654960049,  .6384441885698,
  2287. C *CDC* 6             .8697397941956,  .0486903154253,  .2603459660790,
  2288. C *CDC* 7             .4793080678419,  .6384441885698,  .0486903154253,
  2289. C *CDC* 8             .3333333333333,  .2603459660790,  .3128654960049,
  2290. C *CDC* 9             .0651301029022,
  2291. C *CDC* A             .0533472356088,  .0771137608903,  .0771137608903,
  2292. C *CDC* B             .0533472356088,  .0771137608903,  .1756152574332,
  2293. C *CDC* C             .1756152574332,  .0771137608903,  .0771137608903,
  2294. C *CDC* D            -.1495700444677,  .1756152574332,  .0771137608903,
  2295. C *CDC* E             .0533472356088/
  2296. C
  2297. C *CDC*  DATA PSIV/   .3333333333333,  .1666666666667,  .6666666666667,
  2298. C *CDC* 1             .1666666666667,  .5,  .5,  0.,
  2299. C *CDC* 2             .1012865073235,  .7974269853531,  .1012865073235,
  2300. C *CDC* 3             .4701420641051,  .4701420641051,  .0597158717898,
  2301. C *CDC* 4             .3333333333333/
  2302. C *CDC*  DATA ETAV/   .3333333333333,  .1666666666667,  .1666666666667,
  2303. C *CDC* 1             .6666666666667,  0.,  0.5,  0.5,
  2304. C *CDC* 2             .1012865073235,  .1012865073235,  .7974269853531,
  2305. C *CDC* 2             .0597158717898,  .4701420641051,  .4701420641051,
  2306. C *CDC* 3             .3333333333333/
  2307. C *CDC*  DATA WGTV/   1.,
  2308. C *CDC* 1             .3333333333333,  .3333333333333,  .3333333333333,
  2309. C *CDC* 2             .3333333333333,  .3333333333333,  .3333333333333,
  2310. C *CDC* 3             .1259391805448,  .1259391805448,  .1259391805448,
  2311. C *CDC* 4             .1323941527885,  .1323941527885,  .1323941527885,
  2312. C *CDC* 4             .225/
  2313. C
  2314. C     DATA FOR ARRAY IC  CAN BE USED FOR ALL VERSIONS
  2315. C
  2316.       DATA IC /1,2,6,7,8,12,14,9*0,
  2317.      1         1,2,3,4,5,6,7,8,9,10,11,12,15,16,0,0,
  2318.      2         1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16/
  2319. C
  2320.       DATA PI,TOPI/ 3.141592653590D0, 6.283185307180D0/
  2321.       DATA DEGRAD,RADEG/ .0174532925199D0, 57.29577951308D0/
  2322. C
  2323.       DATA EVAL2 /1.0D0,-1.0D0,-1.0D0, 1.0D0, 0.0D0,-1.0D0,
  2324.      1    0.0D0,  1.0D0, 0.0D0, 1.0D0, 1.0D0,-1.0D0,-1.0D0,
  2325.      2    1.0D0,  0.0D0,-1.0D0, 0.0D0, 0.0D0/
  2326. C
  2327.       DATA EVAL3/ 1.0D0,-1.0D0,-1.0D0, 1.0D0, 1.0D0,-1.0D0,
  2328.      1    -1.0D0, 1.0D0, 0.0D0,-1.0D0, 0.0D0, 1.0D0,
  2329.      1     0.0D0,-1.0D0, 0.0D0, 1.0D0, 1.0D0,-1.0D0,-1.0D0,
  2330.      2     1.0D0, 0.0D0, 0.0D0,-1.0D0, 0.0D0,
  2331.      2     1.0D0, 0.0D0, 0.0D0, 1.0D0, 1.0D0,-1.0D0,-1.0D0,
  2332.      3     1.0D0, 1.0D0,-1.0D0,-1.0D0, 1.0D0, 0.0D0,-1.0D0,
  2333.      4     0.0D0, 1.0D0, 0.0D0,-1.0D0, 0.0D0, 1.0D0, 1.0D0,
  2334.      4    -1.0D0,-1.0D0, 0.0D0, 1.0D0, 0.0D0,-1.0D0,
  2335.      5     0.0D0, 0.0D0, 0.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0,
  2336.      6    -1.0D0,-1.0D0,-1.0D0,-1.0D0, 1.0D0, 1.0D0, 1.0D0,
  2337.      7     1.0D0,-1.0D0,-1.0D0,-1.0D0,-1.0D0, 0.0D0, 0.0D0,
  2338.      8     0.0D0, 0.0D0, 0.0D0, 0.0D0, 0.0D0, 0.0D0,
  2339.      8     0.0D0, 1.0D0,-1.0D0 /
  2340. C
  2341.       DATA XG /     0.D0,             0.D0,             0.D0,
  2342.      1             0.D0,-.5773502691896D0, .5773502691896D0,
  2343.      2              0.D0,             0.D0,-.7745966692415D0,
  2344.      3  .0000000000000D0, .7745966692415D0,             0.D0,
  2345.      4 -.8611363115941D0,-.3399810435849D0, .3399810435849D0,
  2346.      5  .8611363115941D0/
  2347. C
  2348.       DATA WGT / 2.000D0,     0.0D0,     0.0D0,     0.0D0,
  2349.      1 1.0000D0,1.000000D0, 0.0D0, 0.0D0, .5555555555556D0,
  2350.      2  .8888888888889D0, .5555555555556D0, 0.0D0,
  2351.      3  .3478548451375D0, .6521451548625D0, .6521451548625D0,
  2352.      4  .3478548451375D0/
  2353. C
  2354.       DATA TRAPS /  -1.D0, -.5D0,  0.D0,  .5D0,  8*0.D0,
  2355.      1              -1.D0, -.5D0,  0.D0,  .5D0, -.75D0, -.25D0,
  2356.      2              .25D0, .75D0,4*0.D0, -1.D0,  -.5D0,   0.D0,  0.5D0,
  2357.      3           -.8333333333333D0,-.6666666666667D0,-.3333333333333D0,
  2358.      4           -.1666666666667D0, .1666666666667D0, .3333333333333D0,
  2359.      5            .6666666666667D0, .8333333333333D0/
  2360. C
  2361.       DATA GATES / 0.D0,    6*0.D0,
  2362.      1           -.5773502691896D0, .5773502691896D0,           5*0.D0,
  2363.      2           -.7745966692415D0,   0.D0,  .7745966692415D0,  4*0.D0,
  2364.      3           -.8611363115941D0,-.3399810435849D0, .3399810435849D0,
  2365.      4            .8611363115941D0, 3*0.D0,  -1.D0, 1.D0, 0.D0, 4*0.D0,
  2366.      5           -1.D0,  1.D0,  0.D0, -.5D0,  .5D0,     2*0.D0,  -1.D0,
  2367.      6            1.D0,  0.D0,     -.3333333333333D0, .3333333333333D0,
  2368.      7           -.6666666666667D0, .6666666666667D0/
  2369. C
  2370.       DATA WATES / 2.D0,    6*0.D0,    1.D0,        1.D0,       5*0.D0,
  2371.      1            .5555555555556D0, .8888888888889D0, .5555555555556D0,
  2372.      2             4*0.D0,          .3478548451375D0, .6521451548625D0,
  2373.      3            .6521451548625D0, .3478548451375D0,           3*0.D0,
  2374.      4            .3333333333333D0, .3333333333333D0, .1333333333333D1,
  2375.      5             4*0.D0,        2*.1555555555556D0, .2666666666667D0,
  2376.      6             2*.7111111111111D0,    2*0.D0,   2*.0976190476190D0,
  2377.      7            .6476190476190D0,  2*.0642857142857D0,
  2378.      8             2*.5142857142857D0/
  2379. C
  2380.       DATA TRLW4/
  2381.      1     .2D0,.2D0,.3333333333333D0,.6D0,
  2382.      2     .2D0,.6D0,.3333333333333D0,.2D0,
  2383.      3     .5208333333333D0,.5208333333333D0,-.5625000000000D0,
  2384.      4     .5208333333333D0/
  2385. C
  2386.       DATA TRLW7/
  2387.      1     .1012865073235D0,.0597158717898D0,.1012865073235D0,
  2388.      2     .4701420641051D0,.3333333333333D0,.4701420641051D0,
  2389.      3     .7974269853531D0,
  2390.      4     .1012865073235D0,.4701420641051D0,.7974269853531D0,
  2391.      5     .0597158717898D0,.3333333333333D0,.4701420641051D0,
  2392.      6     .1012865073235D0,
  2393.      7     .1259391805448D0,.1323941527885D0,.1259391805448D0,
  2394.      8     .1323941527885D0,.2250000000000D0,.1323941527885D0,
  2395.      9     .1259391805448D0/
  2396. C
  2397.       DATA TRLWD/
  2398.      1     .0651301029022D0,.0486903154253D0,.0486903154253D0,
  2399.      2     .0651301029022D0,.3128654960049D0,.2603459660790D0,
  2400.      3     .2603459660790D0,.3128654960049D0,.6384441885698D0,
  2401.      4     .3333333333333D0,.4793080678419D0,.6384441885698D0,
  2402.      5     .8697397941956D0,
  2403.      6     .0651301029022D0,.3128654960049D0,.6384441885698D0,
  2404.      7     .8697397941956D0,.0486903154253D0,.2603459660790D0,
  2405.      8     .4793080678419D0,.6384441885698D0,.0486903154253D0,
  2406.      9     .3333333333333D0,.2603459660790D0,.3128654960049D0,
  2407.      A     .0651301029022D0,
  2408.      B     .0533472356088D0,.0771137608903D0,.0771137608903D0,
  2409.      C     .0533472356088D0,.0771137608903D0,.1756152574332D0,
  2410.      D     .1756152574332D0,.0771137608903D0,.0771137608903D0,
  2411.      E    -.1495700444677D0,.1756152574332D0,.0771137608903D0,
  2412.      F     .0533472356088D0/
  2413. C
  2414.       DATA PSIV / .3333333333333D0, .1666666666667D0, .6666666666667D0,
  2415.      1            .1666666666667D0, .5D0, .5D0, 0.D0,
  2416.      2            .1012865073235D0, .7974269853531D0, .1012865073235D0,
  2417.      3            .4701420641051D0, .4701420641051D0, .0597158717898D0,
  2418.      4            .3333333333333D0/
  2419. C
  2420.       DATA ETAV / .3333333333333D0, .1666666666667D0, .1666666666667D0,
  2421.      1            .6666666666667D0, 0.D0, .5D0, .5D0,
  2422.      2            .1012865073235D0, .1012865073235D0, .7974269853531D0,
  2423.      3            .0597158717898D0, .4701420641051D0, .4701420641051D0,
  2424.      4            .3333333333333D0/
  2425. C
  2426.       DATA WGTV / 1.D0,
  2427.      1            .3333333333333D0, .3333333333333D0, .3333333333333D0,
  2428.      2            .3333333333333D0, .3333333333333D0, .3333333333333D0,
  2429.      3            .1259391805448D0, .1259391805448D0, .1259391805448D0,
  2430.      4            .1323941527885D0, .1323941527885D0, .1323941527885D0,
  2431.      5            .225D0/
  2432. C
  2433.       END
  2434. C *CDC* *DECK ELCAL
  2435. C *UNI* )FOR,IS  N.ELCAL,  R.ELCAL
  2436.       SUBROUTINE ELCAL (NEGL,NEGNL,MAXEST,ISUB)
  2437. C
  2438. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2439. C .                                                                   .
  2440. C .   P R O G R A M                                                   .
  2441. C .      . TO CALL THE APPROPRIATE ELEMENT ROUTINES FOR READING,      .
  2442. C .        GENERATING AND STORING THE ELEMENT DATA                    .
  2443. C .                                                                   .
  2444. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2445. C
  2446.       IMPLICIT REAL*8 (A-H,O-Z)
  2447.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXSET,NSTE,MA
  2448.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NGEL,NGENL,IMASS,IDAMP,ISTAT
  2449.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  2450.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  2451.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  2452.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  2453.       COMMON /ADINAI/ OPVAR(7),TSTART,IRINT,ISTOTE
  2454.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  2455.       COMMON /ELGLTH/ NFIRST,NLAST,NBCEL
  2456.       COMMON /TEMPRT/ TEMP1,TEMP2,ITEMPR,ITP96,N6A,N6B
  2457.       COMMON /RANDI/ N0A,N1D,IELCPL
  2458.       COMMON /ELSTP/ TIME,IDTHF
  2459.       COMMON /MPRNT/ IOUTPT,ISTPRT
  2460.       COMMON /DVGREF/ INDMNO
  2461.       COMMON /MINDEX/ MITWO(2),MITEN(2)
  2462.       COMMON A(1)
  2463.       REAL A
  2464.       INTEGER IA(1)
  2465.       EQUIVALENCE (A(1),IA(1))
  2466.       EQUIVALENCE (NPAR(1),NPAR1), (NPAR(3),INDNL)
  2467. C
  2468.       MINPAR=1
  2469.       MAXPAR=13
  2470.       INDMNO=1
  2471. C
  2472.       NGL=0
  2473.       NGNL=0
  2474.       IF (ISUB.EQ.0) GO TO 20
  2475.       NUMELG=NEGL
  2476.       IGTEMP=0
  2477.       GO TO 95
  2478. C
  2479.    20 REWIND 1
  2480.       NUMELG=NUMEG
  2481.       IDTHF=0
  2482.       IGTEMP=0
  2483.       ITEMPR=0
  2484. C
  2485. C         * * * * *    R A N D O M A C C E S S       * * *
  2486. C
  2487.       NEGNL1=NEGNL + 1
  2488.       IF (KLIN.EQ.0) GO TO 95
  2489. C *CDC*      CALL OPENMS (2,MITWO,2,0)
  2490. C  * * * DEACTIVATE THE ABOVE CARD FOR  IBM
  2491.       DO 92 I=1,NEGNL1
  2492.       J=N0A + (I-1)
  2493.    92 IA(J)=0
  2494. C *CDC*      CALL STINDX (2,IA(N0A),NEGNL1,0)
  2495. C
  2496. C  * * * DEACTIVATE ABOVE CARD FOR IBM MACHINE
  2497. C
  2498. C
  2499. C     R E A D I N   A L L   E L E M E N T   G R O U P S   I N F O
  2500. C
  2501. C
  2502.    95 IF (NUMELG.EQ.0) RETURN
  2503.       IF (IDATWR.GT.1) GO TO 98
  2504.       IF (ISUB.EQ.0) WRITE (6,2000)
  2505.       IF (ISUB.GT.0) WRITE (6,2010)
  2506. C
  2507.    98 DO 100 IG=1,NUMELG
  2508.       NG=IG
  2509. C
  2510.       ITEMPR=0
  2511. C
  2512.       READ(5,1000) NPAR
  2513. C
  2514.       NN=1
  2515.       IF (INDNL.GT.0) NN=2
  2516.       IF (INDNL.GT.1) INDMNO=0
  2517.       IF (NPAR1.GE.MINPAR .AND. NPAR1.LE.MAXPAR) GO TO 125
  2518.       WRITE (6,3100) NG,NPAR1,MINPAR,MAXPAR
  2519.       STOP
  2520. C
  2521.   125 IF (NG.NE.1 .AND. IDATWR.LE.1) WRITE (6,2005)
  2522.       IF (NN.EQ.1) NGL=NGL + 1
  2523.       IF (NN.EQ.2) NGNL=NGNL + 1
  2524.       IF (NGL.GT.NEGL .OR. NGNL.GT.NEGNL)
  2525.      *WRITE (6,3030) NEGL,NEGNL,NGL,NGNL
  2526. C
  2527.       IF (IDATWR.GT.1) GO TO 35
  2528.       IF (NN.EQ.1) WRITE (6,2011) NG
  2529.       IF (NN.EQ.2) WRITE(6,2012) NG
  2530. C
  2531. C
  2532.    35 CALL ELEMNT
  2533. C
  2534.       IF (ITEMPR.GT.IGTEMP) IGTEMP=ITEMPR
  2535. C
  2536.       IF (MIDEST.GT.MAXEST) MAXEST=MIDEST
  2537. C
  2538.       IF (NN.EQ.2) GO TO 90
  2539.       WRITE (NN) MIDEST,(A(I),I=NFIRST,NLAST)
  2540.       GO TO 100
  2541. C
  2542. C         * * * * *    R A N D O M A C C E S S       * * *
  2543. C
  2544.    90 IA(N0 + NGNL - 1)=MIDEST
  2545.       NREC2=NGNL
  2546.       CALL WRITMS (2,A(NFIRST),MIDEST,NREC2,-1)
  2547. C
  2548. C         * * * * *    R A N D O M A C C E S S       * * *
  2549. C
  2550.   100 CONTINUE
  2551. C
  2552.       ITEMPR=IGTEMP
  2553. C
  2554.       IF (ISTPRT.GT.0) WRITE (6,2040) MAXEST
  2555. C
  2556.       IF (NGL.EQ.NEGL .AND. NGNL.EQ.NEGNL) RETURN
  2557.       WRITE (6,3030) NEGL,NEGNL,NGL,NGNL
  2558.       STOP
  2559. C
  2560.  1000 FORMAT (20I4)
  2561.  2000 FORMAT (1H1,36HE L E M E N T   G R O U P   D A T A ///)
  2562.  2010 FORMAT (1H1,62HS U B S T R U C T U R E   E L E M E N T   G R O U P
  2563.      1   D A T A  ///)
  2564.  2005 FORMAT (1H1)
  2565.  2011 FORMAT (27H E L E M E N T   G R O U P ,27(1H.),2H =,I5,4X,
  2566.      1        10H( LINEAR )///)
  2567.  2012 FORMAT (27H E L E M E N T   G R O U P ,27(1H.),2H =,I5,4X,
  2568.      1        13H( NONLINEAR )///)
  2569.  2040 FORMAT (////49H MAX  ( LENGTH OF ARRAYS USED FOR STORING ELEMENT/
  2570.      1        51H GROUP DATA ) . . . . . . . . . . . .( MAXEST ) . =,I5)
  2571.  3030 FORMAT (1H1,42H **STOP  ERROR IN ELEMENT GROUP DATA INPUT,/,
  2572.      1        36H SPECIFIED NUMBER OF ELEMENT GROUPS-,I3,5H(LIN),I3,
  2573.      2        8H(NONLIN),/,29H BUT ELEMENT GROUPS READ ARE-,I3,5H(LIN),
  2574.      3        I3,8H(NONLIN) ,/1X)
  2575.  3100 FORMAT (///24H I N P U T   E R R O R -/
  2576.      1        29H DETECTED BY SUBROUTINE ELCAL//5X,
  2577.      2        16H ELEMENT GROUP =,I5/5X,10H NPAR(1) =,I5//5X,
  2578.      3        23H NPAR(1) SHOULD BE GE. ,I2, 9H AND LE. ,I2//8H S T O P)
  2579. C
  2580.       END
  2581. C *CDC* *DECK,COMPCT
  2582. C *UNI* FOR,IS N.COMPCT, R.COMPCT
  2583.       SUBROUTINE COMPCT (MIDSS,FMIDSS,MTEMP,DUMY)
  2584. C
  2585. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2586. C .                                                                   .
  2587. C .   P R O G R A M                                                   .
  2588. C .          TO    COMPACT THE MID-SURFACE NORMAL INDICATOR VECTOR,   .
  2589. C .                MIDSS, AND NORMAL VECTOR MATRIX, FMIDSS.           .
  2590. C .                ONLY NORMAL VECTORS RETATED TO MID-SURFACE NODES   .
  2591. C .                WHICH BELONG TO GEOMETRIC NONLINEAR ELEMENT GROUPS .
  2592. C .                ARE STORED                                         .
  2593. C .                                                                   .
  2594. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2595. C
  2596.       IMPLICIT REAL*8 (A-H,O-Z)
  2597. C
  2598.       COMMON /MIDSYS/ NMIDSS,MIDIND,MAXMSS
  2599.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  2600.       COMMON /PORT/ INPORT,JNPORT,NPUTSV,LUNODE,LU1,LU2,LU3,JDC,JVC,JAC
  2601. C
  2602.       DIMENSION MIDSS(1),FMIDSS(3,1),DUMY(3,1),MTEMP(1)
  2603.       DATA RECLB1/8HINORMALS/
  2604.       KK=0
  2605.       DO 10 I=1,NUMNP
  2606.       II=MIDSS(I)
  2607.       IF (II .EQ. 0) GO TO 10
  2608.       KK=KK + 1
  2609.       IF (II .GT. 0) GO TO 10
  2610.       J=-II
  2611.       MTEMP(J)=I
  2612.       DO 20 K=1,3
  2613.    20 DUMY(K,J)=FMIDSS(K,KK)
  2614.    10 CONTINUE
  2615. C
  2616.       DO 30 J=1,MIDIND
  2617.    30 MIDSS(J)=MTEMP(J)
  2618. C
  2619. C***  DATA PORTHOLE (START)
  2620. C
  2621.       RECLAB = RECLB1
  2622.       MIDIN3 = MIDIND * 3
  2623.       IF (JNPORT.EQ.0 .OR. NPUTSV.EQ.0) RETURN
  2624.       IF (JDC.NE.0)
  2625.      1  WRITE (LUNODE) RECLAB,MIDIND,MIDIN3,(MIDSS(I),I=1,MIDIND),
  2626.      2  ((DUMY(I,J),I=1,3),J=1,MIDIN3)
  2627. C
  2628. C***  DATA PORTHOLE (END)
  2629. C
  2630. C
  2631.       RETURN
  2632.       END
  2633. C *CDC* *DECK ADDRES
  2634. C *UNI* )FOR,IS  N.ADDRES, R.ADDRES
  2635.       SUBROUTINE ADDRES (MAXA,MHT,NEQ,NWK,MA)
  2636. C
  2637. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2638. C .                                                                   .
  2639. C .   P R O G R A M                                                   .
  2640. C .      . TO CALCULATE ADDRESSES OF DIAGONAL ELEMENTS IN BANDED      .
  2641. C .        MATRIX WHOSE COLUMN HEIGHTS ARE KNOWN                      .
  2642. C .                                                                   .
  2643. C .        MHT  = ACTIVE COLUMN HEIGHTS                               .
  2644. C.         MAXA = ADDRESSES OF DIAGONAL ELEMENTS                      .
  2645. C .                                                                   .
  2646. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2647. C
  2648.       DIMENSION MAXA(1),MHT(1)
  2649. C
  2650.       MAXA(1)=1
  2651.       MAXA(2)=2
  2652.       MA=0
  2653.       IF (NEQ.EQ.1) GO TO 100
  2654.       DO 10 I=2,NEQ
  2655.       IF (MHT(I).GT.MA) MA=MHT(I)
  2656.    10 MAXA(I+1)=MAXA(I) + MHT(I) + 1
  2657.   100 MA=MA + 1
  2658.       NWK=MAXA(NEQ+1) - MAXA(1)
  2659. C
  2660.       RETURN
  2661.       END
  2662. C *CDC* *DECK LOADSV
  2663. C *UNI* )FOR,IS N.LOADSV, R.LOADSV
  2664.       SUBROUTINE LOADSV (ILOA,NLOADS,NPR2S,NPR3S,NPBMS,NP3DBS,NPPLS,
  2665.      1                   NPSHS,NODE3S,KKK)
  2666. C
  2667. C     SUBROUTINE TO SWITCH LOAD CONTROL INFORMATION
  2668. C
  2669.       COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
  2670.      1             NPDIS,NTEMP
  2671.       COMMON /DISCON/ NDISCE,NIDM
  2672.       INTEGER ILOA(13)
  2673. C
  2674.       IF (KKK - 2) 1, 2, 3
  2675. C
  2676. C     SAVE MASTER LOAD CONTROL INFORMATION
  2677. C
  2678.     1 ILOA(1)=NLOAD
  2679.       ILOA(2)=NPR2
  2680.       ILOA(3)=NPR3
  2681.       ILOA(4)=NPBM
  2682.       ILOA(5)=NP3DB
  2683.       ILOA(6)=NPPL
  2684.       ILOA(7)=NPSH
  2685.       ILOA(8)=NODE3
  2686.       ILOA(9)=IDGRAV
  2687.       ILOA(10)=NPDIS
  2688.       ILOA(11)=NTEMP
  2689.       ILOA(12)=NDISCE
  2690.       ILOA(13)=NIDM
  2691.       GO TO 100
  2692. C
  2693. C     INTRODUCE SUBSTRUCTURE LOAD DATA
  2694. C
  2695.     2 NLOAD=NLOADS
  2696.       NPR2=NPR2S
  2697.       NPR3=NPR3S
  2698.       NPBM=NPBMS
  2699.       NP3DB=NP3DBS
  2700.       NPPL=NPPLS
  2701.       NPSH=NPSHS
  2702.       NODE3=NODE3S
  2703.       IDGRAV=IDGRAV
  2704.       NPDIS=0
  2705.       NTEMP=0
  2706.       NDISCE=0
  2707.       NIDM=0
  2708.       GO TO 100
  2709. C
  2710. C     REINSERT MASTER LOAD CONTROL INFORMATION
  2711. C
  2712.     3 NLOAD=ILOA(1)
  2713.       NPR2=ILOA(2)
  2714.       NPR3=ILOA(3)
  2715.       NPBM=ILOA(4)
  2716.       NP3DB=ILOA(5)
  2717.       NPPL=ILOA(6)
  2718.       NPSH=ILOA(7)
  2719.       NODE3=ILOA(8)
  2720.       IDGRAV=ILOA(9)
  2721.       NPDIS=ILOA(10)
  2722.       NTEMP=ILOA(11)
  2723.       NDISCE=ILOA(12)
  2724.       NIDM=ILOA(13)
  2725. C
  2726.   100 RETURN
  2727. C
  2728.       END
  2729. C *CDC* *DECK PRDINN
  2730. C *UNI* )FOR,IS N.PRDINN, R.PRDINN
  2731.       FUNCTION PRDINN (AA,BB,N)
  2732. C
  2733. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2734. C .                                                                   .
  2735. C .   FUNCTION TO CALCULATE THE INNER PRODUCT OF VECTORS AA AND BB    .
  2736. C .   ACCOUNTING FOR PRESCRIBED DISPLACEMENT DEGREES OF FREEDOM       .
  2737. C .                                                                   .
  2738. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2739. C
  2740.       IMPLICIT REAL*8 (A-H,O-Z)
  2741. C
  2742.       COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
  2743.      1             NPDIS,NTEMP
  2744.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  2745. C
  2746.       COMMON A(1)
  2747.       INTEGER IA(1)
  2748.       DIMENSION AA(N),BB(N)
  2749.       REAL A
  2750.       EQUIVALENCE (A(1),IA(1))
  2751. C
  2752.       PRDINN=0.0
  2753.       IF (NPDIS.EQ.0) GO TO 50
  2754.       NP=1
  2755.       NN=IA(N04 + NP - 1)
  2756.       DO 20 I=1,N
  2757.       IF (I-NN) 15,10,15
  2758.    10 NP=NP + 1
  2759.       IF (NP.GT.NPDIS) GO TO 20
  2760.       NN=IA(N04 + NP - 1)
  2761.       GO TO 20
  2762.    15 PRDINN=PRDINN + AA(I)*BB(I)
  2763.    20 CONTINUE
  2764.       RETURN
  2765. C
  2766.    50 DO 100 I=1,N
  2767.   100 PRDINN=PRDINN + AA(I)*BB(I)
  2768.       RETURN
  2769. C
  2770.       END
  2771. C *CDC* *DECK ASSEM
  2772. C *UNI* )FOR,IS  N.ASSEM,  R.ASSEM
  2773.       SUBROUTINE ASSEM (MAXA,AA,CC,DD,BB,WV,EE,NCOLBV,TEMPV2,IGRBLC,
  2774.      1                  LMS,NOD,PRDIS,ISTOH,NBLOCK)
  2775. C
  2776. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2777. C .                                                                   .
  2778. C .   P R O G R A M                                                   .
  2779. C .      . TO ASSEMBLE THE MATRICES NEEDED IN SOLUTION                .
  2780. C .                                                                   .
  2781. C .   E X E C U T I O N   M O D E                                     .
  2782. C .        IND=1   EFFECTIVE LINEAR STIFFNESS MATRIX IS ASSEMBLED     .
  2783. C .        IND=2   MASS MATRIX IS ASSEMBLED                           .
  2784. C .        IND=3   NONLINEAR STIFFNESS MATRIX IS ASSEMBLED            .
  2785. C .                FOR FREQUENCY ANALYSIS                             .
  2786. C .        IND=4   EFFECTIVE NONLINEAR STIFFNESS MATRIX IS ASSEMBLED  .
  2787. C .                AND EFFECTIVE LOAD VECTOR IS UPDATED               .
  2788. C .                                                                   .
  2789. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  2790. C
  2791.       IMPLICIT REAL*8 (A-H,O-Z)
  2792.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  2793.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  2794.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  2795.       COMMON /DISCON/ NDISCE,NIDM
  2796.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  2797.      1        ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  2798.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  2799.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  2800.       COMMON /CONST/  DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  2801.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  2802.       COMMON /MSUPER/ IMODES,NMODES,IMDAMP
  2803.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  2804.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  2805.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  2806.       COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
  2807.      1             NPDIS,NTEMP
  2808.       COMMON /TEMPRT/ TEMP1,TEMP2,ITEMPR,ITP96,N6A,N6B
  2809.       COMMON /RANDI/ N0A,N1D,IELCPL
  2810.       COMMON /NORMS/ RNORM,RENORM,RTOL,DTOL,STOL,SMAX,SMIN,
  2811.      1               DMAX,DMIN,ETOL
  2812.       COMMON /ADDB/ NEQL,NEQR,MLA,NTBLOK
  2813.       COMMON /DPR/ ITWO
  2814.       COMMON /ELSTP/ TIME,IDTHF
  2815.       COMMON A(1)
  2816.       INTEGER IA(1)
  2817.       EQUIVALENCE (A(1),IA(1))
  2818.       REAL EE
  2819.       DIMENSION AA(ISTOH),BB(1),CC(ISTOH),DD(1),EE(1),WV(1),TEMPV2(1)
  2820.      1         ,LMS(1),NOD(1),PRDIS(1)
  2821.       INTEGER MAXA(1),NCOLBV(1),IGRBLC(NBLOCK,1)
  2822. C
  2823. C
  2824. C     B E F O R E   T I M E   I N T E G R A T I O N
  2825. C
  2826.       GO TO (10,100,600,300),IND
  2827. C
  2828. C     A S S E M B L A G E   O F   L I N E A R   M A T R I C E S
  2829. C
  2830. C
  2831. C       1. LINEAR STIFFNESS MATRIX IS ASSEMBLED AND STORED ON TAPE 4
  2832. C
  2833.    10 IF (IOPE.EQ.3) GO TO 100
  2834.       IF (NSUBST.EQ.0 .AND. NEGL.EQ.0) GO TO 100
  2835.       NEQL=1
  2836.       NEQR=0
  2837.       MLA=0
  2838.       NT=4
  2839.       IF (ISUB.GT.0 .AND. ISTAT.EQ.0) NT=12
  2840.       REWIND NT
  2841. C
  2842.       SMAX=0.
  2843.       SMIN=1.E50
  2844.       NEG=NEGL
  2845.       IF (ISUB.GT.0) NEG=NEGLS
  2846.       DO 20 L=1,NBLOCK
  2847.       NEQR=NEQR + NCOLBV(L)
  2848.       IF (ISUB.EQ.0) REWIND 1
  2849.       DO 30 I=1,ISTOH
  2850.    30 AA(I)=0.
  2851. C
  2852.       IF (NEG.EQ.0) GO TO 42
  2853.       DO 40 NG=1,NEG
  2854.       READ (1) NUMEST,(EE(I),I=1,NUMEST)
  2855.       CALL ELEMNT
  2856.    40 CONTINUE
  2857. C
  2858.    42 IF (ISUB.GT.0) GO TO 60
  2859. C
  2860. C     ADD SUBSTRUCTURE LINEAR STIFFNESS MATRICES
  2861. C
  2862.       IF (NSUBST.EQ.0) GO TO 49
  2863.       REWIND 18
  2864.       DO 47 NSUB=1,NSUBST
  2865.       NN=N07 + 8*(NSUB - 1) + 7
  2866.       NTUSE=IA(NN)
  2867.       DO 45 N=1,NTUSE
  2868.       READ (18) ND,(LMS(I),I=1,ND),KRSIZE,(CC(I),I=1,KRSIZE)
  2869. C
  2870.       CALL ADDBAN (AA,MAXA,CC,DD,LMS,ND,1)
  2871. C
  2872.    45 CONTINUE
  2873.    47 CONTINUE
  2874. C
  2875.    49 IF (KLIN.GT.0) GO TO 60
  2876.       DO 50 I=NEQL,NEQR
  2877.       II=MAXA(I) - MLA
  2878.       IF (AA(II).GT.SMAX) SMAX=AA(II)
  2879.       IF (AA(II).LT.SMIN) SMIN=AA(II)
  2880.    50 CONTINUE
  2881. C
  2882.    60 WRITE (NT) AA
  2883.       IF (ISUB.EQ.0) GO TO 80
  2884.       IF (L.EQ.NBLOCK) GO TO 80
  2885.       DO 70 I=1,NEG
  2886.    70 BACKSPACE 1
  2887.    80 NEQL=NEQL + NCOLBV(L)
  2888.       MLA=MAXA(NEQL) - 1
  2889.    20 CONTINUE
  2890. C
  2891.   100 CONTINUE
  2892.       IND=2
  2893.       IF (ISTAT.EQ.0 .AND. IDGRAV.EQ.0) RETURN
  2894.       IF (ISTAT.EQ.0 .AND. ISUB.EQ.1) RETURN
  2895.       NEG=NUMEG
  2896.       IF (ISUB.GT.0) NEG=NEGLS
  2897.       NEQU=NEQ
  2898.       IF (ISUB.GT.0) NEQU=NEQS
  2899. C
  2900. C       2. MASS MATRIX IS ASSEMBLED AND STORED ON TAPE 11
  2901. C
  2902.       IF (ISUB.EQ.0) REWIND 23
  2903.       IF (NSUBST.EQ.0) REWIND 11
  2904.       IF (ISTAT.GT.0) GO TO 112
  2905.       IMASS=1
  2906.   112 READ (23) (DD(I),I=1,NEQU)
  2907.       IF (ISTAT.GT.0) READ (23) (BB(I),I=1,NEQU)
  2908. C
  2909.       IF (IMASS.EQ.2) GO TO 110
  2910. C
  2911. C     2.1 LUMPED  MASS  MATRIX
  2912. C
  2913.       IF (ISUB.GT.0) GO TO 115
  2914.       REWIND 1
  2915.       GO TO 118
  2916.   115 DO 117 I=1,NEG
  2917.   117 BACKSPACE 1
  2918.   118 NN=1
  2919. C
  2920.       IF (NEG.EQ.0) GO TO 121
  2921.       DO 120 NG=1,NEG
  2922.       IF (ISUB.GT.0) GO TO 119
  2923.       IF (NG.GT.NEGL) NN=2
  2924.   119 IF (NN.EQ.1) READ(NN) NUMEST,(EE(I),I=1,NUMEST)
  2925.       IF (NN.EQ.1) GO TO 116
  2926. C
  2927. C        * * * * *        R A N D O M  A C C E S S        * * *
  2928. C
  2929.       NUMEST=IA(N0 + NG-NEGL - 1)
  2930.       NREC2=NG - NEGL
  2931.       CALL READMS (NN,EE,NUMEST,NREC2)
  2932. C
  2933. C        * * * * *        R A N D O M  A C C E S S        * * *
  2934.   116 CALL ELEMNT
  2935.   120 CONTINUE
  2936. C
  2937. C     3. FORM EFFECTIVE MASS MATRIX FOR CENTRAL DIFFERENCE METHOD ONLY
  2938. C
  2939.   121 IF (IOPE.NE.3) GO TO 128
  2940. C
  2941.       WRITE (11) (DD(I),I=1,NEQ)
  2942.       WRITE (11) (BB(I),I=1,NEQ)
  2943.       DO 129 I=1,NEQ
  2944.       DD(I)=A0*DD(I) + A1*BB(I)
  2945.       IF (DD(I).GT.0.) GO TO 129
  2946.       WRITE (6,3000) I,DD(I)
  2947.       STOP
  2948.   129 CONTINUE
  2949.       REWIND 7
  2950.       WRITE (7) (DD(I),I=1,NEQ)
  2951.       RETURN
  2952. C
  2953.   128 WRITE (11) (DD(I),I=1,NEQU)
  2954.       IF (ISTAT.EQ.0 .AND. IDGRAV.EQ.1) GO TO 122
  2955.       WRITE (11) (BB(I),I=1,NEQU)
  2956.       GO TO 200
  2957.   122 IMASS=0
  2958.       RETURN
  2959. C
  2960. C     2.2 CONSISTENT  MASS  MATRIX
  2961. C
  2962.   110 NEQL=1
  2963.       NEQR=0
  2964.       MLA=0
  2965. C
  2966.       DO 130 L=1,NBLOCK
  2967.       NCOLB=NCOLBV(L)
  2968.       NEQR=NEQR + NCOLB
  2969.       IF (ISUB.GT.0) GO TO 134
  2970.       REWIND 1
  2971.       GO TO 136
  2972.   134 DO 135 I=1,NEG
  2973.   135 BACKSPACE 1
  2974.   136 NN=1
  2975.       DO 140 I=1,ISTOH
  2976.   140 AA(I)=0.
  2977. C
  2978.       IF (NEG.EQ.0) GO TO 151
  2979.       DO 150 NG=1,NEG
  2980.       IF (ISUB.GT.0) GO TO 141
  2981.       IF (NG.GT.NEGL) NN=2
  2982.   141 IF (NN.EQ.1) READ(NN) NUMEST,(EE(I),I=1,NUMEST)
  2983.       IF (NN.EQ.1) GO TO 145
  2984. C
  2985. C        * * * * *        R A N D O M  A C C E S S        * * *
  2986. C
  2987.       NUMEST=IA(N0 + NG-NEGL - 1)
  2988.       NREC2=NG - NEGL
  2989.       CALL READMS (NN,EE,NUMEST,NREC2)
  2990. C
  2991. C        * * * * *        R A N D O M  A C C E S S        * * *
  2992. C
  2993.   145 CALL ELEMNT
  2994.   150 CONTINUE
  2995. C
  2996.   151 IF (IMASSN.EQ.0) GO TO 154
  2997.       DO 152 I=1,NCOLB
  2998.       NI=NEQL + I -1
  2999.       II=MAXA(NI) - MLA
  3000.   152 AA(II)=AA(II) + DD(NI)
  3001.   154 WRITE (11) AA
  3002.       NEQL=NEQL + NCOLB
  3003.       MLA=MAXA(NEQL) - 1
  3004.   130 CONTINUE
  3005. C
  3006.       WRITE (11) (BB(I),I=1,NEQU)
  3007. C
  3008. C
  3009. C     3. FORM EFFECTIVE LINEAR STIFFNESS MATRIX AND STORE ON TAPE 7
  3010. C        FOR IMPLICIT TIME INTEGRATION ONLY
  3011. C
  3012. C
  3013.   200 IF (NSTE.EQ.0 .OR. IMODES.GT.0) RETURN
  3014.       NT=7
  3015.       IF (ISUB.GT.0) NT=12
  3016.       NEQL=0
  3017.       MLA=0
  3018.       REWIND 4
  3019.       REWIND NT
  3020.       IF (NSUBST.EQ.0) REWIND 11
  3021. C
  3022.       IF (IMASS.EQ.2) GO TO 260
  3023. C
  3024.       DO 210 L=1,NBLOCK
  3025.       IF (NEGL.EQ.0 .AND. NSUBST.EQ.0) GO TO 212
  3026.       READ (4) AA
  3027.       GO TO 216
  3028.   212 DO 214 I=1,ISTOH
  3029.   214 AA(I)=0.
  3030.   216 NCOLB=NCOLBV(L)
  3031.       DO 220 K=1,NCOLB
  3032.       II=MAXA(NEQL+K) - MLA
  3033.       AA(II)=AA(II) + A0*DD(NEQL+K) + A1*BB(NEQL+K)
  3034.   220 CONTINUE
  3035.       WRITE (NT) AA
  3036.       NEQL=NEQL + NCOLB
  3037.       MLA=MAXA(NEQL+1) - 1
  3038.   210 CONTINUE
  3039.       RETURN
  3040. C
  3041.   260 IF (NSUBST.EQ.0) GO TO 262
  3042.       NN=NBLOCK + 1
  3043.       DO 261 I=1,NN
  3044.   261 BACKSPACE 11
  3045.   262 DO 270 L=1,NBLOCK
  3046.       IF (NEGL.EQ.0 .AND. NSUBST.EQ.0) GO TO 263
  3047.       READ (4) AA
  3048.       GO TO 266
  3049.   263 DO 264 I=1,ISTOH
  3050.   264 AA(I)=0.
  3051.   266 READ (11) CC
  3052.       DO 280 K=1,ISTOH
  3053.   280 AA(K)=AA(K) + A0*CC(K)
  3054.       IF (IDAMPN.EQ.0) GO TO 290
  3055.       NCOLB=NCOLBV(L)
  3056.       DO 284 K=1,NCOLB
  3057.       II=MAXA(NEQL+K) - MLA
  3058.   284 AA(II)=AA(II) + A1*BB(NEQL+K)
  3059.       NEQL=NEQL + NCOLB
  3060.       MLA=MAXA(NEQL+1) - 1
  3061.   290 WRITE (NT) AA
  3062.   270 CONTINUE
  3063.       IF (NSUBST.EQ.0) GO TO 299
  3064.       IF (ISUB.GT.0) READ (11)
  3065.       IF (ISUB.GT.0) GO TO 299
  3066.       DO 298 I=1,NBLOCK
  3067.   298 BACKSPACE 11
  3068.   299 RETURN
  3069. C
  3070. C
  3071. C     D U R I N G   T I M E   I N T E G R A T I O N
  3072. C
  3073. C
  3074. C     EFFECTIVE LINEAR STIFFNESS MATRIX IS READ AND ELEMENT ROUTINES
  3075. C     ARE CALLED TO UPDATE THE MATRIX AND THE EFFECTIVE LOAD VECTOR
  3076. C     FOR NONLINEARITIES
  3077. C
  3078.   300 IF (KLIN.EQ.0 .AND. IOPE.NE.3) GO TO 385
  3079. C
  3080. C     FOR CENTRAL DIFFERENCE METHOD ONLY, FORM EFFECTIVE LOAD VECTOR IN
  3081. C     LINEAR ANALYSIS AND NONLINEAR ANALYSIS
  3082. C
  3083.   297 IF (IOPE.NE.3 .OR. NEGL.EQ.0) GO TO 303
  3084.       NEQL=1
  3085.       NEQR=NEQ
  3086.       REWIND 1
  3087.       DO 301 NG=1,NEGL
  3088.       READ (1) NUMEST,(EE(I),I=1,NUMEST)
  3089.       CALL ELEMNT
  3090.   301 CONTINUE
  3091.       IF (NEGNL.EQ.0) RETURN
  3092. C
  3093. C     READ NODAL POINT TEMPERATURES
  3094. C
  3095.   303 IF (ITEMPR.EQ.0) GO TO 302
  3096.       NUMP1=NUMNP + 1
  3097.       READ (56) (TEMPV2(I),I=1,NUMP1)
  3098.       CALL TCHECK (TEMPV2,TIME)
  3099. C
  3100. C       1. CASE OF NO NEW STIFFNESS MATRIX TO BE FORMED
  3101. C
  3102.   302 NEQL=1
  3103.       NEQR=NEQ
  3104.       IF (IREF.EQ.0) GO TO 310
  3105.       DO 306 NG=1,NEGNL
  3106.       NUMEST=IA(N0 + NG - 1)
  3107. C
  3108. C        * * * * *        R A N D O M  A C C E S S        * * *
  3109. C
  3110.   304 NREC2=NG
  3111.       CALL READMS (2,EE,NUMEST,NREC2)
  3112.       CALL ELEMNT
  3113.       NREC2=NG
  3114.       CALL WRITMS (2,EE,NUMEST,NREC2,-1)
  3115. C
  3116. C        * * * * *        R A N D O M  A C C E S S        * * *
  3117. C
  3118.   306 CONTINUE
  3119.       GO TO 350
  3120. C
  3121. C       2. CASE OF NEW STIFFNESS MATRIX TO BE FORMED
  3122. C
  3123.   310 NEQR=0
  3124.       MLA=0
  3125.       NTAPE=4
  3126.       IF (ISTAT.EQ.1) NTAPE=7
  3127.       REWIND NTAPE
  3128.       REWIND 12
  3129. C
  3130.       SMAX=0.
  3131.       SMIN=1.E50
  3132.       DO 340 L=1,NBLOCK
  3133.       NEQR=NEQR + NCOLBV(L)
  3134.       IF (ISTAT.EQ.1) GO TO 314
  3135.       IF (NEGL.GT.0 .OR. NSUBST.GT.0) GO TO 314
  3136.       DO 312 I=1,ISTOH
  3137.   312 AA(I)=0.
  3138.       GO TO 316
  3139.   314 READ (NTAPE) AA
  3140.   316 DO 320 NG=1,NEGNL
  3141.       NUMEST=IA(N0 + NG - 1)
  3142.       IF (NBLOCK.EQ.1 .OR. NUMEG.EQ.1) GO TO 318
  3143.       IF (MODEX.NE.2 .AND. KSTEP.EQ.1) GO TO 318
  3144.       IF (IGRBLC(L,NG).EQ.-1) GO TO 320
  3145. C
  3146. C        * * * * *        R A N D O M  A C C E S S        * * *
  3147. C
  3148.   318 NREC2=NG
  3149.       CALL READMS (2,EE,NUMEST,NREC2)
  3150.       CALL ELEMNT
  3151.       NREC2=NG
  3152.       CALL WRITMS (2,EE,NUMEST,NREC2,-1)
  3153. C
  3154. C        * * * * *        R A N D O M  A C C E S S        * * *
  3155. C
  3156.       IF (NBLOCK.EQ.1 .OR. NUMEG.EQ.1) GO TO 320
  3157.       IF (MODEX.EQ.2 .OR. KSTEP.GT.1) GO TO 320
  3158.       IGRBLC(L,NG)=IELCPL
  3159.   320 CONTINUE
  3160. C
  3161.       DO 330 I=NEQL,NEQR
  3162.       II=MAXA(I) - MLA
  3163.       IF (AA(II).GT.SMAX) SMAX=AA(II)
  3164.       IF (AA(II).LT.SMIN) SMIN=AA(II)
  3165.   330 CONTINUE
  3166. C
  3167.       WRITE (12) AA
  3168.       NEQL=NEQL + NCOLBV(L)
  3169.       MLA=MAXA(NEQL) - 1
  3170.   340 CONTINUE
  3171. C
  3172. C     CALCULATE NORM OF INCREMENTAL LOAD
  3173. C
  3174.   350 CONTINUE
  3175. C
  3176. C     AT PRESCRIBED DISPLACEMENT DOF MODIFY LOAD VECTOR APPROPRIATELY
  3177. C
  3178.   385 IF (NPDIS.EQ.0) RETURN
  3179.       NP=1
  3180.       NN=NOD(NP)
  3181.       PIVOT=10.**20
  3182.       DO 400 I=1,NEQ
  3183.       IF (I - NN) 400,390,400
  3184.   390 DUM=PRDIS(NP)
  3185.       IF (KLIN.GT.0) DUM=PRDIS(NP) - DD(I)
  3186.       BB(I)=SMAX*PIVOT*DUM
  3187.       IF (NP.EQ.NPDIS) RETURN
  3188.       NP=NP + 1
  3189.       NN=NOD(NP)
  3190.   400 CONTINUE
  3191. C
  3192.       RETURN
  3193. C
  3194. C
  3195. C     F R E Q U E N C Y   A N A L Y S I S
  3196. C
  3197. C
  3198. C     LINEAR STIFFNESS MATRIX IS READ FROM TAPE
  3199. C     AND IS UPDATED FOR NONLINEARITIES
  3200. C
  3201.   600 IF (MODEX.EQ.0 .OR. NEGNL.EQ.0) GO TO 650
  3202. C
  3203. C     READ NODAL POINT TEMPERATURES
  3204. C
  3205.       IF (ITEMPR.EQ.0) GO TO 602
  3206.       NUMP1=NUMNP + 1
  3207.       READ (56) (TEMPV2(I),I=1,NUMP1)
  3208.       CALL TCHECK (TEMPV2,TIME)
  3209.       BACKSPACE 56
  3210. C
  3211.   602 IND=4
  3212.       NEQL=1
  3213.       NEQR=0
  3214.       MLA=0
  3215.       REWIND 4
  3216.       REWIND 12
  3217. C
  3218.       DO 610 L=1,NBLOCK
  3219.       NEQR=NEQR + NCOLBV(L)
  3220.       IF (NEGL.GT.0 .OR. NSUBST.GT.0) GO TO 620
  3221.       DO 630 I=1,ISTOH
  3222.   630 AA(I)=0.
  3223.       GO TO 632
  3224.   620 READ (4) AA
  3225. C
  3226.   632 DO 640 NG=1,NEGNL
  3227. C
  3228. C     * * * * *    R A N D O M   A C C E S S   * * * *
  3229. C
  3230.       NUMEST=IA(N0 + NG - 1)
  3231.       NREC2=NG
  3232.       CALL READMS (2,EE,NUMEST,NREC2)
  3233. C
  3234. C     * * * * *    R A N D O M   A C C E S S   * * * *
  3235. C
  3236.       CALL ELEMNT
  3237.   640 CONTINUE
  3238. C
  3239.       WRITE (12) AA
  3240.       NEQL=NEQL + NCOLBV(L)
  3241.       MLA=MAXA(NEQL) - 1
  3242.   610 CONTINUE
  3243. C
  3244. C     CALCULATE FREQUENCIES AND MODE SHAPES
  3245. C
  3246. C *CDC*  650 CALL OVERLAY (5HADINA,20B,0B,6HRECALL)
  3247.   650 CALL FREQS
  3248. C
  3249.  3000 FORMAT (3X,10H***STOP***       /,
  3250.      1        13X,38HZERO EFFECTIVE MASS INPUT FOR D.O.F. =  ,I5   /,
  3251.      2        13X,22HEFFECTIVE MASS VALUE =  ,E14.6    /)
  3252.       RETURN
  3253. C
  3254. C
  3255.       END
  3256. C *CDC* *DECK,LOADMS
  3257. C *UNI* )FOR,IS  N.LOADMS, R.LOADMS
  3258.       SUBROUTINE LOADMS
  3259. C
  3260. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3261. C .                                                                   .
  3262. C .   P R O G R A M                                                   .
  3263. C .      . TO CALCULATE EFFECTIVE LOADS FOR MASTER STRUCTURE          .
  3264. C .        AND, IF APPLICABLE, FOR SUBSTRUCTURES                      .
  3265. C .                                                                   .
  3266. C .        APPLIED LOADS ARE BROUGHT INTO CORE FROM TAPE AND          .
  3267. C .        LOADEF IS CALLED TO CALCULATE EFFECTIVE LOADS.  FOR        .
  3268. C .        SUBSTRUCTURES, THE LOAD VECTOR IS ALSO REDUCED AND         .
  3269. C .        ADDED TO THE MASTER STRUCTURE LOAD VECTOR                  .
  3270. C .        ALSO, THE NONLINEAR STIFFNESS EFFECT AND, IF APPLICABLE,   .
  3271. C .        THE MASS AND DAMPING EFFECTS ARE ADDED TO THE EFFECTIVE    .
  3272. C .        LOAD VECTOR.                                               .
  3273. C .                                                                   .
  3274. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3275.       IMPLICIT REAL*8 (A-H,O-Z)
  3276.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  3277.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  3278.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  3279.       COMMON /RANDI/ N0A,N1D,IELCPL
  3280.       COMMON /SRANDI/ N09A,N09B
  3281.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  3282.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  3283.       COMMON /MSUPER/ IMODES,NMODES,IMDAMP
  3284.       COMMON /TEMP/ ISPEC
  3285.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  3286.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  3287.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  3288.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  3289.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  3290.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  3291.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  3292.       COMMON /SUBSTF/ NREC16
  3293.       COMMON /LOA/ NLOAD,NPR2,NPR3,NODE3,IDGRAV,NPDIS,NTEMP
  3294.       COMMON /NORMS/ RNORM,RENORM,RTOL,DTOL,STOL,SMAX,SMIN,
  3295.      1               DMAX,DMIN,ETOL
  3296.       COMMON /DPR/ ITWO
  3297.       COMMON /FREQIF/ ISTOH,N1A,N1B,N1C,N1S
  3298.       COMMON /ADDB/ NEQL,NEQR,MLA,NBLOCK
  3299.       COMMON /DISCON/ NDISCE,NIDM
  3300.       COMMON A(1)
  3301.       INTEGER IA(1)
  3302.       REAL A
  3303.       DIMENSION DIRCOS(9)
  3304.       EQUIVALENCE (A(1),IA(1))
  3305. C
  3306. C      E X T E R N A L L Y   A P P L I E D   L O A D S
  3307. C                    (M A S T E R)
  3308. C
  3309.       NN=N3 + NEQ*ITWO - 1
  3310.       READ (3) (A(I),I=N3,NN)
  3311.       IF (IMODES.GT.0) RETURN
  3312.       IF (NSUBST.EQ.0) REWIND 11
  3313.       CALL LOADEF (A(N1),A(N1A),A(N2),A(N1),A(N7),A(N8),A(N3),A(N6),
  3314.      1             A(N4),A(N9),A(N04),A(N05),NBLOCK,ISTOH,NEQ)
  3315.       REWIND 11
  3316. C
  3317. C     SUBSTRUCTURE LOADS
  3318. C
  3319.       IF (NSUBST.EQ.0 .OR. ISTAT.EQ.0) GO TO 300
  3320.       ISUB=1
  3321.       NEQT=NEQ + NDISCE
  3322.       M2=N2 + NEQT*ITWO
  3323.       M3=N3 + NEQT*ITWO
  3324.       M7=N7 + NEQT*ITWO
  3325.       M8=N8 + NEQT*ITWO
  3326.       M9=N9 + NEQ*ITWO
  3327.       NREC16=0
  3328.       NREC17=NSTE  + KSTEP
  3329.       REWIND NSTAPE
  3330.       DO 200 NSUB=1,NSUBST
  3331.       NN=N07 + 8*(NSUB - 1)
  3332.       NEQS=IA(NN)
  3333.       NWKS=IA(NN + 1)
  3334.       MAXES=IA(NN + 2)
  3335.       NBCEL=IA(NN + 3)
  3336.       NBLOCS=IA(NN + 4)
  3337.       ISTOHS=IA(NN + 5)
  3338.       NEQC=IA(NN + 6)
  3339.       M1A=N1S + NEQS + 1
  3340.       M1B=M1A + NBLOCS
  3341.       NN=M1B + NBLOCS - 1
  3342.       READ (NSTAPE) NTUSE,NEGLS,NUMNPS,NODCON,NODRET,
  3343.      1                   (IDOFS(I),I=1,6),NDOFS,(IA(I),I=N1S,NN)
  3344.       IF (IMASS.EQ.2) GO TO 120
  3345.       NN=M9 + NEQS*ITWO - 1
  3346.       READ (11) (A(I),I=M9,NN)
  3347.   120 DO 150 NTM=1,NTUSE
  3348. C
  3349. C   * * * * *    R A N D O M   A C C E S S   * * *
  3350. C
  3351.       CALL READMS (17,A(M3),NEQS,NREC17)
  3352. C
  3353. C   * * * * *    R A N D O M   A C C E S S   * * *
  3354. C
  3355.       CALL LOADEF (A(N1S),A(M1A),A(M2),A(N1S),A(M7),A(M8),A(M3),A(N6),
  3356.      1             A(N4),A(M9),A(M9),A(M9),NBLOCS,ISTOHS,NEQS)
  3357. C
  3358. C
  3359. C     REDUCE LOAD VECTOR AND ADD TO MASTER LOAD VECTOR
  3360. C
  3361. C
  3362. C
  3363. C      TAKE REDUCED STIFFNESS MATRIX INTO CORE, IF ONE BLOCK CASE
  3364. C           (AND NOT ALREADY THERE)
  3365.       IF (NBLOCS.GT.1) GO TO 140
  3366. C
  3367. C   * * * * *    R A N D O M   A C C E S S   * * *
  3368. C
  3369.       KK=NREC16 + 1
  3370.       CALL READMS(16,A(N4),ISTOHS,KK)
  3371. C
  3372. C   * * * * *    R A N D O M   A C C E S S   * * *
  3373. C
  3374.   140 CONTINUE
  3375.       CALL COLSOL (A(N1S),A(M1A),A(N1S),A(N4),A(N4),A(M3),A(M3),A(N1S),
  3376.      1             NEQS,NBLOCS,ISTOHS,12,16,2)
  3377. C
  3378. C   * * * * *    R A N D O M   A C C E S S   * * *
  3379. C
  3380.       CALL WRITMS (17,A(M3),NEQC,NREC17,-1)
  3381. C
  3382. C   * * * * *    R A N D O M   A C C E S S   * * *
  3383. C
  3384.       READ (NSTAPE) NXYZ,LREUSE,NLOADS,NPR2S,NPR3S,NPBMS,NP3DBS,
  3385.      1              NPPLS,NPSHS,NODE3S,
  3386.      2             (DIRCOS(I),I=1,9),ND,(IA(N6+I-1),I=1,ND)
  3387.       NN=NEQC*ITWO + M3
  3388.       CALL ADDMA (A(N3),A(NN),A(N6),ND)
  3389.       M2=M2 + NEQS*ITWO
  3390.       M7=M7 + NEQS*ITWO
  3391.       M8=M8 + NEQS*ITWO
  3392.       NREC17=NREC17 + NSTE
  3393.       IF (IDAMPN.EQ.1 .AND. NTM.LT.NTUSE) BACKSPACE 11
  3394.       IF (IMASS.NE.2 .OR. NTM.EQ.NTUSE) GO TO 150
  3395.       DO 145 II=1,NBLOCS
  3396.   145 BACKSPACE 11
  3397.   150 CONTINUE
  3398.       IF (IDAMPN.EQ.0) READ (11)
  3399.       NREC16=NREC16 + NBLOCS + 1
  3400.   200 CONTINUE
  3401.       ISUB=0
  3402.   300 IF (IOPE.EQ.3) GO TO 400
  3403.       IF (ISPEC.EQ.1) GO TO 310
  3404.       REWIND 22
  3405.       NN=N3 + NEQ*ITWO - 1
  3406.       WRITE (22) (A(I),I=N3,NN)
  3407. C
  3408. C     ADD MASS EFFECT IF NEGL AND NSUBST EQ 0
  3409. C     AND ISPEC EQUALS 0
  3410. C
  3411.       IF (KLIN.EQ.0) GO TO 320
  3412.       IF (NEGL.GT.0 .OR. NSUBST.GT.0) GO TO 315
  3413.       IF(ISTAT.EQ.0) GO TO 400
  3414.       CALL SHTADV (A(N3),A(N2),A(N9),A0,NEQ,3)
  3415.       IF (IDAMPN.EQ.0) GO TO 320
  3416.       NN=N4 + NEQ*ITWO -1
  3417.       READ (11) (A(I),I=N4,NN)
  3418.       BACKSPACE 11
  3419.       CALL SHTADV (A(N3),A(N2),A(N4),A1,NEQ,3)
  3420.       GO TO 320
  3421. C
  3422. C     STIFFNESS EFFECT (IN NONLINEAR ANALYSIS)
  3423. C
  3424.   310 IF (KLIN.EQ.0) GO TO 320
  3425.       IF (NEGL.EQ.0 .AND. NSUBST.EQ.0) GO TO 320
  3426.   315 NF=4
  3427.       IF (ISTAT.GT.0 .AND. ISPEC.EQ.0) NF=7
  3428.       REWIND NF
  3429.       CALL MULT (A(N3),A(N4),A(N2),IA(N1),IA(N1A),NEQ,ISTOH,NBLOCK,NF)
  3430.   320 IF (ISTAT.EQ.0) GO TO 400
  3431. C
  3432. C     REINSTATE L*D*L(T) IN HIGH SPEED STORAGE IF NECESSARY
  3433. C
  3434.       IF (NBLOCK.GT.1 .OR. KLIN.GT.0) GO TO 400
  3435.       IF (NSUBST.GT.0 .AND. ISTAT.GT.0) GO TO 350
  3436.       IF (IDAMPN.EQ.0 .AND. IMASS.EQ.1) GO TO 400
  3437. C
  3438. C   * * * * *    R A N D O M   A C C E S S   * * *
  3439. C
  3440.   350 NN=ISTOH
  3441.       NREC10=1
  3442.       CALL READMS(10,A(N4),NN,NREC10)
  3443. C
  3444. C   * * * * *    R A N D O M   A C C E S S   * * *
  3445. C
  3446.   400 RETURN
  3447. C
  3448.       END
  3449. C *CDC* *DECK LOADEF
  3450. C *UNI* )FOR,IS  N.LOADEF, R.LOADEF
  3451.       SUBROUTINE LOADEF (MAXA,NCOLBV,DISP,DISPM,VEL,ACC,R,WV,AA,XM,
  3452.      1                  NOD,PRDIS,NBLOCK,ISTOH,NEQ)
  3453. C
  3454. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3455. C .                                                                   .
  3456. C .   P R O G R A M                                                   .
  3457. C .      . TO CALCULATE EFFECTIVE LOADS (EXCLUDING NONLINEAR          .
  3458. C .        CONTRIBUTIONS)                                             .
  3459. C .                                                                   .
  3460. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3461. C
  3462.       IMPLICIT REAL*8 (A-H,O-Z)
  3463.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  3464.       COMMON /RANDI/ N0A,N1D,IELCPL
  3465.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  3466.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  3467.       COMMON /TEMP/ ISPEC
  3468.       COMMON /MSUPER/ IMODES,NMODES,IMDAMP
  3469.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  3470.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  3471.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  3472.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  3473.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  3474.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  3475.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  3476.       COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
  3477.      1             NPDIS,NTEMP
  3478.       COMMON /NORMS/ RNORM,RENORM,RTOL,DTOL,STOL,SMAX,SMIN,
  3479.      1               DMAX,DMIN,ETOL
  3480.       COMMON /DPR/ ITWO
  3481.       DIMENSION DISP(1),VEL(1),ACC(1),R(1),WV(1),AA(1),XM(1)
  3482.       DIMENSION DISPM(1),NOD(1),PRDIS(1)
  3483.       INTEGER MAXA(1),NCOLBV(1)
  3484.       INTEGER IA(1)
  3485.       COMMON A(1)
  3486.       REAL A
  3487.       EQUIVALENCE (A(1),IA(1))
  3488. C
  3489.       IF (IMODES.GT.0) RETURN
  3490.       IF (ISUB.GT.0) GO TO 60
  3491. C
  3492.       IF (IOPE.EQ.3) GO TO 105
  3493.       IF (NPDIS.GT.0) READ (13) (PRDIS(I),I=1,NPDIS)
  3494. C
  3495.    60 IF (ISTAT.EQ.0) GO TO 142
  3496. C
  3497. C
  3498. C     I M P L I C I T   I N T E G R A T I O N   M E T H O D
  3499. C
  3500. C     M A S S   E F F E C T
  3501. C
  3502. C
  3503.       IF (ISPEC.GT.0) GO TO 110
  3504. C
  3505. C     LINEAR ANALYSIS OR DYNAMIC SUBSTRUCTURING
  3506. C
  3507.       DO 100 I=1,NEQ
  3508.   100 WV(I)=-A0*DISP(I) - A2*VEL(I) - A3*ACC(I)
  3509.       IF (IMASS.EQ.2) GO TO 130
  3510.       GO TO 115
  3511. C
  3512. C     SPECIAL CASE  ( NOW ALL NONLINEAR ANALYSIS
  3513. C                     EXCEPT DYNAMIC SUBSTRUCTURING)
  3514. C
  3515.   110 DO 120 I=1,NEQ
  3516.   120 WV(I)=-A2*VEL(I) - A3*ACC(I)
  3517.       IF (IMASS.EQ.2) GO TO 130
  3518. C
  3519.   115 DO 170 I=1,NEQ
  3520.   170 R(I)=R(I) - XM(I)*WV(I)
  3521.       GO TO 150
  3522.   130 CALL MULT (R,AA,WV,MAXA,NCOLBV,NEQ,ISTOH,NBLOCK,11)
  3523. C
  3524. C
  3525. C     N O D A L   D A M P I N G   E F F E C T
  3526. C
  3527. C
  3528.   150 IF (IDAMPN.EQ.0) GO TO 142
  3529.       IF (ISPEC.GT.0) GO TO 125
  3530. C
  3531. C     LINEAR ANALYSIS OR DYNAMIC SUBSTRUCTURING
  3532. C
  3533.       DO 132 I=1,NEQ
  3534.   132 WV(I)=-A1*DISP(I) - A4*VEL(I) - A5*ACC(I)
  3535.       GO TO 135
  3536. C
  3537. C     SPECIAL CASE  ( NOW ALL NONLINEAR ANALYSIS
  3538. C                     EXCEPT DYNAMIC SUBSTRUCTURING)
  3539. C
  3540.   125 DO 138 I=1,NEQ
  3541.   138 WV(I)=-A4*VEL(I) - A5*ACC(I)
  3542. C
  3543.   135 READ(11) (AA(I),I=1,NEQ)
  3544.       DO 139 I=1,NEQ
  3545.   139 R(I)=R(I) - AA(I)*WV(I)
  3546.   142 RETURN
  3547. C
  3548. C
  3549. C     C E N T R A L   D I F F E R E N C E   M E T H O D
  3550. C
  3551. C
  3552.   105 IF (NPDIS.EQ.0) GO TO 104
  3553.       IF (KSTEP.GT.1) GO TO 104
  3554.       READ (13) (PRDIS(I),I=1,NPDIS)
  3555.       NP=1
  3556.       NN=NOD(NP)
  3557.       DO 30 I=1,NEQ
  3558.       IF (I - NN) 30,25,30
  3559.    25 DISP(I)=PRDIS(NP)
  3560.       IF (NPDIS.EQ.NP) GO TO 104
  3561.       NP=NP + 1
  3562.       NN=NOD(NP)
  3563.    30 CONTINUE
  3564. C
  3565.   104 IF (IDAMPN.NE.0) GO TO 108
  3566.       DO 106 I=1,NEQ
  3567.   106 R(I)=R(I) + AA(I)*(DISP(I) + DISP(I) - DISPM(I))
  3568.       RETURN
  3569. C
  3570.   108 READ (11) (AA(I),I=1,NEQ)
  3571.       DO 107 I=1,NEQ
  3572.   107 R(I)=R(I) + A2*AA(I)*(DISP(I) - DISPM(I))
  3573.       READ (7) (AA(I),I=1,NEQ)
  3574.       DO 109 I=1,NEQ
  3575.   109 R(I)=R(I) + AA(I)*DISPM(I)
  3576.       RETURN
  3577. C
  3578.       END
  3579. C *CDC* *DECK COLSOL
  3580. C *UNI* )FOR,IS  N.COLSOL, R.COLSOL
  3581.       SUBROUTINE COLSOL (MAXA,NCOLBV,ICOPL,A,B,D,V,NOD,
  3582.      1                   NEQ,NBLOCK,ISTORL,NSTIF,NRED,KKK)
  3583. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3584. C .                                                                   .
  3585. C .   P R O G R A M                                                   .
  3586. C .        TO SOLVE FINITE ELEMENT STATIC EQUILIBRIUM EQUATIONS OUT-OF.
  3587. C .        CORE, USING COMPACTED STORAGE AND COLUMN REDUCTION SCHEME  .
  3588. C .                                                                   .
  3589. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3590. C
  3591.       IMPLICIT REAL*8 (A-H,O-Z)
  3592.       COMMON /ELSTP/ TIME,IDTHF
  3593.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  3594.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  3595.       COMMON /RANDI/ N0A,N1D,IELCPL
  3596.       COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
  3597.      1             NPDIS,NTEMP
  3598.       COMMON /NORMS/ RNORM,RENORM,RTOL,DTOL,STOL,SMAX,SMIN,
  3599.      1               DMAX,DMIN,ETOL
  3600.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  3601.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  3602.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  3603.       COMMON /SUBSTF/ NREC16
  3604. C
  3605.       DIMENSION A(ISTORL),B(ISTORL),D(NEQ),V(1)
  3606.       INTEGER ICOPL(1),NCOLBV(1),MAXA(1),NOD(1)
  3607. C
  3608.       KHBB=0
  3609.       IF (ISUB.EQ.0) NEQC=NEQ + 1
  3610.       IF (KKK - 2) 10,610,750
  3611.    10 REWIND NSTIF
  3612.       PIVOT=10.**20
  3613.       DMAX=0.
  3614.       DMIN=1.E50
  3615.       NP=1
  3616.       IF (NPDIS.GT.0) NN=NOD(NP)
  3617. C
  3618. C - - FACTORIZE STIFFNESS MATRIX  ( LOOP OVER ALL BLOCKS ) - -
  3619. C
  3620.       DO 600 NJ=1,NBLOCK
  3621. C
  3622.       READ (NSTIF) A
  3623.       NCOLB=NCOLBV(NJ)
  3624.       MM=MAXA(KHBB+1) - 1
  3625.       IF (ISUB.GT.0) GO TO 80
  3626.       IF (NPDIS.EQ.0) GO TO 80
  3627. C
  3628.       IF (NN.LE.KHBB) GO TO 80
  3629.       IF (NN.GT.KHBB+NCOLB) GO TO 80
  3630.       DO 40 N=1,NCOLB
  3631.       KK=KHBB + N
  3632.       IF (NN - KK) 40,20,40
  3633.    20 KL=MAXA(NN) - MM
  3634.       A(KL)=SMAX*PIVOT
  3635.       IF (NP.EQ.NPDIS) GO TO 80
  3636.       NP=NP + 1
  3637.       NN=NOD(NP)
  3638.    40 CONTINUE
  3639. C
  3640.    80 IF (NJ.EQ.ICOPL(NJ)) GO TO 300
  3641. C
  3642.       IK=ICOPL(NJ) - 1
  3643.       IM=0
  3644.       IF (IK) 300,140,100
  3645.   100 DO 120 K=1,IK
  3646.   120 IM=IM + NCOLBV(K)
  3647.   140 KHB=KHBB - IM
  3648.       IK=IK + 1
  3649.       NJ1=NJ - 1
  3650. C
  3651. C     REDUCE BLOCK BY THE PRECEEDING COUPLING BLOCKS
  3652. C
  3653.       DO 160 NK=IK,NJ1
  3654. C
  3655. C
  3656. C        * * * * *        R A N D O M  A C C E S S        * * *
  3657. C
  3658.       NREC10=NK
  3659.       IF (ISUB.GT.0) NREC10=NREC10 + NREC16
  3660.       CALL READMS (NRED,B,ISTORL,NREC10)
  3661. C
  3662. C        * * * * *        R A N D O M  A C C E S S        * * *
  3663. C
  3664.       KHB=KHB - NCOLBV(NK)
  3665.       MC=MAXA(IM+1) - 1
  3666. C
  3667.       DO 200 N=1,NCOLB
  3668.       KN=MAXA(KHBB+N) - MM
  3669.       KL=KN + 1
  3670.       KU=MAXA(KHBB+N+1) - 1 - MM
  3671.       KH=KU - KL - N + 1
  3672.       KC=KH - KHB
  3673.       KS=N + KHBB
  3674.       IF (KS.LE.NEQC) GO TO 205
  3675.       KDIF=KU - KL
  3676.       KK=KS - NEQC - 1
  3677.       IF (KDIF.LT.KK) GO TO 200
  3678.   205 IF (KC.LE.0) GO TO 200
  3679.       IC=0
  3680.       KCL=NCOLBV(NK) - KC + 1
  3681.       IF (KCL.GT.0) GO TO 210
  3682.       IC=1 - KCL
  3683.       KCL=1
  3684.   210 KCR=NCOLBV(NK)
  3685.       KLT=KU - IC
  3686. C
  3687.       DO 220 K=KCL,KCR
  3688.       IC=IC + 1
  3689.       KLT=KLT - 1
  3690.       KI=MAXA(K+IM) - MC
  3691.       ND=MAXA(K+IM+1) - KI - MC - 1
  3692.       IF(ND) 220,220,230
  3693.   230 KK=MIN0(IC,ND)
  3694.       C=0.
  3695.       JJ=1
  3696.       IF (K+IM.LE.NEQC) GO TO 235
  3697.       JJ=K + IM - NEQC
  3698.       IF (KK.LT.JJ) GO TO 220
  3699.   235 DO 240 L=JJ,KK
  3700.   240 C=C + B(KI+L)*A(KLT+L)
  3701.       A(KLT)=A(KLT) - C
  3702.   220 CONTINUE
  3703.   200 CONTINUE
  3704. C
  3705.       IM=IM + NCOLBV(NK)
  3706. C
  3707.   160 CONTINUE
  3708. C
  3709. C     REDUCE BLOCK BY ITSELF
  3710. C
  3711.   300 DO 400 N=1,NCOLB
  3712.       KN=MAXA(KHBB+N) - MM
  3713.       KL=KN + 1
  3714.       KU=MAXA(KHBB+N+1) - 1 - MM
  3715.       KDIF=KU - KL
  3716.       KH=MIN0(KDIF,N-1)
  3717.       KS=N + KHBB
  3718.       IF (KDIF.LT.KS - NEQC - 1) GO TO 400
  3719.       IF (KH) 420,440,460
  3720.   460 K=N - KH
  3721.       KLT=KL + KH
  3722.       IC=0
  3723.       IF ((N-1).LT.KDIF) IC=KDIF - N + 1
  3724. C
  3725.       DO 480 J=1,KH
  3726.       IC=IC + 1
  3727.       KLT=KLT - 1
  3728.       KI=MAXA(KHBB+K) - MM
  3729.       ND=MAXA(KHBB+K+1) - KI - MM - 1
  3730.       IF (ND) 480,480,500
  3731.   500 KK=MIN0(IC,ND)
  3732.       C=0.
  3733.       JJ=1
  3734.       IF (K+KHBB.LE.NEQC) GO TO 510
  3735.       JJ=K + KHBB - NEQC
  3736.       IF (KK.LT.JJ) GO TO 480
  3737.   510 DO 520 L=JJ,KK
  3738.   520 C=C + A(KI+L)*A(KLT+L)
  3739.       A(KLT)=A(KLT) - C
  3740.   480 K=K + 1
  3741. C
  3742.   440 K=KS
  3743.       IF (KS.LE.NEQC) GO TO 450
  3744.       K=NEQC + 1
  3745.       JJ=KS - NEQC - 1
  3746.       KL=KL + JJ
  3747.       KH=KU - KL
  3748.       IF (KH) 400,450,450
  3749.   450 E=0.
  3750.       DO 540 KK=KL,KU
  3751.       K=K - 1
  3752.       C=A(KK)/D(K)
  3753.       E=E + C*A(KK)
  3754.   540 A(KK)=C
  3755.       A(KN)=A(KN) - E
  3756. C
  3757.   420 IF (KS - NEQC) 550,550,400
  3758.   550 D(KS)=A(KN)
  3759.       IF (D(KS)) 560,555,400
  3760.   555 IF (IDTHF.EQ.0) GO TO 560
  3761.       D(KS)=PIVOT
  3762.       GO TO 400
  3763.   560 WRITE (6,2000) KS,D(KS)
  3764.       WRITE (6,2020)
  3765.       STOP
  3766. C
  3767.   400 CONTINUE
  3768. C
  3769.       KHBB=KHBB + NCOLB
  3770. C
  3771. C        * * * * *        R A N D O M  A C C E S S        * * *
  3772. C
  3773.       NREC10=NJ
  3774.       IF (ISUB.GT.0) NREC10=NREC10 + NREC16
  3775.       CALL WRITMS (NRED,A,ISTORL,NREC10,-1)
  3776. C
  3777. C        * * * * *        R A N D O M  A C C E S S        * * *
  3778. C
  3779.   600 CONTINUE
  3780.       IF (ISUB.GT.0) RETURN
  3781. C
  3782. C     CALCULATE EXTREMAL VALUES OF D VECTOR
  3783. C
  3784.       NP=1
  3785.       NN=0
  3786.       IF (NPDIS.GT.0) NN=NOD(NP)
  3787.       DO 605 I=1,NEQ
  3788.       IF (I - NN) 604,602,604
  3789.   602 NP=NP + 1
  3790.       IF (NP.LE.NPDIS) NN=NOD(NP)
  3791.       GO TO 605
  3792.   604 IF (D(I).GT.DMAX) DMAX=D(I)
  3793.       IF (D(I).EQ.0.E+00)  GO TO 605
  3794.       IF (D(I).LT.DMIN) DMIN=D(I)
  3795.   605 CONTINUE
  3796.       IF (KLIN.GT.0) GO TO 606
  3797.       RETURN
  3798. C
  3799. C - - SOLUTION OF EQUATIONS ( LOOP OVER ALL BLOCKS ) - -
  3800. C
  3801. C     REDUCE THE LOAD VECTOR
  3802. C
  3803.   606 KHBB=0
  3804.   610 DO 700 NJ=1,NBLOCK
  3805.       IF (NBLOCK.NE.1) GO TO 715
  3806.       IF (ISUB.GT.0) GO TO 710
  3807.       IF (KLIN.EQ.0 .OR. KKK.EQ.1) GO TO 710
  3808. C
  3809. C        * * * * *        R A N D O M  A C C E S S        * * *
  3810. C
  3811.   715 NREC10=NJ
  3812.       IF (ISUB.GT.0) NREC10=NREC10 + NREC16
  3813.       CALL READMS (NRED,A,ISTORL,NREC10)
  3814. C
  3815. C        * * * * *        R A N D O M  A C C E S S        * * *
  3816. C
  3817.   710 NCOLB=NCOLBV(NJ)
  3818.       MM=MAXA(KHBB+1) - 1
  3819.       DO 720 N=1,NCOLB
  3820.       KL=MAXA(N+KHBB) - MM + 1
  3821.       KU=MAXA(N+KHBB+1) - MM - 1
  3822.       KS=N + KHBB
  3823.       K=KS
  3824.       IF (KS.LE.NEQC) GO TO 725
  3825.       K=NEQC + 1
  3826.       KL=KL + KS - NEQC - 1
  3827.   725 IF (KU - KL) 720,730,730
  3828.   730 C=0.
  3829.       DO 740 KK=KL,KU
  3830.       K=K - 1
  3831.   740 C=C + A(KK)*V(K)
  3832.       V(KS)=V(KS) - C
  3833.   720 CONTINUE
  3834.       KHBB=KHBB + NCOLB
  3835.   700 CONTINUE
  3836. C
  3837.       NN=NEQ
  3838.       IF (ISUB.EQ.0) GO TO 770
  3839.       RETURN
  3840. C
  3841. C     BACKSUBSTITUTE
  3842. C
  3843.   750 NCOLB=NCOLBV(1)
  3844.       KHBB=NEQ
  3845.       NN=NEQC
  3846. C
  3847.   770 DO 790 N=1,NN
  3848.   790 V(N)=V(N)/D(N)
  3849.       NBL=NBLOCK
  3850.       DO 800 NJ=1,NBLOCK
  3851.       IF (NBLOCK.EQ.1) GO TO 820
  3852. C
  3853. C        * * * * *        R A N D O M  A C C E S S        * * *
  3854. C
  3855.       NJB1=NBLOCK - NJ + 1
  3856.       IF (ISUB.GT.0) NJB1=NJB1 + NREC16
  3857.       CALL READMS (NRED,A,ISTORL,NJB1)
  3858. C
  3859. C        * * * * *        R A N D O M  A C C E S S        * * *
  3860. C
  3861.       NCOLB=NCOLBV(NBL)
  3862.   820 KHBB=KHBB - NCOLB
  3863.       MM=MAXA(KHBB+1) - 1
  3864.       N=NCOLB
  3865.       DO 860 L=1,NCOLB
  3866.       KL=MAXA(N+KHBB) - MM + 1
  3867.       KU=MAXA(N+KHBB+1) - MM - 1
  3868.       KS=N + KHBB
  3869.       K=KS
  3870.       IF (KS.LE.NEQC) GO TO 850
  3871.       K=NEQC + 1
  3872.       KL=KL + KS - NEQC - 1
  3873.   850 IF (KU - KL) 861,890,890
  3874.   890 DO 900 KK=KL,KU
  3875.       K=K - 1
  3876.   900 V(K)=V(K) - A(KK)*V(KS)
  3877.   861 N=N-1
  3878.   860 CONTINUE
  3879.       NBL=NBL - 1
  3880.   800 CONTINUE
  3881. C
  3882.       RETURN
  3883. C
  3884.  2000 FORMAT (/
  3885.      1 55H *** STOP - STIFFNESS MATRIX NOT POSITIVE DEFINITE ***  //
  3886.      2 32H NONPOSITIVE PIVOT FOR EQUATION  ,I5                     /
  3887.      3 10H PIVOT =  ,E21.12                                       //
  3888.      4 55H *** IN SMALL DISPLACEMENT LINEAR ELASTIC ANALYSIS ***   /
  3889.      5 55H     CHECK THE FOLLOWING --                              //
  3890.      6 55H (A) BOUNDARY CONDITIONS -                               /
  3891.      7 55H          THE B.C. MUST NOT ADMIT A RIGID BODY           /
  3892.      8 55H          DISPLACEMENT OR ROTATION OF THE TOTAL          /
  3893.      8 55H          STRUCTURE.                                     //
  3894.      A 55H (B) DELETION OF DEGREES-OF-FREEDOM -                    /
  3895.      B 55H          ALL D.O.F. AT NODAL POINTS WITHOUT             /
  3896.      C 55H          STIFFNESS CONTRIBUTIONS FROM ELEMENTS          /
  3897.      D 55H          MUST HAVE BEEN DELETED.                        )
  3898.  2020 FORMAT (//
  3899.      1 55H (C) ELEMENT GEOMETRY AND CONNECTIVITY -                 /
  3900.      2 55H          ALL ELEMENTS MUST HAVE BEEN INPUT WITH         /
  3901.      2 55H          PROPER NODAL NUMBERS, AS DESCRIBED IN          /
  3902.      3 55H          THE USERS MANUAL.                              //
  3903.      4 55H (D) ELEMENT INTEGRATION ORDERS -                        /
  3904.      5 55H          THE ORDERS OF NUMERICAL INTEGRATIONS FOR       /
  3905.      5 55H          EVALUATION OF ELEMENT MATRICES MUST BE         /
  3906.      5 55H          SUFFICIENTLY HIGH.                             //
  3907.      4 55H (E) MATERIAL DATA -                                     /
  3908.      5 55H          ALL MATERIAL DATA MUST BE PHYSICALLY           /
  3909.      6 55H          REASONABLE (E.G. YOUNG*S MODULUS MUST          /
  3910.      6 55H          BE GREATER THAN ZERO).                         //
  3911.      7 55H *** IN MATERIALLY NONLINEAR AND/OR LARGE DISPLACEMENT
  3912.      8 55H ANALYSIS ***                                            //
  3913.      9 55H     IF THE MODEL HAS BEEN INPUT CORRECTLY (WITH ALL     /
  3914.      A 55H     THE ABOVE CONSIDERATIONS TAKEN INTO ACCOUNT), THEN  /
  3915.      B 55H     THE COLLAPSE LOAD OF THE MODEL HAS BEEN REACHED.    ///)
  3916. C
  3917.       END
  3918. C *CDC* *DECK SBLOCK
  3919. C *UNI* )FOR,IS  N.SBLOCK,  R.SBLOCK
  3920.       SUBROUTINE SBLOCK (MAXA,NCOLBV,ICOPL,ISTORL,NBLOCK,NEQ,NWK,ISTOH)
  3921. C
  3922.       INTEGER MAXA(1),NCOLBV(1),ICOPL(1)
  3923. C
  3924. C     CHECK FOR ONE BLOCK CASE
  3925. C
  3926.       IF (NBLOCK.GT.1) GO TO 5
  3927.       IF (NWK.GT.ISTORL) GO TO 5
  3928.       NBLOCK=1
  3929.       NCOLBV(1)=NEQ
  3930.       ICOPL(1)=1
  3931.       ISTOH=NWK
  3932.       RETURN
  3933. C
  3934. C     CHECK WHETHER ISTORL/2 IS AT LEAST AS LARGE AS ANY ONE COLUMN
  3935. C
  3936.     5 ISTOH=ISTORL/2
  3937.       ISTORL=2*ISTOH
  3938.       DO 10 I=1,NEQ
  3939.       ICL=MAXA(I+1) - MAXA(I)
  3940.       IF (ISTOH.GE.ICL) GO TO 10
  3941.       WRITE (6,2000) I
  3942.       STOP
  3943.    10 CONTINUE
  3944. C
  3945. C     ESTABLISH THE NUMBER OF COLUMNS PER BLOCK
  3946. C
  3947.       NBLOCK=0
  3948.       NN=0
  3949.       IB=0
  3950. C
  3951.       DO 100 I=2,NEQ
  3952.   140 II=ISTOH - MAXA(I+1) + 1 + NN
  3953.       IF (II) 120,100,100
  3954.   120 NN=MAXA(I) - 1
  3955.       NBLOCK=NBLOCK + 1
  3956.       NCOLBV(NBLOCK)=I - 1 - IB
  3957.       IB=I - 1
  3958.       GO TO 140
  3959.   100 CONTINUE
  3960.       NBLOCK=NBLOCK + 1
  3961.       NCOLBV(NBLOCK)=NEQ - IB
  3962. C
  3963. C     ESTABLISH COUPLING OF BLOCKS
  3964. C
  3965.       DO 50 I=1,NBLOCK
  3966.    50 ICOPL(I)=I
  3967.       IF (NBLOCK.EQ.1) RETURN
  3968.       NN=NCOLBV(1)
  3969.       DO 200 N=2,NBLOCK
  3970.       ICLM=0
  3971.       NCOLB=NCOLBV(N)
  3972.       DO 110 I=1,NCOLB
  3973.       ICL=MAXA(NN+I+1) - MAXA(NN+I) - I - 1
  3974.       IF (ICL.GT.ICLM) ICLM=ICL
  3975.   110 CONTINUE
  3976.       J=N-1
  3977.   150 IF (ICLM.LE.0) GO TO 180
  3978.       ICOPL(N)=J
  3979.       ICLM=ICLM - NCOLBV(J)
  3980.       J=J-1
  3981.       GO TO 150
  3982.   180 NN=NN + NCOLBV(N)
  3983.   200 CONTINUE
  3984. C
  3985.  2000 FORMAT (1H1,49H***ERROR HIGH SPEED STORAGE IS TOO SMALL TO FIT   ,
  3986.      1            6HCOLUMN,2H (,I5,2H) ,10HINTO CORE   )
  3987.       RETURN
  3988.       END
  3989. C
  3990. C
  3991. C
  3992. C *CDC* *DECK EQUIT
  3993. C *UNI* )FOR,IS  N.EQUIT,  R.EQUIT
  3994.       SUBROUTINE EQUIT (AA,DISPI,DINCOR,RE,DISP,VEL,ACC,MAXA,WV,XM,EE,
  3995.      1                  CC,DK,NCOLBV,ICOPL,ISTOH)
  3996. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  3997. C .                                                                   .
  3998. C .   P R O G R A M                                                   .
  3999. C .      . TO ITERATE FOR DYNAMIC EQUILIBRIUM                         .
  4000. C .                                                                   .
  4001. C .   METHOD = 1  MODIFIED NEWTON ITERATION                           .
  4002. C .      IATKEN = 0  NO ACCELERATION                                  .
  4003. C .      IATKEN = 1  AITKEN ACCELERATION                              .
  4004. C .                                                                   .
  4005. C .   METHOD = 2  BFGS MATRIX UPDATING                                .
  4006. C .                                                                   .
  4007. C .        AA   = EFFECTIVE STIFFNESS MATRIX AND WORKING STORAGE      .
  4008. C .        RE   = OUT OF BALANCE LOADS                                .
  4009. C .        DISP = DISPLACEMENT AT PREVIOUS TIME STEP                  .
  4010. C .        DISPI= DISPLACEMENT INCREMENT AT CURRENT TIME STEP         .
  4011. C .        DINCOR DISPLACEMENT INCREMENT CORRECTION                   .
  4012. C .        VEL  = VELOCITY AT PREVIOUS TIME STEP                      .
  4013. C .        ACC  = ACCELERATION AT PREVIOUS TIME STEP                  .
  4014. C .        MAXA = ADDRESSES OF DIAGONAL ELEMENTS IN EFFECTIVE         .
  4015. C .               STIFFNESS MATRIX                                    .
  4016. C .        WV   = WORKING VECTOR                                      .
  4017. C .        DK   = ELEMENTS OF D IN L*D*L(T) FACTORIZATION OF          .
  4018. C .               EFFECTIVE STIFFNESS MATRIX                          .
  4019. C .        CC   = WORKING STORAGE IN OUT-OF-CORE SOLUTION             .
  4020. C .                                                                   .
  4021. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4022. C
  4023.       IMPLICIT REAL*8 (A-H,O-Z)
  4024.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  4025.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  4026.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  4027.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  4028.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  4029.       COMMON /MSUPER/ IMODES,NMODES,IMDAMP
  4030.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  4031.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  4032.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  4033.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  4034.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  4035.       COMMON /EQIT/ METHOD,IATKEN,NLSTPD,NLSTEP,ITEDIV,ISDVG
  4036.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  4037.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  4038.       COMMON /RANDI/ N0A,N1D,IELCPL
  4039.       COMMON /ADDB/ NEQL,NEQR,MLA,NBLOCK
  4040.       COMMON /NORMS/ RNORM,RENORM,RTOL,DTOL,STOL,SMAX,SMIN,
  4041.      1               DMAX,DMIN,ETOL
  4042.       COMMON /ENERGY/ PE,PEOLD,PEINIT
  4043.       COMMON /ITMTHD/ MAXUP,NUMUPD,NTBFGS,NATKN
  4044.       COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
  4045.      1             NPDIS,NTEMP
  4046.       COMMON /DISCON/ NDISCE,NIDM
  4047.       COMMON A(1)
  4048.       INTEGER IA(1)
  4049.       DIMENSION AA(1),DISPI(1),RE(1),DISP(1),VEL(1),ACC(1),MAXA(1),WV(1)
  4050.      1         ,XM(1),CC(1),DK(1),EE(1),DINCOR(1)
  4051.       INTEGER NCOLBV(1),ICOPL(1)
  4052.       REAL EE,A
  4053.       EQUIVALENCE (A(1),IA(1))
  4054. C
  4055.       NATKN=18
  4056.       NTBFGS=NATKN
  4057.       MAXUP=20
  4058.       NUMUPD=0
  4059. C
  4060.       ICOUNT=3
  4061.       ICONVG=0
  4062.       ITE=0
  4063.       IACC=1
  4064.       NEQL=1
  4065.       NEQR=NEQ
  4066.       NEQT=NEQ + NDISCE
  4067. C
  4068.       IF (IMODES.GT.0) GO TO 500
  4069. C
  4070. C     CALCULATE INITIAL POTENTIAL ENERGY FOR DIVERGENCE CHECK AND
  4071. C     CONVERGENCE CRITERIA
  4072. C
  4073.       PEINIT=PRDINN(RE,DISPI,NEQ)
  4074.       PEOLD=PEINIT
  4075. C
  4076. C     IF AITKEN ACCELERATION IS TO BE USED (IATKEN # 0)
  4077. C     DISP IS USED AS A WORKING ARRAY AND IS STORED ON TAPE NATKN AS :
  4078. C        1) DISPLACEMENT AT PREVIOUS TIME STEP
  4079. C        2) DISPLACEMENT INCREMENT FOR AITKEN ACCELERATION
  4080. C
  4081.       IF (IATKEN.EQ.0) GO TO 499
  4082.       REWIND NATKN
  4083.       WRITE (NATKN) (DISP(I),I=1,NEQT)
  4084.       WRITE (NATKN) (DISPI(I),I=1,NEQ)
  4085.       DNORM=PRDINN(DISPI,DISPI,NEQ)
  4086.       DNORM=DSQRT(DNORM)
  4087.       DNMTOL=0.01*DNORM
  4088. C
  4089.   499 IF (METHOD.LT.2) GO TO 500
  4090. C
  4091. C     AT PRESCRIBED DOF"S ASSIGN DISPI AND ZERO DINCOR
  4092. C
  4093.       IF (NPDIS.EQ.0) GO TO 20
  4094.       NP=1
  4095.       NN=IA(N04)
  4096.       DO 15 I=1,NEQT
  4097.       IF (I-NN) 5,10,5
  4098.     5 DINCOR(I)=DISPI(I)
  4099.       DISPI(I)=0.0
  4100.       GO TO 15
  4101.    10 DINCOR(I)=0.0
  4102.       NP=NP + 1
  4103.       IF (NP.GT.NPDIS) GO TO 15
  4104.       NN=IA(N04 + NP - 1)
  4105.    15 CONTINUE
  4106.       GO TO 30
  4107. C
  4108.    20 DO 25 I=1,NEQT
  4109.       DINCOR(I)=DISPI(I)
  4110.    25 DISPI(I)=0.0
  4111.    30 REWIND NTBFGS
  4112.       WRITE (NTBFGS) (RE(I),I=1,NEQ)
  4113.       REWIND NTBFGS
  4114. C
  4115.   500 ITE=ITE + 1
  4116.       STEP=1.0
  4117.       IF (METHOD.LT.2) STEP=0.0
  4118.       CALL UNBLD (STEP,DINCOR,AA,DISPI,RE,DISP,VEL,ACC,MAXA,
  4119.      1            WV,XM,EE,NCOLBV,ISTOH)
  4120. C
  4121.       IF (IMODES.GT.0) GO TO 237
  4122.       IF (ITE.EQ.1 .AND. PEINIT.LT.1.0D-10*RNORM) PEINIT=1.0D-10*RNORM
  4123. C
  4124. C     CHECK WHETHER LINE SEARCH IS NECESSARY
  4125. C
  4126.       IF (METHOD.LT.2) GO TO 200
  4127.       PE=PRDINN(DINCOR,RE,NEQ)
  4128.       IF (DABS(PE).LE.(STOL*DABS(PEOLD))) GO TO 110
  4129. C
  4130.       CALL LISRCH (PE,PEOLD,STEP,DINCOR,AA,DISPI,RE,DISP,VEL,ACC,MAXA,
  4131.      1             WV,XM,EE,NCOLBV,ISTOH)
  4132. C
  4133. C     C A L C U L A T E   I N C R E M E N T   I N
  4134. C                                     D I S P L A C E M E N T S
  4135. C
  4136.   110 DO 120 I=1,NEQT
  4137.   120 DISPI(I)=DISPI(I) + STEP*DINCOR(I)
  4138. C
  4139.   200 IF (PEOLD.GT.10000.0*PEINIT) GO TO 210
  4140.       IF (ITE  .LT. (ITEMAX/2+1)) GO TO 230
  4141. C
  4142. C     CHECK THAT POTENTIAL ENERGY OF SYSTEM IS DECREASING
  4143. C
  4144.       IF (PEOLD.LE.PEINIT) GO TO 230
  4145.   210 IEQREF=1
  4146.       ICOUNT=2
  4147.       BACKSPACE 3
  4148.       RETURN
  4149. C
  4150.   230 DO 235 I=1,NEQ
  4151.   235 WV(I)=RE(I)
  4152. C
  4153. C     CALCULATE NORM OF INCREMENTAL LOAD
  4154. C
  4155.       RENORM=PRDINN(RE,RE,NEQ)
  4156.       RENORM=DSQRT(RENORM)
  4157. C
  4158.       IF (METHOD.LT.2) GO TO 250
  4159.       DINORM=PRDINN(DINCOR,DINCOR,NEQ)
  4160.       DINORM=DSQRT(DINORM)*STEP
  4161.       GO TO 250
  4162. C
  4163. C *CDC*  237 CALL OVERLAY (5HADINA,21B,0B,6HRECALL)
  4164.   237 CALL MODSUP
  4165.       GO TO 290
  4166. C
  4167.   250 CALL NEWDIR (PE,PEOLD,STEP,DINCOR,AA,DISPI,RE,DINORM,DISP,VEL,ACC,
  4168.      1             MAXA,WV,XM,EE,CC,DK,NCOLBV,ICOPL,ISTOH)
  4169. C
  4170. C
  4171. C     CALCULATE NEW POTENTIAL ENERGY
  4172. C
  4173.       IF (METHOD.EQ.1) PEOLD=PRDINN(RE,WV,NEQ)
  4174.       IF (METHOD.EQ.2) PEOLD=PRDINN(DINCOR,RE,NEQ)
  4175. C
  4176. C
  4177. C     C H E C K   F O R   C O N V E R G E N C E
  4178. C
  4179. C
  4180.       IF (RNORM.EQ.0.0) GO TO 290
  4181.       IF (RENORM.GT.RTOL*RNORM) GO TO 256
  4182.   290 IF (PEOLD.GT.ETOL*PEINIT) GO TO 256
  4183.       ICONVG=1
  4184.   256 IF (IATKEN.EQ.0 .OR. ICONVG.EQ.1) GO TO 298
  4185. C
  4186. C     CHECK WHICH ACCELERATION SCHEME SHOULD BE USED
  4187. C
  4188.       IF (IATKEN.GT.1) GO TO 281
  4189. C
  4190. C     USE AITKEN ACCELERATION ON EACH DEGREE OF FREEDOM
  4191. C
  4192.       IACC=IACC + 1
  4193.       IF (IACC.EQ.2) GO TO 265
  4194.       WRITE (NATKN) (RE(I),I=1,NEQ)
  4195.       GO TO 298
  4196. C
  4197. C     APPLY ACCELERATION FACTOR
  4198. C
  4199.   265 READ (NATKN) (DISP(I),I=1,NEQ)
  4200.       IACC=0
  4201.       DO 280 I=1,NEQ
  4202.       DENOM=DISP(I) - RE(I)
  4203.       IF (DABS(DENOM).LT.DNMTOL) GO TO 275
  4204.       ACFAC=RE(I)/DENOM
  4205.       GO TO 276
  4206.   275 ACFAC=0.0
  4207.   276 RE(I)=RE(I)*(1.0 + ACFAC)
  4208.   280 CONTINUE
  4209.       GO TO 298
  4210. C
  4211. C     OVERRELAXATION
  4212. C
  4213.   281 CONTINUE
  4214. C
  4215. C     ADD INCREMENT TO TOTAL DISPLACEMENT INCREMENT
  4216. C
  4217.   298 IF (NDISCE.EQ.0) GO TO 299
  4218. C
  4219.       IF (METHOD.EQ.1)
  4220.      1   CALL CONDIS (A(N01),A(N02),A(N03),RE,VEL,ACC,NIDM,0)
  4221.       IF (METHOD.EQ.2)
  4222.      1   CALL CONDIS (A(N01),A(N02),A(N03),DINCOR,VEL,ACC,NIDM,0)
  4223. C
  4224.   299 IF (METHOD.EQ.2) GO TO 310
  4225.       DO 300 I=1,NEQT
  4226.   300 DISPI(I)=DISPI(I) + RE(I)
  4227. C
  4228.   310 IF (ICONVG.EQ.1) GO TO 400
  4229. C
  4230.   370 IF (ITE.LT.ITEMAX) GO TO 500
  4231.       IF (RNORM.GT.0.0) GO TO 381
  4232.       WRITE (6,2031) RENORM,PEINIT,PEOLD
  4233.       GO TO 382
  4234.   381 RTNORM=RTOL*RNORM
  4235.       WRITE (6,2030) RTNORM,RENORM,PEINIT,PEOLD
  4236.   382 CONTINUE
  4237.       WRITE(6,2010) KSTEP,ITE
  4238.       WRITE(6,2020)
  4239.       ITE=ITE + 1
  4240.       RETURN
  4241. C
  4242.   400 ICOUNT=2
  4243.       IF (RNORM.GT.0.0) GO TO 385
  4244.       WRITE (6,2031) RENORM,PEINIT,PEOLD
  4245.       GO TO 386
  4246.   385 RTNORM=RTOL*RNORM
  4247.       WRITE (6,2030) RTNORM,RENORM,PEINIT,PEOLD
  4248.   386 CONTINUE
  4249.       IF (METHOD.EQ.1) RETURN
  4250.       DO 410 I=1,NEQT
  4251.   410 DISPI(I)=DISPI(I) + DINCOR(I)
  4252.       RETURN
  4253. C
  4254.  2010 FORMAT (//// 37H EQUILIBRIUM ITERATION IN TIME STEP = ,I5 //
  4255.      1             37H NUMBER OF ITERATIONS               = ,I5  /)
  4256.  2020 FORMAT (////45H ITERATION LIMIT REACHED WITH NO CONVERGENCE  /5X,
  4257.      1            24H S T O P   OF SOLUTION   )
  4258.  2030 FORMAT (  1H ,35HNORMS IN LAST EQUILIBRIUM ITERATION  //
  4259.      1 50H MAXIMUM ALLOWED UNBALANCED LOAD NORM            =,E15.6/
  4260.      2 50H NORM OF UNBALANCED LOAD                         =,E15.6//
  4261.      3 50H INCREMENTAL ENERGY NORM IN THIS STEP            =,E15.6/
  4262.      4 50H NORM OF UNBALANCED INCREMENTAL ENERGY           =,E15.6 )
  4263.  2031 FORMAT (1H ,35HNORMS IN LAST EQUILIBRIUM ITERATION   //
  4264.      1 50H MAXIMUM ALLOWED UNBALANCED LOAD NORM            =,
  4265.      2 3X, 17H(** NOT USED **)                                    /
  4266.      3 50H NORM OF UNBALANCED LOAD                         =,E15.6//
  4267.      4 50H INCREMENTAL ENERGY NORM IN THIS STEP            =,E15.6/
  4268.      5 50H NORM OF UNBALANCED INCREMENTAL ENERGY           =,E15.6 )
  4269. C
  4270.       END
  4271. C *CDC* *DECK UNBLD
  4272. C *UNI* )FOR,IS N.UNBLD,R.UNBLD
  4273.       SUBROUTINE UNBLD (STEP,DINCOR,AA,DISPI,RE,DISP,VEL,ACC,MAXA,WV,
  4274.      1                  XM,EE,NCOLBV,ISTOH)
  4275. C
  4276. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4277. C .                                                                   .
  4278. C .                                                                   .
  4279. C .      P R O G R A M                                                .
  4280. C .                                                                   .
  4281. C .         TO COMPUTE THE UNBALANCED LOAD IN THE CONFIGURATION       .
  4282. C .         DISP + DISPI + STEP*DINCOR                                .
  4283. C .         (STEP = 0.0 FOR METHOD = 1)                               .
  4284. C .                                                                   .
  4285. C .                                                                   .
  4286. C .                                                                   .
  4287. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4288. C
  4289.       IMPLICIT REAL*8 (A-H,O-Z)
  4290. C
  4291.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  4292.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  4293.      1            ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  4294.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  4295.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  4296.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  4297.       COMMON /MSUPER/ IMODES,NMODES,IMDAMP
  4298.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  4299.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  4300.       COMMON /TEMP/ ISPEC
  4301.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  4302.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  4303.       COMMON /ADDB/ NEQL,NEQR,MLA,NBLOCK
  4304.       COMMON /EQIT/ METHOD,IATKEN,NLSTPD,NLSTEP,ITEDIV,ISDVG
  4305.       COMMON /NORMS/ RNORM,RENORM,RTOL,DTOL,STOL,SMAX,SMIN,
  4306.      1               DMAX,DMIN,ETOL
  4307.       COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
  4308.      1             NPDIS,NTEMP
  4309.       COMMON /MIDSYS/ NMIDSS,MIDIND,MAXMSS
  4310.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  4311.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  4312.       COMMON /SHV1/ N010
  4313.       COMMON /DISCON/ NDISCE,NIDM
  4314.       COMMON /ENERGY/ PE,PEOLD,PEINIT
  4315.       COMMON /ITMTHD/ MAXUP,NUMUPD,NTBFGS,NATKN
  4316.       COMMON A(1)
  4317. C
  4318.       INTEGER IA(1)
  4319.       DIMENSION AA(1),DISPI(1),DISP(1),RE(1),VEL(1),ACC(1),DINCOR(1),
  4320.      1          WV(1),XM(1)
  4321.       INTEGER NCOLBV(1),MAXA(1)
  4322.       REAL EE(1)
  4323.       REAL A
  4324.       EQUIVALENCE (A(1),IA(1))
  4325. C
  4326. C
  4327. C     C A L C U L A T E   C U R R E N T    R H S   L O A D S
  4328. C
  4329. C
  4330.       NEQT=NEQ + NDISCE
  4331. C
  4332. C     FOR BFGS METHOD, TEMPORARILY ADD STEP*DINCOR TO DISPI
  4333. C
  4334.       IF (METHOD.EQ.1) GO TO 15
  4335.       DO 10 I=1,NEQT
  4336.    10 DISPI(I)=DISPI(I) + STEP*DINCOR(I)
  4337. C
  4338.    15 IF (MAXMSS.EQ.0) GO TO 20
  4339.       KNOR=2
  4340.       CALL NORMAL (A(N08),A(N09),A(N010),A(N3),A(N5),NDOF,KNOR)
  4341. C
  4342.    20 IF (ISPEC.EQ.0) GO TO 24
  4343.       BACKSPACE 3
  4344.       READ (3) (RE(I),I=1,NEQ)
  4345.       GO TO 25
  4346.    24 REWIND 22
  4347.       READ (22) (RE(I),I=1,NEQ)
  4348. C
  4349.    25 IF (IMODES.GT.0) GO TO 110
  4350. C
  4351. C     READ DISPLACEMENTS OFF TAPE NATKN
  4352. C
  4353.       IF (IATKEN.EQ.0) GO TO 26
  4354.       REWIND NATKN
  4355.       READ (NATKN) (DISP(I),I=1,NEQT)
  4356. C
  4357. C     IN DIVERGENCE PROCEDURE, SUBTRACT OFF RESIDUAL LOAD (DINCOR)
  4358. C
  4359.    26 IF (ISDVG.LT.2) GO TO 50
  4360.       IF (NPDIS.EQ.0) GO TO 28
  4361.       NP=1
  4362.       NN=IA(N04)
  4363.       DO 31 I=1,NEQ
  4364.       IF (I-NN) 32,33,32
  4365.    32 RE(I)=RE(I) - DINCOR(I)
  4366.       GO TO 31
  4367.    33 NP=NP + 1
  4368.       IF (NP.GT.NPDIS) GO TO 31
  4369.       NN=IA(N04 + NP - 1)
  4370.    31 CONTINUE
  4371.       GO TO 50
  4372. C
  4373.    28 DO 27 I=1,NEQ
  4374.    27 RE(I)=RE(I) - DINCOR(I)
  4375. C
  4376. C
  4377. C     C A L C U L A T E   L I N E A R   B A L A N C E D   L O A D S
  4378. C
  4379. C
  4380.    50 IF (NEGL.EQ.0 .AND. NSUBST.EQ.0) GO TO 100
  4381. C
  4382. C     STIFFNESS EFFECT
  4383. C
  4384.       REWIND 4
  4385. C
  4386.       DO 29 I=1,NEQT
  4387.    29 WV(I)=DISP(I) + DISPI(I)
  4388. C
  4389.       NF=4
  4390.       IF (ISPEC.EQ.0 .AND. IMASS.GT.0) NF=7
  4391.       REWIND NF
  4392.       CALL MULT (RE,AA,WV,MAXA,NCOLBV,NEQ,ISTOH,NBLOCK,NF)
  4393. C
  4394.       IF (ISTAT.EQ.0) GO TO 110
  4395.       IF (ISPEC.NE.1) GO TO 110
  4396.       GO TO 105
  4397. C
  4398. C     ADD MASS AND DAMPING EFFECT IF
  4399. C     NEGL AND NSUBST EQ 0 AND ISPEC EQ 0
  4400. C
  4401.   100 IF (ISTAT.EQ.0) GO TO 110
  4402.       IF (ISPEC.EQ.1) GO TO 105
  4403.       DO 101 I=1,NEQT
  4404.   101 WV(I)=DISP(I) + DISPI(I)
  4405.       DO 102 I=1,NEQ
  4406.   102 RE(I)=RE(I) - WV(I)*XM(I)*A0
  4407.       IF (IDAMPN.EQ.0) GO TO 110
  4408.       REWIND 11
  4409.       READ (11) (AA(I),I=1,NEQ)
  4410.       REWIND 11
  4411.       DO 104 I=1,NEQ
  4412.   104 RE(I)=RE(I) - WV(I)*AA(I)*A1
  4413.       GO TO 110
  4414.   105 REWIND 11
  4415. C
  4416. C     MASS EFFECT
  4417. C
  4418.       DO 30 I=1,NEQ
  4419.       WV(I)=A0*DISPI(I) - A2*VEL(I) - A3*ACC(I)
  4420.    30 CONTINUE
  4421.       IF (IMASS.EQ.2) GO TO 60
  4422.       DO 40 I=1,NEQ
  4423.       RE(I)=RE(I) - WV(I)*XM(I)
  4424.    40 CONTINUE
  4425.       GO TO 70
  4426.    60 REWIND 11
  4427.       CALL MULT (RE,AA,WV,MAXA,NCOLBV,NEQ,ISTOH,NBLOCK,11)
  4428. C
  4429. C     DAMPING EFFECT
  4430. C
  4431.    70 IF (IDAMPN.EQ.0) GO TO 110
  4432.       READ (11) (AA(I),I=1,NEQ)
  4433.       DO 90 I=1,NEQ
  4434.       RE(I)=RE(I) - AA(I)*(A1*DISPI(I) - A4*VEL(I) - A5*ACC(I))
  4435.    90 CONTINUE
  4436. C
  4437.   110 DO 120 I=1,NEQT
  4438.   120 WV(I)=DISP(I) + DISPI(I)
  4439. C
  4440. C
  4441. C     A D D   N O N L I N E A R   C O N T R I B U T I O N S
  4442. C
  4443. C
  4444.       DO 200 N=1,NEGNL
  4445.       NUMEST=IA(N0 + N - 1)
  4446. C
  4447. C       * * * * *        R A N D O M  A C C E S S        * * *
  4448. C
  4449.       NREC2=N
  4450.       CALL READMS (2,EE,NUMEST,NREC2)
  4451. C
  4452.       CALL ELEMNT
  4453. C
  4454. C     FOR CONTACT SURFACES, STORE INFORMATION DURING EQUILIBRIUM
  4455. C     ITERATION
  4456. C
  4457.       NREC2=N
  4458.       IF (NPAR(1).EQ.13) CALL WRITMS (2,EE,NUMEST,NREC2,-1)
  4459. C
  4460. C       * * * * *        R A N D O M  A C C E S S        * * *
  4461. C
  4462.   200 CONTINUE
  4463. C
  4464. C     CALCULATE CONTRIBUTION TO INITIAL POTENTIAL ENERGY FROM
  4465. C     PRESCRIBED DISPLACEMENTS
  4466. C
  4467.       IF (IMODES.GT.0) GO TO 500
  4468.       IF (NPDIS.EQ.0) GO TO 240
  4469.       IF (ITE.GT.1) GO TO 240
  4470.       IF (METHOD.EQ.2 .AND. STEP.NE.1.0) GO TO 240
  4471.       DO 230 I=1,NPDIS
  4472.       II=IA(N04 + I - 1)
  4473.       RENORM=RENORM + RE(II)*RE(II)
  4474.   230 PEINIT=PEINIT - RE(II)*DISPI(II)
  4475.       PEOLD=PEINIT
  4476. C
  4477. C     FOR BFGS METHOD, TAKE OUT STEP*DINCOR FROM DISPI
  4478. C
  4479.   240 IF (METHOD.EQ.1) GO TO 500
  4480.       DO 250 I=1,NEQT
  4481.   250 DISPI(I)=DISPI(I) - STEP*DINCOR(I)
  4482. C
  4483.   500 RETURN
  4484.       END
  4485. C *CDC* *DECK LISRCH
  4486. C *UNI* )FOR,IS N.LISRCH,R.LISRCH
  4487.       SUBROUTINE LISRCH (Y,YOLD,STEP,DINCOR,AA,DISPI,RE,DISP,VEL,ACC,
  4488.      1                   MAXA,WV,XM,EE,NCOLBV,ISTOH)
  4489. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4490. C .                                                                   .
  4491. C .                                                                   .
  4492. C .      P R O G R A M                                                .
  4493. C .         TO DO A LINE SEARCH IN THE DIRECTION OF DINCOR.           .
  4494. C .         RESULT IS A STEPLENGTH ,STEP, WHICH APPROXIMATES THE TRUE .
  4495. C .         STEPLENGTH WITH A RELATIVE ACCURACY OF STOL.              .
  4496. C .         THE METHOD USED IS A MODIFICATION OF THE SO CALLED        .
  4497. C .         ILLINOIS-ALGORITHM, WHICH IS ITSELF A MODIFICATION        .
  4498. C .         OF REGULA FALSI. THE ILLINOIS-ALGORITHM COMBINES THE      .
  4499. C .         SAFETY OF REGULA FALSI WITH THE FASTER CONVERGENCE        .
  4500. C .         OF THE SECANT METHOD. HERE WE ACCELERATE THE              .
  4501. C .         CONVERGENCE EVEN MORE BY USING RATIONAL INTERPOLATION     .
  4502. C .         WHEN POSSIBLE.                                            .
  4503. C .                                                                   .
  4504. C .                                                                   .
  4505. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4506. C
  4507.       IMPLICIT REAL*8 (A-H,O-Z)
  4508. C
  4509.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  4510.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  4511.      1            ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  4512.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  4513.      1             ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  4514.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  4515.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  4516.       COMMON /NORMS/ RNORM,RENORM,RTOL,DTOL,STOL,SMAX,SMIN,
  4517.      1               DMAX,DMIN,ETOL
  4518.       COMMON /EQIT/ METHOD,IATKEN,NLSTPD,NLSTEP,ITEDIV,ISDVG
  4519.       DIMENSION AA(1),DISPI(1),DISP(1),RE(1),VEL(1),ACC(1),DINCOR(1),
  4520.      1          WV(1),XM(1)
  4521.       INTEGER NCOLBV(1),MAXA(1)
  4522.       REAL EE(1)
  4523. C
  4524.       LINMAX = 10
  4525.       SAMAX=10.
  4526.       YA = Y
  4527.       YB = YOLD
  4528.       SB = 0.0
  4529.       SA = 1.0
  4530. C
  4531. C     FIND BRACKET ON ZERO
  4532. C
  4533.    10 CONTINUE
  4534.       IF ((YA*YB).LE.0.0) GO TO 20
  4535.       SB=SA
  4536.       SA=SA + SA
  4537.       YB=YA
  4538.       CALL UNBLD (SA,DINCOR,AA,DISPI,RE,DISP,VEL,ACC,MAXA,WV,XM,EE,
  4539.      1            NCOLBV,ISTOH)
  4540.       YA=PRDINN(DINCOR,RE,NEQ)
  4541.       STEP=SA
  4542.       Y=YA
  4543.       IF (SA.GT.SAMAX) GO TO 15
  4544.       GO TO 10
  4545. C
  4546. C
  4547. C     ILLINOIS-ALGORITHM WITH RATIONAL INTERPOLATION TO FIND
  4548. C        ZERO WITH RELATIVE ACCURACY OF STOL.
  4549. C
  4550. C
  4551.    20 DO 22 J=1,LINMAX
  4552.       STEP=SA - YA*(SA - SB)/(YA - YB)
  4553.       CALL UNBLD (STEP,DINCOR,AA,DISPI,RE,DISP,VEL,ACC,MAXA,WV,XM,EE,
  4554.      1            NCOLBV,ISTOH)
  4555.       Y=PRDINN(DINCOR,RE,NEQ)
  4556. C
  4557. C        COMPUTE BETA FOR RATIONAL INTERPOLATION
  4558. C
  4559.       BETA=0.5
  4560.       IF (DABS(STEP - SA) .LT. 1.0D-20) GO TO 25
  4561.       BETA=(Y - YA)*(SA - SB)/((YA - YB)*(STEP - SA))
  4562.       IF (BETA.LT.1.0D-2 .OR. BETA.GT.0.5D0) BETA=0.5D0
  4563.    25 YB=BETA*YB
  4564.       IF ((Y*YA).GT.0.0) GO TO 30
  4565.       SB=SA
  4566.       YB=YA
  4567.    30 SA=STEP
  4568.       YA=Y
  4569.       IF (DABS(Y).LT.(STOL*DABS(YOLD)) .AND.
  4570.      1    DABS(SB - SA).LT.(STOL*DMAX1(SA,SB))) GO TO 15
  4571.    22 CONTINUE
  4572.    15 CONTINUE
  4573.       RETURN
  4574.       END
  4575. C *CDC* *DECK NEWDIR
  4576. C *UNI* )FOR,IS N.NEWDIR,R.NEWDIR
  4577.       SUBROUTINE NEWDIR (Y,YOLD,STEP,DINCOR,AA,DISPI,RE,DINORM,DISP,VEL,
  4578.      1                   ACC,MAXA,WV,XM,EE,CC,DK,NCOLBV,ICOPL,ISTOH)
  4579. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4580. C .                                                                   .
  4581. C .                                                                   .
  4582. C .      P R O G R A M                                                .
  4583. C .                                                                   .
  4584. C .         TO FIND A NEW SEARCH DIRECTION.                           .
  4585. C .                                                                   .
  4586. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4587. C
  4588.       IMPLICIT REAL*8 (A-H,O-Z)
  4589. C
  4590.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  4591.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  4592.      1            ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  4593.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  4594.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  4595.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  4596.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  4597.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  4598.       COMMON /ADDB/ NEQL,NEQR,MLA,NBLOCK
  4599.       COMMON /EQIT/ METHOD,IATKEN,NLSTPD,NLSTEP,ITEDIV,ISDVG
  4600.       COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
  4601.      1             NPDIS,NTEMP
  4602.       COMMON /NORMS/ RNORM,RENORM,RTOL,DTOL,STOL,SMAX,SMIN,
  4603.      1               DMAX,DMIN,ETOL
  4604.       COMMON /ITMTHD/ MAXUP,NUMUPD,NTBFGS,NATKN
  4605.       COMMON A(1)
  4606.       INTEGER IA(1)
  4607.       DIMENSION AA(1),DISPI(1),DISP(1),RE(1),VEL(1),ACC(1),DINCOR(1),
  4608.      1          WV(1),XM(1),CC(1),DK(1)
  4609.       INTEGER NCOLBV(1),ICOPL(1),MAXA(1)
  4610.       REAL EE(1)
  4611.       REAL A
  4612.       EQUIVALENCE (A(1),IA(1))
  4613. C
  4614.       CONDMX=1.0E05
  4615.       IF (METHOD.GE.2) GO TO 5
  4616.       CALL COLSOL (MAXA,NCOLBV,ICOPL,AA,CC,DK,RE,A(N04),NEQ,NBLOCK,
  4617.      1             ISTOH,12,10,2)
  4618.       RETURN
  4619.     5 NUMUPD = MOD (NUMUPD,MAXUP)
  4620. C
  4621. C     WE ALREADY HAVE
  4622. C           Y = )DINCOR,RESID# AND YOLD = )DINCOR,OLDRESID#
  4623. C
  4624. C     WE COMPUTE
  4625. C
  4626. C           DELGAM = )DELTA,GAMMA# = STEP*)DINCOR,OLDRESID-RESID#
  4627. C     AND
  4628. C           DELH1D = )DELTA,H(-1)DELTA# = STEP**2 * )DINCOR,OLDRESID#
  4629. C
  4630.       DELGAM = STEP*(YOLD-Y)
  4631.       IF (DABS(YOLD-Y).LT.1.D-12) YOLD=Y
  4632.       DELH1D = STEP*STEP*YOLD
  4633. C
  4634. C     CHECK CONDITIONS FOR UPDATING
  4635. C
  4636.       IUP=0
  4637.       IF (DELGAM.GT.0.0 .AND. DELH1D.GT.0.0) IUP=1
  4638.       IF (IUP.EQ.1) GO TO 13
  4639.       DO 12 I=1,NEQ
  4640.       DINCOR(I)=RE(I)
  4641.    12 CONTINUE
  4642.       IF (NUMUPD.EQ.0) REWIND NTBFGS
  4643.       WRITE (NTBFGS) (RE(I),I=1,NEQ)
  4644.       BACKSPACE NTBFGS
  4645.       GO TO 15
  4646. C
  4647. C     READ THE OLD RESIDUAL
  4648. C
  4649.    13 READ (NTBFGS) (WV(I),I=1,NEQ)
  4650.       BACKSPACE NTBFGS
  4651.       IF (NUMUPD.EQ.0) REWIND NTBFGS
  4652.       FACT1=-DSQRT(DELGAM/DELH1D)*STEP - 1.0
  4653.       FACT2 = STEP/DELGAM
  4654. C
  4655. C     WV = V = (DSQRT(DELGAM/DELH1D)*STEP-1)*OLDRESID + RESID
  4656. C
  4657. C     RESID = U = STEP/DELGAM * DINCOR
  4658. C
  4659.       IF (NPDIS.EQ.0) GO TO 21
  4660.       NP=1
  4661.       NN=IA(N04)
  4662.       DO 22 I=1,NEQ
  4663.       IF (I-NN) 23,24,23
  4664.    23 AUX=RE(I)
  4665.       WV(I)=AUX + FACT1*WV(I)
  4666.       RE(I)=FACT2*DINCOR(I)
  4667.       DINCOR(I)=AUX
  4668.       GO TO 22
  4669.    24 DINCOR(I)=RE(I)
  4670.       WV(I)=0.0
  4671.       RE(I)=0.0
  4672.       NP=NP + 1
  4673.       IF (NP.GT.NPDIS) GO TO 22
  4674.       NN=IA(N04 + NP - 1)
  4675.    22 CONTINUE
  4676.       GO TO 26
  4677. C
  4678.    21 DO 20 I=1,NEQ
  4679.       AUX=RE(I)
  4680.       WV(I)=AUX + FACT1*WV(I)
  4681.       RE(I)=FACT2*DINCOR(I)
  4682.       DINCOR(I)=AUX
  4683.    20 CONTINUE
  4684. C
  4685. C     CHECK ESTIMATE ON INCREASE OF CONDITION NUMBER
  4686. C     OF UPDATED MATRIX   (ESTCON)
  4687. C
  4688. C     WE HAVE : X1 = )V,V#
  4689. C               X2 = )U,U#
  4690. C               X3 = 4*()U,V# + 1) = 4*()RESID,WV# + 1)
  4691. C
  4692.    26 X1=PRDINN(WV,WV,NEQ)
  4693.       X2 = DINORM*DINORM/(DELGAM*DELGAM)
  4694.       X3=4.*FACT2*(FACT1*YOLD + Y) + 4.0
  4695.       IF (X3.EQ.0.0) IUP=0
  4696.       IF (IUP.EQ.0) GO TO 16
  4697.       X4=DABS(X1*X2 + X3)
  4698.       ESTCON=((DSQRT(X1)*DSQRT(X2) + DSQRT(X4))**2.0)/DABS(X3)
  4699.       IF (ESTCON.GE.CONDMX) IUP=0
  4700.       IF (IUP.EQ.0) GO TO 16
  4701. C
  4702. C     SAVE UPDATING VECTORS
  4703. C
  4704.       WRITE (NTBFGS) (WV(I),I=1,NEQ)
  4705.       WRITE (NTBFGS) (RE(I),I=1,NEQ)
  4706. C
  4707. C     SAVE NEW RESIDUAL LOAD (IN DINCOR) FOR NEXT ITERATION
  4708. C
  4709.    16 WRITE (NTBFGS) (DINCOR(I),I=1,NEQ)
  4710.       BACKSPACE NTBFGS
  4711.       IF (IUP.EQ.0) GO TO 15
  4712.       BACKSPACE NTBFGS
  4713.       BACKSPACE NTBFGS
  4714. C
  4715. C     RIGHT HALF OF UPDATING
  4716. C
  4717.       FACTOR = FACT2 * Y
  4718.       DO 25 I=1,NEQ
  4719.       DINCOR(I)=DINCOR(I) + FACTOR*WV(I)
  4720.    25 CONTINUE
  4721.    15 CONTINUE
  4722.       IF (NUMUPD.EQ.0) GO TO 37
  4723.       DO 30 J=1,NUMUPD
  4724.       BACKSPACE NTBFGS
  4725.       READ (NTBFGS) (RE(I),I=1,NEQ)
  4726.       FACTOR=PRDINN(DINCOR,RE,NEQ)
  4727.       BACKSPACE NTBFGS
  4728.       BACKSPACE NTBFGS
  4729.       READ (NTBFGS) (WV(I),I=1,NEQ)
  4730.       DO 35 I=1,NEQ
  4731.       DINCOR(I)=DINCOR(I) + FACTOR*WV(I)
  4732.    35 CONTINUE
  4733.       BACKSPACE NTBFGS
  4734.    30 CONTINUE
  4735. C
  4736. C     BACKSUBSTITUTION
  4737. C
  4738.    37 CALL COLSOL (MAXA,NCOLBV,ICOPL,AA,CC,DK,DINCOR,A(N04),NEQ,NBLOCK,
  4739.      1             ISTOH,12,10,2)
  4740. C
  4741. C     LEFT HALF OF UPDATING
  4742. C
  4743.       IF (IUP.EQ.1) NUMUPD=NUMUPD + 1
  4744.       REWIND NTBFGS
  4745.       IF (NUMUPD.EQ.0) GO TO 50
  4746.       DO 40 J=1,NUMUPD
  4747.       READ (NTBFGS) (WV(I),I=1,NEQ)
  4748.       FACTOR=PRDINN(DINCOR,WV,NEQ)
  4749.       READ (NTBFGS) (RE(I),I=1,NEQ)
  4750.       DO 45 I=1,NEQ
  4751.    45 DINCOR(I)=DINCOR(I) + FACTOR*RE(I)
  4752.    40 CONTINUE
  4753. C
  4754. C     READ RESID FOR COMPUTATION OF YOLD IN EQUIT
  4755. C
  4756.    50 READ (NTBFGS) (RE(I),I=1,NEQ)
  4757.       BACKSPACE NTBFGS
  4758.       RETURN
  4759.       END
  4760. C *CDC* *DECK DIVERG
  4761. C *UNI* )FOR,IS  N.DIVERG,  R.DIVERG
  4762.       SUBROUTINE DIVERG (DISP,R,RESID,AA,RE,WV,VEL,ACC,XM,EE,B,DK,
  4763.      1                   NCOLBV,ICOPL,MAXA,IGRBLC,TEMPV2)
  4764. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4765. C .   P R O G R A M                                                   .
  4766. C .       TO CALCULATE ELASTIC STIFFNESS MATRIX AND MODIFY LOAD STEP  .
  4767. C .       SIZE IN CASE OF DIVERGENCE IN EQUILIBRIUM ITERATION         .
  4768. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4769. C
  4770.       IMPLICIT REAL*8 (A-H,O-Z)
  4771. C
  4772.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  4773.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  4774.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  4775.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  4776.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  4777.       COMMON /EQIT/ METHOD,IATKEN,NLSTPD,NLSTEP,ITEDIV,ISDVG
  4778.       COMMON /NORMS/ RNORM,RENORM,RTOL,DTOL,STOL,SMAX,SMIN,
  4779.      1               DMAX,DMIN,ETOL
  4780.       COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
  4781.      1             NPDIS,NTEMP
  4782.       COMMON /DPR/ ITWO
  4783.       COMMON /ADDB/ NEQL,NEQR,MLA,NBLOCK
  4784.       COMMON /FREQIF/ ISTOH,N1A,N1B,N1C
  4785.       COMMON /ULJ/ IULJ
  4786.       COMMON /DVGREF/ INDMNO
  4787.       COMMON /MIDSYS/ NMIDSS,MIDIND,MAXMSS
  4788.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  4789.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  4790.       COMMON /DISCON/ NDISCE,NIDM
  4791. C
  4792.       DIMENSION DISP(1),R(1),AA(1),RE(1),WV(1),VEL(1),ACC(1),XM(1),
  4793.      1          EE(1),B(1),DK(1),NCOLBV(1),ICOPL(1),MAXA(1),IGRBLC(1),
  4794.      2          TEMPV2(1),RESID(1)
  4795. C
  4796.       COMMON A(1)
  4797.       INTEGER IA(1)
  4798.       REAL A
  4799.       EQUIVALENCE (A(1),IA(1))
  4800. C
  4801. C
  4802.       IF (NLSTPD.EQ.0) GO TO 400
  4803.       NN=N1 - 1
  4804.       REWIND 9
  4805.       IF (MAXMSS.GT.0) READ(9) (A(I),I=N09,NN)
  4806.       ITESUM=ITE
  4807.       ITEDIV=ITE
  4808.       ITDVMX=NLSTPD*ITEMAX
  4809.       ISDVG=2
  4810.       NLSTEP=0
  4811.       FACTOR=0.0
  4812.       DELFAC=0.0
  4813.       IF (ISTAT.EQ.1) DELFAC=1.0
  4814.       IREF=0
  4815.       IREFD=0
  4816.       WRITE (6,2500) NLSTPD
  4817. C
  4818. C     DETERMINE CORRECTIVE LOAD FACTOR
  4819. C
  4820.    10 DLFACO=DELFAC
  4821.       DELFAC=DELFAC*DELFAC
  4822.       IF (DLFACO.LT.0.25 .AND. DLFACO.GT.0.0625) DELFAC=0.0625
  4823.       IF (DELFAC.EQ.0.0) DELFAC=0.5
  4824.       IF (DELFAC.LT.0.0625) GO TO 500
  4825. C
  4826.       KTR=1
  4827. C
  4828.       IF (NPDIS.GT.0) BACKSPACE 13
  4829.       CALL LOADEF (MAXA,NCOLBV,DISP,MAXA,VEL,ACC,R,WV,AA,XM,A(N04),
  4830.      1             A(N05),NBLOCK,ISTOH)
  4831. C
  4832. C     CALCULATE LOAD INCREMENT AND ELASTIC STIFFNESS (IF REQUESTED)
  4833. C     IN ASSEM
  4834. C
  4835.    20 CONTINUE
  4836.       BACKSPACE 56
  4837.       CALL ASSEM (MAXA,AA,B,DISP,R,RE,EE,NCOLBV,TEMPV2,IGRBLC,
  4838.      1            EE,A(N04),A(N05),ISTOH,NBLOCK)
  4839. C
  4840. C     SCALE LOAD INCREMENT BY SCALING FACTOR AND SAVE
  4841. C
  4842.       DO 30 I=1,NEQ
  4843.       RESID(I)=R(I)*(1.0 - (DELFAC/(1.0 - FACTOR)))
  4844.       R(I)=R(I)*DELFAC/(1.0 - FACTOR)
  4845.    30 RE(I)=R(I)
  4846. C
  4847. C     SOLVE FOR DISPLACEMENT INCREMENTS AND ITERATE
  4848. C
  4849.       IF (IREF.EQ.1) KTR=2
  4850.       CALL COLSOL (MAXA,NCOLBV,ICOPL,AA,B,DK,R,A(N04),NEQ,NBLOCK,ISTOH,
  4851.      1             12,10,KTR)
  4852. C
  4853.       IEQREF=0
  4854. C
  4855.       IF (NDISCE.GT.0)
  4856.      1  CALL CONDIS(A(N01),A(N02),A(N03),R,VEL,ACC,NIDM,0)
  4857. C
  4858.       CALL EQUIT (AA,R,RESID,RE,DISP,VEL,ACC,MAXA,WV,XM,EE,B,DK,NCOLBV,
  4859.      1            ICOPL,ISTOH)
  4860. C
  4861. C     IF CONVERGENCE IS NOT ATTAINED, DECREMENT LOAD STEP FURTHER
  4862. C
  4863.       ITESUM=ITESUM + ITE
  4864.       ITEDIV=ITEDIV + ITE
  4865.       IF (ITEDIV.GT.ITDVMX) GO TO 200
  4866.       IF (ITE.GT.ITEMAX) GO TO 500
  4867.       IF (IEQREF.EQ.0) GO TO 50
  4868.       IF (ISTAT.EQ.1) GO TO 500
  4869.       GO TO 10
  4870. C
  4871. C     DETERMINE NEXT LOAD STEP SIZE
  4872. C
  4873.    50 NLSTEP=NLSTEP + 1
  4874.       FACTOR=FACTOR + DELFAC
  4875.       IF (IREFD.EQ.0) WRITE (6,2550) NLSTEP,FACTOR,ITESUM
  4876.       IF (IREFD.EQ.1) WRITE (6,2551) NLSTEP,FACTOR,ITESUM
  4877.       ITESUM=0
  4878.       IREFD=1
  4879.       IF (FACTOR.EQ.1.0) GO TO 100
  4880.       IF (NLSTEP.EQ.NLSTPD) GO TO 500
  4881.       DELFAC=0.5
  4882.       IF (ITE.GT.4) DELFAC=0.25
  4883.       IF (ITE.GT.12) DELFAC=0.0625
  4884.       IF ((FACTOR + DELFAC).GT.1.0) DELFAC=1.0 - FACTOR
  4885. C
  4886. C     UPDATE DISPLACEMENTS IN NEWDAV
  4887. C
  4888.       CALL NEWDAV (AA,R,RE,MAXA,DISP,R,VEL,ACC,A(N04),A(N05),NEQ,1)
  4889. C
  4890.       IF (NDISCE.GT.0)
  4891.      1  CALL CONDIS(A(N01),A(N02),A(N03),DISP,VEL,ACC,NIDM,ISTAT)
  4892.  
  4893. C
  4894. C     SHIFT DISPLACEMENT INCREMENTS IN ULJ FORMULATION
  4895. C
  4896.       IF (IULJ.EQ.0) GO TO 70
  4897.       DO 60 I=1,NEQ
  4898.    60 RE(I)=R(I)
  4899. C
  4900. C     RE-READ THE EXTERNAL LOAD VECTOR IN LOADEF
  4901. C
  4902.    70 BACKSPACE 3
  4903.       IF (NPDIS.GT.0) BACKSPACE 13
  4904.       CALL LOADEF (MAXA,NCOLBV,DISP,MAXA,VEL,ACC,R,WV,AA,XM,A(N04),
  4905.      1             A(N05),NBLOCK,ISTOH)
  4906. C
  4907. C     RECALCULATE STIFFNESS, IF REQUIRED, AND TAKE NEXT LOAD INCREMENT
  4908. C
  4909.       KTR=1
  4910.       IREF=0
  4911.       IF (INDMNO.EQ.1) IREF=1
  4912.       IF (IREF.EQ.0) IREFD=0
  4913.       GO TO 20
  4914. C
  4915. C     RETURN IF LOAD STEP HAS BEEN SUCCESSFULLY CALCULATED
  4916. C
  4917.   100 ISDVG=0
  4918.       WRITE (6,2600) NLSTEP,ITEDIV
  4919.       RETURN
  4920. C
  4921.   200 WRITE (6,2000) NLSTEP,FACTOR
  4922.       WRITE (6,2200) ITDVMX
  4923.       ISDVG=1
  4924.       RETURN
  4925. C
  4926.   400 WRITE (6,2100) ITE
  4927.       ISDVG=1
  4928.       RETURN
  4929. C
  4930.   500 WRITE (6,2000) NLSTEP,FACTOR
  4931.       ISDVG=1
  4932.       RETURN
  4933. C
  4934.  2000 FORMAT (44H CONVERGENCE NOT ATTAINED FOR THIS LOAD STEP/
  4935.      1        10X,38H NUMBER OF SMALLER LOAD STEPS TAKEN = ,I5/
  4936.      2        10X,34H FRACTION OF TOTAL LOAD REACHED = ,E14.6)
  4937.  2100 FORMAT (////67H OUT OF BALANCE LOADS LARGER THAN INCREMENTAL LOADS
  4938.      1 AFTER ITERATION,I5)
  4939.  2200 FORMAT (//36H MAXIMUM NUMBER OF TOTAL ITERATIONS,,I5,9H EXCEEDED)
  4940.  2500 FORMAT (//50H ATTEMPT TO ITERATE WITH THIS LOAD STEP FAILED TO ,
  4941.      1        8HCONVERGE//
  4942.      2        44H LOAD STEP WILL BE DIVIDED INTO A MAXIMUM OF,I5,
  4943.      3        41H SMALLER LOAD STEPS TO ATTAIN CONVERGENCE//
  4944.      4        3X,9HLOAD STEP,7X,11HFRACTION OF,10X,9HSTIFFNESS,
  4945.      5        9X,9HNUMBER OF/4X,6HNUMBER,10X,10HTOTAL LOAD,9X,
  4946.      6        12HREFORMATION&,7X,10HITERATIONS/)
  4947.  2550 FORMAT (6X,I2,7X,E14.6,13X,3HYES,13X,I5)
  4948.  2551 FORMAT (6X,I2,7X,E14.6,13X,3H NO,13X,I5)
  4949.  2600 FORMAT (/40H CONVERGENCE ATTAINED FOR THIS LOAD STEP/
  4950.      1        10X,38H NUMBER OF SMALLER LOAD STEPS TAKEN = ,I5/
  4951.      2        10X,38H TOTAL NUMBER OF ITERATIONS REQUIRED = ,I5)
  4952. C
  4953.       END
  4954. C *CDC* *DECK NDAVMS
  4955. C *UNI* )FOR,IS N.NDAVMS, R.NDAVMS
  4956.       SUBROUTINE NDAVMS
  4957. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4958. C .                                                                   .
  4959. C .   P R O G R A M                                                   .
  4960. C .      . TO CALCULATE NEW DISPLACEMENTS, VELOCITIES, AND            .
  4961. C .        ACCELERATIONS AT TIME=T + DELTA(T) FOR MASTER              .
  4962. C .        STRUCTURES AND, IF APPLICABLE, FOR SUBSTRUCTURES.          .
  4963. C .                                                                   .
  4964. C .        IF DYNAMIC SUBSTRUCTURING IS USED, STORAGE VARIABLES ARE   .
  4965. C .        SET, NEEDED INFORMATION IS READ INTO CORE, AND INTERNAL    .
  4966. C .        SUBSTRUCTURE DISPLACEMENTS ( OR DISPLACEMENT INCREMENTS)   .
  4967. C .        ARE CALCULATED BEFORE CALLING NEWDAV TO CALCULATE          .
  4968. C .        VELOCITIES AND ACCELERATIONS                               .
  4969. C .        NEWDAV IS CALLED FOR THE MASTER DEGREES OF FREEDOM         .
  4970. C .                                                                   .
  4971. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  4972.       IMPLICIT REAL*8 (A-H,O-Z)
  4973.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  4974.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  4975.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  4976.       COMMON /SUBSTF/ NREC16
  4977.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  4978.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  4979.       COMMON /MSUPER/ IMODES,NMODES,IMDAMP
  4980.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  4981.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  4982.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  4983.       COMMON /FREQIF/ ISTOH,N1A,N1B,N1C,N1S
  4984.       COMMON /RANDI/ N0A,N1D,IELCPL
  4985.       COMMON /SRANDI/ N09A,N09B
  4986.       COMMON /DIMN/ N3A,N4A,N4B,N4C
  4987.       COMMON /DISCON/ NDISCE,NIDM
  4988.       COMMON /LOA/ NLOAD,NPR2,NPR3,NODE3,IDGRAV,NPDIS,NTEMP
  4989.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  4990.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  4991.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  4992.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  4993.       COMMON /TIMFN/ TEND,NTFN,NPTM
  4994.       COMMON /DPR/ ITWO
  4995.       COMMON A(1)
  4996.       INTEGER IA(1)
  4997.       REAL A
  4998.       EQUIVALENCE (A(1),IA(1))
  4999. C
  5000. C     SUBSTRUCTURE CALCULATIONS
  5001. C
  5002.       IF (NSUBST.EQ.0 .OR. ISTAT.EQ.0) GO TO 300
  5003.       IF (KLIN.EQ.0) GO TO 20
  5004. C
  5005. C     CALCULATE MASTER DISPLACEMENTS
  5006. C
  5007.       FACTOR=0.
  5008.       CALL SHTADV (A(N3),A(N3),A(N2),FACTOR,NEQ,2)
  5009.    20 ISUB=1
  5010.       NEQT=NEQ + NDISCE
  5011. C
  5012. C     CHANGE STORAGE INDICES
  5013. C
  5014.       M2=N2 + NEQT*ITWO
  5015.       M3=N3 + NEQT*ITWO
  5016.       M7=N7 + NEQT*ITWO
  5017.       M8=N8 + NEQT*ITWO
  5018.       M9=N9 + NEQ*ITWO
  5019.       NREC16=0
  5020.       NREC17=NSTE  + KSTEP
  5021.       REWIND NSTAPE
  5022.       IF (KSTEP.EQ.1) REWIND 23
  5023.       DO 200 NSUB=1,NSUBST
  5024.       NN=N07 + 8*(NSUB - 1)
  5025.       NEQS=IA(NN)
  5026.       NWKS=IA(NN + 1)
  5027.       MAXES=IA(NN + 2)
  5028.       NBCEL=IA(NN + 3)
  5029.       NBLOCS=IA(NN + 4)
  5030.       ISTOHS=IA(NN + 5)
  5031.       NEQC=IA(NN + 6)
  5032.       M1A=N1S + NEQS + 1
  5033.       M1B=M1A + NBLOCS
  5034.       NN=M1B + NBLOCS - 1
  5035.       READ (NSTAPE) NTUSE,NEGLS,NUMNPS,NODCON,NODRET,
  5036.      1                   (IDOFS(I),I=1,6),NDOFS,(IA(I),I=N1S,NN)
  5037. C
  5038. C     READ L AND D FACTORS OF STIFFNESS MATRIX INTO CORE
  5039. C
  5040.       IF (NBLOCS.NE.1) GO TO 50
  5041. C
  5042. C   * * * * *    R A N D O M   A C C E S S   * * *
  5043. C
  5044.       KK=NREC16 + 1
  5045.       CALL READMS (16,A(N4),ISTOHS,KK)
  5046.    50 KK=NREC16 + NBLOCS + 1
  5047.       CALL READMS (16,A(N4C),NEQC,KK)
  5048. C
  5049. C   * * * * *    R A N D O M   A C C E S S   * * *
  5050. C
  5051. C
  5052. C     RESPONSE OF REPEATED SUBSTRUCTURES
  5053. C
  5054.       DO 100 NTU=1,NTUSE
  5055. C
  5056. C     EXTRACT DISP AT RETAINED DOF FROM MASTER DOF DISPLACEMENTS
  5057. C
  5058.       KRSIZE=NEQS
  5059.       CALL SUBSKR (A(M3),A(M3),A(N3),A(N6),A(N1S),A(M1A),
  5060.      1             ISTOHS,NBLOCS,NREC16,NREC17,KRSIZE,NEQ)
  5061. C
  5062. C     CALCULATE INTERNAL DISPLACEMENTS
  5063. C
  5064.       CALL COLSOL (A(N1S),A(M1A),A(M1B),A(N4),A(N4),A(N4C),A(M3),
  5065.      1             A(N04),NEQS,NBLOCS,ISTOHS,12,16,3)
  5066.       FACTOR=0.
  5067.       IF (KLIN.GT.0) CALL SHTADV (A(M3),A(M3),A(M2),FACTOR,NEQS,1)
  5068.       CALL NEWDAV (A(N4),A(M3),A(N5),A(N1),A(M2),A(M3),A(M7),A(M8),
  5069.      1             A(N04),A(N05),NEQS,1)
  5070.       NN=M2 + NEQS*ITWO - 1
  5071.       WRITE (23) (A(I),I=M2,NN)
  5072.       NN=M7 + NEQS*ITWO - 1
  5073.       WRITE (23) (A(I),I=M7,NN)
  5074.       NN=M8 + NEQS * ITWO - 1
  5075.       WRITE (23) (A(I),I=M8,NN)
  5076.       M2=M2 + NEQS*ITWO
  5077.       M3=M3 + NEQS*ITWO
  5078.       M7=M7 + NEQS*ITWO
  5079.       M8=M8 + NEQS*ITWO
  5080.       NREC17=NREC17 + NSTE
  5081.   100 CONTINUE
  5082.       NREC16=NREC16 + NBLOCS + 1
  5083.   200 CONTINUE
  5084.       ISUB=0
  5085.       FACTOR=0.
  5086.       IF (KLIN.GT.0) CALL SHTADV (A(N3),A(N3),A(N2),FACTOR,NEQ,1)
  5087. C
  5088. C     MASTER STRUCTURE CALCULATIONS
  5089. C     CALCULATE NEW DISP,VEL,ACC VECTORS AT
  5090. C     TIME=TSTART + KSTEP*DT
  5091. C
  5092.   300 CALL NEWDAV (A(N4),A(N3),A(N5),A(N1),A(N2),A(N3),A(N7),A(N8),
  5093.      1             A(N04),A(N05),NEQ,1)
  5094.       RETURN
  5095.       END
  5096. C *CDC* *DECK NEWDAV
  5097. C *UNI* )FOR,IS  N.NEWDAV, R.NEWDAV
  5098.       SUBROUTINE NEWDAV (AA,R,DISPIS,DISPM,DISP,DISPI,VEL,ACC,NOD,
  5099.      1                   PRDIS,NEQ,IFLAG)
  5100. C
  5101. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5102. C .                                                                   .
  5103. C .   P R O G R A M                                                   .
  5104. C .      . TO CALCULATE NEW DISPLACEMENTS, VELOCITIES, AND            .
  5105. C .        ACCELERATIONS AT TIME T+DELTA(T)                           .
  5106. C .                                                                   .
  5107. C .                                                                   .
  5108. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5109. C
  5110.       IMPLICIT REAL*8 (A-H,O-Z)
  5111.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  5112.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  5113.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  5114.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  5115.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  5116.       COMMON /MSUPER/ IMODES,NMODES,IMDAMP
  5117.       COMMON /SOL/ NUMNP,NUMEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  5118.       COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
  5119.      1             NPDIS,NTEMP
  5120.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  5121.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  5122.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  5123.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  5124.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  5125.       COMMON /MDFRDM/ IDOF(6)
  5126.       COMMON /ELSTP/ TIME,IDTHF
  5127.       COMMON /ULJ/ IULJ
  5128.       COMMON /PORT/ INPORT,JNPORT,NPUTSV,LUNODE,LU1,LU2,LU3,JDC,JVC,JAC
  5129. C
  5130.       DIMENSION AA(1),R(1),DISPIS(1),DISPM(1),DISP(1),DISPI(1),VEL(1),
  5131.      1          ACC(1),NOD(1),PRDIS(1)
  5132. C
  5133.       IF (IFLAG.EQ.2) GO TO 118
  5134.       IF (ISTAT.GE.1) GO TO 10
  5135. C
  5136. C
  5137. C     S T A T I C S
  5138. C
  5139. C
  5140.       IF (KLIN.GT.0) GO TO 60
  5141. C
  5142. C     LINEAR ANALYSIS
  5143. C
  5144.       DO 50 I=1,NEQ
  5145.    50 DISP(I)=DISPI(I)
  5146.       GO TO 70
  5147. C
  5148. C     NONLINEAR ANALYSIS
  5149. C
  5150.    60 DO 40 I=1,NEQ
  5151.    40 DISP(I)=DISP(I) + DISPI(I)
  5152.    70 GO TO 200
  5153. C
  5154. C
  5155. C     D Y N A M I C S
  5156. C
  5157. C
  5158.    10 IF (KLIN.GT.0 .OR. IOPE.EQ.3) GO TO 90
  5159.       IF (IMODES.GT.0) GO TO 90
  5160. C
  5161. C     LINEAR ANALYSIS
  5162. C
  5163.       DO 80 I=1,NEQ
  5164.    80 DISPI(I)=DISPI(I) - DISP(I)
  5165. C
  5166. C     NONLINEAR ANALYSIS
  5167. C
  5168.    90 GO TO (91,101,111,200), IOPE
  5169. C
  5170. C     W I L S O N   M E T H O D
  5171. C
  5172.    91 DO 100 I=1,NEQ
  5173.       UTT=ACC(I)
  5174.       UUT=VEL(I)
  5175.       ACC(I) =A6 *DISPI(I)+A7 *UUT+A8 *UTT
  5176.       VEL(I) =UUT + A9*(ACC(I) + UTT)
  5177.       DISP(I)=DISP(I) + DT*UUT + A10*(ACC(I) + 2.*UTT)
  5178.   100 CONTINUE
  5179.       GO TO 200
  5180. C
  5181. C     N E W M A R K   M E T H O D
  5182. C
  5183.   101 DO 102 I=1,NEQ
  5184.       UTT=ACC(I)
  5185.       UUT=VEL(I)
  5186.       ACC(I) =A6 *DISPI(I)+A7 *UUT+A8 *UTT
  5187.       VEL(I) =UUT + A9*UTT + A10*ACC(I)
  5188.       DISP(I)=    DISPI(I)+DISP(I)
  5189.   102 CONTINUE
  5190.       GO TO 200
  5191. C
  5192. C     C E N T R A L   D I F F E R E N C E   M E T H O D
  5193. C
  5194.   111 IF (KSTEP.LT.NSTE .AND. NPDIS.GT.0) GO TO 220
  5195.       DO 112 I=1,NEQ
  5196.   112 DISPI(I)=R(I)/AA(I)
  5197.       GO TO 113
  5198. C
  5199.   220 READ (13) (PRDIS(I),I=1,NPDIS)
  5200.       NP=1
  5201.       NN=NOD(NP)
  5202.       DO 250 I=1,NEQ
  5203.       IF (I - NN) 240,230,240
  5204.   230 DISPI(I)=PRDIS(NP)
  5205.       IF (NPDIS.EQ.NP) GO TO 250
  5206.       NP=NP + 1
  5207.       NN=NOD(NP)
  5208.       GO TO 250
  5209.   240 DISPI(I)=R(I)/AA(I)
  5210.   250 CONTINUE
  5211. C
  5212.   113 IF (IPRI.NE.0 .AND. KPLOTN.NE.0) GO TO 200
  5213.       IF (IVC.EQ.0 .AND. JVC.EQ.0) GO TO 115
  5214.       DO 114 I=1,NEQ
  5215.   114 VEL(I)=A1*(DISPI(I) - DISPM(I))
  5216.   115 IF (IAC.EQ.0 .AND. JAC.EQ.0) GO TO 200
  5217.       DO 116 I=1,NEQ
  5218.   116 ACC(I)=A0*(DISPM(I) - 2.*DISP(I) + DISPI(I))
  5219.       GO TO 200
  5220. C
  5221. C     UPDATE DISPLACEMENT VECTOR
  5222. C
  5223.   118 DO 120 I=1,NEQ
  5224.       DISPM(I)=DISP(I)
  5225.   120 DISP(I)=DISPI(I)
  5226.       IF (IULJ.EQ.0) RETURN
  5227.       DO 130 I=1,NEQ
  5228.   130 DISPIS(I)=DISP(I) - DISPM(I)
  5229. C
  5230.   200 RETURN
  5231. C
  5232.       END
  5233. C *CDC* *DECK CONDIS
  5234. C *UNI* )FOR,IS N.CONDIS, R.CONDIS
  5235.       SUBROUTINE CONDIS (NID,IDI,BETA,DISP,VEL,ACC,NIDM,KKK)
  5236. C
  5237. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5238. C .                                                                   .
  5239. C .   PROGRAM .                                                       .
  5240. C .      . TO CALCULATE DISP (VEL/ACC) AT CONSTRAINED DOF             .
  5241. C .                                                                   .
  5242. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5243. C
  5244.       IMPLICIT REAL*8 (A-H,O-Z)
  5245. C
  5246.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  5247.       COMMON /CONST/ DT,DTA,CONS(21),DTOD,IOPE
  5248.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  5249.       COMMON /PORT/ INPORT,JNPORT,NPUTSV,LUNODE,LU1,LU2,LU3,JDC,JVC,JAC
  5250.       COMMON /DISCON/ NDISCE,NIDMA
  5251. C
  5252.       DIMENSION NID(1),IDI(NIDM,1),BETA(NIDM,1),DISP(1),VEL(1),ACC(1)
  5253. C
  5254.       ISV=1
  5255.       ISA=1
  5256.       IF (IOPE.NE.3) GO TO 10
  5257.       ISV=(IVC + JVC + 1)/2
  5258.       ISA=(IAC + JAC + 1)/2
  5259. C
  5260.    10 DO 120 I=1,NDISCE
  5261.       K=NEQ + I
  5262.       ND=NID(I)
  5263.       DISP(K)=0.
  5264.       IF (KKK.EQ.0) GO TO 30
  5265.       IF (IOPE.EQ.3 .AND. ISV.EQ.0) GO TO 20
  5266.       VEL(K)=0.
  5267.    20 IF (IOPE.EQ.3 .AND. ISA.EQ.0) GO TO 30
  5268.       ACC(K)=0.
  5269.    30 DO 110 J=1,ND
  5270.       II=IDI(J,I)
  5271.       FAC=BETA(J,I)
  5272.       DISP(K)=DISP(K) + FAC*DISP(II)
  5273.       IF (KKK) 110,110,100
  5274.   100 IF (IOPE.EQ.3 .AND. ISV.EQ.0) GO TO 105
  5275.       VEL(K)=VEL(K) + FAC*VEL(II)
  5276.   105 IF (IOPE.EQ.3 .AND. ISA.EQ.0) GO TO 110
  5277.       ACC(K)=ACC(K) + FAC*ACC(II)
  5278.   110 CONTINUE
  5279. C
  5280.   120 CONTINUE
  5281. C
  5282.       RETURN
  5283.       END
  5284. C *CDC* *DECK,NORMAL
  5285. C *UNI* FOR,IS N.NORMAL R.NORMAL
  5286.       SUBROUTINE NORMAL (MIDSS,FMIDSS,FMV1,DISPI,ID,NDOF,KNOR)
  5287. C
  5288. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5289. C .                                                                   .
  5290. C .   P R O G R A M                                                   .
  5291. C .       TO UPDATE THE NODAL POINT NORMAL VECTOR TO MID-SURFACE      .
  5292. C .                                                                   .
  5293. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5294. C
  5295.       IMPLICIT REAL*8 (A-H,O-Z)
  5296. C
  5297.       COMMON /SOL/NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  5298.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  5299.      1           ,NDOFDM,KLIN,IEIG,IMASSN,IDAMPN
  5300.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  5301.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  5302.       COMMON /MIDSYS/NMIDSS,MIDIND,MAXMSS
  5303.       COMMON /MDFRDM/ IDOF(6)
  5304.       COMMON /PORT/ INPORT,JNPORT,NPUTSV,LUNODE,LU1,LU2,LU3,JDC,JVC,JAC
  5305.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,IREF,
  5306.      1             IEQUIT,IPRI,KPLOTN,KPLOTE
  5307. C
  5308.       DIMENSION MIDSS(1),FMIDSS(3,1),FMV1(3,1),DISPI(1),ID(NDOF,1)
  5309.       DATA RECLB1/8HNEWNORMS/
  5310.       XTOL=1.0D-8
  5311. C
  5312.       REWIND 8
  5313.       READ (8) ((ID(I,J),I=1,NDOF),J=1,NUMNP)
  5314.       IF (KNOR-1)1,1,6
  5315. C
  5316. C
  5317. C     INITIAL FMV1 IS GOING TO BE CALCULATED
  5318. C
  5319. C     AND STORED ON TAPE 9
  5320. C
  5321. C
  5322.     1 CONTINUE
  5323.       REWIND 9
  5324.       READ(9)((FMIDSS(I,J),I=1,3),J=1,MAXMSS)
  5325.       DO 2 J=1,MAXMSS
  5326.       VN1=FMIDSS(1,J)
  5327.       VN2=FMIDSS(2,J)
  5328.       VN3=FMIDSS(3,J)
  5329.       TEMP=DABS(VN2)-1.
  5330.       TEMP=DABS(TEMP)
  5331.       IF(TEMP-XTOL)3,3,4
  5332. C
  5333. C     S P E C I A L  C A S E
  5334. C     VNI PARALLEL TO Y-AXIS
  5335. C
  5336.     3 FMV1(1,J)=0.
  5337.       FMV1(2,J)=0.
  5338.       FMV1(3,J)=1.
  5339.       GO TO 2
  5340. C
  5341. C     S T A N D A R D  C A S E
  5342. C     VNI NOT PARALLEL TO Y-AXIS
  5343. C
  5344.     4 DUM=DSQRT(VN1*VN1+VN3*VN3)
  5345.       DUMI=1./DUM
  5346.       FMV1(1,J)=VN3*DUMI
  5347.       FMV1(2,J)=0.
  5348.       FMV1(3,J)= -VN1*DUMI
  5349.     2 CONTINUE
  5350.       GO TO 100
  5351. C
  5352. C
  5353. C     UPDATE THE NORMAL AT NODES WHICH ARE CONNECTED TO
  5354. C
  5355. C     GEOMETRICALLY NONLINEAR ELEMENTS
  5356. C
  5357. C
  5358.     6 CONTINUE
  5359.       JA=4
  5360.       JB=5
  5361. C
  5362.       DO 5 I=1,3
  5363.       IF (IDOF(I).EQ.0) GO TO 5
  5364.       JA=JA - 1
  5365.       JB=JB - 1
  5366.     5 CONTINUE
  5367.       IF (IDOF(4).GT.0) JA=0
  5368.       IF (JA.EQ.0) JB=JB - 1
  5369.       IF (IDOF(5).GT.0) JB=0
  5370.       JC=JA + JB
  5371.       IF (JC.EQ.0) GO TO 100
  5372. C
  5373.       REWIND 9
  5374.       READ(9)  ((FMIDSS(I,J),FMV1(I,J),I=1,3),J=1,MAXMSS)
  5375.       DO 50 I=1,MAXMSS
  5376.       II=MIDSS(I)
  5377.       DANG1=0.
  5378.       DANG2=0.
  5379.       IF(JA) 14,14,13
  5380.    13 J1=ID(JA,II)
  5381.       IF (J1.LT.0) J1=NEQ - J1
  5382.       IF (J1.GT.0) DANG1=DISPI(J1)
  5383.    14 IF (JB) 12,12,11
  5384.    11 J2=ID(JB,II)
  5385.       IF (J2.LT.0) J2=NEQ - J2
  5386.       IF (J2.GT.0) DANG2=DISPI(J2)
  5387. C
  5388.    12 CONTINUE
  5389.       REFANG=0.01
  5390.       INTER=DABS(DANG1)/REFANG
  5391.       INT2 =DABS(DANG2)/REFANG
  5392.       IF(INT2.GT.INTER) INTER=INT2
  5393.       IF(INTER.GT.20) INTER=20
  5394.       IF(INTER.LT.1) INTER=1
  5395.       XINTER=INTER
  5396.       DANG1=DANG1/XINTER
  5397.       DANG2=DANG2/XINTER
  5398.       DO 50 IIN=1,INTER
  5399.       VN1=FMIDSS(1,I)
  5400.       VN2=FMIDSS(2,I)
  5401.       VN3=FMIDSS(3,I)
  5402. C
  5403.       V11=FMV1(1,I)
  5404.       V12=FMV1(2,I)
  5405.       V13=FMV1(3,I)
  5406. C
  5407.       V21=VN2*V13-VN3*V12
  5408.       V22=VN3*V11-VN1*V13
  5409.       V23=VN1*V12-VN2*V11
  5410.       DUM=DSQRT(V21*V21+V22*V22+V23*V23)
  5411.       DUMI=1./DUM
  5412.       V21=V21*DUMI
  5413.       V22=V22*DUMI
  5414.       V23=V23*DUMI
  5415. C
  5416. C     UPDATE THE TEMPORARY NORMAL VECTOR
  5417. C
  5418.       VN1R=VN1-DANG1*V21+DANG2*V11
  5419.       VN2R=VN2-DANG1*V22+DANG2*V12
  5420.       VN3R=VN3-DANG1*V23+DANG2*V13
  5421.       DUM=DSQRT(VN1R*VN1R+VN2R*VN2R+VN3R*VN3R)
  5422.       DUMI=1./DUM
  5423.       FMIDSS(1,I)=VN1R*DUMI
  5424.       FMIDSS(2,I)=VN2R*DUMI
  5425.       FMIDSS(3,I)=VN3R*DUMI
  5426. C
  5427. C     UPDATE THE TEMPORARY V1 VECTOR
  5428. C
  5429.       V11R=V11-DANG2*VN1
  5430.       V12R=V12-DANG2*VN2
  5431.       V13R=V13-DANG2*VN3
  5432.       DUM=DSQRT(V11R*V11R+V12R*V12R+V13R*V13R)
  5433.       DUMI=1./DUM
  5434.       FMV1(1,I)=V11R*DUMI
  5435.       FMV1(2,I)=V12R*DUMI
  5436.       FMV1(3,I)=V13R*DUMI
  5437.    50 CONTINUE
  5438. C
  5439. C     VN AND V1 CORRESPONDING TO EQUILIBRIUM POSITIONS
  5440. C     ARE STORED ON TAPE 9
  5441. C
  5442.   100 IF (ICOUNT.EQ.3) RETURN
  5443.       REWIND 9
  5444.       WRITE(9) ((FMIDSS(I,J),FMV1(I,J),I=1,3),J=1,MAXMSS)
  5445. C
  5446. C***  DATA PORTHOLE (START)
  5447. C
  5448.       RECLAB = RECLB1
  5449.       IF (JNPORT.EQ.0 .OR. KPLOTN.NE.0) RETURN
  5450.       IF (JDC.NE.0)  WRITE (LUNODE) RECLAB,MAXMSS,
  5451.      1                ((FMIDSS(I,J),I=1,3),J=1,MAXMSS)
  5452. C
  5453. C***  DATA PORTHOLE (END)
  5454. C
  5455.       RETURN
  5456.       END
  5457. C *CDC* *DECK WRITE
  5458. C *UNI* )FOR,IS  N.WRITE,  R.WRITE
  5459.       SUBROUTINE WRITE (DISPE,DISP,VEL,ACC,ID,IDOF,ISUB,NEQ,NDOF,KKK)
  5460. C
  5461. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5462. C .                                                                   .
  5463. C .   P R O G R A M                                                   .
  5464. C .      . TO READ INITIAL CONDITIONS INTO CORE AND                   .
  5465. C .        PRINT THEM (IF IPRIC.EQ.1)                                 .
  5466. C .                                                                   .
  5467. C .      . TO PRINT DISPLACEMENTS AND (IF ISTAT.NE.0)                 .
  5468. C .        VELOCITIES AND ACCELERATIONS                               .
  5469. C .                                                                   .
  5470. C .        KKK.EQ.0 READ INITIAL CONDITIONS FROM TAPE8                .
  5471. C .        KKK.EQ.1 PRINT INITIAL CONDITIONS FOR ALL DOF
  5472. C .        KKK.EQ.2, DURING TIME INTEGRATION PRINT DISP/VEL/ACC       .
  5473. C .                  AT NODES CONTAINED IN PRINT-OUT BLOCKS           .
  5474. C .                                                                   .
  5475. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5476. C
  5477.       IMPLICIT REAL*8 (A-H,O-Z)
  5478.       COMMON /SOL/ NUMNP,NUMEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  5479.       COMMON /ISUBST/ ISUS,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  5480.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  5481.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  5482.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  5483.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  5484.       COMMON /PORT/ INPORT,JNPORT,NPUTSV,LUNODE,LU1,LU2,LU3,JDC,JVC,JAC
  5485.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  5486.      1            ,NDOFDM,KLIN,IEIG,IMASSN,IDAMPN
  5487.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  5488.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  5489.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  5490.       COMMON /PRGCON/ IC,NTU
  5491.       COMMON /ELSTP/ TIME,IDTHF
  5492.       DIMENSION DISPE(NEQ),DISP(NEQ),VEL(NEQ),ACC(NEQ),ID(NDOF,1),D(6)
  5493.      1         ,IDOF(6)
  5494.       DATA RECLB1/8HNEW STEP/,RECLB2/8HDISP-XYZ/,RECLB3/8HVELOCITY/
  5495.       DATA RECLB4/8HACCLERTN/
  5496. C
  5497.       IF (KKK.EQ.1) GO TO 45
  5498.       IF (ISUB.GT.0 .AND. KKK.NE.0) GO TO 50
  5499.       IF (ISUB.GT.0) GO TO 10
  5500. C
  5501. C     READ ID ARRAY INTO CORE
  5502. C
  5503.       REWIND 8
  5504.       READ(8) ((ID(I,J),I=1,NDOF),J=1,NUMNP)
  5505.       IF (KKK.EQ.2) GO TO 50
  5506. C
  5507. C     READ INITIAL CONDITIONS INTO CORE
  5508. C
  5509.    10 IF (MODEX.EQ.2) RETURN
  5510.       READ (8) DISP
  5511.       IF (ISTAT.EQ.0) GO TO 40
  5512.       IF (IOPE.EQ.3) GO TO 20
  5513.       READ (8) VEL
  5514.       READ (8) ACC
  5515.       GO TO 40
  5516. C
  5517.    20 READ (8) DISPE
  5518.       ISV=(IVC + JVC + 1)/2
  5519.       ISA=(IAC + JAC + 1)/2
  5520.       IF (ISV.EQ.0) READ (8)
  5521.       IF (ISV.NE.0) READ (8) VEL
  5522.       IF (ISA.NE.0) READ (8) ACC
  5523. C
  5524.    40 RETURN
  5525. C
  5526. C     PRINT INITIAL CONDITIONS AT ALL NODES
  5527. C
  5528.    45 NODE1=1
  5529.       NODE2=NUMNP
  5530.       NODINC=1
  5531.       IF (IPRIC.EQ.0) GO TO 50
  5532.       WRITE (6,2100)
  5533.       IF (NSUBST.EQ.0) GO TO 50
  5534.       IF (ISUB.EQ.1) GO TO 48
  5535.       WRITE (6,2210)
  5536.       GO TO 50
  5537.    48 WRITE (6,2220) NSUB,NTU
  5538.       NODE2=NUMNPS
  5539. C
  5540. C     PRINT DISPLACEMENTS
  5541. C
  5542.    50 NEQT = NEQ
  5543. C
  5544. C***  DATA PORTHOLE (START)
  5545. C
  5546.       IF (JNPORT.EQ.0 .OR. KPLOTN.NE.0) GO TO 55
  5547.       RECLAB = RECLB1
  5548.       WRITE (LUNODE) RECLAB,KSTEP,TIME,NUMNP,ISTAT,(IDOF(I),I=1,6),NSUB
  5549.       RECLAB = RECLB2
  5550.       IF (JDC.NE.0) WRITE (LUNODE) RECLAB,NEQT,(DISP(I),I=1,NEQT)
  5551.       IF (ISTAT.EQ.0) GO TO 55
  5552.       RECLAB = RECLB3
  5553.       IF (JVC.NE.0) WRITE (LUNODE) RECLAB,NEQT,(VEL(I),I=1,NEQT)
  5554.       RECLAB = RECLB4
  5555.       IF (JAC.NE.0) WRITE (LUNODE) RECLAB,NEQT,(ACC(I),I=1,NEQT)
  5556. C
  5557. C***  DATA PORTHOLE (END)
  5558. C
  5559.    55 IF (IPRIC.EQ.0 .AND. KSTEP.EQ.0) RETURN
  5560.       IF (IPRI.NE.0 .AND. KSTEP.GT.0) RETURN
  5561.       IF (KKK.EQ.1) GO TO 60
  5562.       IF (IDC.EQ.0) GO TO 180
  5563.    60 WRITE (6,2000)
  5564.       IC=IC + 5
  5565.       DO 150 IB=1,NPB
  5566.       IF (KKK.EQ.1) GO TO 104
  5567.       NODE1=IPNODE(1,IB)
  5568.       NODE2=IPNODE(2,IB)
  5569.       NODINC=IPNODE(3,IB)
  5570. C
  5571.   104 DO 100 II=NODE1,NODE2,NODINC
  5572.       IC=IC + 1
  5573.       IF (IC.LT.56) GO TO 105
  5574.       WRITE(6,2045)
  5575.       IC=4
  5576.   105 DO 110 I=1,6
  5577.   110 D(I)=0.
  5578.       IL=0
  5579.       DO 120 I=1,NDOF
  5580.       KK=ID(I,II)
  5581.       IF(KK.LT.0) KK=NUMEQ - KK
  5582.   115 IL=IL + 1
  5583.       IF (IL.LE.6) GO TO 117
  5584.       WRITE (6,3000)
  5585.       STOP
  5586.   117 IF (IDOF(IL).EQ.1) GO TO 115
  5587.       IF (KK.NE.0) D(IL)=DISP(KK)
  5588.   120 CONTINUE
  5589.   100 WRITE(6,2010) II,D
  5590. C
  5591.       IF (KKK.EQ.1) GO TO 180
  5592.       IF (IC.GE.55) GO TO 150
  5593.       IC=IC+1
  5594.       WRITE(6,2050)
  5595.   150 CONTINUE
  5596.   180 IF (ISTAT.EQ.0) GO TO 380
  5597. C
  5598. C     PRINT VELOCITIES
  5599. C
  5600.       IF (KKK.EQ.1 .AND. IOPE.NE.3) GO TO 201
  5601.       IF (IVC.EQ.0) GO TO 280
  5602.   201 IC=IC + 5 + IDC
  5603.       IF (IDC.NE.0) WRITE(6,2050)
  5604.       IF (IC.GE.54) GO TO 205
  5605.       WRITE(6,2020)
  5606.       GO TO 206
  5607.   205 WRITE(6,2022)
  5608.       IC=4
  5609.   206 DO 250 IB=1,NPB
  5610.       IF (KKK.EQ.1) GO TO 204
  5611.       NODE1=IPNODE(1,IB)
  5612.       NODE2=IPNODE(2,IB)
  5613.       NODINC=IPNODE(3,IB)
  5614. C
  5615.   204 DO 200 II=NODE1,NODE2,NODINC
  5616.       IC=IC + 1
  5617.       IF (IC.LT.56) GO TO 207
  5618.       WRITE(6,2022)
  5619.       IC=4
  5620.   207 DO 210 I=1,6
  5621.   210 D(I)=0.
  5622.       IL=0
  5623.       DO 220 I=1,NDOF
  5624.       KK=ID(I,II)
  5625.       IF(KK.LT.0) KK=NUMEQ - KK
  5626.   215 IL=IL + 1
  5627.       IF (IL.LE.6) GO TO 217
  5628.       WRITE (6,3000)
  5629.       STOP
  5630.   217 IF (IDOF(IL).EQ.1) GO TO 215
  5631.   220 IF (KK.NE.0) D(IL)=VEL(KK)
  5632.   200 WRITE(6,2010) II,D
  5633. C
  5634.       IF (KKK.EQ.1) GO TO 280
  5635.       IF (IC.GE.55) GO TO 250
  5636.       IC=IC+1
  5637.       WRITE(6,2050)
  5638.   250 CONTINUE
  5639. C
  5640. C     PRINT ACCELERATIONS
  5641. C
  5642.   280 IF (KKK.EQ.1 .AND. IOPE.NE.3) GO TO 290
  5643.       IF (IAC.EQ.0) GO TO 380
  5644.       IF (IDC.EQ.0 .AND. IVC.EQ.0) GO TO 305
  5645.   290 IC=IC + 6
  5646.       IF (IC.GE.54) GO TO 303
  5647.       WRITE(6,2050)
  5648.       WRITE(6,2030)
  5649.       GO TO 308
  5650.   303 WRITE(6,2032)
  5651.       IC=4
  5652.       GO TO 308
  5653.   305 IC=IC + 5
  5654.       WRITE(6,2030)
  5655.   308 DO 350 IB=1,NPB
  5656.       IF (KKK.EQ.1) GO TO 304
  5657.       NODE1=IPNODE(1,IB)
  5658.       NODE2=IPNODE(2,IB)
  5659.       NODINC=IPNODE(3,IB)
  5660. C
  5661.   304 DO 300 II=NODE1,NODE2,NODINC
  5662.       IC=IC + 1
  5663.       IF (IC.LT.56) GO TO 307
  5664.       WRITE(6,2032)
  5665.       IC=4
  5666.   307 DO 310 I=1,6
  5667.   310 D(I)=0.
  5668.       IL=0
  5669.       DO 320 I=1,NDOF
  5670.       KK=ID(I,II)
  5671.       IF(KK.LT.0) KK=NUMEQ - KK
  5672.   315 IL=IL + 1
  5673.       IF (IL.LE.6) GO TO 317
  5674.       WRITE (6,3000)
  5675.       STOP
  5676.   317 IF (IDOF(IL).EQ.1) GO TO 315
  5677.   320 IF (KK.NE.0) D(IL)=ACC(KK)
  5678.   300 WRITE(6,2010) II,D
  5679. C
  5680.       IF (KKK.EQ.1) RETURN
  5681.       IF (IC.GE.55) GO TO 350
  5682.       IC=IC+1
  5683.       WRITE(6,2050)
  5684.   350 CONTINUE
  5685. C
  5686.   380 RETURN
  5687. C
  5688.  2000 FORMAT (/27H  D I S P L A C E M E N T S  // 7H  NODE 12X
  5689.      114HX-DISPLACEMENT 4X 14HY-DISPLACEMENT 4X 14HZ-DISPLACEMENT
  5690.      24X,14HX(V1)-ROTATION,4X,14HY(V2)-ROTATION,4X,14HZ(VN)-ROTATION  /)
  5691.  2010 FORMAT (2X,I5,8X,6E18.6)
  5692.  2020 FORMAT(/22H  V E L O C I T I E S  // 7H  NODE 16X 10HX-VELOCITY
  5693.      18X 10HY-VELOCITY 8X 10HZ-VELOCITY
  5694.      24X,14HX(V1)-ROTATION,4X,14HY(V2)-ROTATION,4X,14HZ(VN)-ROTATION  /)
  5695.  2022 FORMAT (1H1,21H V E L O C I T I E S   //7H  NODE 16X 10HX-VELOCITY
  5696.      18X 10HY-VELOCITY 8X 10HZ-VELOCITY
  5697.      24X,14HX(V1)-ROTATION,4X,14HY(V2)-ROTATION,4X,14HZ(VN)-ROTATION  /)
  5698.  2030 FORMAT (/27H  A C C E L E R A T I O N S  // 7H  NODE 12X
  5699.      114HX-ACCELERATION 4X 14HY-ACCELERATION 4X 14HZ-ACCELERATION
  5700.      24X,14HX(V1)-ROTATION,4X,14HY(V2)-ROTATION,4X,14HZ(VN)-ROTATION  /)
  5701.  2032 FORMAT (1H1,26H A C C E L E R A T I O N S  // 7H  NODE 12X
  5702.      114HX-ACCELERATION 4X 14HY-ACCELERATION 4X 14HZ-ACCELERATION
  5703.      24X,14HX(V1)-ROTATION,4X,14HY(V2)-ROTATION,4X,14HZ(VN)-ROTATION  /)
  5704.  2045 FORMAT (1H1, 26H D I S P L A C E M E N T S  // 7H  NODE 12X
  5705.      114HX-DISPLACEMENT 4X 14HY-DISPLACEMENT 4X 14HZ-DISPLACEMENT
  5706.      24X,14HX(V1)-ROTATION,4X,14HY(V2)-ROTATION,4X,14HZ(VN)-ROTATION  /)
  5707.  2050 FORMAT (1H )
  5708.  2100 FORMAT (1H1,38H I N I T I A L   C O N D I T I O N S     ///)
  5709.  2210 FORMAT (5X,17H MASTER STRUCTURE,/ )
  5710.  2220 FORMAT (5X,14H SUBSTRUCTURES ,//,
  5711.      1 22H SUBSTRUCTURE NUMBER =,I5,20X,28H IDENTIFICATION SET NUMBER =,
  5712.      2 I5//)
  5713.  3000 FORMAT (///48H **STOP, ERROR IN DEGREE OF FREEDOM CALCULATIONS,/,
  5714.      1           28H CHECK MASTER CONTROL CARD 1  ,/1X)
  5715. C
  5716.       END
  5717. C *CDC* *DECK WRITEM
  5718. C *UNI* )FOR,IS N.WRITEM,R.WRITEM
  5719.       SUBROUTINE WRITEM (TIME,TEMP,NUMNP,KKK)
  5720. C
  5721.       IMPLICIT REAL*8 (A-H,O-Z)
  5722. C
  5723.       DIMENSION TEMP(1)
  5724.       COMMON /PORT/ INPORT,JNPORT,NPUTSV,LUNODE,LU1,LU2,LU3,JDC,JVC,JAC
  5725.       COMMON /PORTT/ JTC
  5726.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  5727.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  5728.       COMMON /TICON/ IPRIT
  5729.       DATA RECLB1/8HTEMPERAT/
  5730. C
  5731.       DATA ICOL /4/, NLINE /50/
  5732. C
  5733.       IF (KKK.GT. 1) GO TO 200
  5734. C
  5735. C***  DATA PORTHOLE (START)
  5736. C
  5737.       IF (JNPORT.EQ.0 .OR. KPLOTN.NE.0 .OR. JTC.EQ.0) GO TO 10
  5738.       RECLAB = RECLB1
  5739.       WRITE (LUNODE) RECLAB,(TEMP(I),I=1,NUMNP)
  5740. C
  5741. C***  DATA PORTHOLE (END)
  5742. C
  5743.    10 IF (IPRIT.EQ.0 .AND. KSTEP.EQ.0) RETURN
  5744.       IF (KSTEP.GT.0) RETURN
  5745. C
  5746. C     PRINT INITIAL TEMPERATURES
  5747. C
  5748.       WRITE (6,2000) TIME
  5749. C
  5750.       K1 = 0
  5751.       ILINE = 0
  5752.       IPAGES = NUMNP/(ICOL*NLINE)
  5753.       IF (IPAGES.EQ.0) GO TO 40
  5754. C
  5755.       DO 25 IP=1,IPAGES
  5756.       IF (IP.EQ.1) GO TO 15
  5757.       WRITE (6,2010)
  5758. C
  5759.    15 DO 20   J=1, NLINE
  5760.       K1=K1+1
  5761.       K2=K1+NLINE
  5762.       K3=K2+NLINE
  5763.       K4=K3+NLINE
  5764.       WRITE (6,2100) K1,TEMP(K1),K2,TEMP(K2),K3,TEMP(K3),K4,TEMP(K4)
  5765.    20 CONTINUE
  5766.       K1=K4
  5767.    25 CONTINUE
  5768. C
  5769.       IF (K1.EQ.NUMNP) GO TO 100
  5770. C
  5771.    40 ILINE = (NUMNP-K1)/ICOL
  5772.       IF (ILINE.EQ.0) GO TO 70
  5773. C
  5774.       DO 60 IL=1,ILINE
  5775.       K1=K1+1
  5776.       K2=K1+ILINE
  5777.       K3=K2+ILINE
  5778.       K4=K3+ILINE
  5779.       WRITE (6,2100) K1,TEMP(K1),K2,TEMP(K2),K3,TEMP(K3),K4,TEMP(K4)
  5780.    60 CONTINUE
  5781.       K1=K4
  5782.       IF (K1.EQ.NUMNP) GO TO 100
  5783. C
  5784.    70 K1=K1+1
  5785.       IF (NUMNP.LE.3) GO TO 80
  5786.       WRITE (6,2110) (K,TEMP(K),K=K1,NUMNP)
  5787.       GO TO 100
  5788.    80 WRITE (6,2120) (K,TEMP(K),K=K1,NUMNP)
  5789. C
  5790. C
  5791.   100 RETURN
  5792.   200 RETURN
  5793. C
  5794.  2000 FORMAT (1H1,63HI N I T I A L   N O D A L   P O I N T   T E M P E R
  5795.      1 A T U R E S, 24X,10H(AT TIME =,E12.6,1H)//
  5796.      2        4(5H NODE,5X,11HTEMPERATURE,9X)/)
  5797.  2010 FORMAT (1H1/5H NODE,5X,11HTEMPERATURE,
  5798.      1        3(9X,5H NODE,5X,11HTEMPERATURE)/)
  5799.  2100 FORMAT (I4,E17.6,3(9X,I4,E17.6))
  5800.  2110 FORMAT (90X,I4,E17.6)
  5801.  2120 FORMAT (I4,E17.6)
  5802. C
  5803.       END
  5804. C *CDC* *DECK STRESS
  5805. C *UNI* )FOR,IS  N.STRESS, R.STRESS
  5806.       SUBROUTINE STRESS (EE,ISUB,NEGL,NEGNL)
  5807. C
  5808. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5809. C .                                                                   .
  5810. C .   P R O G R A M                                                   .
  5811. C .      . TO CALL THE ELEMENT SUBROUTINE FOR THE CALCULATION OF      .
  5812. C .        STRESSES                                                   .
  5813. C .                                                                   .
  5814. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5815. C
  5816.       IMPLICIT REAL*8 (A-H,O-Z)
  5817.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  5818.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NGEL,NGENL,IMASS,IDAMP,ISTAT
  5819.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  5820.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  5821.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  5822.       COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
  5823.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  5824.       COMMON /DISCON/ NDISCE,NIDM
  5825.       COMMON /DPR/ ITWO
  5826.       COMMON /RANDI/ N0A,N1D,IELCPL
  5827.       COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
  5828.      1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
  5829.       COMMON A(1)
  5830.       DIMENSION EE(1)
  5831.       REAL EE,A
  5832.       INTEGER IA(1)
  5833.       EQUIVALENCE (A(1),IA(1))
  5834. C
  5835.       NG=0
  5836. C
  5837. C
  5838. C     L I N E A R   E L E M E N T   G R O U P S
  5839. C
  5840. C
  5841.       IF (NEGL.EQ.0) GO TO 200
  5842. C
  5843.       IF (ISUB.EQ.0) REWIND 1
  5844. C
  5845.       DO 100 N=1,NEGL
  5846.       NG=NG + 1
  5847.       READ (1) NUMEST,(EE(I),I=1,NUMEST)
  5848.       CALL ELEMNT
  5849.   100 CONTINUE
  5850. C
  5851. C
  5852. C     N O N L I N E A R   E L E M E N T   G R O U P S
  5853. C
  5854. C
  5855.   200 IF (NEGNL.EQ.0) RETURN
  5856. C
  5857.       DO 300 N=1,NEGNL
  5858.       NG=NG + 1
  5859.       NUMEST=IA(N0 + N - 1)
  5860. C
  5861. C        * * * * *        R A N D O M  A C C E S S        * * *
  5862. C
  5863.       NREC2=N
  5864.       CALL READMS (2,EE,NUMEST,NREC2)
  5865. C
  5866. C        * * * * *        R A N D O M  A C C E S S        * * *
  5867. C
  5868.       CALL ELEMNT
  5869.   300 CONTINUE
  5870. C
  5871.       RETURN
  5872.       END
  5873. C *CDC* *DECK COLHT
  5874. C *UNI* )FOR,IS  N.COLHT,  R.COLHT
  5875.       SUBROUTINE COLHT (MHT,ND,LM)
  5876. C
  5877.       COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  5878.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  5879.       COMMON /DISCON/ NDISCE,NIDM
  5880.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  5881.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  5882.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  5883.       DIMENSION LM(1),MHT(1)
  5884.       COMMON A(1)
  5885.       REAL A
  5886.       INTEGER IA(1)
  5887.       EQUIVALENCE (A(1),IA(1))
  5888. C
  5889.       LS=NEQ + 1
  5890.       IF (ISUB.NE.0) LS=NEQS + 1
  5891.       DO 100 I=1,ND
  5892.       IF (LM(I)) 50,100,80
  5893. C
  5894.    50 NCE=-LM(I)
  5895.       NID=IA(N01 + NCE - 1)
  5896.       II=N02 + (NCE - 1)*NIDM - 1
  5897.       DO 70 J=1,NID
  5898.       JJ=IA(II + J)
  5899.       IF (JJ - LS) 60,70,70
  5900.    60 LS=JJ
  5901.    70 CONTINUE
  5902.       GO TO 100
  5903. C
  5904.    80 IF (LM(I) - LS) 90,100,100
  5905.    90 LS=LM(I)
  5906. C
  5907.   100 CONTINUE
  5908. C
  5909.       DO 200 I=1,ND
  5910.       II=LM(I)
  5911.       IF (II) 150,200,190
  5912. C
  5913.   150 NCE=-II
  5914.       NID=IA(N01 + NCE - 1)
  5915.       JJ=N02 + (NCE - 1)*NIDM - 1
  5916.       DO 160 J=1,NID
  5917.       II=IA(JJ + J)
  5918.       ME=II - LS
  5919.       IF (ME.GT.MHT(II)) MHT(II)=ME
  5920.   160 CONTINUE
  5921. C
  5922.   190 ME=II - LS
  5923.       IF (ME.GT.MHT(II)) MHT(II)=ME
  5924.  200  CONTINUE
  5925. C
  5926.       RETURN
  5927.       END
  5928. C *CDC* *DECK MODMHT
  5929. C *UNI* )FOR,IS N.MODMHT, R.MODMHT
  5930.       SUBROUTINE MODMHT (M,ID,MHT,IDS,ICONA,LMS,NDOF,NDOFSS,NUMNP)
  5931. C
  5932. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5933. C .                                                                   .
  5934. C .      . PROGRAM                                                    .
  5935. C .          TO READ SUBSTRUCTURE CONNECTIVITY ARRAYS AND             .
  5936. C .          TO MODIFY COLUMN HEIGHTS OF MASTER DOF DUE TO THE        .
  5937. C .          ADDITION OF SUBSTRUCTURES                                .
  5938. C .                                                                   .
  5939. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  5940. C
  5941.       IMPLICIT REAL*8 (A-H,O-Z)
  5942. C
  5943.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  5944.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  5945.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  5946.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  5947.       COMMON /LOACHK/ LSC
  5948.       COMMON /MPRNT/ IOUTPT,ISTPRT
  5949.       COMMON /SOL/ NUMPN,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  5950.       COMMON /PORT/ INPORT,JNPORT,NPUTSV,LUNODE,LU1,LU2,LU3,JDC,JVC,JAC
  5951. C
  5952.       DIMENSION ID(NDOF,1),MHT(1),ICONA(1),LMS(1),DIRNUM(9),VEC(2)
  5953.       DIMENSION IDS(NDOFSS,1),ISPRIB(3,10),ISPNOD(3,15),BLKNAM(1)
  5954.       DATA BLKNAM /8HPRINTOUT/
  5955.       DATA VEC(1)/3H X /, VEC(2)/3H Y /
  5956.       DATA RECLB1/8HICONARAY/
  5957. C
  5958. C     READ SUBSTRUCTURE IDENTIFICATION DATA SET NO M
  5959. C
  5960.       READ (5,1000) N,LREUSE,NLOADS,NPR2S,NPR3S,NPBMS,NP3DBS,NPPLS,
  5961.      1              NPSHS,IPRTPS
  5962.       NXYZ=0
  5963.       IF (N.EQ.M) GO TO 20
  5964.       WRITE (6,3000) NSUB,M,N
  5965.       STOP
  5966. C
  5967.    20 NODE3S=12
  5968.       IF (IDATWR.GT.1) GO TO 30
  5969.       IF (M.EQ.1) WRITE (6,2000)
  5970.       IF (M.NE.1) WRITE (6,2010)
  5971.       WRITE(6,2020)N,LREUSE,NLOADS,NPR2S,NPR3S,NPBMS,NP3DBS,NPPLS,
  5972.      1             NPSHS
  5973. C
  5974. C     READ AND CHECK DIRECTION RATIOS OF THE LOCAL COORDINATE SYSTEM
  5975. C
  5976.    30 DO 32 I=1,9
  5977.    32 DIRNUM(I)=0.
  5978.       IF (NXYZ.EQ.0) GO TO 40
  5979.       READ (5,1010) (DIRNUM(I),I=1,6)
  5980.       IF (IDATWR.LE.1) WRITE (6,2030) (DIRNUM(I),I=1,6)
  5981.       TOL=2.D-02
  5982.       TEMP=DSQRT(DIRNUM(1)*DIRNUM(1) + DIRNUM(2)*DIRNUM(2) +
  5983.      1                   DIRNUM(3)*DIRNUM(3))
  5984.       IF (TEMP.GT.TOL) GO TO 34
  5985.       WRITE (6,3010) VEC(1)
  5986.       STOP
  5987.    34 DO 35 I=1,3
  5988.    35 DIRNUM(I)=DIRNUM(I)/TEMP
  5989. C
  5990.       TEMP=DSQRT(DIRNUM(4)*DIRNUM(4) + DIRNUM(5)*DIRNUM(5) +
  5991.      1                   DIRNUM(6)*DIRNUM(6))
  5992.       IF (TEMP.GT.TOL) GO TO 36
  5993.       WRITE (6,3010) VEC(2)
  5994.       STOP
  5995.    36 DO 37 I=1,3
  5996.    37 DIRNUM(I)=DIRNUM(I)/TEMP
  5997. C
  5998.       XDY=0.
  5999.       DO 38 I=1,3
  6000.    38 XDY=XDY + DIRNUM(I)*DIRNUM(I + 3)
  6001.       IF (XDY.LT.1.D-06) GO TO 39
  6002.       WRITE (6,3015) VEC(1),VEC(2)
  6003.       STOP
  6004.    39 CALL CROSS (DIRNUM(1),DIRNUM(4),DIRNUM(7))
  6005. C
  6006. C     REPLACE MASTER LOAD DATA BY SUBSTRUCTURE LOAD DATA
  6007. C
  6008.    40 LSC=1
  6009.       CALL LOADSV (ILOA,NLOADS,NPR2S,NPR3S,NPBMS,NP3DBS,NPPLS,NPSHS,
  6010.      1             NODE3S,2)
  6011.       CALL STORE (NUMNPS,NDOFS,NEQS,NWKS,MAS,NEGNLS,MAXES,NBLOCS,
  6012.      1            ISTOHS,1)
  6013. C
  6014. C     ESTABLISH LMS ARRAY
  6015. C
  6016.       READ (5,1000) (ICONA(I),I=1,NODRET)
  6017.       IF (IDATWR.LE.1) WRITE (6,2040) (I,ICONA(I),I=1,NODRET)
  6018. C
  6019. C
  6020. C***  DATA PORTHOLE (START)
  6021. C
  6022.       RECLAB = RECLB1
  6023.       IF (JNPORT.NE.0 .AND. NPUTSV.NE.0)
  6024.      1  WRITE (LUNODE) RECLAB,(ICONA(I),I=1,NODRET)
  6025. C
  6026. C***  DATA PORTHOLE (END)
  6027. C
  6028.       JJ=0
  6029.       DO 50 I=1,NODRET
  6030.       NN=ICONA(I)
  6031.       IF (NN.GT.0 .AND. NN.LE.NUMNP) GO TO 45
  6032.       WRITE (6,3020) NSUB,I,ICONA(I)
  6033.       STOP
  6034.    45 DO 50 J=1,NDOFS
  6035.       KK=IDS(J,NODCON+I)
  6036.       IF (KK.EQ.0) GO TO 50
  6037.       II=ID(J,NN)
  6038.       JJ=JJ + 1
  6039.       LMS(JJ)=II
  6040.    50 CONTINUE
  6041.       ND=JJ
  6042. C
  6043. C     UPDATE MASTER STRUCTURE COLUMN HEIGHTS
  6044. C
  6045.       ISSUB=ISUB
  6046.       ISUB=0
  6047.       CALL COLHT (MHT,ND,LMS)
  6048.       ISUB=ISSUB
  6049. C
  6050. C     READ SUBSTRUCTURE RESPONSE PRINT-OUT CONTROL PARAMETERS
  6051. C
  6052.       READ (5,1000)  NSPRIB,NSPB
  6053.       IF (IDATWR.LE.1) WRITE (6,2100) NSPRIB,NSPB
  6054. C
  6055.       ISC=1
  6056.       IF (NSPRIB .EQ.0) GO TO 470
  6057.       READ (5,1100)((ISPRIB(I,J),I=1,3),J=1,NSPRIB)
  6058.       IF (NSTE.GT.0 .AND. ISPRIB(1,1).EQ.0) ISPRIB(1,1)=1
  6059.       IF ( ISPRIB(2,1) .EQ. 0)  ISPRIB(2,1) = NSTE
  6060.       IF ( ISPRIB(3,1) .EQ. 0)  ISPRIB(3,1) = 1
  6061.       INDEX=1
  6062.       IF (NSPRIB.LE.1) GO TO 440
  6063.       DO 430 I=2,NSPRIB
  6064.       J=I - 1
  6065.       IF (ISPRIB(1,J).GT.ISPRIB(2,J)) GO TO 435
  6066.       IF (ISPRIB(1,I).GE.ISPRIB(2,J)) GO TO 430
  6067.       WRITE (6,3002) BLKNAM(INDEX),I,J
  6068.       STOP
  6069.   430 CONTINUE
  6070.   440 J=NSPRIB
  6071.       IF (ISPRIB(1,J).LE.ISPRIB(2,J)) GO TO 445
  6072.   435 WRITE (6,3004) BLKNAM(INDEX),J,J
  6073.       STOP
  6074.   445 IF (ISPRIB(2,NSPRIB).GE.NSTE) GO TO 450
  6075.       WRITE (6,3001) BLKNAM(INDEX),ISPRIB(2,NSPRIB),NSTE
  6076.       STOP
  6077. C
  6078.   450 IF (IDATWR.GT.1) GO TO 470
  6079.       WRITE (6,2160)
  6080.       WRITE (6,2170) (J,(J,ISPRIB(I,J),I=1,3),J=1,NSPRIB)
  6081.   470 IF (IOUTPT.NE.0) GO TO 480
  6082.       NSPRIB=1
  6083.       ISPRIB(1,1)=1
  6084.       ISPRIB(2,1)=NSTE
  6085.       ISPRIB(3,1)=1
  6086.       GO TO 490
  6087.   480 IF (NSPRIB.NE.0) GO TO 490
  6088.       ISC=0
  6089.       NSPRIB=1
  6090.       ISPRIB(1,1)=NSTE + 1
  6091.       ISPRIB(2,1)=NSTE + 1
  6092.       ISPRIB(3,1)=1
  6093.   490 IF (NSPB.EQ.0) ISC=0
  6094.       IF (IOUTPT.EQ.0) ISC=1
  6095. C
  6096.       IF (NSPB.EQ.0) GO TO 570
  6097.       READ (5,1100) ((ISPNOD(I,J),I=1,3),J=1,NSPB)
  6098.       IF (ISPNOD(1,1).EQ.0) ISPNOD(1,1)=1
  6099.       IF (ISPNOD(2,1).EQ.0) ISPNOD(2,1)=NUMNPS
  6100.       IF (ISPNOD(3,1).LE.0) ISPNOD(3,1)=1
  6101.       DO 500 I=1,NSPB
  6102.       IF (ISPNOD(1,I).LT.0) GO TO 510
  6103.       IF (ISPNOD(1,I).GT.ISPNOD(2,I)) GO TO 510
  6104.       IF (ISPNOD(3,I).LE.0) GO TO 510
  6105.   500 CONTINUE
  6106.       GO TO 550
  6107.   510 WRITE (6,2990)
  6108.       STOP
  6109.   550 IF (IDATWR.GT.1) GO TO 570
  6110.       WRITE (6,2180)
  6111.       WRITE (6,2190) (J,(J,ISPNOD(I,J),I=1,3),J=1,NSPB)
  6112. C
  6113.   570 IF (IOUTPT.NE.0 .AND. NSPB.GT.0) GO TO 600
  6114.       NSPB=1
  6115.       ISPNOD(1,1)=1
  6116.       ISPNOD(2,1)=NUMNPS
  6117.       ISPNOD(3,1)=1
  6118. C
  6119.   600 WRITE (NSTAPE) NXYZ,LREUSE,NLOADS,NPR2S,NPR3S,NPBMS,NP3DBS,
  6120.      1               NPPLS,NPSHS,NODE3S,
  6121.      1               (DIRNUM(I),I=1,9),ND,(LMS(I),I=1,ND),ISC,NSPRIB,
  6122.      2               NSPB,((ISPRIB(I,J),I=1,3),J=1,NSPRIB),
  6123.      3               ((ISPNOD(I,J),I=1,3),J=1,NSPB)
  6124. C
  6125.       RETURN
  6126. C
  6127.  1000 FORMAT (16I5)
  6128.  1010 FORMAT (8F10.0)
  6129.  1100 FORMAT (15I5,5X)
  6130.  2000 FORMAT (1H1,63HS U B S T R U C T U R E   I D E N T I F I C A T I O
  6131.      1 N   D A T A   )
  6132.  2010 FORMAT (1H1)
  6133.  2020 FORMAT (///5X,
  6134.      155HIDENTIFICATION SET NUMBER . . . . . . . . .( N )      =,I5//5X,
  6135.      555HINDICATOR FOR REUSE OF LOAD VECTOR . . . . (LREUSE)   =,I5 /5X,
  6136.      655H  EQ.0, LOADS FOR THIS SUBSTRUCTURE ARE THE SAME AS        /5X,
  6137.      A55H        THE LOADS FOR THE PREVIOUS SUBSTRUCTURE            /5X,
  6138.      A55H        ( NOT APPLICABLE, IF N.EQ.1 )                      /5X,
  6139.      B55H  EQ.1, LOADS FOR THIS SUBSTRUCTURE ARE DIFFERENT FROM     /5X,
  6140.      C55H        THE LOADS FOR THE PREVIOUS SUBSTRUCTURE           //5X,
  6141.      755HNUMBER OF CONCENTRATED LOAD CARDS . . . . .(NLOADS)   =,I5//5X,
  6142.      855HNUMBER OF 2/D PRESSURE LOAD SETS . . . . . (NPR2S)    =,I5//5X,
  6143.      955HNUMBER OF 3/D PRESSURE LOAD SETS . . . . . (NPR3S)    =,I5//5X,
  6144.      455HNUMBER OF BEAM DISTRIBUTED LOAD SETS . . . (NPBMS)    =,I5//5X,
  6145.      D55HNUMBER OF ISO/BEAM DISTRIBUTED LOAD SETS . (NP3DBS)   =,I5//5X,
  6146.      E55HNUMBER OF PLATE DISTRIBUTED LOAD SETS  . . (NPPLS)    =,I5//5X,
  6147.      F55HNUMBER OF SHELL DISTRIBUTED LOAD SETS  . . (NPSHS)    =,I5//5X)
  6148.  2030 FORMAT (///23H DIRECTION RATIOS  DATA,//5X,
  6149.      152HDIRCTION RATIO  FOR LOCAL X-AXIS ON GLOBAL X-AXIS  =,F10.5//5X,
  6150.      152HDIRCTION RATIO  FOR LOCAL X-AXIS ON GLOBAL Y-AXIS  =,F10.5//5X,
  6151.      352HDIRCTION RATIO  FOR LOCAL X-AXIS ON GLOBAL Z-AXIS  =,F10.5//5X,
  6152.      452HDIRCTION RATIO  FOR LOCAL Y-AXIS ON GLOBAL X-AXIS  =,F10.5//5X,
  6153.      552HDIRCTION RATIO  FOR LOCAL Y-AXIS ON GLOBAL Y-AXIS  =,F10.5//5X,
  6154.      652HDIRCTION RATIO  FOR LOCAL Y-AXIS ON GLOBAL Z-AXIS  =,F10.5)
  6155.  2040 FORMAT (///32H SUBSTRUCTURE CONNECTIVITY DATA  //,
  6156.      1           4(21H     I       ICONA(I),9X ),/,(/4(I6,8X,I5,11X)))
  6157.  2100 FORMAT (///,
  6158.      151H SUBSTRUCTURE RESPONSE PRINT-OUT CONTROL PARAMETERS,//5X,
  6159.      255HNUMBER OF BLOCKS OF PRINT-OUT TIMESTEPS . . .(NSPRIB) =I5//5X,
  6160.      355HNUMBER OF BLOCKS OF PRINT-OUT NODAL POINTS. .( NSPB ) =I5 //)
  6161.  2160 FORMAT (/5X,47HBLOCK DEFINITION CARDS FOR PRINT-OUT TIME STEPS//5X
  6162.      159H( NOT APPLICABLE, IF IOUTPT.EQ.0 ON MASTER CONTROL CARD 8 )  )
  6163.  2170 FORMAT (/,4X,
  6164.      A  7H BLOCK ,I2                                               //7X,
  6165.      B 46H FIRST STEP OF THIS BLOCK  .  .  .  (ISPRIB(1,I2,3H))= I5 /7X,
  6166.      C 46H LAST  STEP OF THIS BLOCK  .  .  .  (ISPRIB(2,I2,3H))= I5 /7X,
  6167.      D 46H INCREMENT IN TIME STEP .  .  .  .  (ISPRIB(3,I2,3H))= I5 /)
  6168.  2180 FORMAT (/5X,48HBLOCK DEFINTION CARDS FOR PRINT-OUT NODAL POINTS//,
  6169.      15X,59H( NOT APPLICABLE, IF IOUTPT.EQ.0 ON MASTER CONTROL CARD 8 ))
  6170.  2190 FORMAT (/,4X,
  6171.      A  7H BLOCK ,I2                                               //7X,
  6172.      B 46H FIRST NODE OF THIS BLOCK  .  .  .  (ISPNOD(1,I2,3H))= I5 /7X,
  6173.      C 46H LAST  NODE OF THIS BLOCK  .  .  .  (ISPNOD(2,I2,3H))= I5 /7X,
  6174.      D 46H INCREMENT IN NODE NUMBER  .  .  .  (ISPNOD(3,I2,3H))= I5 /)
  6175.  2990 FORMAT (1H1,80H ** STOP **  ERROR IN INPUT OF BLOCK DEFINITIONS OF
  6176.      1  NODAL QUANTITIES PRINT-OUT  )
  6177.  3000 FORMAT (57H *** ERROR IN IDENTIFICATION SET INPUT FOR SUBSTRUCTURE
  6178.      1 =,I5/,38H EXPECTING IDENTIFICATION SET NUMBER =,I5/,
  6179.      234H INPUT IDENTIFICATION SET NUMBER =,I5//)
  6180.  3001 FORMAT(1H1,20H ** STOP ** ERROR IN,A8,2X,44HBLOCK INPUT.FINAL STEP
  6181.      1 OF LAST BLOCK INPUT =,I5,18H, LESS THAN NSTE =,I5)
  6182.  3002 FORMAT (1H1,21H ** STOP ** ERROR IN ,A8,2X,13H BLOCK INPUT./
  6183.      1 14H FIRST STEP OF,I5,34HTH BLOCK IS LESS THAN LAST STEP OF,I5,
  6184.      1 9HTH BLOCK.  ///)
  6185.  3004 FORMAT (1H1,21H ** STOP ** ERROR IN ,A8,2X,13H BLOCK INPUT./
  6186.      1 14H FIRST STEP OF,I5,36HTH BLOCK IS LARGER THAN LAST STEP OF,I5,
  6187.      1 9HTH BLOCK.  ///)
  6188.  3010 FORMAT (1H1,19H *** ERROR IN INPUT,/
  6189.      112H INPUT LOCAL,A3,23HVECTOR IS A ZERO VECTOR       )
  6190.  3015 FORMAT (1H1,19H *** ERROR IN INPUT  ,/
  6191.      112H INPUT LOCAL,A3,3HAND,A3,26HVECTORS ARE NOT ORTHOGONAL  )
  6192.  3020 FORMAT (57H *** ERROR IN CONNECTIVITY ARRAY INPUT FOR SUBSTRUCTURE
  6193.      1 =,I5/,27H FOR RETAINED NODE NUMBER =,I5/,
  6194.      235H CORRESPONDING GLOBAL NODE NUMBER =,I5,16H IS OUT OF RANGE  )
  6195. C
  6196.       END
  6197. C *CDC* *DECK SUBSKR
  6198. C *UNI* )FOR,IS N.SUBSKR, R.SUBSKR
  6199.       SUBROUTINE SUBSKR (BB,AA,CC,LMS,MAXA,NCOLBV,ISTOHS,NBLOCS,NREC16,
  6200.      1                   NREC17,KRSIZE,NEQ)
  6201. C
  6202. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  6203. C .                                                                   .
  6204. C .   PROGRAM                                                         .
  6205. C .    . TO EXTRACT CONDENSED SUBSTRUCTURE STIFFNESS MATRIX FROM      .
  6206. C .      THE TOTAL STIFFNESS MATRIX AND PERFORM TRANSFORMATIONS       .
  6207. C .                                                                   .
  6208. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  6209. C
  6210.       IMPLICIT REAL*8 (A-H,O-Z)
  6211. C
  6212.       COMMON /ISUBST/ ISUB,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
  6213.      1                NODCON,NODRET,IDOFS(6),NDOFS,NEQS,NWKS,MAXES,
  6214.      2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
  6215.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  6216.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  6217.       COMMON /SOL/ NUMNP,NNN,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
  6218.       COMMON /VAR/ NG,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
  6219.      1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
  6220.       COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
  6221.       COMMON /BLOCKS/ NSREFB,NEQITB,NPRIB,NODSVB,LEMSVB,ISREFB(3,10),
  6222.      1                IEQITB(3,10),IPRIB(3,10),INODB(3,10),IELMB(3,10)
  6223.       COMMON /SLOA/ N09C,ITMFN,ICOORD,NUSE
  6224.       COMMON /FACDBL/ JFAC
  6225. C
  6226.       DIMENSION BB(KRSIZE),AA(ISTOHS),CC(NEQ),DIRCOS(9)
  6227.       INTEGER LMS(1),MAXA(1),NCOLBV(1)
  6228. C
  6229.       IF (IND - 2) 10,700,850
  6230. C
  6231. C
  6232. C     S T I F F N E S S   T R A N S F O R M A T I O N
  6233. C
  6234. C
  6235.    10 DO 50 I=1,KRSIZE
  6236.    50 BB(I)=0.
  6237. C
  6238.       NRD=NEQS - NEQC
  6239.       NEQL=1
  6240.       NEQR=0
  6241.       MLA=0
  6242.       NREC16=NREC16 - NBLOCS - 1
  6243. C
  6244.       DO 450 L=1,NBLOCS
  6245.       NCOLB=NCOLBV(L)
  6246.       NEQR=NEQR + NCOLB
  6247.       NREC16=NREC16 + 1
  6248.       IF (NEQR.LE. NEQC) GO TO 440
  6249. C
  6250. C    * * * * * *    R A N D O M   A C C E S S     * * *
  6251. C
  6252.       CALL READMS (16,AA,ISTOHS,NREC16)
  6253. C
  6254. C    * * * * * *    R A N D O M   A C C E S S     * * *
  6255. C
  6256.       DO 435 I=NEQL,NEQR
  6257.       IF (I.LE.NEQC) GO TO 435
  6258.       J=I - NEQC
  6259.       JJ=MAXA(I + 1) - MAXA(I)
  6260.       KK=MIN0(JJ,J)
  6261. C
  6262.       N=0
  6263.       II=J
  6264.       IF (JJ.GE.J) GO TO 425
  6265.       N=J - JJ
  6266.       DO 420 K=1,N
  6267.   420 II=II + NRD - K
  6268. C
  6269.   425 JJ=MAXA(I) + KK - MLA
  6270.       DO 430 K=1,KK
  6271.       BB(II)=AA(JJ - K)
  6272.   430 II=II + NRD - K - N
  6273. C
  6274.   435 CONTINUE
  6275.   440 NEQL=NEQL + NCOLB
  6276.       MLA=MAXA(NEQL) - 1
  6277.   450 CONTINUE
  6278. C
  6279.       REWIND 12
  6280.       WRITE (12) BB
  6281.       NREC16=NREC16 + 1
  6282. C
  6283.       DO 600 N=1,NTUSE
  6284. C
  6285.       READ (NSTAPE) NXYZ,LREUSE,NLOADS,NPR2S,NPR3S,NPBMS,NP3DBS,
  6286.      1              NPPLS,NPSHS,NODE3S,
  6287.      1               (DIRCOS(I),I=1,9),ND,(LMS(I),I=1,ND)
  6288. C
  6289. C     READ KR MATRIX FROM TAPE12, TRANSFORM TO SYSTEM NXYZ AND WRITE
  6290. C     ONTO TAPE11
  6291. C
  6292.       WRITE (18) ND,(LMS(I),I=1,ND),KRSIZE,(BB(I),I=1,KRSIZE)
  6293.   600 CONTINUE
  6294. C
  6295.       RETURN
  6296. C
  6297. C
  6298. C     L O A D   V E C T O R   T R A N S F O R M A T I O N
  6299. C
  6300. C     TRNSFER MASTER STRUCTURE LOADS FROM TAPE 3 TO TAPE17
  6301. C
  6302.   700 IF (NSUB.NE.1) GO TO 730
  6303.       IF (MODEX.EQ.0 .OR. NSTE.EQ.0) GO TO 730
  6304. C
  6305.       REWIND 3
  6306.       NREC17=0
  6307.       DO 720 K=1,NSTE
  6308.       READ (3) CC
  6309. C
  6310. C     * * * * *    R A N D O M   A C C E S S      * * *
  6311. C
  6312.       NREC17=NREC17 + 1
  6313.       CALL WRITMS (17,CC,NEQ,NREC17,-1)
  6314. C
  6315. C     * * * * *    R A N D O M   A C C E S S      * * *
  6316. C
  6317.   720 CONTINUE
  6318. C
  6319.   730 DO 800 N=1,NTUSE
  6320. C
  6321.       READ (NSTAPE) NXYZ,LREUSE,NLOADS,NPR2S,NPR3S,NPBMS,NP3DBS,
  6322.      1              NPPLS,NPSHS,NODE3S
  6323.       NUSE=N
  6324.       IF (N.EQ.1) GO TO 735
  6325.       IF (LREUSE.NE.0) GO TO 735
  6326.       IF (IDATWR.LE.1) WRITE (6,2100) NSUB,NUSE
  6327.       GO TO 740
  6328.   735 CONTINUE
  6329. C
  6330. C     REPLACE MASTER LOAD DATA BY SUBSTRUCTURE LOAD DATA
  6331. C
  6332.       CALL LOADSV (ILOA,NLOADS,NPR2S,NPR3S,NPBMS,NP3DBS,NPPLS,NPSHS,
  6333.      1             NODE3S,2)
  6334. C
  6335. C *CDC*       CALL OVERLAY (5HADINA,17B,0B,6HRECALL)
  6336.       CALL LOAD
  6337.       IF (MODEX.EQ.0 .OR. NSTE.EQ.0) GO TO 740
  6338.       IF (ISTAT.GT.0) GO TO 750
  6339. C
  6340. C     TAKE REDUCED STIFFNESS MATRIX INTO CORE, IF ONE BLOCK CASE
  6341. C     AND STATIC ANALYSIS
  6342. C
  6343.       IF (NBLOCS.GT.1) GO TO 740
  6344. C
  6345. C       * * * * *        R A N D O M  A C C E S S        * * *
  6346. C
  6347.       KK=NREC16 + 1
  6348.       CALL READMS (16,AA,ISTOHS,KK)
  6349. C
  6350. C       * * * * *        R A N D O M  A C C E S S        * * *
  6351. C
  6352.   740 BACKSPACE NSTAPE
  6353.       READ (NSTAPE) NXYZ,LREUSE,NLOADS,NPR2S,NPR3S,NPBMS,NP3DBS,
  6354.      1              NPPLS,NPSHS,NODE3S,
  6355.      1               (DIRCOS(I),I=1,9),ND,(LMS(I),I=1,ND)
  6356. C
  6357.   750 IF (MODEX.EQ.0 .OR. NSTE.EQ.0) GO TO 800
  6358.       REWIND 3
  6359.       DO 780 K=1,NSTE
  6360.       READ (3) BB
  6361. C
  6362. C     REDUCE LOAD VECTOR IF STATIC ANALYSIS
  6363. C
  6364.       IF (ISTAT.GT.0) GO TO 760
  6365. C
  6366.       CALL COLSOL (MAXA,NCOLBV,MAXA,AA,AA,BB,BB,MAXA,
  6367.      1             NEQS,NBLOCS,ISTOHS,12,16,2)
  6368. C
  6369. C       * * * * *        R A N D O M  A C C E S S        * * *
  6370. C
  6371.       NREC17=NREC17 + 1
  6372.       CALL WRITMS (17,BB,NEQC,NREC17,-1)
  6373. C
  6374.       KK=K
  6375.       CALL READMS (17,CC,NEQ,KK)
  6376. C
  6377.       NN=NEQC + 1
  6378.       JFAC=1
  6379.       CALL ADDMA (CC,BB(NN),LMS,ND)
  6380.       JFAC=0
  6381. C
  6382.       KK=K
  6383.       CALL WRITMS (17,CC,NEQ,KK,-1)
  6384. C
  6385. C     WRITE UNREDUCED SUBSTRUCTURE APPLIED LOAD VECTOR ONTO TAPE
  6386. C     IF IT IS A DYNAMIC ANALYSIS
  6387. C
  6388.   760 IF (ISTAT.EQ.0) GO TO 780
  6389. C
  6390. C   * * * * *    R A N D O M   A C C E S S   * * *
  6391. C
  6392.       NREC17=NREC17 + 1
  6393.       CALL WRITMS (17,BB,NEQS,NREC17,-1)
  6394. C
  6395. C   * * * * *    R A N D O M   A C C E S S   * * *
  6396. C
  6397. C
  6398.   780 CONTINUE
  6399.   800 CONTINUE
  6400. C
  6401. C       * * * * *        R A N D O M  A C C E S S        * * *
  6402. C
  6403.       IF (NSUB.NE.NSUBST) RETURN
  6404. C
  6405. C     TRANSFER MASTER LOADS BACK TO TAPE 3 FROM TAPE17
  6406. C
  6407.       IF (MODEX.EQ.0 .OR. NSTE.EQ.0) GO TO 830
  6408.       REWIND 3
  6409.       DO 820 K=1,NSTE
  6410. C
  6411.       KK=K
  6412.       CALL READMS (17,CC,NEQ,KK)
  6413. C
  6414.       WRITE (3) CC
  6415. C
  6416.   820 CONTINUE
  6417. C
  6418. C     REINSTATE MASTER LOAD CONTROL INFORMATION
  6419. C
  6420.   830 CONTINUE
  6421.       CALL LOADSV (ILOA,NLOADS,NPR2S,NPR3S,NPBMS,NP3DBS,NPPLS,NPSHS,
  6422.      1             NODE3S,3)
  6423. C
  6424.       RETURN
  6425. C
  6426. C
  6427. C     D I S P L A C E M E N T   T R A N S F O R M A T I O N
  6428. C
  6429. C
  6430.   850 IF (IND.EQ.4) GO TO 862
  6431. C
  6432.       READ (NSTAPE) NXYZ,LREUSE,NLOADS,NPR2S,NPR3S,NPBMS,NP3DBS,
  6433.      1              NPPLS,NPSHS,NODE3S,
  6434.      1              (DIRCOS(I),I=1,9),ND,(LMS(I),I=1,ND),ISC,NPRIB,
  6435.      2               NPB,((IPRIB(I,J),I=1,3),J=1,NPRIB),
  6436.      3               ((IPNODE(I,J),I=1,3),J=1,NPB)
  6437.       IF (ISC.NE.0) GO TO 860
  6438.       IPRI = 1
  6439.       KPRI = 1
  6440.       RETURN
  6441. C
  6442. C     FLAG FOR PRINTING NODAL AND ELEMENT RESPONSES
  6443. C        IPRI .EQ. 0 FOR PRINTOUT OF DISP,VEL,ACC AND STRESSES
  6444. C
  6445.   860 CALL BLKCNT (KSTEP,NPRIB,IPRI,IPRIB,NSTE,3)
  6446.       KPRI=IPRI
  6447.       RETURN
  6448.   862 IF (KSTEP.NE.1 .AND. ISTAT.EQ.0) GO TO 864
  6449.       READ (NSTAPE) NXYZ,LREUSE,NLOADS,NPR2S,NPR3S,NPBMS,NP3DBS,
  6450.      1              NPPLS,NPSHS,NODE3S,
  6451.      1              (DIRCOS(I),I=1,9),ND,(LMS(I),I=1,ND)
  6452. C
  6453. C     READ THE LOAD VECTOR
  6454. C
  6455. C     * * * * *    R A N D O M   A C C E S S      * * *
  6456. C
  6457.   864 CALL READMS (17,BB,NEQC,NREC17)
  6458. C
  6459. C     * * * * *    R A N D O M   A C C E S S      * * *
  6460. C
  6461. C     OBTAIN DISPLACEMENTS AT RETAINED DOF FROM MASTER DOF
  6462. C
  6463.       NRD=NEQS - NEQC
  6464.       DO 880 I=1,NRD
  6465.       II=LMS(I)
  6466.       JJ=NEQC + I
  6467.       IF (II) 865,870,875
  6468.   865 BB(JJ)=CC(NEQ - II)
  6469.       GO TO 880
  6470.   870 BB(JJ)=0.
  6471.       GO TO 880
  6472.   875 BB(JJ)=CC(II)
  6473.   880 CONTINUE
  6474. C
  6475.       RETURN
  6476. C
  6477.  2100 FORMAT (/////46H S U B S T R U C T U R E   L O A D S   D A T A   ,
  6478.      1//22H SUBSTRUCTURE NUMBER =,I3,24H IDENTIFICATION SET NO =,I3//,
  6479.      284H LOADS FOR THIS SUBSTRUCTURE ARE THE SAME AS THE LOADS FOR THE
  6480.      3PREVIOUS SUBSTRUCTURE //)
  6481.       END
  6482. C *CDC* *DECK ADDBAN
  6483. C *UNI* )FOR,IS  N.ADDBAN, R.ADDBAN
  6484.       SUBROUTINE ADDBAN (A,MAXA,S,RE,LM,ND,KKK)
  6485. C
  6486. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  6487. C .                                                                   .
  6488. C .   EXECUTION MODE KKK=1                                            .
  6489. C .                                                                   .
  6490. C .   ASSEMBLES UPPER TRIANGULAR ELEMENT STIFFNESS INTO               .
  6491. C .         COMPACTED GLOBAL STIFFNESS                                .
  6492. C .                                                                   .
  6493. C .         A = GLOBAL STIFFNESS                                      .
  6494. C .         S = ELEMENT STIFFNESS                                     .
  6495. C .         ND = DEGREES OF FREEDOM IN ELEMENT STIFFNESS              .
  6496. C .                                                                   .
  6497. C .                   S(1)        S(2)        S(3)        . . .       .
  6498. C .         S   =                 S(ND+1)     S(ND+2)     . . .       .
  6499. C .                                           S(2*ND)     . . .       .
  6500. C .                                                       . . .       .
  6501. C .                                                                   .
  6502. C .                                                                   .
  6503. C .                   A(1)        A(3)        A(6)        . . .       .
  6504. C .         A   =                 A(2)        A(5)        . . .       .
  6505. C .                                           A(4)        . . .       .
  6506. C .                                                       . . .       .
  6507. C .                                                                   .
  6508. C .   EXECUTION MODE KKK=2                                            .
  6509. C .                                                                   .
  6510. C .   SUBTRACTS ELEMENT NODAL POINT FORCES EQUIVALENT TO ELEMENT      .
  6511. C .         STRESSES FROM EFFECTIVE LOADVECTOR                        .
  6512. C .                                                                   .
  6513. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  6514. C
  6515.       IMPLICIT REAL*8 (A-H,O-Z)
  6516. C
  6517.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  6518.      1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  6519.       COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
  6520.       COMMON /DISCON/ NDISCE,NIDM
  6521.       COMMON /DPR/ ITWO
  6522.       COMMON AA(1)
  6523.       REAL AA
  6524.       INTEGER IA(1)
  6525.       EQUIVALENCE (AA(1),IA(1))
  6526. C
  6527.       DIMENSION A(1),S(1),RE(1)
  6528.       INTEGER MAXA(1),LM(1)
  6529.       COMMON /ADDB/ NEQL,NEQR,MLA,NBLOCK
  6530. C
  6531.       IF (KKK-1) 10,10,300
  6532. C
  6533.    10 NDI=0
  6534.       DO 200 I=1,ND
  6535.       II=LM(I)
  6536.       IF (II.GE.0) GO TO 100
  6537. C
  6538. C     ADD THE COLUMN OF ELEMENT STIFFNESS  (CONSTRAINED DOF)
  6539. C
  6540.       NCE=-II
  6541.       NID=IA(N01 + NCE - 1)
  6542.       NN=N02 + (NCE - 1)*NIDM - 1
  6543.       MM=N03 + ((NCE - 1)*NIDM - 1)*ITWO
  6544.       DO 50 K=1,NID
  6545.       II=IA(NN + K)
  6546.       IF (II.LT.NEQL .OR. II.GT.NEQR) GO TO 50
  6547.       FAC=DOUBLE(AA(MM + K*ITWO))
  6548. C
  6549.       MI=MAXA(II) - MLA
  6550.       KS=I
  6551.       DO 30 J=1,ND
  6552.       JJ=LM(J)
  6553.       IF (JJ) 11,30,15
  6554.    11 MCE=-JJ
  6555.       MID=IA(N01 + MCE - 1)
  6556.       LL=N02 + (MCE - 1)*NIDM - 1
  6557.       KL=N03 + ((MCE - 1)*NIDM - 1)*ITWO
  6558.       KSS=KS
  6559.       IF(J.GE.I) KSS=J + NDI
  6560.       DO 14 L=1,MID
  6561.       JJ=IA(LL + L)
  6562.       IJ=II - JJ
  6563.       IF (IJ) 14,12,12
  6564.    12 KK=MI + IJ
  6565.       FACT=DOUBLE(AA(KL + L*ITWO))
  6566.       A(KK)=A(KK) + FAC*S(KSS)*FACT
  6567.    14 CONTINUE
  6568.       GO TO 30
  6569. C
  6570.    15 IJ=II- JJ
  6571.       IF (IJ) 30,20,20
  6572.    20 KK=MI + IJ
  6573.       KSS=KS
  6574.       IF (J.GE.I) KSS=J + NDI
  6575.       A(KK)=A(KK) + S(KSS)*FAC
  6576.    30 KS=KS + ND - J
  6577.    50 CONTINUE
  6578.       GO TO 200
  6579. C
  6580. C     ADD THE I TH COLUMN OF ELEMENT STIFFNESS MATRIX TO GLOBAL STIFFNES
  6581. C
  6582.   100 IF (II.LT.NEQL .OR. II.GT.NEQR) GO TO 200
  6583.       MI=MAXA(II) - MLA
  6584.       KS=I
  6585.       DO 220 J=1,ND
  6586.       JJ=LM(J)
  6587.       IF (JJ) 110,220,190
  6588. C
  6589. C     ROW ADDITION OF STIFFNESS MATRIX (CONSTRAINED DOF)
  6590. C
  6591.   110 NCE=-JJ
  6592.       NID=IA(N01 + NCE - 1)
  6593.       NN=N02 + (NCE - 1)*NIDM - 1
  6594.       MM=N03 + ((NCE - 1)*NIDM - 1)*ITWO
  6595.       KSS=KS
  6596.       IF (J.GE.I) KSS=J + NDI
  6597.       DO 150 K=1,NID
  6598.       JJ=IA(NN + K)
  6599.       FAC=DOUBLE(AA(MM + K*ITWO))
  6600. C
  6601.       IJ=II- JJ
  6602.       IF (IJ) 150,120,120
  6603.   120 KK=MI + IJ
  6604.       A(KK)=A(KK) + S(KSS)*FAC
  6605.   150 CONTINUE
  6606.       GO TO 220
  6607. C
  6608. C     ADD THE J TH ROW OF ELEMENT STIFFNESS MATRIX TO GLOBAL STIFFNESS
  6609. C
  6610.   190 IJ=II - JJ
  6611.       IF (IJ) 220,210,210
  6612.  210  KK=MI + IJ
  6613.       KSS=KS
  6614.       IF (J.GE.I) KSS=J + NDI
  6615.       A(KK)=A(KK) + S(KSS)
  6616.   220 KS=KS + ND - J
  6617.   200 NDI=NDI + ND - I
  6618. C
  6619.       RETURN
  6620. C
  6621.   300 DO 310 I=1,ND
  6622.       II=LM(I)
  6623.       IF (II) 320,310,350
  6624. C
  6625. C     TRANSFER NODAL FORCES FROM CONSTRAINED DOF
  6626. C
  6627.   320 NCE=-II
  6628.       NID=IA(N01 + NCE - 1)
  6629.       NN=N02 + (NCE - 1)*NIDM - 1
  6630.       MM=N03 + ((NCE - 1)*NIDM - 1)*ITWO
  6631.       DO 330 J=1,NID
  6632.       II=IA(NN + J)
  6633.       IF (II.LT.NEQL .OR. II.GT.NEQR) GO TO 330
  6634.       FAC=DOUBLE(AA(MM + J*ITWO))
  6635.       A(II)=A(II) - FAC*RE(I)
  6636.   330 CONTINUE
  6637.       GO TO 310
  6638. C
  6639.   350 IF (II.LT.NEQL .OR. II.GT.NEQR) GO TO 310
  6640.       A(II)=A(II) - RE(I)
  6641.   310 CONTINUE
  6642.       RETURN
  6643. C
  6644.       END
  6645. C *CDC* *DECK DOUBLE
  6646. C *UNI* )FOR,IS N.DOUBLE,R.DOUBLE
  6647.       FUNCTION DOUBLE (A)
  6648. C
  6649.       IMPLICIT REAL*8 (A-H,O-Z)
  6650. C
  6651.       DOUBLE=A
  6652. C
  6653.       RETURN
  6654.       END
  6655. C *CDC* *DECK ATKA
  6656. C *UNI* )FOR,IS N.ATKA,R.ATKA
  6657.       SUBROUTINE ATKA (RSDCOS,S,ISKEW,NODES,NDPN)
  6658. C
  6659.       IMPLICIT REAL*8 (A-H,O-Z)
  6660. C
  6661.       COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
  6662.      1            ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
  6663.       COMMON /XATKA/ LMID(32)
  6664.       DIMENSION RSDCOS(9,1),ISKEW(1),S(1),WS(9)
  6665. C
  6666. C     CHECK IF CALCULATIONS ARE FOR A SHELL ,
  6667. C     AND DETERMINE THE SIZE OF S
  6668. C
  6669.       IF (NPAR(1).EQ.7) GO TO 8
  6670.       DO 5 I=1,NODES
  6671.     5 LMID(I)=1
  6672. C
  6673.     8 IDIM=0
  6674.       DO 10 I=1,NODES
  6675.       IDIM=IDIM + NDPN
  6676.       IF (LMID(I).LT.0) IDIM=IDIM + 2
  6677.    10 CONTINUE
  6678. C
  6679.       JUMD=0
  6680. C
  6681.       DO 25 K=1,NODES
  6682.       IN=K
  6683.       IF (ISKEW(IN)) 30,25,50
  6684.    25 IF (LMID(K).LT.0) JUMD=JUMD + 2
  6685.    30 RETURN
  6686. C
  6687.    50 ISTAR=1
  6688.       IF (NDPN.EQ.2) ISTAR=2
  6689. C
  6690. C
  6691.       DO 400 I=IN,NODES
  6692.       IRST=ISKEW(I)
  6693. C
  6694. C     IF THE I-TH NODE DOES NOT BELONG TO ANY SKEW SYSTEM,
  6695. C     SKIP THE TRANSFORMATION CALCULATIONS FOR ALL THE ROWS
  6696. C     CORRESPONDING TO THIS NODE FOR THE PRESENT
  6697. C
  6698.       IF (IRST.EQ.0) GO TO 400
  6699. C
  6700.       IDF=NDPN*(I-1) + JUMD
  6701.       IFL=1 + IDF*IDIM - (IDF*(IDF-1))/2
  6702.       LEN=IDIM - IDF
  6703.       ISL=IFL + LEN
  6704. C
  6705. C     TRANSFER DIAGONAL SUBMATRIX (NDPN X NDPN) OF NODE I TO WORK VECTOR
  6706. C
  6707.       IF (NDPN.EQ.3) GO TO 70
  6708.       WS(5)=S(IFL)
  6709.       WS(8)=S(IFL+1)
  6710.       WS(6)=WS(8)
  6711.       WS(9)=S(ISL)
  6712.       GO TO 80
  6713. C
  6714.    70 ITL=ISL + LEN - 1
  6715.       WS(1)=S(IFL)
  6716.       WS(4)=S(IFL+1)
  6717.       WS(7)=S(IFL+2)
  6718.       WS(2)=WS(4)
  6719.       WS(5)=S(ISL)
  6720.       WS(8)=S(ISL+1)
  6721.       WS(3)=WS(7)
  6722.       WS(6)=WS(8)
  6723.       WS(9)=S(ITL)
  6724. C
  6725. C     PRE AND POST MULTIPLY THE DIAGONAL SUBMATRIX BY THE IRST SYSTEM
  6726. C
  6727.    80 IPER=0
  6728.       CALL TRIPRD (RSDCOS(1,IRST),WS,RSDCOS(1,IRST),ISTAR,IPER)
  6729. C
  6730.       IF (NDPN.EQ.3) GO TO 90
  6731.       S(IFL)=WS(5)
  6732.       S(IFL+1)=WS(8)
  6733.       S(ISL)=WS(9)
  6734.       GO TO 95
  6735. C
  6736.    90 S(IFL)=WS(1)
  6737.       S(IFL+1)=WS(4)
  6738.       S(IFL+2)=WS(7)
  6739.       S(ISL)=WS(5)
  6740.       S(ISL+1)=WS(8)
  6741.       S(ITL)=WS(9)
  6742.    95 CONTINUE
  6743. C
  6744.       IF (I.EQ.NODES) GO TO 205
  6745. C
  6746. C     ROTATE THE I-TH ROW -  PRE-MULTIPLY BY THE IRST SYSTEM.   ALSO
  6747. C     POST-MULTIPLY IF THE J-TH NODE BELONGS TO THE JRST SKEW SYSTEM
  6748. C
  6749.       JN=I+1
  6750.       JUMR=0
  6751. C
  6752.       DO 200 J=JN,NODES
  6753.       IF (LMID(J-1).LT.0) JUMR=JUMR + 2
  6754.       IRL=IFL + NDPN*(J-I) + JUMR
  6755.       ISL=IRL + LEN -1
  6756.       IF (NDPN.EQ.3) GO TO 120
  6757.       WS(5)=S(IRL)
  6758.       WS(8)=S(IRL+1)
  6759.       WS(6)=S(ISL)
  6760.       WS(9)=S(ISL+1)
  6761.       GO TO 130
  6762. C
  6763.   120 MM=-1
  6764.       ITL=ISL + LEN - 2
  6765.       DO 125 M=1,7,3
  6766.       MM=MM + 1
  6767.       WS(M)=S(IRL+MM)
  6768.       WS(M+1)=S(ISL+MM)
  6769.   125 WS(M+2)=S(ITL+MM)
  6770. C
  6771.   130 IPER=-1
  6772.       JRST=ISKEW(J)
  6773.       IF (JRST) 140,140,150
  6774.   140 CALL TRIPRD (RSDCOS(1,IRST),WS,RSDCOS(1,IRST),ISTAR,IPER)
  6775.       GO TO 155
  6776.   150 IPER=0
  6777.       CALL TRIPRD (RSDCOS(1,IRST),WS,RSDCOS(1,JRST),ISTAR,IPER)
  6778. C
  6779.   155 IF (NDPN.EQ.3) GO TO 160
  6780.       S(IRL)=WS(5)
  6781.       S(IRL+1)=WS(8)
  6782.       S(ISL)=WS(6)
  6783.       S(ISL+1)=WS(9)
  6784.       GO TO 200
  6785.   160 MM=-1
  6786.       DO 170 M=1,7,3
  6787.       MM=MM + 1
  6788.       S(IRL+MM)=WS(M)
  6789.       S(ISL+MM)=WS(M+1)
  6790.   170 S(ITL+MM)=WS(M+2)
  6791. C
  6792.   200 CONTINUE
  6793. C
  6794. C     PREMULTIPLY THE COUPLING PART BETWEEN TRANSLATION AND ROTATION DOF
  6795. C
  6796.   205 IF (NPAR(1).NE.7) GO TO 208
  6797. C
  6798.       JN=I
  6799.       JUMR=0
  6800.       IPER=-1
  6801.       DO 190 J=JN,NODES
  6802.       JUMR=JUMR + 3
  6803.       IF (LMID(J).GE.0) GO TO 190
  6804.       IRL=IFL + JUMR
  6805.       ISL=IRL + LEN - 1
  6806.       ITL=ISL + LEN - 2
  6807.       WS(1)=S(IRL)
  6808.       WS(2)=S(ISL)
  6809.       WS(3)=S(ITL)
  6810.       WS(4)=S(IRL + 1)
  6811.       WS(5)=S(ISL + 1)
  6812.       WS(6)=S(ITL + 1)
  6813.       WS(7)=0.
  6814.       WS(8)=0.
  6815.       WS(9)=0.
  6816. C
  6817.       CALL TRIPRD (RSDCOS(1,IRST),WS,RSDCOS(1,IRST),ISTAR,IPER)
  6818. C
  6819.       S(IRL)=WS(1)
  6820.       S(ISL)=WS(2)
  6821.       S(ITL)=WS(3)
  6822.       S(IRL + 1)=WS(4)
  6823.       S(ISL + 1)=WS(5)
  6824.       S(ITL + 1)=WS(6)
  6825.       JUMR=JUMR + 2
  6826.   190 CONTINUE
  6827. C
  6828. C     POST-MULTIPLY COUPLING PART BETWEEN ROTATION AND TRANSLATION DOF
  6829. C
  6830.       IF (I.EQ.NODES) GO TO 208
  6831.       IF (LMID(I).GE.0) GO TO 208
  6832.       JN=I + 1
  6833.       JUMR=0
  6834.       IRL=IFL + LEN + LEN-1 + LEN-2 + 2
  6835.       ISL=IRL + LEN-4
  6836.       IPER=1
  6837.       DO 198 J=JN,NODES
  6838.       JRST=ISKEW(J)
  6839.       IRL=IRL + JUMR
  6840.       ISL=ISL + JUMR
  6841.       IF (JRST.EQ.0) GO TO 195
  6842.       WS(1)=S(IRL)
  6843.       WS(2)=S(ISL)
  6844.       WS(3)=0.
  6845.       WS(4)=S(IRL + 1)
  6846.       WS(5)=S(ISL + 1)
  6847.       WS(6)=0.
  6848.       WS(7)=S(IRL + 2)
  6849.       WS(8)=S(ISL + 2)
  6850.       WS(9)=0.
  6851. C
  6852.       CALL TRIPRD (RSDCOS(1,JRST),WS,RSDCOS(1,JRST),ISTAR,IPER)
  6853. C
  6854.       S(IRL)=WS(1)
  6855.       S(ISL)=WS(2)
  6856.       S(IRL + 1)=WS(4)
  6857.       S(ISL + 1)=WS(5)
  6858.       S(IRL + 2)=WS(7)
  6859.       S(ISL + 2)=WS(8)
  6860.   195 JUMR=3
  6861.       IF (LMID(J).LT.0) JUMR=5
  6862.   198 CONTINUE
  6863. C
  6864.   208 JF=I - 1
  6865.       IF (JF.LE.0) GO TO 400
  6866. C
  6867. C     POST-MULTIPLY THE COLUMNS BELONGING TO THE J-TH NODE,
  6868. C     IF THE J-TH NODE DOES NOT BELONG TO ANY SKEW SYSTEM
  6869. C
  6870.       IPER=1
  6871.       JUMV=0
  6872. C
  6873.       DO 300 J=1,JF
  6874.       JRST=ISKEW(J)
  6875.       JM1=J - 1
  6876.       IF (JM1.LE.0) GO TO 210
  6877.       IF (LMID(JM1).LT.0) JUMV=JUMV + 2
  6878.   210 IF (JRST) 215,215,300
  6879. C
  6880.   215 JUMH=0
  6881.       DO 216 KF=J,JF
  6882.   216 IF (LMID(KF).LT.0) JUMH=JUMH + 2
  6883. C
  6884.       IDF=NDPN*(J-1) + JUMV
  6885.       IFL=1 + IDF*IDIM - (IDF*(IDF-1))/2 + NDPN*(I-J) + JUMH
  6886.       LEN=IDIM-IDF
  6887.       ISL=IFL+LEN-1
  6888.       IF (NDPN.EQ.3) GO TO 220
  6889.       WS(5)=S(IFL)
  6890.       WS(8)=S(IFL+1)
  6891.       WS(6)=S(ISL)
  6892.       WS(9)=S(ISL+1)
  6893.       GO TO 230
  6894.   220 MM=-1
  6895.       ITL=ISL + LEN - 2
  6896.       DO 225 M=1,7,3
  6897.       MM=MM+1
  6898.       WS(M)=S(IFL+MM)
  6899.       WS(M+1)=S(ISL+MM)
  6900.   225 WS(M+2)=S(ITL+MM)
  6901. C
  6902.   230 CALL TRIPRD (RSDCOS(1,IRST),WS,RSDCOS(1,IRST),ISTAR,IPER)
  6903. C
  6904.       IF (NDPN.EQ.3) GO TO 260
  6905.       S(IFL)=WS(5)
  6906.       S(IFL+1)=WS(8)
  6907.       S(ISL)=WS(6)
  6908.       S(ISL+1)=WS(9)
  6909.       GO TO 280
  6910. C
  6911.   260 MM=-1
  6912.       DO 270 M=1,7,3
  6913.       MM=MM+1
  6914.       S(IFL+MM)=WS(M)
  6915.       S(ISL+MM)=WS(M+1)
  6916.   270 S(ITL+MM)=WS(M+2)
  6917. C
  6918. C
  6919. C     POST-MULTIPLY COUPLING PART BETWEEN ROTATION AND TRANSLATION DOF
  6920. C     BELONGING TO THE J-TH NODE, IF THE J-T8 NO45 4O5S NOT 25LON7
  6921. C     TO ANY SKEW SYSTEM
  6922. C
  6923.   280 IF (NPAR(1).NE.7) GO TO 300
  6924. C
  6925.       IRL=ITL + LEN - 3
  6926.       ISL=IRL + LEN - 4
  6927.       WS(1)=S(IRL)
  6928.       WS(2)=S(ISL)
  6929.       WS(3)=0.
  6930.       WS(4)=S(IRL+1)
  6931.       WS(5)=S(ISL+1)
  6932.       WS(6)=0.
  6933.       WS(7)=S(IRL+2)
  6934.       WS(8)=S(ISL+2)
  6935.       WS(9)=0.
  6936. C
  6937.       CALL TRIPRD (RSDCOS(1,IRST),WS,RSDCOS(1,IRST),ISTAR,IPER)
  6938. C
  6939.       MM=-1
  6940.       DO 350 M=1,7,3
  6941.       MM=MM+1
  6942.       S(IRL+MM)=WS(M)
  6943.   350 S(ISL+MM)=WS(M+1)
  6944. C
  6945.   300 CONTINUE
  6946. C
  6947. C
  6948.   400 IF (LMID(I).LT.0) JUMD=JUMD + 2
  6949. C
  6950. C
  6951. C
  6952.       RETURN
  6953. C
  6954. C
  6955.       END
  6956. C *CDC* *DECK TRIPRD
  6957. C *UNI* )FOR,IS TRIPRD,R.TRIPRD
  6958.       SUBROUTINE TRIPRD (AI,WS,AJ,ISF,IPER)
  6959. C
  6960.       IMPLICIT REAL*8 (A-H,O-Z)
  6961.       DIMENSION AI(3,1),WS(3,1),AJ(3,1),D(3,3)
  6962. C
  6963. C     IPER = -1, PREMULT WS BY TRANSPOSE OF AI
  6964. C             1, POSTMULTIPLY WS BY AJ
  6965. C             0, BOTH PRE- AND POST-MULTIPLICATION
  6966. C
  6967. C
  6968.       IF (IPER.LT.0) GO TO 40
  6969. C
  6970. C     POST - MULTIPLICATION
  6971. C
  6972.       DO 25 I=ISF,3
  6973.       DO 25 J=ISF,3
  6974.       D(I,J)=0.
  6975.       DO 20 K=ISF,3
  6976.    20 D(I,J)=D(I,J) + WS(I,K)*AJ(K,J)
  6977.    25 CONTINUE
  6978. C
  6979.       IF (IPER.EQ.0) GO TO 60
  6980. C
  6981. C     POST-MULTIPLICATION ONLY
  6982. C
  6983.       DO 30 I=ISF,3
  6984.       DO 30 J=ISF,3
  6985.    30 WS(I,J)=D(I,J)
  6986.       RETURN
  6987. C
  6988. C     PRE - MULTIPLICATION
  6989. C
  6990.    40 DO 50 I=ISF,3
  6991.       DO 50 J=ISF,3
  6992.    50 D(I,J)=WS(I,J)
  6993. C
  6994.    60 DO 75 I=ISF,3
  6995.       DO 75 J=ISF,3
  6996.       WS(I,J)=0.
  6997.       DO 70 K=ISF,3
  6998.    70 WS(I,J)=WS(I,J) + AI(K,I)*D(K,J)
  6999.    75 CONTINUE
  7000. C
  7001.       RETURN
  7002. C
  7003. C
  7004.       END
  7005.