home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / e / e003 / 2.ddi / MODEL04.FOR < prev    next >
Encoding:
Text File  |  1987-09-17  |  69.4 KB  |  868 lines

  1.       SUBROUTINE FCOPY(ID,IF)                                           00086440
  2.       RETURN                                                            00086450
  3.       END                                                               00086460
  4.       SUBROUTINE  AUTBND(IES,NUMNP,NMP,NML,NUMEL,NUMEL2)                00019870
  5.       IMPLICIT REAL*8(A-H,O-Z)                                          00019880
  6.       REAL*8  NPAR                                                      00019890
  7.       COMMON A(1)                                                       00019900
  8.       COMMON /ELPAR/ NPAR(14),NUMN ,MBAND,NELTYP,N1,N2,N3,N4,N5,MTOT,NEQ00019910
  9.      & ,RRELPA(24)                                                      R0019911
  10.       DIMENSION C(3),ST(3)                                              00019920
  11.       COMMON/TRASH/ ND(100), COSN(100,3),RRTRAS(140)                    R0019930
  12.       COMMON/JUNK/NSN,I,D,J,K,L,II,NSN1,NC,NDOF,N6,DF,N,LX,JL,J1,L1,IL, 00019940
  13.      & RRJUNK(217)                                                      R0019941
  14.       DATA C/2HNM,2HND,2HNR/                                            00019950
  15.       REWIND 1                                                          00019960
  16.       NSN1=0                                                            00019970
  17.       II=1                                                              00019980
  18.       NZ=NUMNP                                                          00019990
  19.       NMP=NUMNP+1                                                       00020000
  20.       CALL CNSTR2 (0,NMP,A(1),NZ,NC,NUMEL2,JL,ND, COSN,NS,ST)           00020010
  21.       NML=NUMEL                                                         00020020
  22.   100 READ(5,110)NSN,D,ST                                               00020030
  23.       IF(NSN.EQ.0) RETURN                                               00020040
  24.   110 FORMAT( I5,A2,3X,3F10.0)                                          00020050
  25.                                                                         00020060
  26.       NC=0                                                              00020070
  27.       NS=0                                                              00020080
  28.       DO 120 I=1,3                                                      00020090
  29.       IF(ST(I).NE.0.0) NS=1                                             00020100
  30.       IF(D.EQ.C(I)) NC=I                                                00020110
  31.   120 CONTINUE                                                          00020120
  32.       IF(NC.EQ.0) WRITE(6,130)NSN                                       00020130
  33.       IF(NC.EQ.1) WRITE(6,140)NSN                                       00020140
  34.       IF(NC.EQ.2) WRITE(6,150)NSN                                       00020150
  35.       IF(NC.EQ.3) WRITE(6,160)NSN                                       00020160
  36.   130 FORMAT (1H0,20X,33H NO CONSTRAINTS SPEC. FOR SURFACE,I5)          00020170
  37.   140 FORMAT (1H0,20X,31H  CONSTRAINTS SPEC. FOR SURFACE,I5,7H ------,  00020180
  38.      $15HNO MOTION------)                                               00020190
  39.   150 FORMAT (1H0,20X,31H  CONSTRAINTS SPEC. FOR SURFACE,I5,7H ------,  00020200
  40.      $18HNO DISPLACEMENT---)                                            00020210
  41.   160 FORMAT (1H0,20X,31H  CONSTRAINTS SPEC. FOR SURFACE,I5,7H ------,  00020220
  42.      $15HNO ROTATION----)                                               00020230
  43.       IF(NC.EQ.0) GO TO 100                                             00020240
  44.       IF(NSN.LE.NSN1) REWIND 1                                          00020250
  45.       IF(NSN.LE.NSN1) II=1                                              00020260
  46.       NSN1=NSN                                                          00020270
  47.       DO  180 I=II,IES                                                  00020280
  48.       IL=I                                                              00020290
  49.       READ (1) J1,L1                                                    00020300
  50.       LX=L1/100+1                                                       00020310
  51.       IF(NSN.EQ.J1)  GO TO 190                                          00020320
  52.       DO  170 J=1,LX                                                    00020330
  53.       JL=100                                                            00020340
  54.       IF(J.EQ.LX)  JL=L1-(LX-1)*100                                     00020350
  55.       READ (1) (ND(K),( COSN(K,M),M=1,3),K=1,JL)                        00020360
  56.   170 CONTINUE                                                          00020370
  57.   180 CONTINUE                                                          00020380
  58.   190 II=IL                                                             00020390
  59.       IF(NSN.EQ.J1) GO TO 210                                           00020400
  60.       WRITE(6,200)NSN                                                   00020410
  61.   200 FORMAT (1X ,20X,44H NO DIRECTION COSINES COULD BE FOUND FOR SUR,  00020420
  62.      $4HFACE,I5)                                                        00020430
  63.       GO TO 100                                                         00020440
  64.   210 DO 250 I=1,LX                                                     00020450
  65.       JL=100                                                            00020460
  66.       IF(I.EQ.LX)  JL=L1-(LX-1)*100                                     00020470
  67.       READ (1) (ND(K),( COSN(K,M),M=1,3),K=1,JL)                        00020480
  68.       DO  240 J=1,JL                                                    00020490
  69.       NDOF=0                                                            00020500
  70.       DO 220 K=1,3                                                      00020510
  71.       DF=  DABS( COSN(J,K) )                                            00020520
  72.       IF(DF.GT.0.999)NDOF=K                                             00020530
  73.   220 CONTINUE                                                          00020540
  74.       IF(NS.EQ.1) NDOF=0                                                00020550
  75.       IF(NDOF.EQ.0) NMP=NMP+1                                           00020560
  76.       N6=NMP*3+ 1                                                       00020570
  77.       IF(N6.LT.MTOT) GO TO  240                                         00020580
  78.       WRITE(6,230)NSN                                                   00020590
  79.   230 FORMAT (1X ,20X,43HTHERE ARE TOO MANY NODES REQUIRING BOUNDARY,/, 00020600
  80.      $20X,48HELEMENTS. MANUAL GENERATION OF BOUNDARY ELEMENTS/,20X      00020610
  81.      $,45HMAY BE REQUIRED. EXECUTION STOPPED ON SURFACE,I5)             00020620
  82.       CALL CLOSE                                                        00020630
  83.       CALL EXIT                                                         00020640
  84.   240 CONTINUE                                                          00020650
  85.       CALL CNSTR2 (1,NMP,A(1),NZ,NC,NUMEL2,JL,ND, COSN,NS,ST)           00020660
  86.   250 CONTINUE                                                          00020670
  87.       GO TO 100                                                         00020680
  88.       END                                                               00020690
  89.       SUBROUTINE CNSTR2(KK,NMZ,ID,N,NC,NUMEL2,JL,ND, COSN,NS,ST)        00045020
  90.       IMPLICIT REAL*8(A-H,O-Z)                                          00045030
  91.       REAL*8  ID                                                        00045040
  92.       DIMENSION  ID(NMZ,3)                                              00045050
  93.       DIMENSION X(3) ,ND(100), COSN(100,3)                              00045060
  94.       COMMON/PREP/XMX,XAD,KSKIP,NDYN,I1,RRPREP(7)                       R0045070
  95.       COMMON/JUNK/ DUM(100),          NM,I,Z(5),J,NRJUNK(241)           R0045080
  96.       DIMENSION Y(3),ST(3)                                              00045090
  97.       REWIND 8                                                          00045100
  98.       READ (8)  ((ID(I,J),J=1,3),I=1,N)                                 00045110
  99.       IF(KK.GT.0) GO TO 110                                             00045120
  100.       NM=NMZ                                                            00045130
  101.       XAD1I=1.0+XAD+I1                                                  00045140
  102.       DO 100 I=1,3                                                      00045150
  103.   100 ID(NM,I)=XAD1I                                                    00045160
  104.       GO TO 170                                                         00045170
  105.   110 NMP=N                                                             00045180
  106.       DO 160 J=1,JL                                                     00045190
  107.       NDOF=0                                                            00045200
  108.       DO 120 K=1,3                                                      00045210
  109.       Y(K)=ST(K)                                                        00045220
  110.       DF=  DABS( COSN(J,K) )                                            00045230
  111.       IF(DF.GT.0.999)NDOF=K                                             00045240
  112.   120 X(K)= COSN(J,K)                                                   00045250
  113.       N=ND(J)                                                           00045260
  114.       IF(NS.EQ.1) NDOF=0                                                00045270
  115.   130 IF(NDOF.GT.0) GO TO 150                                           00045280
  116.       NMP=NMP+1                                                         00045290
  117.       SC=01.                                                            00045300
  118.       IF(NC.EQ.1) SC=11.                                                00045310
  119.       IF(NC.EQ.2) SC=10.                                                00045320
  120.       DO 140 I=1,3                                                      00045330
  121.   140 ID(NMP,I)= X(I)/XMX+XAD+1.0+I1                                    00045340
  122.       NUMEL2=NUMEL2+1                                                   00045350
  123.       Z(1)=N                                                            00045360
  124.       Z(2)=NM                                                           00045370
  125.       Z(3)=NMP                                                          00045380
  126.       Z(4)=0                                                            00045390
  127.       Z(5)=0                                                            00045400
  128.       WRITE (9) Z,SC,Y                                                  00045410
  129.       GO TO 160                                                         00045420
  130.   150 NN=ID(N,NDOF)                                                     00045430
  131.       I=I1                                                              00045440
  132.       IF(NC.EQ.1) I=I+1                                                 00045450
  133.       IF(NC.EQ.2) I=1                                                   00045460
  134.       IF(NN.EQ.1.AND.I.EQ.I1) I=I1+1                                    00045470
  135.       IF( I.EQ.1.AND.NN.EQ.I1)I=I1+1                                    00045480
  136.       IF(NN.GT.I1) I=NN                                                 00045490
  137.       ID(N,NDOF) =(ID(N,NDOF)-NN)+I                                     00045500
  138.   160 CONTINUE                                                          00045510
  139.   170 CONTINUE                                                          00045520
  140.       REWIND 8                                                          00045530
  141.       NMP=NMZ                                                           00045540
  142.       N=NMP                                                             00045550
  143.       WRITE (8) ((ID(I,J),J=1,3),I=1,NMP)                               00045560
  144.       RETURN                                                            00045570
  145.       END                                                               00045580
  146.       SUBROUTINE AUTPR(NUMEL,ID2,IES,ID4,NADEL,NADND)                   00020700
  147.       IMPLICIT REAL*8(A-H,O-Z)                                          00020710
  148.       REAL*8  ID2                                                       00020720
  149.       REAL*8  ID4                                                       00020730
  150.       DIMENSION ID4(NADEL,NADND)                                        00020740
  151.       DIMENSION ID2(NUMEL,5)                                            00020750
  152.       COMMON/JUNK/I,J,K,N,J1,J2,J3,J4,NPT,NSN,NSN1,II,IL,LX,KM,NNN,NN1, R0020760
  153.      & NRJUNK(437)                                                      R0020761
  154.       COMMON/TRASH/ IA( 20),RRTRAS(480)                                 R0020770
  155.       REWIND 2                                                          00020780
  156.       II=1                                                              00020790
  157.       NSN1=0                                                            00020800
  158.       REWIND 4                                                          00020810
  159.       READ (4) ((ID2(I,J),J=1,5),I=1,NUMEL)                             00020820
  160.       IF(NADEL.GT.1) READ(4) ((ID4(I,J),J=1,NADND),I=1,NUMEL)           00020830
  161.   100 READ(5,110)NSN,NPT                                                00020840
  162.       IF(NSN.EQ.0)  GO TO 220                                           00020850
  163.   110 FORMAT (2I5)                                                      00020860
  164.       IF(NSN.LT.NSN1) REWIND 2                                          00020870
  165.       IF(NSN.LT.NSN1) II=1                                              00020880
  166.       NSN1=NSN                                                          00020890
  167.       DO 130 I=II,IES                                                   00020900
  168.       IL=I                                                              00020910
  169.       READ (2) J1,J2,J3,J4                                              00020920
  170.       LX=(J4-16)/20+1                                                   00020930
  171.       IF(NSN.EQ.J1) GO TO 140                                           00020940
  172.       JL=16                                                             00020950
  173.       IF(J4.LE.16) JL=J4                                                00020960
  174.       READ (2)  (IA(K),K=1,JL)                                          00020970
  175.       IF(J4.LE.16) GO TO 130                                            00020980
  176.       DO 120 J=1,LX                                                     00020990
  177.       JL=20                                                             00021000
  178.       IF(J.EQ.LX) JL=J4-(LX-1)*20 -16                                   00021010
  179.       IF(JL.EQ.0)  GO TO 130                                            00021020
  180.       READ (2)  (IA(K),K=1,JL)                                          00021030
  181.   120 CONTINUE                                                          00021040
  182.   130 CONTINUE                                                          00021050
  183.   140 II=IL                                                             00021060
  184.       IF(NSN.EQ.J1) GO TO 160                                           00021070
  185.       WRITE(6,150)NSN                                                   00021080
  186.   150 FORMAT (1H0,20X, 38H NO DATA FOUND TO ALLOW PRESSURE TO BE/20X,   00021090
  187.      $   18HAPPLIED TO SURFACE,I5)                                      00021100
  188.       GO TO 100                                                         00021110
  189.   160 CONTINUE                                                          00021120
  190.       WRITE(6,170)NPT,NSN                                               00021130
  191.   170 FORMAT(1H0,20X, 13HPRESSURE TYPE,I5, 28H IS BEING APPLIED TO SURFA00021140
  192.      $CE, I5//)                                                         00021150
  193.       JL=16                                                             00021160
  194.       IF(J4.LE.16) JL=J4                                                00021170
  195.       READ (2)  (IA(K),K=1,JL)                                          00021180
  196.       KM=10000                                                          00021190
  197.       NPTKM=NPT*KM                                                      00021200
  198.       I=0                                                               00021210
  199.       GO TO 190                                                         00021220
  200.   180 I=I+1                                                             00021230
  201.       IF(J4.LE.16) GO TO 210                                            00021240
  202.       JL=20                                                             00021250
  203.       IF(I.EQ.LX) JL=J4-(LX-1)*20 -16                                   00021260
  204.       IF(JL.EQ.0) GO TO 210                                             00021270
  205.       READ (2) (IA(K),K=1,JL)                                           00021280
  206.   190 DO 200 J=1,JL                                                     00021290
  207.       N=IA(J)                                                           00021300
  208.       ZNN=ID2(N,5)                                                      00021310
  209.       NN1=ZNN/KM                                                        00021320
  210.       NN1= MOD(NN1,100)*KM                                              00021330
  211.       ZNN=ZNN-NN1+NPTKM                                                 00021340
  212.       ID2( N,5)=ZNN                                                     00021350
  213.   200 CONTINUE                                                          00021360
  214.   210 IF(I.LT.LX) GO TO 180                                             00021370
  215.       GO TO 100                                                         00021380
  216.   220 REWIND 4                                                          00021390
  217.       WRITE (4) ((ID2(I,J),J=1,5),I=1,NUMEL)                            00021400
  218.       IF(NADEL.GT.1)WRITE(4) ((ID4(I,J),J=1,NADND),I=1,NUMEL)           00021410
  219.       RETURN                                                            00021420
  220.       END                                                               00021430
  221.       SUBROUTINE NODINP (NC,NUMNP,NP,ID,NZZ)                            00155700
  222.       IMPLICIT REAL*8(A-H,O-Z)                                          00155710
  223.       REAL*8  ID                                                        00155720
  224.       DIMENSION ID(NZZ,3)                                               00155730
  225.       COMMON/PREP/XMX,XAD,KSKIP,NDYN,I1,I99,POS,PRTCOD                  00155740
  226.      $              ,POSSAV,PRTOFF,PRTON,PRTDUM,IDIRC                   00155750
  227.       DIMENSION C(3)                                                    00155760
  228.       DIMENSION C1(4)                                                   00155770
  229.       COMMON/QTSARG/ X(3,50),Y(3,50),Z(3,50),TI(3,3,50),XC(3),XI(3)     00155780
  230.      $,XX(3),DX(3)                                                      00155790
  231.      $,CORD(20,3),PERR,PERS,PERT,H(20),CZ(3),RRQTSA(2)                  R0155800
  232.       DIMENSION NOD(8),N3D(20)                                          00155810
  233.       DATA  C/ 4HRECT,4HSPHR,4HCYLD/                                    00155820
  234.       DATA C1/1H ,1HR,1HS,1HC/                                          00155830
  235.         CALL FILES(26)                                                  00155840
  236.       XM=XMX/2.                                                         00155850
  237.       IF(PRTCOD.EQ.PRTOFF) GO TO 195                                    00155860
  238.       IF(POS.EQ.PRTDUM.AND.PRTCOD.NE.PRTON) GO TO 195                   00155870
  239.       WRITE(6,100)                                                      00155880
  240.   100 FORMAT (1X ,20X,32HNODAL POINT COORDINATES AS INPUT)              00155890
  241.       WRITE(6,110)                                                      00155900
  242.       WRITE(6,130)                                                      00155910
  243.       WRITE(6,140)                                                      00155920
  244.       WRITE(6,170)                                                      00155930
  245.       WRITE(6,150)                                                      00155940
  246.       WRITE(6,120)                                                      00155950
  247.       WRITE(6,130)                                                      00155960
  248.       WRITE(6,140)                                                      00155970
  249.       WRITE(6,170)                                                      00155980
  250.       WRITE(6,160)                                                      00155990
  251.       WRITE(6,180)                                                      00156000
  252.   110 FORMAT (1H0,20X,27HFOR CYLINDRICAL COORDINATES/)                  00156010
  253.   120 FORMAT (1H0,20X,25HFOR SPHERICAL COORDINATES/)                    00156020
  254.   130 FORMAT (1H0,20X,5HX = R)                                          00156030
  255.   140 FORMAT (1H0,20X,5HY = O)                                          00156040
  256.   150 FORMAT (1H0,20X,5HZ = Z)                                          00156050
  257.   160 FORMAT (1H0,20X,5HZ = O)                                          00156060
  258.   170 FORMAT (1H+,20X,5H    -)                                          00156070
  259.   180 FORMAT (1H+,20X,5H    / //)                                       00156080
  260.       WRITE(6,190)                                                      00156090
  261.   190 FORMAT (1H0,10X,4HNODE,11X,23HNODAL POINT COORDINATES,20X,        00156100
  262.      $6HCOORD.,10X,6HCOORD./11X,3HNO.,10X,1HX,15X,1HY,15X,1HZ,12X,      00156110
  263.      $6HSYSTEM,10X,5H TYPE      ,7H   INC.,5X,10HREF. FACT.///)         00156120
  264.   195 CONTINUE                                                          00156130
  265.       IF (NP.GT.1) REWIND 8                                             00156140
  266.       IF (NP.GT.1) READ (8) ((ID(I,J),J=1,3),I=1,NP)                    00156150
  267.       IF(NP.GT.1) NP=NP+1                                               00156160
  268.       IF(NP.GE.NUMNP) GO TO 210                                         00156170
  269.       XAD1I=XAD+1.0+I1                                                  00156180
  270.       DO 200 I=NP,NUMNP                                                 00156190
  271.       DO 200 J=1,3                                                      00156200
  272.   200 ID(I,J)=XAD1I                                                     00156210
  273.   210 KO=1                                                              00156220
  274.   220 READ (5,230) N,XX,KS,C2,KN,PER                                    00156230
  275.       IF(N.EQ.0)                   GO TO 380                            00156240
  276.       IF(N.EQ.-2) GO TO 410                                             00156250
  277.       IF(N.EQ.-3) GO TO 600                                             00156260
  278.       KT=1                                                              00156270
  279.       IF(C2.EQ.C1(3)) KT=2                                              00156280
  280.       IF(C2.EQ.C1(4)) KT=3                                              00156290
  281.       IF(KT.GT.3) GO TO 390                                             00156300
  282.       IF(PRTCOD.EQ.PRTOFF) GO TO 225                                    00156310
  283.       IF(POS.EQ.PRTDUM.AND.PRTCOD.NE.PRTON) GO TO 225                   00156320
  284.       WRITE(6,240)N,XX,KS,C(KT),KN,PER                                  00156330
  285.   225 CONTINUE                                                          00156340
  286.       IF(N.GT.NUMNP) GO TO 390                                          00156350
  287.       IF(KS.GT.NC)   GO TO 390                                          00156360
  288.   230 FORMAT(I10,3F10.0,I5,4X,A1,I5,F10.0)                              00156370
  289.   240 FORMAT (9X,I5,3(5X,F10.4),I16,11X,A4,I6,F15.5)                    00156380
  290.       IF(KO.EQ.1) GO TO 340                                             00156390
  291.       IF(KN.EQ.0)       GO TO 340                                       00156400
  292.       IF((N-NI).LT.KN)GO TO 390                                         00156410
  293.       KDT=N-NI                                                          00156420
  294.       KDT=MOD(KDT,KN)                                                   00156430
  295.       IF(KDT.NE.0) GO TO 390                                            00156440
  296.   250 NUMINT=(N-NI)/KN                                                  00156450
  297.       SUM=NUMINT                                                        00156460
  298.       IF(PER.EQ.0.0) GO TO 270                                          00156470
  299.       PER=PER/100.0                                                     00156480
  300.       LLL=NUMINT-1                                                      00156490
  301.       SUM=1.0                                                           00156500
  302.       DO 260 I=1,LLL                                                    00156510
  303.   260 SUM=SUM+PER**I                                                    00156520
  304.   270 CONTINUE                                                          00156530
  305.       IF( PER.EQ.0.) PER=1.00                                           00156540
  306.       DO 280 I=1,3                                                      00156550
  307.   280 DX(I)=(XX(I)-XI(I))/SUM                                           00156560
  308.       FACT=1.0/PER                                                      00156570
  309.       LLL=NUMINT                                                        00156580
  310.       DO 330 J=1,LLL                                                    00156590
  311.       FACT=FACT*PER                                                     00156600
  312.       NN=NI+J*KN                                                        00156610
  313.       DO 290 JJ=1,3                                                     00156620
  314.   290 XI(JJ)=XI(JJ)+DX(JJ) *FACT                                        00156630
  315.       CALL CONVER (KS,KT)                                               00156640
  316.       DO 320 JJ=1,3                                                     00156650
  317.       IF(DABS(XC(JJ)).LT.XM) GO TO 310                                  00156660
  318.       WRITE(6,300)NN                                                    00156670
  319.       KSKIP=1                                                           00156680
  320.   300 FORMAT (1X ,20HA COORDINATE OF NODE,I5,23H IS LARGER THAN THE MAX,00156690
  321.      $22H. SPECIFIED COORDINATE)                                        00156700
  322.   310 CONTINUE                                                          00156710
  323.   320 ID(NN,JJ)=XC(JJ)/XMX+XAD                                          00156720
  324.   330 CONTINUE                                                          00156730
  325.   340 KO=0                                                              00156740
  326.       NI=N                                                              00156750
  327.       DO 350 J=1,3                                                      00156760
  328.   350 XI(J)=XX(J)                                                       00156770
  329.       IF(KN.GT.0)            GO TO 220                                  00156780
  330.       CALL CONVER (KS,KT)                                               00156790
  331.       DO 370 I=1,3                                                      00156800
  332.       IF(XC(I ).LT.XM) GO TO 360                                        00156810
  333.       WRITE(6,300)N                                                     00156820
  334.       CALL CLOSE                                                        00156830
  335.       CALL EXIT                                                         00156840
  336.   360 CONTINUE                                                          00156850
  337.   370 ID(N,I)=XC(I)/XMX+XAD                                             00156860
  338.       GO TO 220                                                         00156870
  339.   380 REWIND 8                                                          00156880
  340.       WRITE (8) ((ID(I,J),J=1,3),I= 1,NUMNP)                            00156890
  341.       RETURN                                                            00156900
  342.   390 WRITE(6,400)N                                                     00156910
  343.   400 FORMAT (//20X,13HERROR ON NODE,I10//)                             00156920
  344.       KSKIP=1                                                           00156930
  345.       GO TO 220                                                         00156940
  346.   410 READ (5,420) NOD,INCS,INCT,PERS,PERT                              00156950
  347.   420 FORMAT(10I5,2F10.0)                                               00156960
  348.       IF(PERS.LE.0.0) PERS=100.                                         00156970
  349.       IF(PERT.LE.0.0) PERT=100.                                         00156980
  350.       IF(INCS.EQ.0) INCS=1                                              00156990
  351.       IF(INCT.EQ.0) INCT=NOD(2)-NOD(1)+1                                00157000
  352.       WRITE(6,430)NOD,INCS,INCT,PERS,PERT                               00157010
  353.   430 FORMAT(//20X,29HSURFACE COORDINATE GENERATION                     00157020
  354.      $        /20X,27HNODE NOS. FOR CORNERS 1-8 =,1X,8I5                00157030
  355.      $        /20X,35HNODE INCREMENT IN THE S DIRECTION =,1X,I5         00157040
  356.      $        /20X,35HNODE INCREMENT IN THE T DIRECTION =,1X,I5         00157050
  357.      $        /20X,38HREFINEMENT FACTOR IN THE S DIRECTION =,1X,F15.5   00157060
  358.      $        /20X,38HREFINEMENT FACTOR IN THE T DIRECTION =,1X,F15.5//)00157070
  359.         DO 480 I=1,8                                                    00157080
  360.       J=NOD(I)                                                          00157090
  361.       IF(J.GE.0.AND.J.LE.NUMNP) GO TO 450                               00157100
  362.       WRITE(6,440)NOD(I)                                                00157110
  363.   440 FORMAT(/20X,5HNODE ,I5,16H IS OUT OF RANGE//)                     00157120
  364.       KSKIP=1                                                           00157130
  365.       GO TO 220                                                         00157140
  366.   450 DO 460 K=1,3                                                      00157150
  367.   460 CORD(I,K)=0.0                                                     00157160
  368.       IF(J.EQ.0) GO TO 480                                              00157170
  369.       DO 470 K=1,3                                                      00157180
  370.       NNN=ID(J,K)                                                       00157190
  371.       IF(NNN.LT.0) NNN=NNN-1                                            00157200
  372.   470 CORD(I,K)=(ID(J,K)-NNN-XAD)*XMX                                   00157210
  373.   480 CONTINUE                                                          00157220
  374.       NI=4                                                              00157230
  375.       DO 490 I=5,8                                                      00157240
  376.       IF(NOD(I).GT.0) NI=8                                              00157250
  377.       H(I)=0.0                                                          00157260
  378.   490 CONTINUE                                                          00157270
  379.       DO 500 I=1,4                                                      00157280
  380.       IF(NOD(I).EQ.0) WRITE(6,510)I                                     00157290
  381.       IF(NOD(I).EQ.0) GO TO 220                                         00157300
  382.   500 CONTINUE                                                          00157310
  383.   510 FORMAT (/20X,7HCORNER ,I1,19H SHOULD NOT BE ZERO//)               00157320
  384.       NODE=NOD(1)                                                       00157330
  385.       NUMDS=(NOD(2)-NOD(1))/INCS+1                                      00157340
  386.       NUMDT=(NOD(3)-NOD(2))/INCT+1                                      00157350
  387.       NX=NOD(1)-INCS+(NUMDS*NUMDT*INCS)+(INCT-NUMDS*INCS)*(NUMDT-1)     00157360
  388.       IF(NX.EQ.NOD(3)) GO TO 515                                        00157370
  389.       WRITE(6,512)                                                      00157380
  390.   512 FORMAT(//20X,45HSURFACE GENERATION WILL BE TERMINATED BECAUSE,    00157390
  391.      $        /20X,44HEITHER SOME OF THE SUPPLIED CORNER NODE NOS.      00157400
  392.      $        /20X,38HARE WRONG OR THE INCREMENTS ARE WRONG.//)         00157410
  393.       KSKIP=1                                                           00157420
  394.       GO TO 220                                                         00157430
  395.   515 CONTINUE                                                          00157440
  396.       T=-1.                                                             00157450
  397.       PERS=PERS/100.0                                                   00157460
  398.       PERT=PERT/100.0                                                   00157470
  399.       LLL=NUMDS-2                                                       00157480
  400.       SUMS=1.0                                                          00157490
  401.       DO 520 I=1,LLL                                                    00157500
  402.   520 SUMS=SUMS+PERS**I                                                 00157510
  403.       LLL=NUMDT-2                                                       00157520
  404.       SUMT=1.0                                                          00157530
  405.       DO 530 I=1,LLL                                                    00157540
  406.   530 SUMT=SUMT+PERT**I                                                 00157550
  407.       FACTT=1.0/PERT                                                    00157560
  408.       IF(PERS.EQ.1.0)SUMS=NUMDS-1                                       00157570
  409.       IF(PERT.EQ.1.0)SUMT=NUMDT-1                                       00157580
  410.       DS=2.0/SUMS                                                       00157590
  411.       DT=2.0/SUMT                                                       00157600
  412.       DO 590 I=1,NUMDT                                                  00157610
  413.       S=-1.                                                             00157620
  414.       FACTS=1.0/PERS                                                    00157630
  415.       DO 580 J=1,NUMDS                                                  00157640
  416.       IF(NI.NE.8) GO TO 540                                             00157650
  417.       IF(NOD(5).GT.0)                                                   00157660
  418.      $H(5)=(1.-S**2)*(1.-T)*0.5                                         00157670
  419.       IF(NOD(6).GT.0)                                                   00157680
  420.      $H(6)=(1.-T**2)*(1.+S)*0.5                                         00157690
  421.       IF(NOD(7).GT.0)                                                   00157700
  422.      $H(7)=(1.-S**2)*(1.+T)*0.5                                         00157710
  423.       IF(NOD(8).GT.0)                                                   00157720
  424.      $H(8)=(1.-T**2)*(1.-S)*0.5                                         00157730
  425.   540 H(1)=(1.-S)*(1.-T)*   0.25-(H(5)+H(8)) *0.5                       00157740
  426.       H(2)=(1.+S)*(1.-T)*   0.25-(H(5)+H(6)) *0.5                       00157750
  427.       H(3)=(1.+S)*(1.+T)*   0.25-(H(6)+H(7)) *0.5                       00157760
  428.       H(4)=(1.-S)*(1.+T)*   0.25-(H(7)+H(8)) *0.5                       00157770
  429.       DO 550 JJ=1,3                                                     00157780
  430.   550 CZ(JJ)=0.0                                                        00157790
  431.       DO 560 II=1,NI                                                    00157800
  432.       DO 560 JJ=1,3                                                     00157810
  433.   560 CZ(JJ)=CZ(JJ)+H(II)*CORD(II,JJ)                                   00157820
  434.       DO 570 JJ=1,3                                                     00157830
  435.   570 ID(NODE,JJ)=CZ(JJ)/XMX+XAD                                        00157840
  436.       NODE=NODE+INCS                                                    00157850
  437.       FACTS=FACTS*PERS                                                  00157860
  438.   580 S=S+DS*FACTS                                                      00157870
  439.       NODE=NODE-(NUMDS)*INCS+INCT                                       00157880
  440.       FACTT=FACTT*PERT                                                  00157890
  441.   590 T=T+DT*FACTT                                                      00157900
  442.         IF(KS.NE.0) CALL SRFC(NOD,INCS,INCT,NUMDS,NUMDT,                00157910
  443.      $XAD,XMX,NZZ,ID,KS,CORD)                                           00157920
  444.       GO TO 220                                                         00157930
  445.   600 READ (5,610) (N3D(I),I=1,8),PERR,PERS,PERT                        00157940
  446.       READ (5,620) (N3D(I),I=9,20),INCR,INCS,INCT                       00157950
  447.   610 FORMAT(8I5,3F10.0)                                                00157960
  448.   620 FORMAT(16I5)                                                      00157970
  449.       IF(INCR.LE.0) INCR=1                                              00157980
  450.       NUMDR=(N3D(4)-N3D(1))/INCR+1                                      00157990
  451.       IF(INCS.LE.0)                                                     00158000
  452.      $INCS=N3D(4)-N3D(1)+1                                              00158010
  453.       NUMDS=(N3D(3)-N3D(4))/INCS+1                                      00158020
  454.       IF(INCT.LE.0)                                                     00158030
  455.      $INCT=N3D(3)-N3D(1)+1                                              00158040
  456.       NUMDT=(N3D(7)-N3D(3))/INCT+1                                      00158050
  457.       IF(PERR.LE.0.0)PERR=100.0                                         00158060
  458.       IF(PERS.LE.0.0)PERS=100.0                                         00158070
  459.       IF(PERT.LE.0.0)PERT=100.0                                         00158080
  460.       WRITE(6,630)(N3D(I),I=1,8),(N3D(I),I=9,20),INCR,INCS,INCT,PERR    00158090
  461.      $,PERS,PERT                                                        00158100
  462.   630 FORMAT(//20X,28HVOLUME COORDINATE GENERATION                      00158110
  463.      $        /20X,27HNODE NOS. FOR CORNERS 1-8 =,1X,8I5                00158120
  464.      $        /20X,28HNODE NOS. FOR CORNERS 9-20 =,1X,12I5              00158130
  465.      $        /20X,35HNODE INCREMENT IN THE R DIRECTION =,1X,I5         00158140
  466.      $        /20X,35HNODE INCREMENT IN THE S DIRECTION =,1X,I5         00158150
  467.      $        /20X,35HNODE INCREMENT IN THE T DIRECTION =,1X,I5         00158160
  468.      $        /20X,38HREFINEMENT FACTOR IN THE R DIRECTION =,1X,F15.5   00158170
  469.      $        /20X,38HREFINEMENT FACTOR IN THE S DIRECTION =,1X,F15.5   00158180
  470.      $        /20X,38HREFINEMENT FACTOR IN THE T DIRECTION =,1X,F15.5//)00158190
  471.       DO 680 I=1,20                                                     00158200
  472.       J=N3D(I)                                                          00158210
  473.       IF(J.GE.0.AND.J.LE.NUMNP) GO TO 650                               00158220
  474.       WRITE(6,440)N3D(I)                                                00158230
  475.       KSKIP=1                                                           00158240
  476.       GO TO 220                                                         00158250
  477.   650 DO 660 K=1,3                                                      00158260
  478.   660 CORD(I,K)=0.0                                                     00158270
  479.       IF(J.EQ.0) GO TO 680                                              00158280
  480.       DO 670 K=1,3                                                      00158290
  481.       NNN=ID(J,K)                                                       00158300
  482.       IF(NNN.LT.0) NNN=NNN-1                                            00158310
  483.   670 CORD(I,K)=(ID(J,K)-NNN-XAD)*XMX                                   00158320
  484.   680 CONTINUE                                                          00158330
  485.       NI=8                                                              00158340
  486.       DO 690 I=9,20                                                     00158350
  487.       IF(N3D(I).GT.0) NI=20                                             00158360
  488.   690 H(I)=0.0                                                          00158370
  489.       DO 700 I=1,8                                                      00158380
  490.       IF(N3D(I).EQ.0) WRITE(6,510)I                                     00158390
  491.       IF(N3D(I).EQ.0) GO TO 220                                         00158400
  492.   700 CONTINUE                                                          00158410
  493.       NNN=NUMDR*INCR*NUMDS+(INCS-NUMDR*INCR)*(NUMDS-1)                  00158420
  494.       NNN=N3D(1)+NNN*NUMDT+(INCT-NNN)*(NUMDT-1)-INCR                    00158430
  495.       IF(NNN.NE.N3D(7)) WRITE(6,720)                                    00158440
  496.       IF(NNN.NE.N3D(7))GO TO 220                                        00158450
  497.   720 FORMAT(//20X,37HVOLUME GENERATION IS BEING TERMINATED,            00158460
  498.      $        /20X,40HCHECK NODE NOS. ON CORNERS 1,3,4, AND 7.//)       00158470
  499.       PERR=PERR/100.0                                                   00158480
  500.       PERS=PERS/100.0                                                   00158490
  501.       PERT=PERT/100.0                                                   00158500
  502.       T=-1.                                                             00158510
  503.       LLL=NUMDR-2                                                       00158520
  504.       SUMR=1.0                                                          00158530
  505.       DO 730 I=1,LLL                                                    00158540
  506.   730 SUMR=SUMR+PERR**I                                                 00158550
  507.       LLL=NUMDS-2                                                       00158560
  508.       SUMS=1.0                                                          00158570
  509.       DO 740 I=1,LLL                                                    00158580
  510.   740 SUMS=SUMS+PERS**I                                                 00158590
  511.       LLL=NUMDT-2                                                       00158600
  512.       SUMT=1.0                                                          00158610
  513.       DO 750 I=1,LLL                                                    00158620
  514.   750 SUMT=SUMT+PERT**I                                                 00158630
  515.       IF(PERR.EQ.1.0) SUMR=NUMDR-1                                      00158640
  516.       IF(PERS.EQ.1.0) SUMS=NUMDS-1                                      00158650
  517.       IF(PERT.EQ.1.0) SUMT=NUMDT-1                                      00158660
  518.       FACTT=1.0/PERT                                                    00158670
  519.       NODE=N3D(1)                                                       00158680
  520.       DR=2.0/SUMR                                                       00158690
  521.       DS=2.0/SUMS                                                       00158700
  522.       DT=2.0/SUMT                                                       00158710
  523.       DO 820 MMM=1,NUMDT                                                00158720
  524.       NODEI=NODE                                                        00158730
  525.       S=-1.                                                             00158740
  526.       FACTS=1.0/PERS                                                    00158750
  527.       DO 810 I=1,NUMDS                                                  00158760
  528.       R=-1.                                                             00158770
  529.       FACTR=1.0/PERR                                                    00158780
  530.       DO 800 J=1,NUMDR                                                  00158790
  531.       RP=1.+R                                                           00158800
  532.       SP=1.+S                                                           00158810
  533.       TP=1.+T                                                           00158820
  534.       RM=1.-R                                                           00158830
  535.       SM=1.-S                                                           00158840
  536.       TM=1.-T                                                           00158850
  537.       IF(NI.NE.20) GO TO 760                                            00158860
  538.       RR=1.-R*R                                                         00158870
  539.       SS=1.-S*S                                                         00158880
  540.       TT=1.-T*T                                                         00158890
  541.       IF(N3D(9).GT.0)                                                   00158900
  542.      $H(9)=RM*SS*TM*0.25                                                00158910
  543.       IF(N3D(10).GT.0)                                                  00158920
  544.      $H(10)=RR*SP*TM*0.25                                               00158930
  545.       IF(N3D(11).GT.0)                                                  00158940
  546.      $H(11)=RP*SS*TM*0.25                                               00158950
  547.       IF(N3D(12).GT.0)                                                  00158960
  548.      $H(12)=RR*SM*TM *0.25                                              00158970
  549.       IF(N3D(13).GT.0)                                                  00158980
  550.      $H(13)=RM*SS*TP*0.25                                               00158990
  551.       IF(N3D(14).GT.0)                                                  00159000
  552.      $H(14)=RR*SP*TP*0.25                                               00159010
  553.       IF(N3D(15).GT.0)                                                  00159020
  554.      $H(15)=RP*SS*TP*0.25                                               00159030
  555.       IF(N3D(16).GT.0)                                                  00159040
  556.      $H(16)=RR*SM*TP*0.25                                               00159050
  557.       IF(N3D(17).GT.0)                                                  00159060
  558.      $H(17)=RM*SM*TT*0.25                                               00159070
  559.       IF(N3D(18).GT.0)                                                  00159080
  560.      $H(18)=RM*SP*TT *0.25                                              00159090
  561.       IF(N3D(19).GT.0)                                                  00159100
  562.      $H(19)=RP*SP*TT*0.25                                               00159110
  563.       IF(N3D(20).GT.0)                                                  00159120
  564.      $H(20)=RP*SM*TT*0.25                                               00159130
  565.   760 TM=0.125*TM                                                       00159140
  566.       TP=0.125*TP                                                       00159150
  567.       H(1)=RM*SM*TM     -0.5*(H( 9)+H(17)+H(12))                        00159160
  568.       H(2)=RM*SP*TM     -0.5*(H( 9)+H(18)+H(10))                        00159170
  569.       H(3)=RP*SP*TM     -0.5*(H(10)+H(19)+H(11))                        00159180
  570.       H(4)=RP*SM*TM     -0.5*(H(11)+H(20)+H(12))                        00159190
  571.       H(5)=RM*SM*TP     -0.5*(H(13)+H(17)+H(16))                        00159200
  572.       H(6)=RM*SP*TP     -0.5*(H(13)+H(18)+H(14))                        00159210
  573.       H(7)=RP*SP*TP     -0.5*(H(14)+H(19)+H(15))                        00159220
  574.       H(8)=RP*SM*TP     -0.5*(H(15)+H(20)+H(16))                        00159230
  575.       DO 770 JJ=1,3                                                     00159240
  576.   770 CZ(JJ)=0.0                                                        00159250
  577.       DO 780 II=1,NI                                                    00159260
  578.       DO 780 JJ=1,3                                                     00159270
  579.   780 CZ(JJ)=CZ(JJ)+H(II)*CORD(II,JJ)                                   00159280
  580.       DO 790 JJ=1,3                                                     00159290
  581.   790 ID(NODE,JJ)=CZ(JJ)/XMX+XAD                                        00159300
  582.       NODE=NODE+INCR                                                    00159310
  583.       FACTR=FACTR*PERR                                                  00159320
  584.   800 R=R+DR*FACTR                                                      00159330
  585.       NODE=NODE-NUMDR*INCR+INCS                                         00159340
  586.       FACTS=FACTS*PERS                                                  00159350
  587.   810 S=S+DS*FACTS                                                      00159360
  588.       NODE=NODEI+INCT                                                   00159370
  589.       FACTT=FACTT*PERT                                                  00159380
  590.   820 T=T+DT*FACTT                                                      00159390
  591.         IF(KS.NE.0) CALL VOLM(N3D,INCR,INCS,INCT,NUMDR,NUMDS,           00159400
  592.      $NUMDT,XAD,XMX,NZZ,ID,KS,CORD)                                     00159410
  593.       GO TO 220                                                         00159420
  594.       END                                                               00159430
  595.       SUBROUTINE CONVER (KS,KT)                                         00051120
  596.       IMPLICIT REAL*8(A-H,O-Z)                                          00051130
  597.       COMMON/QTSARG/ X(3,50),Y(3,50),Z(3,50),TI(3,3,50),XC(3),XI(3)     00051140
  598.      & ,RRQTSA(94)                                                      R0051141
  599.       DIMENSION XX(3)                                                   00051150
  600.       RDN=0.01745329251                                                 00051160
  601.       GO TO (100,120,130),KT                                            00051170
  602.   100 DO 110 I=1,3                                                      00051180
  603.   110 XC(I)=XI(I)                                                       00051190
  604.       GO TO 140                                                         00051200
  605.   120 THETA=XI(2)*RDN                                                   00051210
  606.       PHI=XI(3)*RDN                                                     00051220
  607.       R=XI(1)                                                           00051230
  608.       XC(1)=R* DSIN(PHI)* DCOS(THETA)                                   00051240
  609.       XC(2)=R* DSIN(PHI)* DSIN(THETA)                                   00051250
  610.       XC(3)=R* DCOS(PHI)                                                00051260
  611.       GO TO 140                                                         00051270
  612.   130 THETA=XI(2)*RDN                                                   00051280
  613.       XC(1)=XI(1)* DCOS(THETA)                                          00051290
  614.       XC(2)=XI(1)* DSIN(THETA)                                          00051300
  615.       XC(3)=XI(3)                                                       00051310
  616.   140 IF(KS.EQ.0) RETURN                                                00051320
  617.       DO 150 I=1,3                                                      00051330
  618.       XX(I)=0.0                                                         00051340
  619.       DO 150 J=1,3                                                      00051350
  620.   150 XX(I)=XX(I)+TI(J,I,KS)*XC(J)                                      00051360
  621.       XC(1)=XX(1)+X(1,KS)                                               00051370
  622.       XC(2)=XX(2)+Y(1,KS)                                               00051380
  623.       XC(3)=XX(3)+Z(1,KS)                                               00051390
  624.       RETURN                                                            00051400
  625.       END                                                               00051410
  626.       SUBROUTINE SRFC (NOD,INCS,INCT,NUMDS,NUMDT,XAD,XMX,NZZ,ID,KS,CORD)00254700
  627.         IMPLICIT REAL*8 (A-H,O-Z)                                       00254710
  628.       REAL*8 ID(NZZ,3)                                                  00254720
  629.       DIMENSION NOD(8),NN(4),CORD(20,3),NIB(4)                          00254730
  630.       DIMENSION P1(3),P2(3),P3(3),P4(3),P5(3),P6(3),P7(3),P8(3)         00254740
  631.       DATA NIB/1,2,4,1/                                                 00254750
  632.       IF (KS.GT.3 .OR. KS.LT.-4)   GO TO 500                            00254760
  633.       IF (KS.LT.0)   GO TO 300                                          00254770
  634.       READ (5,10) NN                                                    00254780
  635.    10 FORMAT (4I5)                                                      00254790
  636.       DO 20 I=1,4                                                       00254800
  637.       J=NN(I)                                                           00254810
  638.       IF (J.LE.0)   GO TO 20                                            00254820
  639.       DO 15 K=1,3                                                       00254830
  640.       NNN=ID(J,K)                                                       00254840
  641.       IF (NNN.LT.0)  NNN=NNN-1                                          00254850
  642.    15 CORD(I,K)=(ID(J,K)-NNN-XAD)*XMX                                   00254860
  643.    20 CONTINUE                                                          00254870
  644.       GO TO (22,100,200), KS                                            00254880
  645.    22 CONTINUE                                                          00254890
  646.       RAD=CORD(2,1)                                                     00254900
  647.       DO 25 K=1,3                                                       00254910
  648.    25 P1(K)=CORD(1,K)                                                   00254920
  649.       NODE=NOD(1)                                                       00254930
  650.       DO 50 I=1,NUMDT                                                   00254940
  651.       DO 40 J=1,NUMDS                                                   00254950
  652.       DO 30 K=1,3                                                       00254960
  653.       NNN=ID(NODE,K)                                                    00254970
  654.       IF (NNN.LT.0)   NNN=NNN-1                                         00254980
  655.    30 P2(K)=(ID(NODE,K)-NNN-XAD)*XMX                                    00254990
  656.       CALL PTS1 (P1,P2,RAD,P3)                                          00255000
  657.       DO 35 K=1,3                                                       00255010
  658.    35 ID(NODE,K)=P3(K)/XMX+XAD                                          00255020
  659.       NODE=NODE+INCS                                                    00255030
  660.    40 CONTINUE                                                          00255040
  661.       NODE=NODE-NUMDS*INCS+INCT                                         00255050
  662.    50 CONTINUE                                                          00255060
  663.       GO TO 500                                                         00255070
  664.   100 CONTINUE                                                          00255080
  665.       RAD=CORD(3,1)                                                     00255090
  666.       DO 125 K=1,3                                                      00255100
  667.       P1(K)=CORD(1,K)                                                   00255110
  668.   125 P2(K)=CORD(2,K)                                                   00255120
  669.       NODE=NOD(1)                                                       00255130
  670.       DO 150 I=1,NUMDT                                                  00255140
  671.       DO 140 J=1,NUMDS                                                  00255150
  672.       DO 130 K=1,3                                                      00255160
  673.       NNN=ID(NODE,K)                                                    00255170
  674.       IF (NNN.LT.0)   NNN=NNN-1                                         00255180
  675.   130 P3(K)=(ID(NODE,K)-NNN-XAD)*XMX                                    00255190
  676.       CALL PTS2 (P1,P2,P3,A,B,C,D)                                      00255200
  677.       CALL PTS3 (P1,P2,A,B,C,D,P4)                                      00255210
  678.       CALL PTS1 (P4,P3,RAD,P5)                                          00255220
  679.       DO 135 K=1,3                                                      00255230
  680.   135 ID(NODE,K)=P5(K)/XMX+XAD                                          00255240
  681.       NODE=NODE+INCS                                                    00255250
  682.   140 CONTINUE                                                          00255260
  683.       NODE=NODE-NUMDS*INCS+INCT                                         00255270
  684.   150 CONTINUE                                                          00255280
  685.       GO TO 500                                                         00255290
  686.   200 CONTINUE                                                          00255300
  687.       DO 225 K=1,3                                                      00255310
  688.       P1(K)=CORD(1,K)                                                   00255320
  689.       P2(K)=CORD(2,K)                                                   00255330
  690.       P3(K)=CORD(3,K)                                                   00255340
  691.   225 P4(K)=CORD(4,K)                                                   00255350
  692.       NODE=NOD(1)                                                       00255360
  693.       DO 250 I=1,NUMDT                                                  00255370
  694.       DO 240 J=1,NUMDS                                                  00255380
  695.       DO 230 K=1,3                                                      00255390
  696.       NNN=ID(NODE,K)                                                    00255400
  697.       IF (NNN.LT.0)   NNN=NNN-1                                         00255410
  698.   230 P5(K)=(ID(NODE,K)-NNN-XAD)*XMX                                    00255420
  699.       CALL PTS2 (P1,P2,P5,A,B,C,D)                                      00255430
  700.       CALL PTS3 (P1,P2,A,B,C,D,P6)                                      00255440
  701.       CALL PTS3 (P3,P4,A,B,C,D,P7)                                      00255450
  702.       RAD=DSQRT((P7(1)-P6(1))**2+(P7(2)-P6(2))**2+(P7(3)-P6(3))**2)     00255460
  703.       CALL PTS1 (P6,P5,RAD,P8)                                          00255470
  704.       DO 235 K=1,3                                                      00255480
  705.   235 ID(NODE,K)=P8(K)/XMX+XAD                                          00255490
  706.       NODE=NODE+INCS                                                    00255500
  707.   240 CONTINUE                                                          00255510
  708.       NODE=NODE-NUMDS*INCS+INCT                                         00255520
  709.   250 CONTINUE                                                          00255530
  710.       GO TO 500                                                         00255540
  711.   300 CONTINUE                                                          00255550
  712.       KS=IABS(KS)                                                       00255560
  713.       DO 400 N=1,KS                                                     00255570
  714.       READ (5,10) NS, (NN(I),I=1,3)                                     00255580
  715.       IF (NS.LT.1 .OR. NS.GT.4)   GO TO 400                             00255590
  716.       DO 320 I=1,3                                                      00255600
  717.       J=NN(I)                                                           00255610
  718.       DO 320 K=1,3                                                      00255620
  719.       NNN=ID(J,K)                                                       00255630
  720.       IF (NNN.LT.0)   NNN=NNN-1                                         00255640
  721.   320 CORD(I,K)=(ID(J,K)-NNN-XAD)*XMX                                   00255650
  722.       RAD=CORD(3,1)                                                     00255660
  723.       DO 325 K=1,3                                                      00255670
  724.       P1(K)=CORD(1,K)                                                   00255680
  725.   325 P2(K)=CORD(2,K)                                                   00255690
  726.       M=NIB(NS)                                                         00255700
  727.       NODE=NOD(M)                                                       00255710
  728.       INC=INCS                                                          00255720
  729.       IF (NS.EQ.2 .OR. NS.EQ.4)   INC=INCT                              00255730
  730.       NUMD=NUMDS                                                        00255740
  731.       IF (NS.EQ.2 .OR. NS.EQ.4)   NUMD=NUMDT                            00255750
  732.       DO 380 M=1,NUMD                                                   00255760
  733.       DO 335 K=1,3                                                      00255770
  734.       NNN=ID(NODE,K)                                                    00255780
  735.       IF (NNN.LT.0)   NNN=NNN-1                                         00255790
  736.   335 P3(K)=(ID(NODE,K)-NNN-XAD)*XMX                                    00255800
  737.       CALL PTS2 (P1,P2,P3,A,B,C,D)                                      00255810
  738.       CALL PTS3 (P1,P2,A,B,C,D,P4)                                      00255820
  739.       CALL PTS1 (P4,P3,RAD,P5)                                          00255830
  740.       DO 340 K=1,3                                                      00255840
  741.   340 ID(NODE,K)=P5(K)/XMX+XAD                                          00255850
  742.       NODE=NODE+INC                                                     00255860
  743.   380 CONTINUE                                                          00255870
  744.   400 CONTINUE                                                          00255880
  745.   500 RETURN                                                            00255890
  746.       END                                                               00255900
  747.       SUBROUTINE VOLM (N3D,INCR,INCS,INCT,NUMDR,NUMDS,NUMDT,XAD,XMX,    00320250
  748.      $                 NZZ,ID,KS,CORD)                                  00320260
  749.         IMPLICIT REAL*8 (A-H,O-Z)                                       00320270
  750.       REAL*8 ID(NZZ,3)                                                  00320280
  751.       DIMENSION N3D(20),NN(4),CORD(20,3),NIB(6)                         00320290
  752.       DIMENSION P1(3),P2(3),P3(3),P4(3),P5(3),P6(3),P7(3),P8(3)         00320300
  753.       DATA NIB/1,4,2,1,5,1/                                             00320310
  754.       IF (KS.LT.0 .OR. KS.GT.6)  GO TO 600                              00320320
  755.       DO 500 N=1,KS                                                     00320330
  756.       READ (5,2)  NS,NTYP,NN                                            00320340
  757.     2 FORMAT (6I5)                                                      00320350
  758.       IF (NS.LT.1 .OR. NS.GT.6)   GO TO 500                             00320360
  759.       IF (NTYP.LT.1 .OR. NTYP.GT.3)   GO TO 500                         00320370
  760.       M=NIB(NS)                                                         00320380
  761.       NODE=N3D(M)                                                       00320390
  762.       GO TO (10,10,20,20,30,30), NS                                     00320400
  763.    10 NUMD1=NUMDT                                                       00320410
  764.       NUMD2=NUMDS                                                       00320420
  765.       INC1=INCS                                                         00320430
  766.       INC2=INCT                                                         00320440
  767.       GO TO 70                                                          00320450
  768.    20 NUMD1=NUMDT                                                       00320460
  769.       NUMD2=NUMDR                                                       00320470
  770.       INC1=INCR                                                         00320480
  771.       INC2=INCT                                                         00320490
  772.       GO TO 70                                                          00320500
  773.    30 NUMD1=NUMDS                                                       00320510
  774.       NUMD2=NUMDR                                                       00320520
  775.       INC1=INCR                                                         00320530
  776.       INC2=INCS                                                         00320540
  777.    70 CONTINUE                                                          00320550
  778.       DO 90 I=1,4                                                       00320560
  779.       J=NN(I)                                                           00320570
  780.       IF (J.LE.0)  GO TO 90                                             00320580
  781.       DO 80 K=1,3                                                       00320590
  782.       NNN=ID(J,K)                                                       00320600
  783.       IF (NNN.LT.0)   NNN=NNN-1                                         00320610
  784.    80 CORD(I,K)=(ID(J,K)-NNN-XAD)*XMX                                   00320620
  785.    90 CONTINUE                                                          00320630
  786.       GO TO (100,200,300), NTYP                                         00320640
  787.   100 CONTINUE                                                          00320650
  788.       RAD=CORD(2,1)                                                     00320660
  789.       DO 125 K=1,3                                                      00320670
  790.   125 P1(K)=CORD(1,K)                                                   00320680
  791.       DO 150 I=1,NUMD1                                                  00320690
  792.       DO 140 J=1,NUMD2                                                  00320700
  793.       DO 130 K=1,3                                                      00320710
  794.       NNN=ID(NODE,K)                                                    00320720
  795.       IF (NNN.LT.0)   NNN=NNN-1                                         00320730
  796.   130 P2(K)=(ID(NODE,K)-NNN-XAD)*XMX                                    00320740
  797.       CALL PTS1 (P1,P2,RAD,P3)                                          00320750
  798.       DO 135 K=1,3                                                      00320760
  799.   135 ID(NODE,K)=P3(K)/XMX+XAD                                          00320770
  800.       NODE=NODE+INC1                                                    00320780
  801.   140 CONTINUE                                                          00320790
  802.       NODE=NODE-NUMD2*INC1+INC2                                         00320800
  803.   150 CONTINUE                                                          00320810
  804.       GO TO 500                                                         00320820
  805.   200 CONTINUE                                                          00320830
  806.       RAD=CORD(3,1)                                                     00320840
  807.       DO 225 K=1,3                                                      00320850
  808.       P1(K)=CORD(1,K)                                                   00320860
  809.   225 P2(K)=CORD(2,K)                                                   00320870
  810.       DO 250 I=1,NUMD1                                                  00320880
  811.       DO 240 J=1,NUMD2                                                  00320890
  812.       DO 230 K=1,3                                                      00320900
  813.       NNN=ID(NODE,K)                                                    00320910
  814.       IF (NNN.LT.0)   NNN=NNN-1                                         00320920
  815.   230 P3(K)=(ID(NODE,K)-NNN-XAD)*XMX                                    00320930
  816.       CALL PTS2 (P1,P2,P3,A,B,C,D)                                      00320940
  817.       CALL PTS3 (P1,P2,A,B,C,D,P4)                                      00320950
  818.       CALL PTS1 (P4,P3,RAD,P5)                                          00320960
  819.       DO 235 K=1,3                                                      00320970
  820.   235 ID(NODE,K)=P5(K)/XMX+XAD                                          00320980
  821.       NODE=NODE+INC1                                                    00320990
  822.   240 CONTINUE                                                          00321000
  823.       NODE=NODE-NUMD2*INC1+INC2                                         00321010
  824.   250 CONTINUE                                                          00321020
  825.       GO TO 500                                                         00321030
  826.   300 CONTINUE                                                          00321040
  827.       DO 325 K=1,3                                                      00321050
  828.       P1(K)=CORD(1,K)                                                   00321060
  829.       P2(K)=CORD(2,K)                                                   00321070
  830.       P3(K)=CORD(3,K)                                                   00321080
  831.   325 P4(K)=CORD(4,K)                                                   00321090
  832.       DO 350 I=1,NUMD1                                                  00321100
  833.       DO 340 J=1,NUMD2                                                  00321110
  834.       DO 330 K=1,3                                                      00321120
  835.       NNN=ID(NODE,K)                                                    00321130
  836.       IF (NNN.LT.0)   NNN=NNN-1                                         00321140
  837.   330 P5(K)=(ID(NODE,K)-NNN-XAD)*XMX                                    00321150
  838.       CALL PTS2 (P1,P2,P5,A,B,C,D)                                      00321160
  839.       CALL PTS3 (P1,P2,A,B,C,D,P6)                                      00321170
  840.       CALL PTS3 (P3,P4,A,B,C,D,P7)                                      00321180
  841.       RAD=DSQRT((P7(1)-P6(1))**2+(P7(2)-P6(2))**2+(P7(3)-P6(3))**2)     00321190
  842.       CALL PTS1 (P6,P5,RAD,P8)                                          00321200
  843.       DO 335 K=1,3                                                      00321210
  844.   335 ID(NODE,K)=P8(K)/XMX+XAD                                          00321220
  845.       NODE=NODE+INC1                                                    00321230
  846.   340 CONTINUE                                                          00321240
  847.       NODE=NODE-NUMD2*INC1+INC2                                         00321250
  848.   350 CONTINUE                                                          00321260
  849.   500 CONTINUE                                                          00321270
  850.   600 CONTINUE                                                          00321280
  851.       RETURN                                                            00321290
  852.       END                                                               00321300
  853.       SUBROUTINE PTS1 (P1,P2,R,P3)                                              
  854.         IMPLICIT REAL*8 (A-H,O-Z)                                       00183050
  855.       DIMENSION P1(3),P2(3),P3(3)                                       00183060
  856.       DX=P2(1)-P1(1)                                                    00183070
  857.       DY=P2(2)-P1(2)                                                    00183080
  858.       DZ=P2(3)-P1(3)                                                    00183090
  859.       DEN=DSQRT(DX*DX+DY*DY+DZ*DZ)                                      00183100
  860.       COSA=DX/DEN                                                       00183110
  861.       COSB=DY/DEN                                                       00183120
  862.       COSC=DZ/DEN                                                       00183130
  863.       P3(1)=R*COSA+P1(1)                                                00183140
  864.       P3(2)=R*COSB+P1(2)                                                00183150
  865.       P3(3)=R*COSC+P1(3)                                                00183160
  866.       RETURN                                                            00183170
  867.       END                                                               00183180
  868.