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

  1.       FUNCTION DECIMA(ERROR)                                            MOD02917
  2.       LOGICAL LEXP,AFTER,MINUS,ERROR                                    MOD02918
  3.       DOUBLE PRECISION MANT,DECIMA                                      MOD02919
  4.       INTEGER EXP                                                       MOD02920
  5.       COMMON/FRECNM/MULTIP                                              MOD02921
  6.       LEXP    = .FALSE.                                                 MOD02922
  7.       MINUS   = .FALSE.                                                 MOD02923
  8.       AFTER   = .FALSE.                                                 MOD02924
  9.       IOFF    = 1                                                       MOD02925
  10.       MANT    = 0.0                                                     MOD02926
  11.       EXP     = 0                                                       MOD02927
  12.       X       = 0.0                                                     MOD02928
  13.       DO 100  IPOSIT=1,20                                               MOD02929
  14.       N = IDIGIT(IPOSIT)                                                MOD02930
  15.       GO TO (5,5,5,5,5,5,5,5,5,5,100,12,13,14,14,16,17,18),N            MOD02931
  16. 5     IF (AFTER) GO TO 6                                                MOD02932
  17.       X = X*10.0 + N - 1.0                                              MOD02933
  18.       GO TO 100                                                         MOD02934
  19. 6     Y = N - 1                                                         MOD02935
  20.       X = X + Y/10.0**IOFF                                              MOD02936
  21.       IOFF = IOFF + 1                                                   MOD02937
  22.       GO TO 100                                                         MOD02938
  23. 12    MINUS = .TRUE.                                                    MOD02939
  24.       GO TO 100                                                         MOD02940
  25. 13    AFTER = .TRUE.                                                    MOD02941
  26.       IOFF = 1                                                          MOD02942
  27.       GO TO 100                                                         MOD02943
  28. 14    MANT = X                                                          MOD02944
  29.       IF (MINUS) MANT = -X                                              MOD02945
  30.       MINUS = .FALSE.                                                   MOD02946
  31.       AFTER = .FALSE.                                                   MOD02947
  32.       LEXP  = .TRUE.                                                    MOD02948
  33.       X     = 0.0                                                       MOD02949
  34.       GO TO 100                                                         MOD02950
  35. 17    MULTIP=X                                                          MOD02951
  36.       GO TO 100                                                         MOD02952
  37. 100   CONTINUE                                                          MOD02953
  38. 18    ERROR = .TRUE.                                                    MOD02954
  39. 16    IF (LEXP) EXP = X                                                 MOD02955
  40.       IF (LEXP.AND.MINUS) EXP = -X                                      MOD02956
  41.       IF (.NOT.LEXP) MANT = X                                           MOD02957
  42.       IF (.NOT.LEXP.AND.MINUS) MANT = -X                                MOD02958
  43.       DECIMA = MANT*10.0**EXP                                           MOD02959
  44.       RETURN                                                            MOD02960
  45.       END                                                               MOD02961
  46.       FUNCTION ERR1(ERR001)                                             MOD02962
  47.       INTEGER SECT,POINT,BEGIN,GETSEC,EPOINT,BLANK,AGET,AGETW           MOD02963
  48.       LOGICAL EOL,EOS,EOF,ERROR,INDEX,GETWRD,IGET,RGET,ERR1             MOD02964
  49.       COMMON  /FRECNT/ LINE(80),SECT,EOL,EOS,EOF,                       MOD02965
  50.      1ERROR,BLANK,ICOMMA,POINT,BEGIN,LENGTH,                            MOD02966
  51.      2EPOINT,NSECT,LINENM,MAXSTR,KUNIT,JUNIT,IUNIT                      MOD02967
  52.       ERR1=ERROR                                                        MOD02968
  53.       RETURN                                                            MOD02969
  54.       END                                                               MOD02970
  55.       SUBROUTINE GETNL(GET001)                                          MOD02971
  56.       INTEGER SECT,POINT,BEGIN,GETSEC,EPOINT,BLANK,AGET,AGETW           MOD02972
  57.       LOGICAL EOL,EOS,EOF,ERROR,INDEX,GETWRD,IGET,RGET,ERR1             MOD02973
  58.       COMMON/UNIT/II1,II2,II3,II4,II5,ITER                              MOD02974
  59.       COMMON/ECHOT/IECHOT                                               MOD02975
  60.       COMMON/FRECNM/MULTIP                                              MOD02976
  61.       COMMON  /FRECNT/ LINE(80),SECT,EOL,EOS,EOF,                       MOD02977
  62.      1ERROR,BLANK,ICOMMA,POINT,BEGIN,LENGTH,                            MOD02978
  63.      2EPOINT,NSECT,LINENM,MAXSTR,KUNIT,JUNIT,IUNIT                      MOD02979
  64.       DATA    IZER/1H0/,ININE/1H9/,ICOM/1H*/,IDOL/1H$/                  MOD02980
  65.       MULTIP=0                                                          MOD02981
  66.       IF (.NOT.ERROR) GO TO 100                                         MOD02982
  67. 9800  WRITE (II2,9801)                                                  MOD02983
  68. 9801  FORMAT (' SYNTAX ERROR ON BELOW LINE')                            MOD02984
  69.       WRITE(II2,101)LINE                                                MOD02985
  70.       ERROR = .FALSE.                                                   MOD02986
  71.       EPOINT = 1                                                        MOD02987
  72.       STOP                                                              MOD02988
  73. 100   READ (II1,101,ERR=9800,END=910) (LINE(JJ),JJ=1,71)                MOD02989
  74. 101   FORMAT (71A1)                                                     MOD02990
  75.       IF(IECHOT.EQ.1)WRITE(II2,102)(LINE(JJ),JJ=1,71)                   MOD02991
  76. 102   FORMAT(1X,71A1)                                                   MOD02992
  77.       LINENM = LINENM + 1                                               MOD02993
  78. 210   CONTINUE                                                          MOD02994
  79.       POINT = 1                                                         MOD02995
  80.       EOL   = .FALSE.                                                   MOD02996
  81.       EOS   = .FALSE.                                                   MOD02997
  82.       RETURN                                                            MOD02998
  83. 910   EOF = .TRUE.                                                      MOD02999
  84.       RETURN                                                            MOD03000
  85.       END                                                               MOD03001
  86.       FUNCTION GETWRD(GET001)                                           MOD03002
  87.       INTEGER SECT,POINT,BEGIN,GETSEC,EPOINT,BLANK,AGET,AGETW           MOD03003
  88.       LOGICAL EOL,EOS,EOF,ERROR,INDEX,GETWRD,IGET,RGET,ERR1             MOD03004
  89.       COMMON  /FRECNT/ LINE(80),SECT,EOL,EOS,EOF,                       MOD03005
  90.      1ERROR,BLANK,ICOMMA,POINT,BEGIN,LENGTH,                            MOD03006
  91.      2EPOINT,NSECT,LINENM,MAXSTR,KUNIT,JUNIT,IUNIT                      MOD03007
  92.       GETWRD = .FALSE.                                                  MOD03008
  93.       LENGTH = 0                                                        MOD03009
  94.       IF (EOL) RETURN                                                   MOD03010
  95.       DO 100 BEGIN = POINT,80                                           MOD03011
  96.       IF (LINE(BEGIN).NE.BLANK) GO TO 110                               MOD03012
  97. 100   CONTINUE                                                          MOD03013
  98.       EOL = .TRUE.                                                      MOD03014
  99.       POINT = 80                                                        MOD03015
  100.       RETURN                                                            MOD03016
  101. 110   DO 170 POINT = BEGIN,80                                           MOD03017
  102.       IF (LINE(POINT).EQ.BLANK.OR.LINE(POINT).EQ.ICOMMA)                MOD03018
  103.      1GO TO 180                                                         MOD03019
  104.       LENGTH = POINT - BEGIN + 1                                        MOD03020
  105.       MAXSTR = LENGTH                                                   MOD03021
  106. 170   CONTINUE                                                          MOD03022
  107.       GETWRD = .TRUE.                                                   MOD03023
  108.       EOL = .TRUE.                                                      MOD03024
  109.       RETURN                                                            MOD03025
  110. 180   IP = POINT                                                        MOD03026
  111.       DO 200 POINT = POINT,80                                           MOD03027
  112.       IF (LINE(POINT).EQ.ICOMMA) GO TO 210                              MOD03028
  113.       IF (LINE(POINT).NE.BLANK) GO TO 190                               MOD03029
  114. 200   CONTINUE                                                          MOD03030
  115.       GETWRD = .TRUE.                                                   MOD03031
  116.       EOL =.TRUE.                                                       MOD03032
  117.       RETURN                                                            MOD03033
  118. 190   POINT = IP                                                        MOD03034
  119.       GETWRD = .TRUE.                                                   MOD03035
  120.       RETURN                                                            MOD03036
  121. 210   POINT = POINT + 1                                                 MOD03037
  122.       GETWRD = .TRUE.                                                   MOD03038
  123.       RETURN                                                            MOD03039
  124.       END                                                               MOD03040
  125.       FUNCTION IDIGIT(IPOSIT)                                           MOD03041
  126.       INTEGER AGET                                                      MOD03042
  127.       DIMENSION IVALID(17)                                              MOD03043
  128.       DATA IVALID/1H0,1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9,1H+,          MOD03044
  129.      11H-,1H.,1HE,1HD,1H ,1H*/                                          MOD03045
  130.       DO 100 IDIGIT=1,17                                                MOD03046
  131.       IF (AGET(IPOSIT).EQ.IVALID(IDIGIT)) GO TO 110                     MOD03047
  132. 100   CONTINUE                                                          MOD03048
  133.       IDIGIT = 18                                                       MOD03049
  134. 110   RETURN                                                            MOD03050
  135.       END                                                               MOD03051
  136.       SUBROUTINE JACOB2(NTOT,XYZ)                                       MOD03553
  137.       IMPLICIT REAL*8 (A-H,O-Z)                                         MOD03554
  138.       COMMON/UNIT/INN,IOUT,IP                                           MOD03555
  139.       COMMON/CGELE/N                                                    MOD03556
  140.       DIMENSION XYZ(NTOT,3),NOD(21),XM(21)                              MOD03557
  141.       DO 300 I = 1, NTOT                                                MOD03558
  142.       READ(IP,301) N,(XYZ(I,J),J=1,3)                                   MOD03559
  143. 300   CONTINUE                                                          MOD03560
  144. 301   FORMAT(I10,/,3E12.5)                                              MOD03561
  145.       READ(IP,302) IDUMMY                                               MOD03562
  146. 302   FORMAT(I10)                                                       MOD03563
  147.       READ(IP,401) NEL                                                  MOD03564
  148. 401   FORMAT(I10)                                                       MOD03565
  149.       DO 2000 I = 1, NEL                                                MOD03566
  150.       IPL = 0                                                           MOD03567
  151.       READ(IP,501) KIND,NGROUP,DEN,AREA                                 MOD03568
  152. 501   FORMAT(I10,I11,2E12.5)                                            MOD03569
  153.       READ (IP,502) N,(NOD(J),J=1,21)                                   MOD03570
  154. 502   FORMAT(I10,21I5)                                                  MOD03571
  155.       GO TO (1100,1100,1200,1200,1300,1200,1500,1200,                   MOD03572
  156.      *1400,1300,1200,1200,1200,1500,1500,1200,2000,2000),KIND           MOD03573
  157. 1100  CALL DIM1(XYZ,DEN,AREA,XM1,NOD,NTOT)                              MOD03574
  158.       GO TO 2000                                                        MOD03575
  159. 1200  CALL DIM2(XYZ,DEN,AREA,XM,NOD,NNOD,KIND,NTOT,N)                   MOD03576
  160.       GO TO 2000                                                        MOD03577
  161. 1300  CALL DIM3(XYZ,DEN,XM,NOD,NNOD,NTOT,N)                             MOD03578
  162.       GO TO 2000                                                        MOD03579
  163. 1400  CALL CURVE(XYZ,DEN,AREA,XM1,NOD,NTOT)                             MOD03580
  164.       GO TO 2000                                                        MOD03581
  165. 1500  CONTINUE                                                          MOD03582
  166. 2000  CONTINUE                                                          MOD03583
  167.       RETURN                                                            MOD03584
  168.       END                                                               MOD03585
  169.       SUBROUTINE SURINT (LIMIT,NUM,SEL,COOR,INDEX,GLOB,IER,GAUSS)       MOD06868
  170.       INTEGER SEL                                                       MOD06869
  171.       DIMENSION COOR(LIMIT,3),INDEX(NUM),GLOB(3),GAUSS(2)               MOD06870
  172.       DIMENSION A(2,2),DER(2),LC(2)                                     MOD06871
  173.       EQUIVALENCE (A(1,1),R),(A(2,2),S),(A(1,2),RB),(A(2,1),SB),        MOD06872
  174.      1(DER(1),D1),(DER(2),D2)                                           MOD06873
  175.       DIMENSION PHI(8),PHID(2,8),XIA(3,2),E(3)                          MOD06874
  176.       LOGICAL SKIP                                                      MOD06875
  177.       GAUSS(1)=0.D0                                                     MOD06876
  178.       GAUSS(2)=0.D0                                                     MOD06877
  179.       SKIP=.FALSE.                                                      MOD06878
  180.       IER=0                                                             MOD06879
  181. 211   CONTINUE                                                          MOD06880
  182.       R=GAUSS(1)                                                        MOD06881
  183.       S=GAUSS(2)                                                        MOD06882
  184.       IF (NUM.NE.3) GO TO 311                                           MOD06883
  185.       PHI(1)=R                                                          MOD06884
  186.       PHI(2)=S                                                          MOD06885
  187.       PHI(3)=1.D0-R-S                                                   MOD06886
  188.       PHID(1,1)=1.D0                                                    MOD06887
  189.       PHID(2,2)=1.D0                                                    MOD06888
  190.       PHID(1,3)=-1.D0                                                   MOD06889
  191.       PHID(2,3)=-1.D0                                                   MOD06890
  192.       PHID(2,1)=0.D0                                                    MOD06891
  193.       PHID(1,2)=0.D0                                                    MOD06892
  194.       GO TO 322                                                         MOD06893
  195. 311   CONTINUE                                                          MOD06894
  196.       RB=1.D0-R                                                         MOD06895
  197.       SB=1.D0-S                                                         MOD06896
  198.       RD=-R-R                                                           MOD06897
  199.       SD=-S-S                                                           MOD06898
  200.       R=1.D0+R                                                          MOD06899
  201.       S=1.D0+S                                                          MOD06900
  202.       RR=R*RB                                                           MOD06901
  203.       SS=S*SB                                                           MOD06902
  204.       DO 11 I=1,4                                                       MOD06903
  205.       GO TO (1,2,3,4),I                                                 MOD06904
  206. 1     D=R*S                                                             MOD06905
  207.       D1=S                                                              MOD06906
  208.       D2=R                                                              MOD06907
  209.       GO TO 22                                                          MOD06908
  210. 2     D=RB*S                                                            MOD06909
  211.       D1=-S                                                             MOD06910
  212.       D2=RB                                                             MOD06911
  213.       GO TO 22                                                          MOD06912
  214. 3     D=RB*SB                                                           MOD06913
  215.       D1=-SB                                                            MOD06914
  216.       D2=-RB                                                            MOD06915
  217.       GO TO 22                                                          MOD06916
  218. 4     D=R*SB                                                            MOD06917
  219.       D1=SB                                                             MOD06918
  220.       D2=-R                                                             MOD06919
  221. 22    PHI(I)=.25D0*D                                                    MOD06920
  222.       PHID(1,I)=.25D0*D1                                                MOD06921
  223.       PHID(2,I)=.25D0*D2                                                MOD06922
  224. 11    CONTINUE                                                          MOD06923
  225.       JB=SEL                                                            MOD06924
  226.       K=4                                                               MOD06925
  227.       DO 44 IND=1,4                                                     MOD06926
  228.       IF (JB.EQ.0) GO TO 100                                            MOD06927
  229.       L=JB/2                                                            MOD06928
  230.       IF (JB.EQ.L+L) GO TO 44                                           MOD06929
  231.       K=K+1                                                             MOD06930
  232.       GO TO (101,102,103,104),IND                                       MOD06931
  233. 101   D=RR*S                                                            MOD06932
  234.       D1=RD*S                                                           MOD06933
  235.       D2=RR                                                             MOD06934
  236.       GO TO 55                                                          MOD06935
  237. 102   D=RB*SS                                                           MOD06936
  238.       D1=-SS                                                            MOD06937
  239.       D2=RB*SD                                                          MOD06938
  240.       GO TO 55                                                          MOD06939
  241. 103   D=RR*SB                                                           MOD06940
  242.       D1=RD*SB                                                          MOD06941
  243.       D2=-RR                                                            MOD06942
  244.       GO TO 55                                                          MOD06943
  245. 104   D=R*SS                                                            MOD06944
  246.       D1=SS                                                             MOD06945
  247.       D2=R*SD                                                           MOD06946
  248. 55    LC(1)=IND                                                         MOD06947
  249.       LC(2)=IND+1                                                       MOD06948
  250.       IF (LC(2).GT.4) LC(2)=1                                           MOD06949
  251.       PHI(K)=.5D0*D                                                     MOD06950
  252.       D=.25D0*D                                                         MOD06951
  253.       DO 66 IA=1,2                                                      MOD06952
  254.       PHID(IA,K)=DER(IA)*.5D0                                           MOD06953
  255. 66    DER(IA)=DER(IA)*.25D0                                             MOD06954
  256.       DO 77 I=1,2                                                       MOD06955
  257.       J=LC(I)                                                           MOD06956
  258.       PHI(J)=PHI(J)-D                                                   MOD06957
  259.       DO 77 IA=1,2                                                      MOD06958
  260. 77    PHID(IA,J)=PHID(IA,J)-DER(IA)                                     MOD06959
  261. 44    JB=L                                                              MOD06960
  262. 100   CONTINUE                                                          MOD06961
  263. 322   DO 333 I=1,3                                                      MOD06962
  264.       D=GLOB(I)                                                         MOD06963
  265.       DO 344 K=1,NUM                                                    MOD06964
  266.       JB=INDEX(K)                                                       MOD06965
  267. 344   D=D-PHI(K)*COOR(JB,I)                                             MOD06966
  268. 333   E(I)=D                                                            MOD06967
  269.       IF (SKIP) GO TO 222                                               MOD06968
  270.       DO 111 IA=1,2                                                     MOD06969
  271.       DO 111 I=1,3                                                      MOD06970
  272.       D=0.D0                                                            MOD06971
  273.       DO 122 K=1,NUM                                                    MOD06972
  274.       JB=INDEX(K)                                                       MOD06973
  275. 122   D=D+PHID(IA,K)*COOR(JB,I)                                         MOD06974
  276. 111   XIA(I,IA)=D                                                       MOD06975
  277.       DO 133 IA=1,2                                                     MOD06976
  278.       DO 133 JB=1,IA                                                    MOD06977
  279.       D=0.D0                                                            MOD06978
  280.       DO 144 K=1,3                                                      MOD06979
  281. 144   D=D+XIA(K,IA)*XIA(K,JB)                                           MOD06980
  282. 133   A(IA,JB)=D                                                        MOD06981
  283.       D=A(1,1)*A(2,2)-A(2,1)**2                                         MOD06982
  284.       IF (D.GT.0.) GO TO 155                                            MOD06983
  285.       IER=1                                                             MOD06984
  286.       RETURN                                                            MOD06985
  287. 155   CONTINUE                                                          MOD06986
  288.       DO 255 IA=1,2                                                     MOD06987
  289.       RR=0.D0                                                           MOD06988
  290.       DO 266 I=1,3                                                      MOD06989
  291. 266   RR=RR+E(I)*XIA(I,IA)                                              MOD06990
  292. 255   DER(IA)=RR                                                        MOD06991
  293.       D=1.D0/D                                                          MOD06992
  294.       RR=A(1,1)*D                                                       MOD06993
  295.       A(1,1)=A(2,2)*D                                                   MOD06994
  296.       A(2,2)=RR                                                         MOD06995
  297.       RR=-A(2,1)*D                                                      MOD06996
  298.       A(2,1)=RR                                                         MOD06997
  299.       A(1,2)=RR                                                         MOD06998
  300.       RR=0.D0                                                           MOD06999
  301.       DO 277 IA=1,2                                                     MOD07000
  302.       D=0.D0                                                            MOD07001
  303.       DO 288 JB=1,2                                                     MOD07002
  304. 288   D=D+A(IA,JB)*DER(JB)                                              MOD07003
  305.       RR=RR+D**2                                                        MOD07004
  306. 277   GAUSS(IA)=GAUSS(IA)+D                                             MOD07005
  307.       SKIP=RR.LE.1.E-6                                                  MOD07006
  308.       GO TO 211                                                         MOD07007
  309. 222   DO 166 I=1,3                                                      MOD07008
  310. 166   GLOB(I)=GLOB(I)-E(I)                                              MOD07009
  311.       RETURN                                                            MOD07010
  312.       END                                                               MOD07011
  313.       SUBROUTINE PTS1 (P1,P2,R,P3)                                      MOD05219
  314.       COMMON/UNIT/INN,IO                                                MOD05220
  315.       DIMENSION P1(3),P2(3),P3(3)                                       MOD05221
  316.       DX=P2(1)-P1(1)                                                    MOD05222
  317.       DY=P2(2)-P1(2)                                                    MOD05223
  318.       DZ=P2(3)-P1(3)                                                    MOD05224
  319.       DEN=SQRT(DX*DX+DY*DY+DZ*DZ)                                       MOD05225
  320.       IF(DEN.EQ.0.0)WRITE(IO,10)                                        MOD05226
  321. 10    FORMAT('   +++ F +++ A POINT FIND OUT ON THE CENTER OF            MOD05227
  322.      1THE SPHERE .',/,10X,'CHANGE THE CENTER OF THE SPHERE')            MOD05228
  323.       COSA=DX/DEN                                                       MOD05229
  324.       COSB=DY/DEN                                                       MOD05230
  325.       COSC=DZ/DEN                                                       MOD05231
  326.       P3(1)=R*COSA+P1(1)                                                MOD05232
  327.       P3(2)=R*COSB+P1(2)                                                MOD05233
  328.       P3(3)=R*COSC+P1(3)                                                MOD05234
  329.       RETURN                                                            MOD05235
  330.       END                                                               MOD05236
  331.       SUBROUTINE PTS2 (P1,P2,P3,A,B,C,D)                                MOD05237
  332.       DIMENSION P1(3),P2(3),P3(3)                                       MOD05238
  333.       A=P2(1)-P1(1)                                                     MOD05239
  334.       B=P2(2)-P1(2)                                                     MOD05240
  335.       C=P2(3)-P1(3)                                                     MOD05241
  336.       D=A*P3(1)+B*P3(2)+C*P3(3)                                         MOD05242
  337.       RETURN                                                            MOD05243
  338.       END                                                               MOD05244
  339.       SUBROUTINE PTS3 (P1,P2,A,B,C,D,P3)                                MOD05245
  340.       DIMENSION P1(3),P2(3),P3(3)                                       MOD05246
  341.       REAL NX,NY,NZ                                                     MOD05247
  342.       NX=P2(1)-P1(1)                                                    MOD05248
  343.       NY=P2(2)-P1(2)                                                    MOD05249
  344.       NZ=P2(3)-P1(3)                                                    MOD05250
  345.       IF (NX.EQ.0.)  GO TO 10                                           MOD05251
  346.       P3(1)= (D+B*NY/NX*P1(1)-B*P1(2)+C*NZ/NX*P1(1)-C*P1(3))            MOD05252
  347.      $/ (A+B*NY/NX+C*NZ/NX)                                             MOD05253
  348.       P3(2)= NY*(P3(1)-P1(1))/NX+P1(2)                                  MOD05254
  349.       P3(3)= NZ*(P3(1)-P1(1))/NX+P1(3)                                  MOD05255
  350.       GO TO 30                                                          MOD05256
  351. 10    CONTINUE                                                          MOD05257
  352.       IF (NZ.EQ.0.)  GO TO 20                                           MOD05258
  353.       P3(3)= (D-A*P1(1)+B*NY/NZ*P1(3)-B*P1(2))/(B*NY/NZ+C)              MOD05259
  354.       P3(1)= P1(1)                                                      MOD05260
  355.       P3(2)= NY/NZ*(P3(3)-P1(3))+P1(2)                                  MOD05261
  356.       GO TO 30                                                          MOD05262
  357. 20    CONTINUE                                                          MOD05263
  358.       P3(1)= P1(1)                                                      MOD05264
  359.       P3(3)= P1(3)                                                      MOD05265
  360.       P3(2)= (D-A*P1(1)-C*P1(3))/B                                      MOD05266
  361. 30    CONTINUE                                                          MOD05267
  362.       RETURN                                                            MOD05268
  363.       END                                                               MOD05269
  364.       SUBROUTINE VOLM (N3D,INCR,INCS,INCT,NUMDR,NUMDS,NUMDT             MOD07199
  365.      1,KS,LIMIT,NSTOR,X,Y,Z)                                            MOD07200
  366.       LOGICAL IGET,RGET                                                 MOD07201
  367.       DIMENSION N3D(20),NIB(6),NSTOR(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT)  MOD07202
  368.       DIMENSION P1(3),P2(3),P3(3),P4(3),P5(3),P6(3),P7(3),P8(3)         MOD07203
  369.       DATA NIB/1,4,2,1,5,1/                                             MOD07204
  370.       IF (KS.LT.0 .OR. KS.GT.6)  GO TO 600                              MOD07205
  371.       DO 500 N=1,KS                                                     MOD07206
  372. 5     CALL GETNL(GET001)                                                MOD07207
  373.       IF(IGET(NS))GO TO 5                                               MOD07208
  374.       IF(IGET(NTYP))GO TO 5                                             MOD07209
  375.       IF (NS.LT.1 .OR. NS.GT.6)   GO TO 500                             MOD07210
  376.       IF (NTYP.LT.1 .OR. NTYP.GT.3)   GO TO 500                         MOD07211
  377.       M=NIB(NS)                                                         MOD07212
  378.       NODE=N3D(M)                                                       MOD07213
  379.       GO TO (10,10,20,20,30,30), NS                                     MOD07214
  380. 10    NUMD1=NUMDT                                                       MOD07215
  381.       NUMD2=NUMDS                                                       MOD07216
  382.       INC1=INCS                                                         MOD07217
  383.       INC2=INCT                                                         MOD07218
  384.       GO TO 70                                                          MOD07219
  385. 20    NUMD1=NUMDT                                                       MOD07220
  386.       NUMD2=NUMDR                                                       MOD07221
  387.       INC1=INCR                                                         MOD07222
  388.       INC2=INCT                                                         MOD07223
  389.       GO TO 70                                                          MOD07224
  390. 30    NUMD1=NUMDS                                                       MOD07225
  391.       NUMD2=NUMDR                                                       MOD07226
  392.       INC1=INCR                                                         MOD07227
  393.       INC2=INCS                                                         MOD07228
  394. 70    CONTINUE                                                          MOD07229
  395.       GO TO (100,200,300), NTYP                                         MOD07230
  396. 100   CONTINUE                                                          MOD07231
  397.       DO 102 K=1,3                                                      MOD07232
  398.       IF(RGET(P1(K)))GO TO 5                                            MOD07233
  399. 102   CONTINUE                                                          MOD07234
  400.       IF(RGET(RAD))GO TO 5                                              MOD07235
  401.       DO 150 I=1,NUMD1                                                  MOD07236
  402.       DO 140 J=1,NUMD2                                                  MOD07237
  403.       IF(NODE.GT.LIMIT)CALL PRTERR(7)                                   MOD07238
  404.       P2(1)=X(NODE)                                                     MOD07239
  405.       P2(2)=Y(NODE)                                                     MOD07240
  406.       P2(3)=Z(NODE)                                                     MOD07241
  407.       CALL PTS1 (P1,P2,RAD,P3)                                          MOD07242
  408.       NSTOR(NODE)=NODE                                                  MOD07243
  409.       X(NODE)=P3(1)                                                     MOD07244
  410.       Y(NODE)=P3(2)                                                     MOD07245
  411.       Z(NODE)=P3(3)                                                     MOD07246
  412.       NODE=NODE+INC1                                                    MOD07247
  413. 140   CONTINUE                                                          MOD07248
  414.       NODE=NODE-NUMD2*INC1+INC2                                         MOD07249
  415. 150   CONTINUE                                                          MOD07250
  416.       GO TO 500                                                         MOD07251
  417. 200   CONTINUE                                                          MOD07252
  418.       DO 202 K=1,3                                                      MOD07253
  419.       IF(RGET(P1(K)))GO TO 5                                            MOD07254
  420. 202   CONTINUE                                                          MOD07255
  421.       DO 203 K=1,3                                                      MOD07256
  422.       IF(RGET(P2(K)))GO TO 5                                            MOD07257
  423. 203   CONTINUE                                                          MOD07258
  424.       IF(RGET(RAD))GO TO 5                                              MOD07259
  425.       DO 250 I=1,NUMD1                                                  MOD07260
  426.       DO 240 J=1,NUMD2                                                  MOD07261
  427.       IF(NODE.GT.LIMIT)CALL PRTERR(7)                                   MOD07262
  428.       P3(1)=X(NODE)                                                     MOD07263
  429.       P3(2)=Y(NODE)                                                     MOD07264
  430.       P3(3)=Z(NODE)                                                     MOD07265
  431.       CALL PTS2 (P1,P2,P3,A,B,C,D)                                      MOD07266
  432.       CALL PTS3 (P1,P2,A,B,C,D,P4)                                      MOD07267
  433.       CALL PTS1 (P4,P3,RAD,P5)                                          MOD07268
  434.       NSTOR(NODE)=NODE                                                  MOD07269
  435.       X(NODE)=P5(1)                                                     MOD07270
  436.       Y(NODE)=P5(2)                                                     MOD07271
  437.       Z(NODE)=P5(3)                                                     MOD07272
  438.       NODE=NODE+INC1                                                    MOD07273
  439. 240   CONTINUE                                                          MOD07274
  440.       NODE=NODE-NUMD2*INC1+INC2                                         MOD07275
  441. 250   CONTINUE                                                          MOD07276
  442.       GO TO 500                                                         MOD07277
  443. 300   CONTINUE                                                          MOD07278
  444.       DO 302 K=1,3                                                      MOD07279
  445.       IF(RGET(P1(K)))GO TO 5                                            MOD07280
  446. 302   CONTINUE                                                          MOD07281
  447.       DO 303 K=1,3                                                      MOD07282
  448.       IF(RGET(P2(K)))GO TO 5                                            MOD07283
  449. 303   CONTINUE                                                          MOD07284
  450.       DO 304 K=1,3                                                      MOD07285
  451.       IF(RGET(P3(K)))GO TO 5                                            MOD07286
  452. 304   CONTINUE                                                          MOD07287
  453.       DO 305 K=1,3                                                      MOD07288
  454.       IF(RGET(P4(K)))GO TO 5                                            MOD07289
  455. 305   CONTINUE                                                          MOD07290
  456.       DO 350 I=1,NUMD1                                                  MOD07291
  457.       DO 340 J=1,NUMD2                                                  MOD07292
  458.       IF(NODE.GT.LIMIT)CALL PRTERR(7)                                   MOD07293
  459.       P5(1)=X(NODE)                                                     MOD07294
  460.       P5(2)=Y(NODE)                                                     MOD07295
  461.       P5(3)=Z(NODE)                                                     MOD07296
  462.       CALL PTS2 (P1,P2,P5,A,B,C,D)                                      MOD07297
  463.       CALL PTS3 (P1,P2,A,B,C,D,P6)                                      MOD07298
  464.       CALL PTS3 (P3,P4,A,B,C,D,P7)                                      MOD07299
  465.       RAD=SQRT((P7(1)-P6(1))**2+(P7(2)-P6(2))**2+(P7(3)-P6(3))**2)      MOD07300
  466.       CALL PTS1 (P6,P5,RAD,P8)                                          MOD07301
  467.       NSTOR(NODE)=NODE                                                  MOD07302
  468.       X(NODE)=P8(1)                                                     MOD07303
  469.       Y(NODE)=P8(2)                                                     MOD07304
  470.       Z(NODE)=P8(3)                                                     MOD07305
  471.       NODE=NODE+INC1                                                    MOD07306
  472. 340   CONTINUE                                                          MOD07307
  473.       NODE=NODE-NUMD2*INC1+INC2                                         MOD07308
  474. 350   CONTINUE                                                          MOD07309
  475. 500   CONTINUE                                                          MOD07310
  476. 600   CONTINUE                                                          MOD07311
  477.       RETURN                                                            MOD07312
  478.       END                                                               MOD07313
  479.       SUBROUTINE SRFC (NOD,INCS,INCT,NUMDS,NUMDT,KS,LIMIT,NSTOR,X,Y,Z)  MOD06709
  480.       LOGICAL IGET,RGET                                                 MOD06710
  481.       DIMENSION NOD(8),NIB(4),NSTOR(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT)   MOD06711
  482.       DIMENSION P1(3),P2(3),P3(3),P4(3),P5(3),P6(3),P7(3),P8(3)         MOD06712
  483.      1,ID(2,2),CORD(20,3),NN(4)                                         MOD06713
  484.       DATA NIB/1,2,4,1/                                                 MOD06714
  485.       IF (KS.GT.3 .OR. KS.LT.-4)   GO TO 500                            MOD06715
  486.       IF (KS.LT.0)   GO TO 300                                          MOD06716
  487.       GO TO (22,100,200), KS                                            MOD06717
  488. 22    CONTINUE                                                          MOD06718
  489. 10    CALL GETNL(GET001)                                                MOD06719
  490.       DO 25 K=1,3                                                       MOD06720
  491.       IF(RGET(P1(K))) GO TO 10                                          MOD06721
  492. 25    CONTINUE                                                          MOD06722
  493.       IF(RGET(RAD)) GO TO 10                                            MOD06723
  494.       NODE=NOD(1)                                                       MOD06724
  495.       IF(NODE.GT.LIMIT)CALL PRTERR(7)                                   MOD06725
  496.       DO 50 I=1,NUMDT                                                   MOD06726
  497.       DO 40 J=1,NUMDS                                                   MOD06727
  498.       P2(1)=X(NODE)                                                     MOD06728
  499.       P2(2)=Y(NODE)                                                     MOD06729
  500.       P2(3)=Z(NODE)                                                     MOD06730
  501.       CALL PTS1 (P1,P2,RAD,P3)                                          MOD06731
  502.       NSTOR(NODE)=NODE                                                  MOD06732
  503.       X(NODE)=P3(1)                                                     MOD06733
  504.       Y(NODE)=P3(2)                                                     MOD06734
  505.       Z(NODE)=P3(3)                                                     MOD06735
  506.       NODE=NODE+INCS                                                    MOD06736
  507.       IF(NODE.GT.LIMIT)CALL PRTERR(7)                                   MOD06737
  508. 40    CONTINUE                                                          MOD06738
  509.       NODE=NODE-NUMDS*INCS+INCT                                         MOD06739
  510.       IF(NODE.GT.LIMIT)CALL PRTERR(7)                                   MOD06740
  511. 50    CONTINUE                                                          MOD06741
  512.       GO TO 500                                                         MOD06742
  513. 100   CONTINUE                                                          MOD06743
  514. 110   CALL GETNL(GET001)                                                MOD06744
  515.       DO 125 K=1,3                                                      MOD06745
  516.       IF(RGET(P1(K)))GO TO 110                                          MOD06746
  517. 125   CONTINUE                                                          MOD06747
  518.       DO 126 K=1,3                                                      MOD06748
  519.       IF(RGET(P2(K)))GO TO 110                                          MOD06749
  520. 126   CONTINUE                                                          MOD06750
  521.       IF(RGET(RAD))GO TO 100                                            MOD06751
  522.       NODE=NOD(1)                                                       MOD06752
  523.       DO 150 I=1,NUMDT                                                  MOD06753
  524.       DO 140 J=1,NUMDS                                                  MOD06754
  525.       IF(NODE.GT.LIMIT)CALL PRTERR(7)                                   MOD06755
  526.       P3(1)=X(NODE)                                                     MOD06756
  527.       P3(2)=Y(NODE)                                                     MOD06757
  528.       P3(3)=Z(NODE)                                                     MOD06758
  529.       CALL PTS2 (P1,P2,P3,A,B,C,D)                                      MOD06759
  530.       CALL PTS3 (P1,P2,A,B,C,D,P4)                                      MOD06760
  531.       CALL PTS1 (P4,P3,RAD,P5)                                          MOD06761
  532.       NSTOR(NODE)=NODE                                                  MOD06762
  533.       X(NODE)=P5(1)                                                     MOD06763
  534.       Y(NODE)=P5(2)                                                     MOD06764
  535.       Z(NODE)=P5(3)                                                     MOD06765
  536.       NODE=NODE+INCS                                                    MOD06766
  537. 140   CONTINUE                                                          MOD06767
  538.       NODE=NODE-NUMDS*INCS+INCT                                         MOD06768
  539. 150   CONTINUE                                                          MOD06769
  540.       GO TO 500                                                         MOD06770
  541. 200   CONTINUE                                                          MOD06771
  542. 201   CALL GETNL(GET001)                                                MOD06772
  543.       DO 202 K=1,3                                                      MOD06773
  544.       IF(RGET(P1(K)))GO TO 201                                          MOD06774
  545. 202   CONTINUE                                                          MOD06775
  546.       DO 203 K=1,3                                                      MOD06776
  547.       IF(RGET(P2(K)))GO TO 201                                          MOD06777
  548. 203   CONTINUE                                                          MOD06778
  549.       DO 204 K=1,3                                                      MOD06779
  550.       IF(RGET(P3(K)))GO TO 201                                          MOD06780
  551. 204   CONTINUE                                                          MOD06781
  552.       DO 205 K=1,3                                                      MOD06782
  553.       IF(RGET(P4(K)))GO TO 201                                          MOD06783
  554. 205   CONTINUE                                                          MOD06784
  555.       NODE=NOD(1)                                                       MOD06785
  556.       DO 250 I=1,NUMDT                                                  MOD06786
  557.       DO 240 J=1,NUMDS                                                  MOD06787
  558.       IF(NODE.GT.LIMIT)CALL PRTERR(7)                                   MOD06788
  559.       P5(1)=X(NODE)                                                     MOD06789
  560.       P5(2)=Y(NODE)                                                     MOD06790
  561.       P5(3)=Z(NODE)                                                     MOD06791
  562.       CALL PTS2 (P1,P2,P5,A,B,C,D)                                      MOD06792
  563.       CALL PTS3 (P1,P2,A,B,C,D,P6)                                      MOD06793
  564.       CALL PTS3 (P3,P4,A,B,C,D,P7)                                      MOD06794
  565.       RAD=SQRT((P7(1)-P6(1))**2+(P7(2)-P6(2))**2+(P7(3)-P6(3))**2)      MOD06795
  566.       CALL PTS1 (P6,P5,RAD,P8)                                          MOD06796
  567.       NSTOR(NODE)=NODE                                                  MOD06797
  568.       X(NODE)=P8(1)                                                     MOD06798
  569.       Y(NODE)=P8(2)                                                     MOD06799
  570.       Z(NODE)=P8(3)                                                     MOD06800
  571.       NODE=NODE+INCS                                                    MOD06801
  572. 240   CONTINUE                                                          MOD06802
  573.       NODE=NODE-NUMDS*INCS+INCT                                         MOD06803
  574. 250   CONTINUE                                                          MOD06804
  575.       GO TO 500                                                         MOD06805
  576. 300   CONTINUE                                                          MOD06806
  577.       KS=IABS(KS)                                                       MOD06807
  578.       DO 400 N=1,KS                                                     MOD06808
  579. 301   CALL GETNL(GET01)                                                 MOD06809
  580.       IF(IGET(NS))GO TO 301                                             MOD06810
  581.       DO 320 K=1,3                                                      MOD06811
  582.       IF(RGET(P1(K)))GO TO 301                                          MOD06812
  583. 320   CONTINUE                                                          MOD06813
  584.       DO 321 K=1,3                                                      MOD06814
  585.       IF(RGET(P2(K)))GO TO 301                                          MOD06815
  586. 321   CONTINUE                                                          MOD06816
  587.       IF(RGET(RAD))GO TO 301                                            MOD06817
  588.       IF (NS.LT.1 .OR. NS.GT.4)   GO TO 400                             MOD06818
  589.       M=NIB(NS)                                                         MOD06819
  590.       NODE=NOD(M)                                                       MOD06820
  591.       INC=INCS                                                          MOD06821
  592.       IF (NS.EQ.2 .OR. NS.EQ.4)   INC=INCT                              MOD06822
  593.       NUMD=NUMDS                                                        MOD06823
  594.       IF (NS.EQ.2 .OR. NS.EQ.4)   NUMD=NUMDT                            MOD06824
  595.       DO 380 M=1,NUMD                                                   MOD06825
  596.       IF(NODE.GT.LIMIT)CALL PRTERR(7)                                   MOD06826
  597.       P3(1)=X(NODE)                                                     MOD06827
  598.       P3(2)=Y(NODE)                                                     MOD06828
  599.       P3(3)=Z(NODE)                                                     MOD06829
  600.       CALL PTS2 (P1,P2,P3,A,B,C,D)                                      MOD06830
  601.       CALL PTS3 (P1,P2,A,B,C,D,P4)                                      MOD06831
  602.       CALL PTS1 (P4,P3,RAD,P5)                                          MOD06832
  603.       NSTOR(NODE)=NODE                                                  MOD06833
  604.       X(NODE)=P5(1)                                                     MOD06834
  605.       Y(NODE)=P5(2)                                                     MOD06835
  606.       Z(NODE)=P5(3)                                                     MOD06836
  607.       NODE=NODE+INC                                                     MOD06837
  608. 380   CONTINUE                                                          MOD06838
  609. 400   CONTINUE                                                          MOD06839
  610. 500   RETURN                                                            MOD06840
  611.       END                                                               MOD06841
  612.       SUBROUTINE MESHGE(XN,INCS,INCT,INCR,PERS,PERT,PERR,ID,KS1         MOD04275
  613.      1,LIMIT,NSTOR,X,Y,Z)                                               MOD04276
  614.       DIMENSION XN(20,4),CORD(20,3),H(20),CZ(3),NOD(8),N3D(20)          MOD04277
  615.       DIMENSION XC(3),XI(3),XX(3)                                       MOD04278
  616.       DIMENSION NSTOR(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT)                 MOD04279
  617. 210   KO=1                                                              MOD04280
  618.       IF(ID.NE.2) GO TO 600                                             MOD04281
  619. 410   CONTINUE                                                          MOD04282
  620.       DO 407 I=1,8                                                      MOD04283
  621.       NOD(I)=XN(I,1)                                                    MOD04284
  622. 407   CONTINUE                                                          MOD04285
  623.       IF(PERS.LE.0.0) PERS=100.                                         MOD04286
  624.       IF(PERT.LE.0.0) PERT=100.                                         MOD04287
  625.       IF(INCS.EQ.0) INCS=1                                              MOD04288
  626.       IF(INCT.EQ.0) INCT=NOD(2)-NOD(1)+1                                MOD04289
  627.       DO 480 I=1,8                                                      MOD04290
  628.       J=NOD(I)                                                          MOD04291
  629. 450   DO 460 K=1,3                                                      MOD04292
  630. 460   CORD(I,K)=0.0                                                     MOD04293
  631.       IF(J.EQ.0) GO TO 480                                              MOD04294
  632.       DO 470 K=1,3                                                      MOD04295
  633.       KK=K+1                                                            MOD04296
  634. 470   CORD(I,K)=XN(I,KK)                                                MOD04297
  635. 480   CONTINUE                                                          MOD04298
  636.       NI=4                                                              MOD04299
  637.       DO 490 I=5,8                                                      MOD04300
  638.       IF(NOD(I).GT.0) NI=8                                              MOD04301
  639.       H(I)=0.0                                                          MOD04302
  640. 490   CONTINUE                                                          MOD04303
  641.       DO 500 I=1,4                                                      MOD04304
  642.       IF(NOD(I).EQ.0) CALL PRTERR(2)                                    MOD04305
  643.       IF(NOD(I).EQ.0) RETURN                                            MOD04306
  644. 500   CONTINUE                                                          MOD04307
  645.       NODE=NOD(1)                                                       MOD04308
  646.       NUMDS=(NOD(2)-NOD(1))/INCS+1                                      MOD04309
  647.       NUMDT=(NOD(3)-NOD(2))/INCT+1                                      MOD04310
  648.       NX=NOD(1)-INCS+(NUMDS*NUMDT*INCS)+(INCT-NUMDS*INCS)*(NUMDT-1)     MOD04311
  649.       IF(NX.EQ.NOD(3)) GO TO 515                                        MOD04312
  650.       CALL PRTERR(3)                                                    MOD04313
  651.       RETURN                                                            MOD04314
  652. 515   CONTINUE                                                          MOD04315
  653.       T=-1.                                                             MOD04316
  654.       PERS=PERS/100.0                                                   MOD04317
  655.       PERT=PERT/100.0                                                   MOD04318
  656.       LLL=NUMDS-2                                                       MOD04319
  657.       SUMS=1.0                                                          MOD04320
  658.       DO 520 I=1,LLL                                                    MOD04321
  659. 520   SUMS=SUMS+PERS**I                                                 MOD04322
  660.       LLL=NUMDT-2                                                       MOD04323
  661.       SUMT=1.0                                                          MOD04324
  662.       DO 530 I=1,LLL                                                    MOD04325
  663. 530   SUMT=SUMT+PERT**I                                                 MOD04326
  664.       FACTT=1.0/PERT                                                    MOD04327
  665.       IF(PERS.EQ.1.0)SUMS=NUMDS-1                                       MOD04328
  666.       IF(PERT.EQ.1.0)SUMT=NUMDT-1                                       MOD04329
  667.       DS=2.0/SUMS                                                       MOD04330
  668.       DT=2.0/SUMT                                                       MOD04331
  669.       DO 590 I=1,NUMDT                                                  MOD04332
  670.       S=-1.                                                             MOD04333
  671.       FACTS=1.0/PERS                                                    MOD04334
  672.       DO 580 J=1,NUMDS                                                  MOD04335
  673.       IF(NI.NE.8) GO TO 540                                             MOD04336
  674.       IF(NOD(5).GT.0)                                                   MOD04337
  675.      $H(5)=(1.-S**2)*(1.-T)*0.5                                         MOD04338
  676.       IF(NOD(6).GT.0)                                                   MOD04339
  677.      $H(6)=(1.-T**2)*(1.+S)*0.5                                         MOD04340
  678.       IF(NOD(7).GT.0)                                                   MOD04341
  679.      $H(7)=(1.-S**2)*(1.+T)*0.5                                         MOD04342
  680.       IF(NOD(8).GT.0)                                                   MOD04343
  681.      $H(8)=(1.-T**2)*(1.-S)*0.5                                         MOD04344
  682. 540   H(1)=(1.-S)*(1.-T)*   0.25-(H(5)+H(8)) *0.5                       MOD04345
  683.       H(2)=(1.+S)*(1.-T)*   0.25-(H(5)+H(6)) *0.5                       MOD04346
  684.       H(3)=(1.+S)*(1.+T)*   0.25-(H(6)+H(7)) *0.5                       MOD04347
  685.       H(4)=(1.-S)*(1.+T)*   0.25-(H(7)+H(8)) *0.5                       MOD04348
  686.       DO 550 JJ=1,3                                                     MOD04349
  687. 550   CZ(JJ)=0.0                                                        MOD04350
  688.       DO 560 II=1,NI                                                    MOD04351
  689.       DO 560 JJ=1,3                                                     MOD04352
  690. 560   CZ(JJ)=CZ(JJ)+H(II)*CORD(II,JJ)                                   MOD04353
  691.       IF(NODE.GT.LIMIT)CALL PRTERR(7)                                   MOD04354
  692.       NSTOR(NODE)=NODE                                                  MOD04355
  693.       X(NODE)=CZ(1)                                                     MOD04356
  694.       Y(NODE)=CZ(2)                                                     MOD04357
  695.       Z(NODE)=CZ(3)                                                     MOD04358
  696.       NODE=NODE+INCS                                                    MOD04359
  697.       FACTS=FACTS*PERS                                                  MOD04360
  698. 580   S=S+DS*FACTS                                                      MOD04361
  699.       NODE=NODE-(NUMDS)*INCS+INCT                                       MOD04362
  700.       FACTT=FACTT*PERT                                                  MOD04363
  701. 590   T=T+DT*FACTT                                                      MOD04364
  702.       IF(KS1.NE.0)CALL SRFC(NOD,INCS,INCT,NUMDS,NUMDT,KS1               MOD04365
  703.      1,LIMIT,NSTOR,X,Y,Z)                                               MOD04366
  704.       RETURN                                                            MOD04367
  705. 600   IF(ID.NE.3)GO TO 1000                                             MOD04368
  706.       DO 601 M=1,20                                                     MOD04369
  707.       N3D(M)=XN(M,1)                                                    MOD04370
  708. 601   CONTINUE                                                          MOD04371
  709.       IF(INCR.LE.0) INCR=1                                              MOD04372
  710.       NUMDR=(N3D(4)-N3D(1))/INCR+1                                      MOD04373
  711.       IF(INCS.LE.0)                                                     MOD04374
  712.      $INCS=N3D(4)-N3D(1)+1                                              MOD04375
  713.       NUMDS=(N3D(3)-N3D(4))/INCS+1                                      MOD04376
  714.       IF(INCT.LE.0)                                                     MOD04377
  715.      $INCT=N3D(3)-N3D(1)+1                                              MOD04378
  716.       NUMDT=(N3D(7)-N3D(3))/INCT+1                                      MOD04379
  717.       IF(PERR.LE.0.0)PERR=100.0                                         MOD04380
  718.       IF(PERS.LE.0.0)PERS=100.0                                         MOD04381
  719.       IF(PERT.LE.0.0)PERT=100.0                                         MOD04382
  720.       DO 680 I=1,20                                                     MOD04383
  721.       J=N3D(I)                                                          MOD04384
  722.       IF(J.GE.0)GO TO 650                                               MOD04385
  723.       CALL PRTERR(4)                                                    MOD04386
  724.       RETURN                                                            MOD04387
  725. 650   DO 660 K=1,3                                                      MOD04388
  726. 660   CORD(I,K)=0.0                                                     MOD04389
  727.       IF(J.EQ.0) GO TO 680                                              MOD04390
  728.       DO 670 K=1,3                                                      MOD04391
  729.       KK=K+1                                                            MOD04392
  730. 670   CORD(I,K)=XN(I,KK)                                                MOD04393
  731. 680   CONTINUE                                                          MOD04394
  732.       NI=8                                                              MOD04395
  733.       DO 690 I=9,20                                                     MOD04396
  734.       IF(N3D(I).GT.0) NI=20                                             MOD04397
  735. 690   H(I)=0.0                                                          MOD04398
  736.       DO 700 I=1,8                                                      MOD04399
  737.       IF(N3D(I).EQ.0) CALL PRTERR(2)                                    MOD04400
  738.       IF(N3D(I).EQ.0) RETURN                                            MOD04401
  739. 700   CONTINUE                                                          MOD04402
  740.       NNN=NUMDR*INCR*NUMDS+(INCS-NUMDR*INCR)*(NUMDS-1)                  MOD04403
  741.       NNN=N3D(1)+NNN*NUMDT+(INCT-NNN)*(NUMDT-1)-INCR                    MOD04404
  742.       IF(NNN.NE.N3D(7)) CALL PRTERR(5)                                  MOD04405
  743.       IF(NNN.NE.N3D(7))RETURN                                           MOD04406
  744.       PERR=PERR/100.0                                                   MOD04407
  745.       PERS=PERS/100.0                                                   MOD04408
  746.       PERT=PERT/100.0                                                   MOD04409
  747.       T=-1.                                                             MOD04410
  748.       LLL=NUMDR-2                                                       MOD04411
  749.       SUMR=1.0                                                          MOD04412
  750.       DO 730 I=1,LLL                                                    MOD04413
  751. 730   SUMR=SUMR+PERR**I                                                 MOD04414
  752.       LLL=NUMDS-2                                                       MOD04415
  753.       SUMS=1.0                                                          MOD04416
  754.       DO 740 I=1,LLL                                                    MOD04417
  755. 740   SUMS=SUMS+PERS**I                                                 MOD04418
  756.       LLL=NUMDT-2                                                       MOD04419
  757.       SUMT=1.0                                                          MOD04420
  758.       DO 750 I=1,LLL                                                    MOD04421
  759. 750   SUMT=SUMT+PERT**I                                                 MOD04422
  760.       IF(PERR.EQ.1.0) SUMR=NUMDR-1                                      MOD04423
  761.       IF(PERS.EQ.1.0) SUMS=NUMDS-1                                      MOD04424
  762.       IF(PERT.EQ.1.0) SUMT=NUMDT-1                                      MOD04425
  763.       FACTT=1.0/PERT                                                    MOD04426
  764.       NODE=N3D(1)                                                       MOD04427
  765.       DR=2.0/SUMR                                                       MOD04428
  766.       DS=2.0/SUMS                                                       MOD04429
  767.       DT=2.0/SUMT                                                       MOD04430
  768.       DO 820 MMM=1,NUMDT                                                MOD04431
  769.       NODEI=NODE                                                        MOD04432
  770.       S=-1.                                                             MOD04433
  771.       FACTS=1.0/PERS                                                    MOD04434
  772.       DO 810 I=1,NUMDS                                                  MOD04435
  773.       R=-1.                                                             MOD04436
  774.       FACTR=1.0/PERR                                                    MOD04437
  775.       DO 800 J=1,NUMDR                                                  MOD04438
  776.       RP=1.+R                                                           MOD04439
  777.       SP=1.+S                                                           MOD04440
  778.       TP=1.+T                                                           MOD04441
  779.       RM=1.-R                                                           MOD04442
  780.       SM=1.-S                                                           MOD04443
  781.       TM=1.-T                                                           MOD04444
  782.       IF(NI.NE.20) GO TO 760                                            MOD04445
  783.       RR=1.-R*R                                                         MOD04446
  784.       SS=1.-S*S                                                         MOD04447
  785.       TT=1.-T*T                                                         MOD04448
  786.       IF(N3D(9).GT.0)                                                   MOD04449
  787.      $H(9)=RM*SS*TM*0.25                                                MOD04450
  788.       IF(N3D(10).GT.0)                                                  MOD04451
  789.      $H(10)=RR*SP*TM*0.25                                               MOD04452
  790.       IF(N3D(11).GT.0)                                                  MOD04453
  791.      $H(11)=RP*SS*TM*0.25                                               MOD04454
  792.       IF(N3D(12).GT.0)                                                  MOD04455
  793.      $H(12)=RR*SM*TM *0.25                                              MOD04456
  794.       IF(N3D(13).GT.0)                                                  MOD04457
  795.      $H(13)=RM*SS*TP*0.25                                               MOD04458
  796.       IF(N3D(14).GT.0)                                                  MOD04459
  797.      $H(14)=RR*SP*TP*0.25                                               MOD04460
  798.       IF(N3D(15).GT.0)                                                  MOD04461
  799.      $H(15)=RP*SS*TP*0.25                                               MOD04462
  800.       IF(N3D(16).GT.0)                                                  MOD04463
  801.      $H(16)=RR*SM*TP*0.25                                               MOD04464
  802.       IF(N3D(17).GT.0)                                                  MOD04465
  803.      $H(17)=RM*SM*TT*0.25                                               MOD04466
  804.       IF(N3D(18).GT.0)                                                  MOD04467
  805.      $H(18)=RM*SP*TT *0.25                                              MOD04468
  806.       IF(N3D(19).GT.0)                                                  MOD04469
  807.      $H(19)=RP*SP*TT*0.25                                               MOD04470
  808.       IF(N3D(20).GT.0)                                                  MOD04471
  809.      $H(20)=RP*SM*TT*0.25                                               MOD04472
  810. 760   TM=0.125*TM                                                       MOD04473
  811.       TP=0.125*TP                                                       MOD04474
  812.       H(1)=RM*SM*TM     -0.5*(H( 9)+H(17)+H(12))                        MOD04475
  813.       H(2)=RM*SP*TM     -0.5*(H( 9)+H(18)+H(10))                        MOD04476
  814.       H(3)=RP*SP*TM     -0.5*(H(10)+H(19)+H(11))                        MOD04477
  815.       H(4)=RP*SM*TM     -0.5*(H(11)+H(20)+H(12))                        MOD04478
  816.       H(5)=RM*SM*TP     -0.5*(H(13)+H(17)+H(16))                        MOD04479
  817.       H(6)=RM*SP*TP     -0.5*(H(13)+H(18)+H(14))                        MOD04480
  818.       H(7)=RP*SP*TP     -0.5*(H(14)+H(19)+H(15))                        MOD04481
  819.       H(8)=RP*SM*TP     -0.5*(H(15)+H(20)+H(16))                        MOD04482
  820.       DO 770 JJ=1,3                                                     MOD04483
  821. 770   CZ(JJ)=0.0                                                        MOD04484
  822.       DO 780 II=1,NI                                                    MOD04485
  823.       DO 780 JJ=1,3                                                     MOD04486
  824. 780   CZ(JJ)=CZ(JJ)+H(II)*CORD(II,JJ)                                   MOD04487
  825.       IF(NODE.GT.LIMIT)CALL PRTERR(7)                                   MOD04488
  826.       NSTOR(NODE)=NODE                                                  MOD04489
  827.       X(NODE)=CZ(1)                                                     MOD04490
  828.       Y(NODE)=CZ(2)                                                     MOD04491
  829.       Z(NODE)=CZ(3)                                                     MOD04492
  830.       NODE=NODE+INCR                                                    MOD04493
  831.       FACTR=FACTR*PERR                                                  MOD04494
  832. 800   R=R+DR*FACTR                                                      MOD04495
  833.       NODE=NODE-NUMDR*INCR+INCS                                         MOD04496
  834.       FACTS=FACTS*PERS                                                  MOD04497
  835. 810   S=S+DS*FACTS                                                      MOD04498
  836.       NODE=NODEI+INCT                                                   MOD04499
  837.       FACTT=FACTT*PERT                                                  MOD04500
  838. 820   T=T+DT*FACTT                                                      MOD04501
  839.       IF(KS1.NE.0)CALL VOLM(N3D,INCR,INCS,INCT,NUMDR,NUMDS,NUMDT        MOD04502
  840.      1,KS1,LIMIT,NSTOR,X,Y,Z)                                           MOD04503
  841.       RETURN                                                            MOD04504
  842. 1000  CALL PRTERR(6)                                                    MOD04505
  843.       RETURN                                                            MOD04506
  844.       END                                                               MOD04507
  845.     FUNCTION ARSIN(A)
  846.     IMPLICIT REAL*4(A-H,O-Z)
  847.     ARSIN=ASIN(A)
  848.     RETURN
  849.     END
  850.     FUNCTION ARCOS(A)
  851.     IMPLICIT REAL*4(A-H,O-Z)
  852.     ARCOS=ACOS(A)
  853.     RETURN
  854.     END
  855.     FUNCTION DFLOAT(A)
  856.     IMPLICIT REAL*8(A-H,O-Z)
  857.     DFLOAT=DBLE(A)
  858.     RETURN
  859.     END
  860.     FUNCTION DARSIN(A)
  861.     IMPLICIT REAL*8(A-H,O-Z)
  862.     DARSIN=DASIN(A)
  863.     RETURN
  864.     END
  865.     FUNCTION DARCOS(A)
  866.     IMPLICIT REAL*8(A-H,O-Z)
  867.     DARCOS=DACOS(A)
  868.     RETURN
  869.     END
  870.       FUNCTION AGET(IIPOS)                                              MOD02895
  871.       INTEGER SECT,POINT,BEGIN,GETSEC,EPOINT,BLANK,AGET,AGETW           MOD02896
  872.       LOGICAL EOL,EOS,EOF,ERROR,INDEX,GETWRD                            MOD02897
  873.       COMMON  /FRECNT/ LINE(80),SECT,EOL,EOS,EOF,                       MOD02898
  874.      1ERROR,BLANK,ICOMMA,POINT,BEGIN,LENGTH,                            MOD02899
  875.      2EPOINT,NSECT,LINENM,MAXSTR,KUNIT,JUNIT,IUNIT                      MOD02900
  876.       AGET = BLANK                                                      MOD02901
  877.       IPOSIT = IIPOS                                                    MOD02902
  878. 500   IF (IPOSIT.GT.MAXSTR.OR.IPOSIT.LE.0) RETURN                       MOD02912
  879.       IF ((BEGIN+IPOSIT-1).LE.80) AGET = LINE (BEGIN+IPOSIT-1)          MOD02913
  880.       AGETW = AGET                                                      MOD02914
  881.       RETURN                                                            MOD02915
  882.       END                                                               MOD02916
  883.       FUNCTION IGET(II)                                                 MOD03052
  884.       INTEGER SECT,POINT,BEGIN,GETSEC,EPOINT,BLANK,AGET,AGETW           MOD03053
  885.       LOGICAL EOL,EOS,EOF,ERROR,INDEX,GETWRD,IGET,RGET,ERR1             MOD03054
  886.       COMMON  /FRECNT/ LINE(80),SECT,EOL,EOS,EOF,                       MOD03055
  887.      1ERROR,BLANK,ICOMMA,POINT,BEGIN,LENGTH,                            MOD03056
  888.      2EPOINT,NSECT,LINENM,MAXSTR,KUNIT,JUNIT,IUNIT                      MOD03057
  889.       COMMON/FRECNM/MULTIP                                              MOD03058
  890.       LOGICAL MODE                                                      MOD03059
  891.       DOUBLE PRECISION RNUMBR,DECIMA                                    MOD03060
  892.       DATA    IPER/1H./,LETE/1HE/,LETD/1HD/                             MOD03061
  893.       II=0                                                              MOD03062
  894.       MODE = .FALSE.                                                    MOD03063
  895.       IGET = .FALSE.                                                    MOD03064
  896. 100   IF(MULTIP.GT.0)GO TO 200                                          MOD03070
  897.       IF (.NOT.GETWRD(GET001))RETURN
  898.       IF (LENGTH.EQ.0) RETURN
  899.       RNUMBR = DECIMA(ERROR)                                            MOD03072
  900.       IF(MULTIP.GT.0)GO TO 200                                          MOD03073
  901.       IF (ERROR.AND.EPOINT.EQ.1) EPOINT = BEGIN                         MOD03074
  902.       IF (MODE)XX = RNUMBR                                              MOD03075
  903.       IF (.NOT.MODE) II = RNUMBR                                        MOD03076
  904.       IGET=ERR1(ERR001)                                                 MOD03077
  905.       RGET=ERR1(ERR001)                                                 MOD03078
  906.       RETURN                                                            MOD03079
  907. 200   MULTIP=MULTIP-1                                                   MOD03080
  908.       RETURN                                                            MOD03081
  909.       END                                                               MOD03082
  910.       FUNCTION AGETW(AGE001)                                            MOD02895
  911.       INTEGER SECT,POINT,BEGIN,GETSEC,EPOINT,BLANK,AGET,AGETW           MOD02896
  912.       LOGICAL EOL,EOS,EOF,ERROR,INDEX,GETWRD                            MOD02897
  913.       COMMON  /FRECNT/ LINE(80),SECT,EOL,EOS,EOF,                       MOD02898
  914.      1ERROR,BLANK,ICOMMA,POINT,BEGIN,LENGTH,                            MOD02899
  915.      2EPOINT,NSECT,LINENM,MAXSTR,KUNIT,JUNIT,IUNIT                      MOD02900
  916.       AGETW = BLANK                                                     MOD02905
  917.       IPOSIT = 1                                                        MOD02906
  918.       IF (.NOT.GETWRD(GET001))RETURN                                   
  919.        IF (LENGTH.EQ.0) RETURN
  920.       DO 450 ILOOP=BEGIN,80                                             MOD02908
  921.       IF (LINE(ILOOP).EQ.ICOMMA) GO TO 460                              MOD02909
  922. 450   CONTINUE                                                          MOD02910
  923. 460   MAXSTR = ILOOP - BEGIN                                            MOD02911
  924. 500   IF (IPOSIT.GT.MAXSTR.OR.IPOSIT.LE.0) RETURN                       MOD02912
  925.       IF ((BEGIN+IPOSIT-1).LE.80) AGET = LINE (BEGIN+IPOSIT-1)          MOD02913
  926.       AGETW = AGET                                                      MOD02914
  927.       RETURN                                                            MOD02915
  928.       END                                                               MOD02916
  929.       FUNCTION RGET(XX)                                                 MOD03052
  930.       INTEGER SECT,POINT,BEGIN,GETSEC,EPOINT,BLANK,AGET,AGETW           MOD03053
  931.       LOGICAL EOL,EOS,EOF,ERROR,INDEX,GETWRD,IGET,RGET,ERR1             MOD03054
  932.       COMMON  /FRECNT/ LINE(80),SECT,EOL,EOS,EOF,                       MOD03055
  933.      1ERROR,BLANK,ICOMMA,POINT,BEGIN,LENGTH,                            MOD03056
  934.      2EPOINT,NSECT,LINENM,MAXSTR,KUNIT,JUNIT,IUNIT                      MOD03057
  935.       COMMON/FRECNM/MULTIP                                              MOD03058
  936.       LOGICAL MODE                                                      MOD03059
  937.       DOUBLE PRECISION RNUMBR,DECIMA                                    MOD03060
  938.       DATA    IPER/1H./,LETE/1HE/,LETD/1HD/                             MOD03061
  939.       MODE = .TRUE.                                                     MOD03067
  940.       RGET = .FALSE.                                                    MOD03068
  941.       XX=0.0                                                            MOD03069
  942. 100   IF(MULTIP.GT.0)GO TO 200                                          MOD03070
  943.       IF (.NOT.GETWRD(GET001))RETURN
  944.       IF (LENGTH.EQ.0) RETURN
  945.       RNUMBR = DECIMA(ERROR)                                            MOD03072
  946.       IF(MULTIP.GT.0)GO TO 200                                          MOD03073
  947.       IF (ERROR.AND.EPOINT.EQ.1) EPOINT = BEGIN                         MOD03074
  948.       IF (MODE)XX = RNUMBR                                              MOD03075
  949.       IF (.NOT.MODE) II = RNUMBR                                        MOD03076
  950.       IGET=ERR1(ERR001)                                                 MOD03077
  951.       RGET=ERR1(ERR001)                                                 MOD03078
  952.       RETURN                                                            MOD03079
  953. 200   MULTIP=MULTIP-1                                                   MOD03080
  954.       RETURN                                                            MOD03081
  955.       END                                                               MOD03082
  956.       SUBROUTINE CENT(XYZ,AM,IECHO,IB,NTOT)                             MOD00451
  957. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC               MOD00452
  958.       IMPLICIT REAL*8 (A-H,O-Z)                                         MOD00453
  959.       COMMON /UNIT/ INN,IOUT,IP                                         MOD00454
  960.       COMMON/CGELE/N                                                    MOD00455
  961.       DIMENSION XYZ(NTOT,3),AM(1),                                      MOD00456
  962.      *NBON(3),JBON(3),XD(3),TOTMOM(3),                                  MOD00457
  963.      *NOD(21),XM(21)                                                    MOD00458
  964.       DO 150 I = 1, 3                                                   MOD00459
  965.       NBON(I) = 1                                                       MOD00460
  966. 150   CONTINUE                                                          MOD00461
  967.       DO 200 I = 1, NTOT                                                MOD00462
  968.       READ(IB,201) N,(JBON(J),J=1,3)                                    MOD00463
  969.       DO 200 K = 1, 3                                                   MOD00464
  970.       IF (JBON(K) .EQ. 0) NBON(K)=0                                     MOD00465
  971. 200   CONTINUE                                                          MOD00466
  972. 201   FORMAT(4I5)                                                       MOD00467
  973.       NN = 0                                                            MOD00468
  974.       DO 250 I = 1, 3                                                   MOD00469
  975.       IF (NBON(I) .EQ. 0) NN = NN + 1                                   MOD00470
  976. 250   CONTINUE                                                          MOD00471
  977.       IF (NN .GT. 0) GO TO 255                                          MOD00472
  978.       WRITE(IOUT,251)                                                   MOD00473
  979. 251   FORMAT(1H1,////,10X,'*** ZERO DEGREE OF FREEDOM SYSTEM ***')      MOD00474
  980.       STOP                                                              MOD00475
  981. 255   NNT = NN * NTOT                                                   MOD00476
  982.       DO 260 L = 1, NNT                                                 MOD00477
  983.       AM(L) = 0.0                                                       MOD00478
  984. 260   CONTINUE                                                          MOD00479
  985.       DO 300 I = 1, NTOT                                                MOD00480
  986.       READ(IP,301) N,(XYZ(I,J),J=1,3)                                   MOD00481
  987. 300   CONTINUE                                                          MOD00482
  988. 301   FORMAT(I10,/,3E12.5)                                              MOD00483
  989.       READ(IP,302) IDUMMY                                               MOD00484
  990. 302   FORMAT(I10)                                                       MOD00485
  991.       READ(IP,401) NEL                                                  MOD00486
  992. 401   FORMAT(I10)                                                       MOD00487
  993.       DO 2000 I = 1, NEL                                                MOD00488
  994.       IPL = 0                                                           MOD00489
  995.       READ(IP,501) KIND,NGROUP,DEN,AREA                                 MOD00490
  996. 501   FORMAT(I10,I11,2E12.5)                                            MOD00491
  997.       READ (IP,502) N,(NOD(J),J=1,21)                                   MOD00492
  998. 502   FORMAT(I10,21I5)                                                  MOD00493
  999.       IF (AREA .LT. 0.0) KIND = 15                                      MOD00494
  1000.       GO TO (1100,1100,1200,1200,1300,1200,1500,1200,                   MOD00495
  1001.      *1400,1300,1200,1200,1200,1500,1500,1200,2000,2000),KIND           MOD00496
  1002. 1100  CALL DIM1(XYZ,DEN,AREA,XM1,NOD,NTOT)                              MOD00497
  1003.       GO TO 1700                                                        MOD00498
  1004. 1200  CALL DIM2(XYZ,DEN,AREA,XM,NOD,NNOD,KIND,NTOT,N)                   MOD00499
  1005.       GO TO 1800                                                        MOD00500
  1006. 1300  CALL DIM3(XYZ,DEN,XM,NOD,NNOD,NTOT,N)                             MOD00501
  1007.       GO TO 1800                                                        MOD00502
  1008. 1400  CALL CURVE(XYZ,DEN,AREA,XM1,NOD,NTOT)                             MOD00503
  1009.       GO TO 1700                                                        MOD00504
  1010. 1500  GO TO 2000                                                        MOD00505
  1011. 1700  DO 1750 K1 = 1, 2                                                 MOD00506
  1012.       INOD = NOD(K1) * NN                                               MOD00507
  1013.       KK = 0                                                            MOD00508
  1014.       DO 1750 K2 = 1, 3                                                 MOD00509
  1015.       IF (NBON(K2) .EQ. 1) GO TO 1750                                   MOD00510
  1016.       AM(INOD+KK-NN+1) = XM1 + AM(INOD+KK-NN+1)                         MOD00511
  1017.       KK = KK + 1                                                       MOD00512
  1018. 1750  CONTINUE                                                          MOD00513
  1019.       IF (IECHO .GT. 0)   WRITE (IOUT,8888) I, XM1                      MOD00514
  1020. 8888  FORMAT(10X,'***EL,MASS***',I5,10E10.3,/,28X,10E10.3)              MOD00515
  1021.       GO TO 2000                                                        MOD00516
  1022. 1800  DO 1850 K1 = 1, NNOD                                              MOD00517
  1023.       INOD = NOD(K1) * NN                                               MOD00518
  1024.       KK = 0                                                            MOD00519
  1025.       DO 1850 K2 = 1, 3                                                 MOD00520
  1026.       IF (NBON(K2) .EQ. 1) GO TO 1850                                   MOD00521
  1027.       AM(INOD+KK+1-NN) = XM(K1) + AM(INOD+KK+1-NN)                      MOD00522
  1028.       KK = KK + 1                                                       MOD00523
  1029. 1850  CONTINUE                                                          MOD00524
  1030.       IF (IECHO .GT. 0)   WRITE(IOUT,8888) I,(XM(J),J=1,NNOD)           MOD00525
  1031. 2000  CONTINUE                                                          MOD00526
  1032.       IF (IECHO .GT. 0)  WRITE(IOUT,9998)                               MOD00527
  1033.       DO 2001 I = 1, NTOT                                               MOD00528
  1034.       IF (IECHO .GT. 0)  WRITE(IOUT,9999) I, (AM(I*NN-NN+J),J=1,NN)     MOD00529
  1035. 9998  FORMAT(///,5X,'NODE  LUMP-MASS  X          Y           Z',//)     MOD00530
  1036. 9999  FORMAT(I8,5X,3E12.5)                                              MOD00531
  1037. 2001  CONTINUE                                                          MOD00532
  1038.       TOTDEN = 0.0                                                      MOD00533
  1039.       IDTOT  = NN * NTOT                                                MOD00534
  1040.       DO 2010 I = 1, 3                                                  MOD00535
  1041.       TOTMOM(I) = 0.0                                                   MOD00536
  1042. 2010  CONTINUE                                                          MOD00537
  1043.       DO 2100 I = 1, IDTOT, NN                                          MOD00538
  1044.       TOTDEN = TOTDEN + AM(I)                                           MOD00539
  1045. 2100  CONTINUE                                                          MOD00540
  1046.       KK = 0                                                            MOD00541
  1047.       DO 2700 I = 1, 3                                                  MOD00542
  1048.       IF (NBON(I) .EQ. 1) GO TO 2800                                    MOD00543
  1049.       KK = KK + 1                                                       MOD00544
  1050.       DO 2500 J = 1, NTOT                                               MOD00545
  1051.       J1 = J * NN                                                       MOD00546
  1052.       TOTMOM(I) = TOTMOM(I) + AM(J1+KK-NN)*XYZ(J,I)                     MOD00547
  1053. 2500  CONTINUE                                                          MOD00548
  1054. 2800  CONTINUE                                                          MOD00549
  1055. 2700  CONTINUE                                                          MOD00550
  1056.                                                                         MOD00551
  1057.       DO 2600 I = 1, 3                                                  MOD00552
  1058.       XD(I) = TOTMOM(I) / TOTDEN                                        MOD00553
  1059. 2600  CONTINUE                                                          MOD00554
  1060.       GRAV = 32.0                                                       MOD00555
  1061.       TOTWGT = TOTDEN * GRAV                                            MOD00556
  1062.       WRITE (6,3001) (XD(I),I=1,3),TOTDEN,TOTWGT                        MOD00557
  1063. 3001  FORMAT(1H1,/////,                                                 MOD00558
  1064.      *10X,'***  CENTRAL GRAVITY ***',//,                                MOD00559
  1065.      *10X,'X - DIRECTION =',E12.5,/,                                    MOD00560
  1066.      *10X,'Y - DIRECTION =',E12.5,/,                                    MOD00561
  1067.      *10X,'Z - DIRECTION =',E12.5,/,                                    MOD00562
  1068.      *10X,'TOTAL DENSITY =',E12.5,/,                                    MOD00563
  1069.      *10X,'TOTAL WEIGHT  =',E12.5//)                                    MOD00564
  1070.       RETURN                                                            MOD00565
  1071.       END                                                               MOD00566
  1072. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC                 MOD00567
  1073.       FUNCTION ICRSEL (POINT,NUM,COMP)                                  MOD03449
  1074. CC..        ADAPTED FOR MULTIPLE POINT CONSTRAINTS BY                   MOD03450
  1075. CC..    DR. ELIEZER MENDELSSOHN                                         MOD03451
  1076. CC..    SAP USERS' GROUP                                                MOD03452
  1077. CC..    DEPT. OF CIVIL ENG.                                             MOD03453
  1078. CC..    UNIVERSITY OF SOUTHERN CALIFORNIA                               MOD03454
  1079. CC..    UNIVERSITY PARK                                                 MOD03455
  1080. CC..    LOS ANGELES, CA. 90007                                          MOD03456
  1081. CC..    PHONE (213)743-5508                                             MOD03457
  1082.       INTEGER POINT(8),COMP(NUM)                                        MOD03458
  1083.       DO 11 I=1,4                                                       MOD03459
  1084. 11    COMP(I)=POINT(I)                                                  MOD03460
  1085.       K=0                                                               MOD03461
  1086.       L=4                                                               MOD03462
  1087.       INC=1                                                             MOD03463
  1088.       DO 22 IND=5,8                                                     MOD03464
  1089.       IF (L.GE.NUM) GO TO 999                                           MOD03465
  1090.       J=POINT(IND)                                                      MOD03466
  1091.       IF (J.LT.1) GO TO 22                                              MOD03467
  1092.       L=L+1                                                             MOD03468
  1093.       COMP(L)=J                                                         MOD03469
  1094.       K=K+INC                                                           MOD03470
  1095. 22    INC=INC+INC                                                       MOD03471
  1096. 999   ICRSEL=K                                                          MOD03472
  1097.       RETURN                                                            MOD03473
  1098.       END                                                               MOD03474
  1099.