home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / e / e003 / 14.ddi / MOD4.FOR < prev    next >
Encoding:
Text File  |  1987-04-18  |  44.7 KB  |  559 lines

  1.       SUBROUTINE RECOOR(LIMIT,NUMEL,NSTOR,X,Y,Z,ICON,AX,AY              MOD05524
  2.      1,ITYPE,IPS,MTYP,THICK,BETA,IELD)                                  MOD05525
  3.       COMMON/UNIT/IN,IO,ID1,ID2,ID3,ITER,IS6,I30,I57,I58,I60            MOD05526
  4.      1,I22,I26,I27                                                      MOD05527
  5.       COMMON/TERM1/IDIG,IELTOT,NODTOT                                   MOD05528
  6.       DIMENSION NSTOR(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT),ICON(NUMEL,20)  MOD05529
  7.      1,AX(LIMIT),AY(LIMIT),ITYPE(NUMEL),IPS(NUMEL),MTYP(NUMEL)          MOD05530
  8.      2,THICK(NUMEL),BETA(NUMEL),IELD(NUMEL),IKAR(20)                    MOD05531
  9.       REWIND I26                                                        MOD05532
  10.       ITO=0                                                             MOD05533
  11. 20    READ(I26,5,END=100,ERR=100)I,XOL,YOL,ZOL,BX,BY                    MOD05534
  12.       IF(I.LT.0)GO TO 200                                               MOD05535
  13.       IF(I.GT.LIMIT)CALL PRTERR(7)                                      MOD05536
  14.       NSTOR(I)=I                                                        MOD05537
  15.       ITO=ITO+1                                                         MOD05538
  16.       X(I)=XOL                                                          MOD05539
  17.       Y(I)=YOL                                                          MOD05540
  18.       Z(I)=ZOL                                                          MOD05541
  19.       AX(I)=BX                                                          MOD05542
  20.       AY(I)=BY                                                          MOD05543
  21. 5     FORMAT(I5,5F15.5)                                                 MOD05544
  22.       GO TO 20                                                          MOD05545
  23. 100   WRITE(IO,300)ITO                                                  MOD05546
  24. 300   FORMAT(10X,'TOTAL NODES READ FROM PREVIOUS RUN ARE = ',I5)        MOD05547
  25.       NODTOT=ITO                                                        MOD05548
  26.       RETURN                                                            MOD05549
  27. 200   WRITE(IO,300)ITO                                                  MOD05550
  28.       NODTOT=ITO                                                        MOD05551
  29.       ITO=0                                                             MOD05552
  30. 201   READ(I26,205,END=250,ERR=250)J,(IKAR(K),K=1,20)                   MOD05553
  31.       IF(J.LT.0)GO TO 250                                               MOD05554
  32.       READ(I26,207)ITYPE(J),IPS(J),MTYP(J),THICK(J),BETA(J)             MOD05555
  33.      1,IELD(J)                                                          MOD05556
  34. 205   FORMAT(21I5)                                                      MOD05557
  35. 207   FORMAT(3I5,2F15.5,I5)                                             MOD05558
  36.       DO 260 MY=1,20                                                    MOD05559
  37.       ICON(J,MY)=IKAR(MY)                                               MOD05560
  38. 260   CONTINUE                                                          MOD05561
  39.       ITO=ITO+1                                                         MOD05562
  40.       GO TO 201                                                         MOD05563
  41. 250   WRITE(IO,255)ITO                                                  MOD05564
  42.       IELTOT=ITO                                                        MOD05565
  43. 255   FORMAT(10X,'TOTAL ELEMENT READ FROM PREVIOUS RUN =',I5)           MOD05566
  44.       RETURN                                                            MOD05567
  45.       END                                                               MOD05568
  46.       SUBROUTINE RECO1(LIMIT,NODE,X,Y,Z)                                MOD05496
  47.       LOGICAL IGET,RGET                                                 MOD05497
  48.       COMMON/UNIT/INN,IOUT,IDUMY(11),I27                                MOD05498
  49.       DIMENSION NODE(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT)                  MOD05499
  50.       IF(IGET(ITOT))CALL PRTERR(0)                                      MOD05500
  51.       IF(ITOT.GT.0)GO TO 10                                             MOD05501
  52.       WRITE(IOUT,8)ITOT                                                 MOD05502
  53. 8     FORMAT('  *** F *** TOTAL NODES TO BE READ FROM FILE 27 IS =',I5,/MOD05503
  54.      1,10X,'INPUT THE NUMBER OF NODES YOU WISH TO READ FROM FILE 27 IN' MOD05504
  55.      2,/,10X,'RCOORDINATE CARD')                                        MOD05505
  56.       STOP                                                              MOD05506
  57. 10    REWIND I27                                                        MOD05507
  58.       ISAVE=INN                                                         MOD05508
  59.       INN=I27                                                           MOD05509
  60.       DO 20 I=1,ITOT                                                    MOD05510
  61.       CALL GETNL(GET001)                                                MOD05511
  62.       IF(IGET(J))CALL PRTERR(0)                                         MOD05512
  63.       IF(J.GT.LIMIT)CALL PRTERR(7)                                      MOD05513
  64.       NODE(J)=J                                                         MOD05514
  65.       IF(RGET(X(J)))CALL PRTERR(0)                                      MOD05515
  66.       IF(RGET(Y(J)))CALL PRTERR(0)                                      MOD05516
  67.       IF(RGET(Z(J)))CALL PRTERR(0)                                      MOD05517
  68. 20    CONTINUE                                                          MOD05518
  69.       WRITE(IOUT,40)ITOT                                                MOD05519
  70. 40    FORMAT('  ++ W ++ TOTAL NODES READ FROM FILE 27 ARE =',I5)        MOD05520
  71.       INN=ISAVE                                                         MOD05521
  72.       RETURN                                                            MOD05522
  73.       END                                                               MOD05523
  74.       SUBROUTINE CG1(IECHO)                                             MOD00429
  75. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC               MOD00430
  76.       IMPLICIT REAL*8(A-H,O-Z)                                          MOD00431
  77.       REAL A                                                            MOD00432
  78.       COMMON /SAP6/ ISAP6                                               MOD00433
  79.       COMMON /CGELE/ I                                                  MOD00434
  80.       COMMON /UNIT/ INN,IOUT,IP                                         MOD00435
  81.       COMMON   A(1)                                                     MOD00436
  82.       IB = 15                                                           MOD00437
  83.       REWIND IP                                                         MOD00438
  84.       REWIND IB                                                         MOD00439
  85.       READ (IP,11) DUMM                                                 MOD00440
  86. 11    FORMAT(A1)                                                        MOD00441
  87.       READ (IP,11) DUMM                                                 MOD00442
  88.       READ(IP,101) NTOT                                                 MOD00443
  89. 101   FORMAT(I10)                                                       MOD00444
  90.       N1 = 1                                                            MOD00445
  91.       N2 = N1 + NTOT*3*2                                                MOD00446
  92.       CALL CENT(A(N1),A(N2),IECHO,IB,NTOT)                              MOD00447
  93.       RETURN                                                            MOD00448
  94.       END                                                               MOD00449
  95. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC               MOD00450
  96.       SUBROUTINE JACOB1                                                 MOD03521
  97.       IMPLICIT REAL*8 (A-H,O-Z)                                         MOD03522
  98.       COMMON A(1)                                                       MOD03523
  99.       COMMON/JACHEK/ISEE                                                MOD03524
  100.       COMMON/UNIT/INN,IOUT,IP                                           MOD03525
  101.       ISEE=1                                                            MOD03526
  102.       CALL SECOND(T1)                                                   MOD03527
  103.       WRITE(IOUT,15)                                                    MOD03528
  104. 15    FORMAT(1X,/,                                                      MOD03529
  105.      1'   * * *  CALCULATING JACOBIAN AND ITS DETERMINANT * * *')       MOD03530
  106.       REWIND IP                                                         MOD03531
  107.       READ(IP,11,END=100,ERR=100)DUMM                                   MOD03532
  108. 11    FORMAT(A1)                                                        MOD03533
  109.       READ(IP,11,END=100,ERR=100)DUMM                                   MOD03534
  110.       READ(IP,101,END=100,ERR=100)NTOT                                  MOD03535
  111. 101   FORMAT(I10)                                                       MOD03536
  112.       N1=1                                                              MOD03537
  113.       CALL JACOB2(NTOT,A(N1))                                           MOD03538
  114.       ISEE=0                                                            MOD03539
  115.       CALL SECOND(T2)                                                   MOD03540
  116.       TT=T2-T1                                                          MOD03541
  117.       WRITE(IOUT,300)TT                                                 MOD03542
  118. 300   FORMAT(' . . . .  TOTAL CPU SECOND FOR JACOBIAN CALCULATION ='    MOD03543
  119.      1,E12.5)                                                           MOD03544
  120.       RETURN                                                            MOD03545
  121. 100   WRITE(IOUT,104)                                                   MOD03546
  122. 104   FORMAT('  ++ F ++ PLOT FILE IS MISSING , YOU CAN USE'             MOD03547
  123.      1,/,10X,'THE JACOB COMMAND AFTER GENERATING ALL THE NODES AND'     MOD03548
  124.      2,/,10X,'ELEMENT CONNECTIONS AND SAVE THEM ON DISK USING '         MOD03549
  125.      3,/,10X,'NWRITE AND EWRITE COMMAND ')                              MOD03550
  126.       STOP                                                              MOD03551
  127.       END                                                               MOD03552
  128.       SUBROUTINE PUSH1(LIMIT,COOR,GAUSS1)                               MOD05270
  129.       LOGICAL IGET,RGET,SKIP,WH                                         MOD05271
  130.       INTEGER AGET,AGETW,WHO,SSS,STWO,TWO,WHO2                          MOD05272
  131.       COMMON/UNIT/INN,IOO                                               MOD05273
  132.       DIMENSION COOR(LIMIT,3),INDE(8),NEWIND(8),GLOB(3),GAUSS(2)        MOD05274
  133.      1,INDE1(8),INDE2(8),GAUSS1(LIMIT,2)                                MOD05275
  134.       DATA SSS/1HS/,TWO/1H2/,LLL/1HL/                                   MOD05276
  135.       IF(IGET(NTIM))CALL PRTERR(0)                                      MOD05277
  136.       IF(IGET(N1))CALL PRTERR(0)                                        MOD05278
  137.       IF(IGET(N2))CALL PRTERR(0)                                        MOD05279
  138.       IF(IGET(INC))CALL PRTERR(0)                                       MOD05280
  139.       STWO=0                                                            MOD05281
  140.       LTWO=0                                                            MOD05282
  141.       ICON=0                                                            MOD05283
  142.       WHO=AGETW(0)                                                      MOD05284
  143.       WHO2=AGET(2)                                                      MOD05285
  144.       SKIP=.FALSE.                                                      MOD05286
  145.       WH=.FALSE.                                                        MOD05287
  146.       IF(RGET(ZONE))GO TO 10                                            MOD05288
  147.       IF(ZONE.LE.0.0)ZONE=0.001                                         MOD05289
  148.       IF(IGET(IADD1))GO TO 10                                           MOD05290
  149.       IF(IGET(IADD2))GO TO 10                                           MOD05291
  150.       IF(IGET(IADD3))GO TO 10                                           MOD05292
  151.       IF(WHO.EQ.SSS)SKIP=.TRUE.                                         MOD05293
  152.       IF(WHO.EQ.TWO.AND.WHO2.EQ.SSS)STWO=1                              MOD05294
  153.       IF(WHO.EQ.SSS.AND.WHO2.EQ.LLL)LTWO=1                              MOD05295
  154.       IF(WHO.EQ.LLL.AND.WHO2.EQ.SSS)LTWO=1                              MOD05296
  155.       IF(STWO.NE.1)GO TO 5                                              MOD05297
  156.       SKIP=.TRUE.                                                       MOD05298
  157. 5     IF(LTWO.NE.1)GO TO 6                                              MOD05299
  158.       SKIP=.TRUE.                                                       MOD05300
  159. 6     CONTINUE                                                          MOD05301
  160.       GAUSS(2)=0.                                                       MOD05302
  161.       IF(N1.LE.0)N1=1                                                   MOD05303
  162.       IF(N2.LE.0)N2=N1                                                  MOD05304
  163.       IF(INC.EQ.0)INC=1                                                 MOD05305
  164.       IF(IADD1.EQ.0)IADD1=1                                             MOD05306
  165.       IF(NTIM.LE.0)NTIM=1                                               MOD05307
  166. 10    CALL GETNL(0)                                                     MOD05308
  167.       NUM1=0                                                            MOD05309
  168.       DO 15 I=1,8                                                       MOD05310
  169.       IF(IGET(INDE1(I)))GO TO 10                                        MOD05311
  170.       IF (INDE1(I).GT.0) NUM1=NUM1+1                                    MOD05312
  171. 15    CONTINUE                                                          MOD05313
  172.       IF(STWO.EQ.1.OR.LTWO.EQ.1)GO TO 7                                 MOD05314
  173.       GO TO 16                                                          MOD05315
  174. 7     CALL GETNL(0)                                                     MOD05316
  175.       NUM2=0                                                            MOD05317
  176.       DO 17 I=1,8                                                       MOD05318
  177.       IF(IGET(INDE2(I)))GO TO 10                                        MOD05319
  178.       IF(INDE2(I).GT.0)NUM2=NUM2+1                                      MOD05320
  179. 17    CONTINUE                                                          MOD05321
  180. 16    NUM=NUM1                                                          MOD05322
  181.       DO 18 I=1,8                                                       MOD05323
  182.       INDE(I)=INDE1(I)                                                  MOD05324
  183. 18    CONTINUE                                                          MOD05325
  184.       DO 100 K=1,NTIM                                                   MOD05326
  185. 19    IF (SKIP) NSEL=ICRSEL(INDE,NUM,NEWIND)                            MOD05327
  186.       DELTA=0.0                                                         MOD05328
  187.       ICON=ICON+1                                                       MOD05329
  188.       DO 200 NODE=N1,N2,INC                                             MOD05330
  189.       DO 210 I=1,3                                                      MOD05331
  190. 210   GLOB(I)=COOR(NODE,I)                                              MOD05332
  191.       IF (SKIP) GO TO 220                                               MOD05333
  192.       CALL LININT (LIMIT,NUM,COOR,INDE,GLOB,GAUSS,I)                    MOD05334
  193.       GAUSS1(NODE,1)=GAUSS(1)                                           MOD05335
  194.       GAUSS1(NODE,2)=GAUSS(2)                                           MOD05336
  195.       IF (I.NE.0) WRITE (IOO,1)                                         MOD05337
  196. 1     FORMAT (1X,'+++ F +++',1X,'DEGENERATE LINE')                      MOD05338
  197.       GO TO 230                                                         MOD05339
  198. 220   CALL SURINT (LIMIT,NUM,NSEL,COOR,NEWIND,GLOB,I,GAUSS)             MOD05340
  199.       GAUSS1(NODE,1)=GAUSS(1)                                           MOD05341
  200.       GAUSS1(NODE,2)=GAUSS(2)                                           MOD05342
  201.       IF (I.NE.0) WRITE (IOO,2)                                         MOD05343
  202. 2     FORMAT (1X,'+++ F +++',1X,'DEGENERATE SURFACE')                   MOD05344
  203. 230   DO 200 I=1,3                                                      MOD05345
  204.       IF(STWO.EQ.1.OR.LTWO.EQ.1)GO TO 201                               MOD05346
  205.       GO TO 200                                                         MOD05347
  206. 201   DX=ABS(COOR(NODE,I)-GLOB(I))                                      MOD05348
  207.       IF(DX.GT.DELTA)DELTA=DX                                           MOD05349
  208. 200   COOR(NODE,I)=GLOB(I)                                              MOD05350
  209.       IF(STWO.EQ.1.OR.LTWO.EQ.1)GO TO 202                               MOD05351
  210.       GO TO 60                                                          MOD05352
  211. 202   IF(DELTA.LE.ZONE)GO TO 70                                         MOD05353
  212.       IF(WH)GO TO 50                                                    MOD05354
  213.       NUM=NUM2                                                          MOD05355
  214.       DO 55 I=1,8                                                       MOD05356
  215. 55    INDE(I)=INDE2(I)                                                  MOD05357
  216.       WH=.TRUE.                                                         MOD05358
  217.       IF(LTWO.EQ.1)SKIP=.FALSE.                                         MOD05359
  218.       GO TO 19                                                          MOD05360
  219. 50    NUM=NUM1                                                          MOD05361
  220.       DO 56 I=1,8                                                       MOD05362
  221. 56    INDE(I)=INDE1(I)                                                  MOD05363
  222.       WH=.FALSE.                                                        MOD05364
  223.       IF(LTWO.EQ.1)SKIP=.TRUE.                                          MOD05365
  224.       GO TO 19                                                          MOD05366
  225. 70    IF(STWO.EQ.1)WRITE(IOO,71)ICON,ZONE                               MOD05367
  226.       IF(LTWO.EQ.1)WRITE(IOO,72)ICON,ZONE                               MOD05368
  227. 71    FORMAT(10X,'NODES ARE PUSHED ONTO INTERSECTION OF TWO SURFACES '  MOD05369
  228.      1,/,10X, 'AFTER ',I5,' ITERATIONS FOR ZONE =',E12.5)               MOD05370
  229. 72    FORMAT(10X,'NODES ARE PUSHED ONTO INTERSECTION OF LINE AND'       MOD05371
  230.      1,/,10X,'SURFACE AFTER ',I5,' ITERATIONS FOR ZONE =',E12.5)        MOD05372
  231. 60    N1=N1+IADD1                                                       MOD05373
  232.       N2=N2+IADD1                                                       MOD05374
  233.       DO 99 JJ=1,8                                                      MOD05375
  234.       INDE1(JJ)=INDE1(JJ)+IADD2                                         MOD05376
  235.       INDE2(JJ)=INDE2(JJ)+IADD3                                         MOD05377
  236. 99    CONTINUE                                                          MOD05378
  237.       ICON=0                                                            MOD05379
  238.       DELTA=0.0                                                         MOD05380
  239. 100   CONTINUE                                                          MOD05381
  240.       RETURN                                                            MOD05382
  241.       END                                                               MOD05383
  242.       SUBROUTINE LININT (LIMIT,NUM,COOR,INDEX,GLOB,R,IER)               MOD03770
  243.       DIMENSION COOR(LIMIT,3),INDEX(1),GLOB(3)                          MOD03771
  244.       DIMENSION T(3),E(3),PHI(3),PHID(3)                                MOD03772
  245.       LOGICAL SKIP                                                      MOD03773
  246.       R=.5D0                                                            MOD03774
  247.       IER=0                                                             MOD03775
  248.       SKIP=.FALSE.                                                      MOD03776
  249. 211   CONTINUE                                                          MOD03777
  250.       IF (NUM.EQ.2) GO TO 11                                            MOD03778
  251.       X=1.D0-R                                                          MOD03779
  252.       Y=.5D0-R                                                          MOD03780
  253.       PHI(1)=2.D0*X*Y                                                   MOD03781
  254.       PHI(2)=-2.D0*Y*R                                                  MOD03782
  255.       PHI(3)=4.D0*R*X                                                   MOD03783
  256.       X=4.D0*R                                                          MOD03784
  257.       PHID(1)=X-3.D0                                                    MOD03785
  258.       PHID(2)=X-1.D0                                                    MOD03786
  259.       PHID(3)=4.D0-X-X                                                  MOD03787
  260.       GO TO 22                                                          MOD03788
  261. 11    PHI(1)=1.D0-R                                                     MOD03789
  262.       PHI(2)=R                                                          MOD03790
  263.       PHID(1)=-1.D0                                                     MOD03791
  264.       PHID(2)=1.D0                                                      MOD03792
  265. 22    DO 311 I=1,3                                                      MOD03793
  266.       D=GLOB(I)                                                         MOD03794
  267.       DO 322 K=1,NUM                                                    MOD03795
  268.       J=INDEX(K)                                                        MOD03796
  269. 322   D=D-PHI(K)*COOR(J,I)                                              MOD03797
  270. 311   E(I)=D                                                            MOD03798
  271.       IF (SKIP) GO TO 222                                               MOD03799
  272.       S=0.D0                                                            MOD03800
  273.       DO 44 I=1,3                                                       MOD03801
  274.       D=0.D0                                                            MOD03802
  275.       DO 55 J=1,NUM                                                     MOD03803
  276.       K=INDEX(J)                                                        MOD03804
  277. 55    D=D+PHID(J)*COOR(K,I)                                             MOD03805
  278.       T(I)=D                                                            MOD03806
  279. 44    S=S+D**2                                                          MOD03807
  280.       IF (S.GT.0.) GO TO 66                                             MOD03808
  281.       IER=1                                                             MOD03809
  282.       RETURN                                                            MOD03810
  283. 66    S=1.D0/SQRT(S)                                                    MOD03811
  284.       DO 77 I=1,3                                                       MOD03812
  285. 77    T(I)=T(I)*S                                                       MOD03813
  286.       Y=0.D0                                                            MOD03814
  287.       DO 233 I=1,3                                                      MOD03815
  288. 233   Y=Y+E(I)*T(I)                                                     MOD03816
  289.       Y=Y*S                                                             MOD03817
  290.       SKIP=Y**2.LE.1.E-6                                                MOD03818
  291.       R=R+Y                                                             MOD03819
  292.       GO TO 211                                                         MOD03820
  293. 222   DO 88 I=1,3                                                       MOD03821
  294. 88    GLOB(I)=GLOB(I)-E(I)                                              MOD03822
  295.       RETURN                                                            MOD03823
  296.       END                                                               MOD03824
  297.       SUBROUTINE DIM1(XYZ,DEN,AREA,XM1,NOD,NTOT)                        MOD00568
  298. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC                 MOD00569
  299.       IMPLICIT REAL*8 (A-H,O-Z)                                         MOD00570
  300.       DIMENSION XYZ(NTOT,1), NOD(1), XLENG(3)                           MOD00571
  301.       SQRT(X)=DSQRT(X)                                                  MOD00572
  302.       XLENGT = 0.0                                                      MOD00573
  303.       DO 100 I = 1, 3                                                   MOD00574
  304.       XLENG(I) = XYZ(NOD(1),I)-XYZ(NOD(2),I)                            MOD00575
  305.       XLENGT = XLENGT + XLENG(I)**2                                     MOD00576
  306. 100   CONTINUE                                                          MOD00577
  307.       XLENGT = SQRT(XLENGT)                                             MOD00578
  308.       XM1 = XLENGT * AREA * DEN * 0.5                                   MOD00579
  309.       RETURN                                                            MOD00580
  310.       END                                                               MOD00581
  311. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC                 MOD00582
  312.       SUBROUTINE DIM2(XYZ,DEN,THICK,XM,NOD,IEL,KIND,NTOT,N)             MOD00603
  313. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC        MOD00604
  314.       IMPLICIT REAL*8 (A-H,O-Z)                                         MOD00605
  315.       COMMON/JACHEK/ISEE,IERR                                           MOD00606
  316.       DIMENSION XYZ(NTOT,1),XM(1),NOD(1),NOD5(4),YZ(16),DUM(3)          MOD00607
  317.       IEL = 0                                                           MOD00608
  318.       DO 100 I = 1, 8                                                   MOD00609
  319.       XM(I) = 0.0                                                       MOD00610
  320.       IF (NOD(I) .LE. 0) GO TO 100                                      MOD00611
  321.       IEL = IEL + 1                                                     MOD00612
  322. 100   CONTINUE                                                          MOD00613
  323.       IF(ISEE.EQ.1)GO TO 80                                             MOD00614
  324.       IF(KIND.EQ.6 .OR. KIND.EQ.16) GO TO 400                           MOD00615
  325. 80    II = 0                                                            MOD00616
  326.       DO 200 I = 5, 8                                                   MOD00617
  327.       NN = NOD(I)                                                       MOD00618
  328.       IF(NN .EQ. 0) GO TO 200                                           MOD00619
  329.       II = II + 1                                                       MOD00620
  330.       NOD5(II) = I                                                      MOD00621
  331. 200   CONTINUE                                                          MOD00622
  332.       NND5 = IEL -4                                                     MOD00623
  333.       I2 = 0                                                            MOD00624
  334.       DO 310 I = 1, IEL                                                 MOD00625
  335.       II = NOD(I)                                                       MOD00626
  336.       IF (I .LE. 4) GO TO 300                                           MOD00627
  337.       JJ = NOD5(I-4)                                                    MOD00628
  338.       II = NOD(JJ)                                                      MOD00629
  339. 300   I2 = I2 + 2                                                       MOD00630
  340.       YZ(I2-1) = XYZ(II,2)                                              MOD00631
  341.       YZ(I2)   = XYZ(II,3)                                              MOD00632
  342. 310   CONTINUE                                                          MOD00633
  343.       ND = 2 * IEL                                                      MOD00634
  344.       CALL QUADM(N,ND,XM,YZ,NOD5,IEL,THICK,DEN,NND5,KIND)               MOD00635
  345.       RETURN                                                            MOD00636
  346. 400   CONTINUE                                                          MOD00637
  347.       IF (KIND .EQ. 6) GO TO 450                                        MOD00638
  348.       IF (IEL.EQ.3 .OR. IEL.EQ.6) GO TO 440                             MOD00639
  349.       IEL = 4                                                           MOD00640
  350.       GO TO 450                                                         MOD00641
  351. 440   IEL = 3                                                           MOD00642
  352. 450   CALL TAREA(XYZ,NOD,1,2,3,TR,DUM,2,NTOT)                           MOD00643
  353.       TR = TR * DEN * THICK                                             MOD00644
  354.       DO 510 I = 1, 3                                                   MOD00645
  355.       XM(I) = TR                                                        MOD00646
  356. 510   CONTINUE                                                          MOD00647
  357.       IF (IEL .EQ. 4) GO TO 600                                         MOD00648
  358.       RETURN                                                            MOD00649
  359. 600   CONTINUE                                                          MOD00650
  360.       CALL TAREA(XYZ,NOD,1,3,4,TR,DUM,2,NTOT)                           MOD00651
  361.       TR = TR * DEN * THICK                                             MOD00652
  362.       XM(1) = XM(1) + TR                                                MOD00653
  363.       XM(3) = XM(3) + TR                                                MOD00654
  364.       XM(4) = XM(4) + TR                                                MOD00655
  365.       XMT = 0.0                                                         MOD00656
  366.       DO 620 I = 1, 4                                                   MOD00657
  367.       XMT = XMT + XM(I)                                                 MOD00658
  368. 620   CONTINUE                                                          MOD00659
  369.       DO 630 I = 1, 4                                                   MOD00660
  370.       XM(I) = XMT / 4.0                                                 MOD00661
  371. 630   CONTINUE                                                          MOD00662
  372.       RETURN                                                            MOD00663
  373.       END                                                               MOD00664
  374. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC                 MOD00665
  375.       SUBROUTINE DIM3(XYZ,DEN,XM,NOD,IEL,NTOT,N)                        MOD00666
  376. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC                 MOD00667
  377. CC                                                                      MOD00668
  378.       IMPLICIT REAL*8 (A-H,O-Z)                                         MOD00669
  379.       COMMON/JACHEK/ISEE,IERR                                           MOD00670
  380.       DIMENSION XYZ(NTOT,1),NOD(1),XM(1)                                MOD00671
  381.       DIMENSION XYZ1(63),NOD9(17),VECT(3),TVEC(3)                       MOD00672
  382.       ABS(X)=DABS(X)                                                    MOD00673
  383.       IEL = 0                                                           MOD00674
  384.       DO 100 I = 1, 21                                                  MOD00675
  385.       XM(I) = 0.0                                                       MOD00676
  386.       IF (NOD(I) .LE. 0) GO TO 100                                      MOD00677
  387.       IEL = IEL + 1                                                     MOD00678
  388. 100   CONTINUE                                                          MOD00679
  389.       IF ( ISEE.EQ.1) GO TO 80                                          MOD00680
  390.       IF (IEL .LE. 8) GO TO 500                                         MOD00681
  391. 80    II = 0                                                            MOD00682
  392.       DO 200 I = 9, 21                                                  MOD00683
  393.       NN = NOD(I)                                                       MOD00684
  394.       IF (NN .EQ. 0) GO TO 200                                          MOD00685
  395.       II = II + 1                                                       MOD00686
  396.       NOD9(II) = I                                                      MOD00687
  397. 200   CONTINUE                                                          MOD00688
  398.       ND = IEL * 3                                                      MOD00689
  399.       NND9 = IEL - 8                                                    MOD00690
  400.       I2 = 0                                                            MOD00691
  401.       DO 300 I = 1, IEL                                                 MOD00692
  402.       II = NOD(I)                                                       MOD00693
  403.       IF(I .LE.8) GO TO 290                                             MOD00694
  404.       JJ = NOD9(I-8)                                                    MOD00695
  405.       II = NOD(JJ)                                                      MOD00696
  406. 290   I2 = I2 + 3                                                       MOD00697
  407.       XYZ1(I2-2) = XYZ(II,1)                                            MOD00698
  408.       XYZ1(I2-1) = XYZ(II,2)                                            MOD00699
  409.       XYZ1(I2)   = XYZ(II,3)                                            MOD00700
  410. 300   CONTINUE                                                          MOD00701
  411.       IST = 0                                                           MOD00702
  412.       IELX = IEL                                                        MOD00703
  413.       CALL QUADM3(N,ND,XM,XYZ1,NOD9,IST,IEL,IELX,DEN,NND9)              MOD00704
  414.       RETURN                                                            MOD00705
  415. 500   CONTINUE                                                          MOD00706
  416.       VOL = 0.0                                                         MOD00707
  417.       IF (IEL .EQ. 8)  GO TO 800                                        MOD00708
  418.       DO 600 I = 1, 3                                                   MOD00709
  419.       VECT(I) = XYZ(NOD(5),I) - XYZ(NOD(1),I)                           MOD00710
  420. 600   CONTINUE                                                          MOD00711
  421.       CALL TAREA(XYZ,NOD,1,2,3,TR,TVEC,3,NTOT)                          MOD00712
  422.       DO 610 I = 1, 3                                                   MOD00713
  423.       VOL = VOL + ABS(VECT(I)*TVEC(I))/3.                               MOD00714
  424. 610   CONTINUE                                                          MOD00715
  425.       CALL TAREA(XYZ,NOD,1,3,6,TR,TVEC,3,NTOT)                          MOD00716
  426.       DO 620 I = 1, 3                                                   MOD00717
  427.       VOL = VOL + ABS(VECT(I)*TVEC(I))/3.                               MOD00718
  428. 620   CONTINUE                                                          MOD00719
  429.       CALL TAREA(XYZ,NOD,1,4,6,TR,TVEC,3,NTOT)                          MOD00720
  430.       DO 630 I = 1, 3                                                   MOD00721
  431.       VOL = VOL + ABS(VECT(I)*TVEC(I))/3.                               MOD00722
  432. 630   CONTINUE                                                          MOD00723
  433.       VOL = VOL / 6.0                                                   MOD00724
  434.       DO 700 I = 1, 6                                                   MOD00725
  435.       XM(I) = VOL                                                       MOD00726
  436. 700   CONTINUE                                                          MOD00727
  437.       RETURN                                                            MOD00728
  438. 800   CONTINUE                                                          MOD00729
  439.       DO 810 I = 1, 3                                                   MOD00730
  440.       VECT(I) = XYZ(NOD(6),I) - XYZ(NOD(1),I)                           MOD00731
  441. 810   CONTINUE                                                          MOD00732
  442.       CALL TAREA(XYZ,NOD,1,2,4,TR,TVEC,3,NTOT)                          MOD00733
  443.       DO 820 I = 1, 3                                                   MOD00734
  444.       VOL = VOL + ABS(VECT(I)*TVEC(I))/3.                               MOD00735
  445. 820   CONTINUE                                                          MOD00736
  446.       CALL TAREA(XYZ,NOD,1,4,8,TR,TVEC,3,NTOT)                          MOD00737
  447.       DO 830 I = 1, 3                                                   MOD00738
  448.       VOL = VOL + ABS(VECT(I)*TVEC(I))/3.                               MOD00739
  449. 830   CONTINUE                                                          MOD00740
  450.       CALL TAREA(XYZ,NOD,1,5,8,TR,TVEC,3,NTOT)                          MOD00741
  451.       DO 840 I = 1, 3                                                   MOD00742
  452.       VOL = VOL + ABS(VECT(I)*TVEC(I))/3.                               MOD00743
  453. 840   CONTINUE                                                          MOD00744
  454.       DO 900 I = 1, 3                                                   MOD00745
  455.       VECT(I) = XYZ(NOD(8),I) - XYZ(NOD(3),I)                           MOD00746
  456. 900   CONTINUE                                                          MOD00747
  457.       CALL TAREA(XYZ,NOD,2,3,4,TR,TVEC,3,NTOT)                          MOD00748
  458.       DO 910 I = 1, 3                                                   MOD00749
  459.       VOL = VOL + ABS(VECT(I)*TVEC(I))/3.                               MOD00750
  460. 910   CONTINUE                                                          MOD00751
  461.       CALL TAREA(XYZ,NOD,3,2,6,TR,TVEC,3,NTOT)                          MOD00752
  462.       DO 920 I = 1, 3                                                   MOD00753
  463.       VOL = VOL + ABS(VECT(I)*TVEC(I))/3.                               MOD00754
  464. 920   CONTINUE                                                          MOD00755
  465.       CALL TAREA(XYZ,NOD,3,7,6,TR,TVEC,3,NTOT)                          MOD00756
  466.       DO 930 I = 1, 3                                                   MOD00757
  467.       VOL = VOL + ABS(VECT(I)*TVEC(I))/3.                               MOD00758
  468. 930   CONTINUE                                                          MOD00759
  469.       VOL = VOL / 8.0                                                   MOD00760
  470.       DO 1000 I = 1, 8                                                  MOD00761
  471.       XM(I) = VOL                                                       MOD00762
  472. 1000  CONTINUE                                                          MOD00763
  473.       RETURN                                                            MOD00764
  474.       END                                                               MOD00765
  475. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC             MOD00766
  476.       SUBROUTINE CURVE(XYZ,DEN,AREA,XM1,NOD,NTOT)                       MOD00583
  477. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC                 MOD00584
  478.       IMPLICIT REAL*8 (A-H,O-Z)                                         MOD00585
  479.       DIMENSION XYZ(NTOT,1),NOD(1),VECI(3),VECJ(3)                      MOD00586
  480.       SQRT(X)=DSQRT(X)                                                  MOD00587
  481.       AA = 0                                                            MOD00588
  482.       AB = 0                                                            MOD00589
  483.       DO 100 I = 1, 3                                                   MOD00590
  484.       VECI(I) = XYZ(NOD(1),I)-XYZ(NOD(3),I)                             MOD00591
  485.       VECJ(I) = XYZ(NOD(2),I)-XYZ(NOD(3),I)                             MOD00592
  486.       AB = AB + VECI(I)*VECJ(I)                                         MOD00593
  487.       AA = AA + VECI(I)**2                                              MOD00594
  488. 100   CONTINUE                                                          MOD00595
  489.       TH =DARCOS(AB/AA)                                                 MOD00596
  490.       IF (TH .LT. 0.0) TH = TH + 3.141592                               MOD00597
  491.       XL = SQRT(AA) * TH                                                MOD00598
  492.       XM1 = XL * AREA * 0.5                                             MOD00599
  493.       RETURN                                                            MOD00600
  494.       END                                                               MOD00601
  495. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC        MOD00602
  496.       SUBROUTINE MATRI1                                                 MOD04077
  497.       LOGICAL IGET,RGET                                                 MOD04078
  498.       INTEGER AGET,AGETW                                                MOD04079
  499.       COMMON/UNIT/IN,IO,IP,I1,I2,I3,I4,I5,I6,I7,I25                     MOD04080
  500.       DIMENSION NPAR(20),ICO(7),PRO(8)                                  MOD04081
  501.       DATA ICO/1HT,1H2,1H3,1HB,1HG,1HP,1HE/                             MOD04082
  502.       KK=AGETW(0)                                                       MOD04083
  503.       DO 5 I=1,7                                                        MOD04084
  504.       IF(KK.EQ.ICO(I))GO TO 7                                           MOD04085
  505. 5     CONTINUE                                                          MOD04086
  506.       WRITE(IO,8)KK                                                     MOD04087
  507. 8     FORMAT('  +++ F +++ ELEMENT TYPE =',A1,' IN MATERIAL'             MOD04088
  508.      1,1X,'CARD IS ILLEGAL')                                            MOD04089
  509.       STOP                                                              MOD04090
  510. 7     GO TO (100,100,100,100,100,100,100),I                             MOD04091
  511. 100   IF(IGET(NPAR(3)))CALL PRTERR(0)                                   MOD04092
  512.       IF(IGET(NPAR(15)))CALL PRTERR(0)                                  MOD04093
  513.       IF(IGET(NPAR(16)))CALL PRTERR(0)                                  MOD04094
  514.       IF(IGET(NPAR(17)))CALL PRTERR(0)                                  MOD04095
  515.       IF(NPAR(3).LE.0)NPAR(3)=1                                         MOD04096
  516.       IF(NPAR(15).LE.0)NPAR(15)=1                                       MOD04097
  517.       IF(NPAR(16).LE.0)NPAR(16)=1                                       MOD04098
  518.       IF(NPAR(17).LE.0)NPAR(17)=1                                       MOD04099
  519.       WRITE(I25,3500)(NPAR(K),K=3,20)                                   MOD04100
  520. 3500  FORMAT(18I5)                                                      MOD04101
  521.       KK=NPAR(16)                                                       MOD04102
  522.       DO 3000 KKJJ=1,KK                                                 MOD04103
  523.       CALL GETNL(GET001)                                                MOD04104
  524.       IF(IGET(N))CALL PRTERR(0)                                         MOD04105
  525.       IF(NPAR(15).EQ.2)GO TO 11                                         MOD04106
  526.       IF(RGET(E))CALL PRTERR(0)                                         MOD04107
  527.       IF(RGET(THERM))CALL PRTERR(0)                                     MOD04108
  528.       IF(RGET(AREA))CALL PRTERR(0)                                      MOD04109
  529.       IF(RGET(DEN))CALL PRTERR(0)                                       MOD04110
  530.       IF(RGET(STRAI))CALL PRTERR(0)                                     MOD04111
  531.       WRITE(I25,3501)N,E,THERM,AREA,DEN,STRAI                           MOD04112
  532. 3501  FORMAT(I5,5E14.7)                                                 MOD04113
  533.       GO TO 3000                                                        MOD04114
  534. 11    IF(RGET(AREA))CALL PRTERR(0)                                      MOD04115
  535.       IF(RGET(DEN))CALL PRTERR(0)                                       MOD04116
  536.       IF(RGET(STRAI))CALL PRTERR(0)                                     MOD04117
  537.       WRITE(I25,3503)N,AREA,DEN,STRAI                                   MOD04118
  538. 3503  FORMAT(I5,3E14.7)                                                 MOD04119
  539.       NCON=NPAR(17)                                                     MOD04120
  540. 29    CALL GETNL(GET001)                                                MOD04121
  541.       ICOUNT=0                                                          MOD04122
  542.       DO 30 J=1,NCON                                                    MOD04123
  543.       ICOUNT=ICOUNT+1                                                   MOD04124
  544.       IF(RGET(PRO(ICOUNT)))GO TO 29                                     MOD04125
  545.       IF(ICOUNT.EQ.8.AND.J.NE.NCON)CALL GETNL(GET001)                   MOD04126
  546.       IF(ICOUNT.EQ.8.OR.J.EQ.NCON)WRITE(I25,3505)(PRO(M),M=1,8)         MOD04127
  547.       IF(ICOUNT.EQ.8.OR.J.EQ.NCON)GO TO 33                              MOD04128
  548. 3505  FORMAT(8E14.7)                                                    MOD04129
  549.       IF(ICOUNT.EQ.8)ICOUNT=0                                           MOD04130
  550.       GO TO 30                                                          MOD04131
  551. 33    DO 34 M=1,8                                                       MOD04132
  552.       PRO(M)=0.0                                                        MOD04133
  553. 34    CONTINUE                                                          MOD04134
  554.       IF(ICOUNT.EQ.8)ICOUNT=0                                           MOD04135
  555. 30    CONTINUE                                                          MOD04136
  556. 3000  CONTINUE                                                          MOD04137
  557.       RETURN                                                            MOD04138
  558.       END                                                               MOD04139
  559.