home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / e / e003 / 2.ddi / MODEL01.FOR < prev    next >
Encoding:
Text File  |  1987-04-15  |  54.9 KB  |  686 lines

  1.       SUBROUTINE RENUM(NX,IES)                                          00205630
  2.       IMPLICIT REAL*8 (A-H,O-Z)                                         00205640
  3.       REAL*8  NPAR                                                      00205650
  4.       COMMON/ELPAR/NPAR(14),NUMNP,II(7),MTOT,I2(6),NUMEL,NUMEL2         00205660
  5.      & ,NRELPA(41)                                                      R0205661
  6.       COMMON /BAND/ NRNM(3),ICRIT,NRBAND(4)                             R0205670
  7.       COMMON/SLVE/NSLAVE                                                00205690
  8.       COMMON/SIZE/NDMX,MXDF,NSMX,NTERM,NADND                            00205700
  9.       COMMON /TRASH/ X(30),RRTRAS(460)                                  R0205710
  10.       COMMON /SUPEL/ LDUM(4),NEADD,NRSUPE                               R0205720
  11.       COMMON/PREP/XMX,XAD,KSKIP,NDYN,I1,RRPREP(7)                       R0205730
  12.       COMMON/FORCE/ NLC,NELD                                            R0205740
  13.       COMMON /A/ MAXGRD,MAXDEG,NRMAXG(3)                                R0205750
  14.       COMMON /S/NN,MM                                                   00205760
  15.       COMMON /BITS/ NBITIN                                              00205770
  16.       COMMON /ZERO/ KT                                                  00205780
  17.       COMMON A(1)                                                       00205790
  18.         CALL FILES(21)                                                  00205800
  19.       MULT=4                                                            00205810
  20.         IF(KSKIP.EQ.1) RETURN                                           00205820
  21.       CALL SECOND(T1)                                                   00205830
  22.       NC=IABS(NX)                                                       00205840
  23.       M2=600                                                            00205850
  24.       IF(NRNM(3).GT.9.AND.NRNM(3).LT.9500) M2=NRNM(3)                   00205860
  25.       MTEF= MTOT*MULT                                                   00205870
  26.         M2I=M2                                                          00205880
  27.         NK=0                                                            00205890
  28. 50      NK=NK+1                                                         00205900
  29.         M2=M2I*NK                                                       00205910
  30.       NBITIN=15                                                         00205920
  31.       NWORDS=M2+NUMNP*7+NC*MULT*(NUMNP+MULT)/4                          00205930
  32.       IF(NRNM(2).EQ.2) NWORDS=MTEF                                      00205940
  33.       N=NUMNP                                                           00205950
  34.       II1=NUMNP                                                         00205960
  35.       IF(N.LT.100) N=100                                                00205970
  36.       N=N+3                                                             00205980
  37.       N=N-MOD(N,4)                                                      00205990
  38.       MAXGRD=N                                                          00206000
  39.       IIR=N/MULT                                                        00206010
  40.         IF(MULT.EQ.1)IIR=NUMNP                                          00206020
  41.       MAXDEG=NC                                                         00206030
  42.       IF(NWORDS.GT.MTEF) WRITE(6,100)                                   00206040
  43.       IF(NWORDS.GT.MTEF) KSKIP=1                                        00206050
  44.       IF(NWORDS.GT.MTEF) RETURN                                         00206060
  45.   100 FORMAT (/20X, 95HFOR THE GIVEN NO. OF NODES THERE IS NOT ENOUGH ST00206070
  46.      $ORAGE ALLOCATED -- NO MINIMIZATION IS ALLOWED.//)                 00206080
  47.         IF(KSKIP.EQ.10) GO TO 9105                                      00206090
  48.       N2=1+NUMEL*13                                                     00206100
  49.       NZ=NTERM                                                          00206110
  50.       IF(NZ.EQ.0) NZ=1                                                  00206120
  51.       CALL ELORD(A(1),NUMEL,NUMEL2,NZ,NADND,A(N2))                      00206130
  52.       ND=(NUMNP+MULT)/MULT                                              00206140
  53.       N1=1                                                              00206150
  54.       N2=N1+ND                                                          00206160
  55. CCR   IF(NRNM(2).EQ.2) CALL RENRST(A(N1),NUMNP,KT)                      R0206170
  56. CCR   IF(NRNM(2).EQ.2)     GO TO 106                                    R0206180
  57.       DO 105 I=1,MTOT                                                   00206190
  58.   105 A(I)=0.0                                                          00206200
  59.       CALL CONECT(A(N2),NUMNP,NUMEL,I1,KSKIP,NC,X(1),NZ,NADND,II1)      00206210
  60.       IF(KSKIP.EQ.1) RETURN                                             00206220
  61.       N3=N2+IIR*NC                                                      00206230
  62.       N4=N3+ND                                                          00206240
  63.       N5=N4+ND                                                          00206250
  64.       N6=N5+ND                                                          00206260
  65.       N7=N6+ND                                                          00206270
  66.       N8=N7+ND                                                          00206280
  67.       N9=N8+ND                                                          00206290
  68.         IF(NRNM(3).LT.9000) GO TO 9105                                  00206300
  69.       CALL SETNOD(A(N2),II1,A(N3),NUMNP,A(N1),KT,I1)                    00206310
  70.       GO TO 106                                                         00206320
  71.  9105 CONTINUE                                                          00206330
  72.       IF(KSKIP.EQ.10) KSKIP=0                                           00206340
  73.       KDIM=M2/4                                                         00206350
  74.       N10=N9+KDIM                                                       00206360
  75.       N11=N10+KDIM                                                      00206370
  76.       N12=N11+KDIM                                                      00206380
  77.       N13=N12+KDIM/2                                                    00206390
  78.       MM=NC                                                             00206400
  79.       NN=NUMNP                                                          00206410
  80.       CALL GIBSTK(A(N2),II1,A(N7),A(N1),A(N4),A(N3),A(N5),A(N6),A(N8),  00206420
  81.      $ICRIT,A(N9),A(N10),A(N11),A(N12),A(N13),KDIM)                     00206430
  82.       IF (KSKIP.EQ.1) KSKIP=10                                          00206440
  83.         IF(KSKIP.EQ.10) GO TO 50                                        00206450
  84.   106 CONTINUE                                                          00206460
  85.         IF(NRNM(3).LT.0) CALL SETNOD(A(N2),II1,A(N3),NUMNP,A(N1),KT,I1) 00206470
  86.       N3=N2+NUMNP*3                                                     00206480
  87.       NSLDM=NSLAVE                                                      00206490
  88.       IF(NSLDM.EQ.0) NSLDM=1                                            00206500
  89.       CALL NODORD(A(N2),NUMNP,A(N1),KT,I1,A(N3),NSLDM)                  00206510
  90.       NUMEL=NUMEL-NEADD                                                 00206520
  91.       N3=N2+NUMEL*13                                                    00206530
  92.       N4=N3+NZ*NADND                                                    00206540
  93.       N5=N4+NADND                                                       00206550
  94.       IF(N5.GT.MTOT) CALL ERROR(N5-MTOT)                                00206560
  95.       CALL ELRORD(A(N2),NUMEL,NUMEL2,A(N1),NUMNP,I1,A(N3),A(N4),NZ,NADND00206570
  96.      $)                                                                 00206580
  97.       IF(IES.NE.0)CALL FGNORD(NUMNP,A(N1),IES)                          00206590
  98.       N3=N2+NLC*6                                                       00206600
  99.       IF(NLC.GT.0) CALL LDRORD(A(N1),A(N2),A(N3),NUMNP,NLC)             00206610
  100.       CALL RORD(A(N1),A(N2),NUMNP)                                      00206620
  101.       NTERM=NTERM-NEADD                                                 00206630
  102.       CALL SECOND(T2)                                                   00206640
  103.       T2=T2-T1                                                          00206650
  104.       WRITE(6,110)T2                                                    00206660
  105.   110 FORMAT(///20X,F8.2, 53H SECONDS WERE REQUIRED TO REDUCE THE MODELS00206670
  106.      $ BANDWIDTH//)                                                     00206680
  107.       RETURN                                                            00206690
  108.       END                                                               00206700
  109.       SUBROUTINE ELORD(ID2,NUMEL,NUMEL2,NZ,NADND,ID4)                   00079580
  110.       IMPLICIT REAL*8(A-H,O-Z)                                          00079590
  111.       REAL*8  ID2,ID3                                                   00079600
  112.       REAL*8  ID4                                                       00079610
  113.       DIMENSION  ID2(NUMEL,13),ID3(9)                                   00079620
  114.       DIMENSION ID4(NZ,NADND)                                           00079630
  115.       REWIND 4                                                          00079640
  116.       READ (4) ((ID2(I,J),J=1,13),I=1,NUMEL )                           00079650
  117.       IF(NZ.EQ.NUMEL) READ (4) ((ID4(I,J),J=1,NADND),I=1,NUMEL)         00079660
  118.       REWIND 17                                                         00079670
  119.       DO 100 I=1,NUMEL                                                  00079680
  120.       WRITE (17) (ID2(I,J),J=1,13)                                      00079690
  121.       IF(NZ.EQ.NUMEL)  WRITE (17)(ID4(I,J),J=1,NADND)                   00079700
  122.   100 CONTINUE                                                          00079710
  123.       CALL SEORD(NUMEL,NADND,ID4)                                       00079720
  124.       IF(NUMEL2.EQ.0) RETURN                                            00079730
  125.       REWIND 9                                                          00079740
  126.       DO 110 I=1,NUMEL2                                                 00079750
  127.       READ (9) ID3                                                      00079760
  128.       WRITE (17) ID3                                                    00079770
  129.   110 CONTINUE                                                          00079780
  130.       RETURN                                                            00079790
  131.       END                                                               00079800
  132.       SUBROUTINE SEORD(NUMEL,NADND,A)                                   00234320
  133.       IMPLICIT REAL*8(A-H,O-Z)                                          00234330
  134.       DIMENSION A(NADND),EEAD(13)                                       00234340
  135.       COMMON /PREP/XMX,XAD,IDUM(2),I1,RRPREP(7)                         R0234350
  136.       COMMON /SUPEL/ NSELEM,NEQL,NODESE,MATNO,NEADD,NRSUPE              R0234360
  137.       COMMON/TRASH/EAD(5),NOD(450),NUM,I,IX(8),N,NI,J,NF,II,NL,RRTR(252)R0234370
  138.       COMMON /SIZE/ NDMX,MXDF,NSMX,NZ,NRRND                             R0234380
  139.       NEADD=0                                                           00234390
  140.       EAD(5)=500000000.                                                 00234400
  141.       IF(NSELEM.EQ.0) RETURN                                            00234410
  142.         DO 10 I=1,12                                                    00234420
  143. 10      EEAD(I)=0.                                                      00234430
  144.         EEAD(13)=5.                                                     00234440
  145.       NSE=16                                                            00234450
  146.       NE=17                                                             00234460
  147.       REWIND NSE                                                        00234470
  148.       DO 130 I=1,NSELEM                                                 00234480
  149.       READ(NSE)  MAT,NUM,(NOD(J),J=1,NUM)                               00234490
  150.       IF(NUM.EQ.1) GO TO 130                                            00234500
  151.       N=1                                                               00234510
  152.       NI=2                                                              00234520
  153.    90 DO 100 J=1,8                                                      00234530
  154.   100 IX(J)=0                                                           00234540
  155.       NF=NI+6                                                           00234550
  156.       IF(NF.GT.NUM) NF=NUM                                              00234560
  157.       II=0                                                              00234570
  158.       DO 110 J=NI,NF                                                    00234580
  159.       II=II+1                                                           00234590
  160.   110 IX(II)=NOD(J)                                                     00234600
  161.       NL=N                                                              00234610
  162.       IF(NF.EQ.NUM) NL=1                                                00234620
  163.       IX(II+1)=NOD(NL)                                                  00234630
  164.       DO 120 J=1,8                                                      00234640
  165.   120 EEAD(J)=IX(J)                                                     00234650
  166.       NEADD=NEADD+1                                                     00234660
  167.       NI=NF                                                             00234670
  168.       N=N+1                                                             00234680
  169.       WRITE (NE)EEAD                                                    00234690
  170.       IF(NZ.GT.1) WRITE (NE) A                                          00234700
  171.       IF(NF.LT.NUM) GO TO 90                                            00234710
  172.   130 CONTINUE                                                          00234720
  173.       NUMEL=NUMEL+NEADD                                                 00234730
  174.       RETURN                                                            00234740
  175.       END                                                               00234750
  176.       SUBROUTINE CONECT(IG,NUMNP,NUMEL,I1,KSKIP,NC,ID4,NZ,NADND,II1)    00050420
  177.       IMPLICIT REAL*8(A-H,O-Z)                                          00050430
  178.       INTEGER*2 IG                                                      00050440
  179.       REAL*8 ID4                                                        00050450
  180.       REAL*8 ID2                                                        00050460
  181.       INTEGER T,ZM                                                      00050470
  182.       DIMENSION ID4(NADND)                                              00050480
  183.       DIMENSION  ID2(13),IG(II1,1)   ,IX(8)                             00050490
  184.       COMMON/ELARRY/NELAR(4,20)                                         00050500
  185.       COMMON /TRASH/ Z(30),IA(100),RRTRAS(410)                          R0050510
  186.       ZM=10000                                                          00050520
  187.       KM=100000000                                                      00050530
  188.       KN=10000                                                          00050540
  189.       DO 100 I=1,NUMNP                                                  00050550
  190.       DO 100 J=1,NC                                                     00050560
  191.   100 IG(I,J)=0                                                         00050570
  192.       REWIND 17                                                         00050580
  193.       DO 230 I=1,NUMEL                                                  00050590
  194.       READ (17)ID2                                                      00050600
  195.       DO 110 J=1,8                                                      00050610
  196.       NN=ID2(J)                                                         00050620
  197.   110 IA(J)= NN                                                         00050630
  198.       MT=ID2(13)                                                        00050640
  199.       IF(NZ.LE.1)  GO TO 130                                            00050650
  200.       READ (17) ID4                                                     00050660
  201.       DO  120 J=1,NADND                                                 00050670
  202.       T= ID4(J)                                                         00050680
  203.       IA(J+8)=T                                                         00050690
  204.   120 CONTINUE                                                          00050700
  205.   130 CONTINUE                                                          00050710
  206.       IF(MT.EQ.7) GO TO 230                                             00050720
  207.       NODES=NELAR(2,MT)                                                 00050730
  208.       NODESM=NODES-1                                                    00050740
  209.       IF(IA(NODES).GT.NUMNP) GO TO 240                                  00050750
  210.       DO 220 J=1,NODESM                                                 00050760
  211.       NN=IA(J)                                                          00050770
  212.       IF(NN.GT.NUMNP) GO TO 240                                         00050780
  213.       IF(NN.EQ.0) GO TO 220                                             00050790
  214.       JP1=J+1                                                           00050800
  215.       DO 210 K=JP1,NODES                                                00050810
  216.       MM=IA(K)                                                          00050820
  217.       IF(MM.EQ.0) GO TO 210                                             00050830
  218.       IF(MM.EQ.NN) GO TO 210                                            00050840
  219.       DO 140 K1=1,NC                                                    00050850
  220.       IF(MM.EQ.IG(NN,K1)) GO TO 200                                     00050860
  221.       K2=K1                                                             00050870
  222.       IF(IG(NN,K1).EQ.0) GO TO 170                                      00050880
  223.   140 CONTINUE                                                          00050890
  224.   150 WRITE(6,160)                                                      00050900
  225.   160 FORMAT (/20X,42H NC IN SUBROUTINE RENUM MUST BE INCREASED./)      00050910
  226.       KSKIP=1                                                           00050920
  227.       RETURN                                                            00050930
  228.   170 IG(NN,K2)=MM                                                      00050940
  229.       DO 180 K1=1,NC                                                    00050950
  230.       K2=K1                                                             00050960
  231.       IF(IG(MM,K1).EQ.0) GO TO 190                                      00050970
  232.   180 CONTINUE                                                          00050980
  233.       GO TO 150                                                         00050990
  234.   190 IG(MM,K2)=NN                                                      00051000
  235.   200 CONTINUE                                                          00051010
  236.   210 CONTINUE                                                          00051020
  237.   220 CONTINUE                                                          00051030
  238.   230 CONTINUE                                                          00051040
  239.       RETURN                                                            00051050
  240.   240  WRITE(6,250)                                                     00051060
  241.   250 FORMAT(//20X,45HA NODE NO. HAS BEEN FOUND THAT IS LARGER THAN,    00051070
  242.      $6H NUMNP//)                                                       00051080
  243.       KSKIP=1                                                           00051090
  244.       RETURN                                                            00051100
  245.       END                                                               00051110
  246.       SUBROUTINE SETNOD(IG,II1,ID,NUMNP,ISIR,KT,I1)                     00235560
  247.       IMPLICIT REAL*8(A-H,O-Z)                                          00235570
  248.       REAL*8  ID(NUMNP,3)                                               00235580
  249.       INTEGER*2 ISIR,IG                                                 00235590
  250.       DIMENSION IG(II1,1),ISIR(NUMNP)                                   00235600
  251.       COMMON /SUPEL/NZ(2),NODE,NRSUPE(3)                                R0235610
  252.       COMMON /BAND/ NRNM(2),NSTN,NRBAND(5)                              R0235620
  253.       COMMON /BITS/ NBITIN                                              00235630
  254.       COMMON/TRASH/NSET(450),NDUM(16),RRTRAS(257)                       R0235640
  255.       COMMON/PREP/QD(2),KSKIP,RRPREP(8)                                 R0235650
  256.         KX=KT                                                           00235660
  257.         IF(NSTN.LT.0) GO TO 125                                         00235670
  258.       KT=0                                                              00235680
  259.       REWIND 8                                                          00235690
  260.       READ (8) ((ID(I,J),J=1,3),I=1,NUMNP)                              00235700
  261.       REWIND 8                                                          00235710
  262.       DO 110 I=1,NUMNP                                                  00235720
  263.          IF(IG(I,1).GT.0) GO TO 110                                     00235730
  264.       DO 100 J=1,3                                                      00235740
  265.       NNN=ID(I,J)                                                       00235750
  266.   100 ID(I,J)=ID(I,J)-NNN+1.0+I1                                        00235760
  267.   110 CONTINUE                                                          00235770
  268.       WRITE (8) ((ID(I,J),J=1,3),I=1,NUMNP)                             00235780
  269.       DO 120 I=1,NUMNP                                                  00235790
  270.   120 ISIR(I)=I                                                         00235800
  271.       IF(NSTN.GE.0) RETURN                                              00235810
  272.   125 CONTINUE                                                          00235820
  273.       NSTN=IABS(NSTN)                                                   00235830
  274.       WRITE(6,130)NSTN,NSTN                                             00235840
  275.   130 FORMAT (/20X,13HTHE FOLLOWING,I5,25H NODES ARE TO BE RETAINED,    00235850
  276.      $36H DURING THE SUPERELEMENT FORMULATION/20X,13HTHE NODES ARE,     00235860
  277.      $22H RESTACKED AS THE LAST,I5,7H NODES.//)                         00235870
  278.       MAXN=450                                                          00235880
  279.       I=0                                                               00235890
  280.       IF(NSTN.GT.MAXN) GO TO 230                                        00235900
  281.   131 READ(5,140)NDUM                                                   00235910
  282.       DO 134 J=1,16                                                     00235920
  283.       IF(I.GT.NSTN)GO TO 240                                            00235930
  284.       IF(NDUM(J).EQ.0) GO TO 135                                        00235940
  285.       IF(J.EQ.1) GO TO 133                                              00235950
  286.         IF(J.EQ.16.AND.NDUM(16).LT.0) GO TO 240                         00235960
  287.       IF(NDUM(J-1).LT.0) GO TO 134                                      00235970
  288.       IF(NDUM(J).GT.0) GO TO 133                                        00235980
  289.       KT=NDUM(J+1)                                                      00235990
  290.       KI=NDUM(J-1)+KT                                                   00236000
  291.       KF=-NDUM(J)                                                       00236010
  292.       DO 132 K=KI,KF,KT                                                 00236020
  293.       I=I+1                                                             00236030
  294.   132 NSET(I)=K                                                         00236040
  295.       KT=0                                                              00236050
  296.       GO TO 134                                                         00236060
  297.   133 I=I+1                                                             00236070
  298.       NSET(I)=NDUM(J)                                                   00236080
  299.   134 CONTINUE                                                          00236090
  300.   135 IF(I.NE.NSTN) GO TO 131                                           00236100
  301.   140 FORMAT (16I5)                                                     00236110
  302.       WRITE(6,150)(NSET(I),I=1,NSTN)                                    00236120
  303.   150 FORMAT (/20X,10I5)                                                00236130
  304.         DO 160 I=1,NUMNP                                                00236140
  305.         K=ISIR(I)                                                       00236150
  306. 160     ID(K,1)=I                                                       00236160
  307.         K=NUMNP-NSTN-KX                                                 00236170
  308.         DO 170 I=1,NSTN                                                 00236180
  309.         K=K+1                                                           00236190
  310.         KF=NSET(I)                                                      00236200
  311.         KI=ISIR(KF)                                                     00236210
  312.         KT=ID(K,1)                                                      00236220
  313.         ISIR(KF)=K                                                      00236230
  314.         ISIR(KT)=KI                                                     00236240
  315.         ID(KI,1)=KT                                                     00236250
  316. 170     ID(K,1) =KF                                                     00236260
  317.         KT=KX                                                           00236270
  318.       NODE=NSET(1)                                                      00236280
  319.       NODE=ISIR(NODE)                                                   00236290
  320.       RETURN                                                            00236300
  321.   230 WRITE(6,235)NSTN,MAXN                                             00236310
  322.   235 FORMAT(/20X,20HERROR-TOO MANY NODES,I5,11H ALLOWABLE-,I5//)       00236320
  323.       GO TO 250                                                         00236330
  324.   240 WRITE(6,245)NDUM                                                  00236340
  325.   245 FORMAT(/20X,28HERROR ON THE FOLLOWING CARD-/20X,16I5//)           00236350
  326.   250 KSKIP=1                                                           00236360
  327.       RETURN                                                            00236370
  328.       END                                                               00236380
  329.       SUBROUTINE GIBSTK(NDSTK,NR,IOLD,RENUM,NDEG,LVL,LVLS1,LVLS2,CCSTOR,00105790
  330.      $ICRIT,NHIGH,NLOW,NACUM,SIZE,STPT,IDIM)                            00105800
  331.       IMPLICIT REAL*8(A-H,O-Z)                                          00105810
  332.       INTEGER*2 CCSTOR,IOLD,NDSTK,LVL,LVLS1,LVLS2,RENUM,NDEG            00105820
  333.       INTEGER STNODE,RVNODE,XC,SORT2,STNUM,SIZE,STPT,SBNUM              00105830
  334.       CHARACTER*4 METH                                                  R0105831
  335.        COMMON /ZERO/NZERO                                               00105840
  336.       COMMON /PREP/XDZ(2),KSKIP,RRPREP(8)                               R0105850
  337.       COMMON /S/ NN,MM                                                  00105860
  338.       COMMON /A/ MAXGRD,MAXDEG,N,IDPTH,IDEG                             00105870
  339.       DIMENSION NHIGH(IDIM),NLOW(IDIM),NACUM(IDIM),SIZE(1),STPT(1)      00105880
  340.       DIMENSION CCSTOR(1),IOLD(1)                                       00105890
  341.       DIMENSION NDSTK(NR,1),LVL(1),LVLS1(1),LVLS2(1),RENUM(1),NDEG(1)   00105900
  342.       INTEGER OBW,OP,XCMAX                                              00105910
  343.       INTEGER SUMW0,SUMSQ0,SUMWB,SUMSQB                                 00105920
  344.       REAL*8 IM1,IM2                                                    00105930
  345.       DATA METH/4H GPS/                                                 00105940
  346.       IOU6=6                                                            00105950
  347.       XCMAX=IDIM/2                                                      00105960
  348.       NCM=0                                                             00105970
  349.       N=NN                                                              00105980
  350.       IBW2=0                                                            00105990
  351.       IPF2=0                                                            00106000
  352.       DO 10 I=1,N                                                       00106010
  353.       IOLD(I)=I                                                         00106020
  354.         RENUM(I)=0                                                      00106030
  355.    10 CONTINUE                                                          00106040
  356.       CALL DGREE(NDSTK,NR,NDEG,IOLD,IBW1,IPF1)                          00106050
  357.       CALL WAVEY(NDSTK,NR,IOLD,LVL,0,LVLS2,LVLS1,MAXB0,MAXW0,AVERW0,    00106060
  358.      1 SUMW0,SUMSQ0,RMS0)                                               00106070
  359.       MAXWA=MAXW0                                                       00106080
  360.       RMSA=RMS0                                                         00106090
  361.       WRITE(IOU6,29)                                                    00106100
  362.    29 FORMAT( 26H0BEFORE RESEQUENCING - - - )                           00106110
  363.       WRITE (IOU6,51) MAXB0,SUMW0,AVERW0,RMS0                           00106120
  364.    51 FORMAT(10X,19HNODE DIFFERENCE    ,I9/10X,13HPROFILE       ,I9/    00106130
  365.      $10X,20HAVERAGE NODE DIFF.    ,F9.2/                               00106140
  366.      $10X,20HRMS NODE DIFFERENCE   ,F9.2/                               00106150
  367.      $)                                                                 00106160
  368.    25 CONTINUE                                                          00106170
  369.       SBNUM=1                                                           00106180
  370.       STNUM=N                                                           00106190
  371.       DO 40 I=1,N                                                       00106200
  372.         IF(NDEG(I).GT.0) GO TO 40                                       00106210
  373.         RENUM(I)=STNUM                                                  00106220
  374.         STNUM=STNUM-1                                                   00106230
  375.    40 CONTINUE                                                          00106240
  376.       NZERO=N-STNUM                                                     00106250
  377.       NCM=NZERO                                                         00106260
  378.    50 LOWDG=IDEG+1                                                      00106270
  379.       NCM=NCM + 1                                                       00106280
  380.       NFLG=1                                                            00106290
  381.       ISDIR=1                                                           00106300
  382.       DO 70 I=1,N                                                       00106310
  383.         IF(NDEG(I).GE.LOWDG) GO TO 70                                   00106320
  384.         IF(RENUM(I).GT.0) GO TO 70                                      00106330
  385.         LOWDG=NDEG(I)                                                   00106340
  386.         STNODE=I                                                        00106350
  387.    70 CONTINUE                                                          00106360
  388.       CALL FNDIAM(STNODE,RVNODE,NDSTK,NR,NDEG,LVL,LVLS1,LVLS2,CCSTOR,   00106370
  389.      -IDFLT,NHIGH,IDIM)                                                 00106380
  390.       IF(KSKIP.EQ.1) RETURN                                             00106390
  391.       IF(NDEG(STNODE).LE.NDEG(RVNODE)) GO TO 75                         00106400
  392.       NFLG=-1                                                           00106410
  393.       STNODE=RVNODE                                                     00106420
  394.    75 CALL RSETUP(LVL,LVLS1,LVLS2,NHIGH,NLOW,NACUM,IDIM)                00106430
  395.       IF(KSKIP.EQ.1) RETURN                                             00106440
  396.       XC=0                                                              00106450
  397.       LROOT=1                                                           00106460
  398.       LVLN=1                                                            00106470
  399.       DO  80 I=1,N                                                      00106480
  400.         IF(LVL(I).NE.0) GO TO 80                                        00106490
  401.         XC=XC+1                                                         00106500
  402.         IF(XC.LE.XCMAX) GO TO 85                                        00106510
  403.       NDXL=4*IDIM                                                       00106520
  404.       WRITE(6,91)NDXL                                                   00106530
  405.    91 FORMAT(//20X,31HAN INTERNAL DEFAULT DIMENSION (,I4,12H) IS SMALLER00106540
  406.      $        /20X,50HTHAN YOUR PROBLEM REQUIRES. INCREASE IT BY PUTTING00106550
  407.      $        /20X,48HA LARGER NO. IN COL. 21-25 OF THE RENUMBER CARD.  00106560
  408.      $        /20X,19HEXECUTION WILL END.//)                            00106570
  409.       KSKIP=1                                                           00106580
  410.       RETURN                                                            00106590
  411.    85   CONTINUE                                                        00106600
  412.         STPT(XC)=LROOT                                                  00106610
  413.         CALL TREE(I,NDSTK,NR,LVL,CCSTOR,NDEG,LVLWTH,LVLBOT,LVLN,MAXLW,N)00106620
  414.         SIZE(XC)=LVLBOT+LVLWTH-LROOT                                    00106630
  415.         LROOT=LVLBOT+LVLWTH                                             00106640
  416.         LVLN=LROOT                                                      00106650
  417.    80 CONTINUE                                                          00106660
  418.       IF(SORT2(XC,SIZE,STPT).EQ.0) GO TO 90                             00106670
  419.       CALL PIKLVL(LVLS1,LVLS2,CCSTOR,IDFLT,ISDIR,XC,NHIGH,NLOW,         00106680
  420.      -  NACUM,SIZE,STPT)                                                00106690
  421.    90 ISDIR=ISDIR*NFLG                                                  00106700
  422.       NUM=SBNUM                                                         00106710
  423.       IF(ISDIR.LT.0) NUM=STNUM                                          00106720
  424.       CALL NUMBAR(STNODE,NUM,NDSTK,LVLS2,NDEG,RENUM,LVLS1,LVL,NR,NFLG,  00106730
  425.      -  IBW2,IPF2,CCSTOR,ISDIR,NHIGH,NLOW,NACUM,SIZE,IDIM)              00106740
  426.       IF(KSKIP.EQ.1) RETURN                                             00106750
  427.       IF(ISDIR.LT.0) STNUM=NUM                                          00106760
  428.       IF(ISDIR.GT.0) SBNUM=NUM                                          00106770
  429.       IF(SBNUM.LE.STNUM) GO TO 50                                       00106780
  430.       CALL WAVEY(NDSTK,NR,RENUM,LVL,0,LVLS2,LVLS1,MAXB,MAXWB,AVERWB,    00106790
  431.      1   SUMWB,SUMSQB,RMSB)                                             00106800
  432.       IBW2=MAXB                                                         00106810
  433.       IPF2=SUMWB                                                        00106820
  434.       WRITE(IOU6,705) METH                                              00106830
  435.   705 FORMAT( 23H0AFTER RESEQUENCING BY ,A4)                            00106840
  436.       WRITE (IOU6,51) MAXB,SUMWB,AVERWB,RMSB                            00106850
  437.   130 IM1=RMSA                                                          00106860
  438.       GO TO (130,135,140,145), ICRIT                                    00106870
  439.       IM2=IPF1                                                          00106880
  440.       CRIT1=RMSB                                                        00106890
  441.       CRIT2=IPF2                                                        00106900
  442.       GO TO 92                                                          00106910
  443.   135 IM1=IBW1                                                          00106920
  444.       IM2=IPF1                                                          00106930
  445.       CRIT1=IBW2                                                        00106940
  446.       CRIT2=IPF2                                                        00106950
  447.       GO TO 92                                                          00106960
  448.   140 IM1=IPF1                                                          00106970
  449.       IM2=IBW1                                                          00106980
  450.       CRIT1=IPF2                                                        00106990
  451.       CRIT2=IBW2                                                        00107000
  452.       GO TO 92                                                          00107010
  453.   145 IM1=MAXWA                                                         00107020
  454.       IM2=RMSA                                                          00107030
  455.       CRIT1=MAXWB                                                       00107040
  456.       CRIT2=RMSB                                                        00107050
  457.       GO TO 92                                                          00107060
  458.    92 CONTINUE                                                          00107070
  459.       IF(CRIT1-IM1) 110,94,97                                           00107080
  460.    94 IF(CRIT2.LT.IM2) GO TO 110                                        00107090
  461.    97 CONTINUE                                                          00107100
  462.       DO 100 I=1,N                                                      00107110
  463.         RENUM(I)=IOLD(I)                                                00107120
  464.   100 CONTINUE                                                          00107130
  465.       IBW2=IBW1                                                         00107140
  466.       IPF2=IPF1                                                         00107150
  467.       MAXWB=MAXWA                                                       00107160
  468.       RMSB=RMSA                                                         00107170
  469.       GO TO 112                                                         00107180
  470.   110 CONTINUE                                                          00107190
  471.       JUMP=0                                                            00107200
  472.   112 CONTINUE                                                          00107210
  473.       OBW=IBW1                                                          00107220
  474.       OP=IPF1                                                           00107230
  475.   115 NBW=IBW2                                                          00107240
  476.       NP=IPF2                                                           00107250
  477.       MAXW1=MAXWB                                                       00107260
  478.       RMS1=RMSB                                                         00107270
  479.       RETURN                                                            00107280
  480.       END                                                               00107290
  481.       SUBROUTINE DGREE(NDSTK,NR,NDEG,IOLD,IBW1,IPF1)                    00059100
  482.       IMPLICIT REAL*8(A-H,O-Z)                                          00059110
  483.       INTEGER*2 NDSTK,NDEG,IOLD                                         00059120
  484.       COMMON /A/ MAXGRD,MAXDEG,N,IDPTH,IDEG                             00059130
  485.       COMMON /BITS/NBITIN                                               00059140
  486.       COMMON /S/ NN,MM                                                  00059150
  487.       DIMENSION NDSTK(NR,1),NDEG(1),IOLD(1)                             00059160
  488.       IBW1=0                                                            00059170
  489.       IPF1=0                                                            00059180
  490.       IDEG=MM                                                           00059190
  491.       MM=0                                                              00059200
  492.       DO 100 I=1,N                                                      00059210
  493.         NDEG(I)=0                                                       00059220
  494.         IRW=0                                                           00059230
  495.         DO 80 J=1,IDEG                                                  00059240
  496.       ITST=NDSTK(I,J)                                                   00059250
  497.           IF(ITST) 90,90,50                                             00059260
  498.    50     NDEG(I)=NDEG(I)+1                                             00059270
  499.           IDIF=IOLD(I)-IOLD(ITST)                                       00059280
  500.           IF(IRW.LT.IDIF) IRW=IDIF                                      00059290
  501.           MM=MAX0(MM,J)                                                 00059300
  502.    80   CONTINUE                                                        00059310
  503.    90   IPF1=IPF1+IRW                                                   00059320
  504.         IF(IRW.GT.IBW1) IBW1=IRW                                        00059330
  505.   100 CONTINUE                                                          00059340
  506.       IDEG=MM                                                           00059350
  507.       IBW1=IBW1+1                                                       00059360
  508.       IPF1=IPF1+N                                                       00059370
  509.       RETURN                                                            00059380
  510.       END                                                               00059390
  511.       SUBROUTINE WAVEY(IG,II1,ILD,NEW,NC,IC,KACT,MAXB,MAXW,AVERW,SUMW,  00321310
  512.      - SUMSQ,RMS)                                                       00321320
  513.       IMPLICIT REAL*8(A-H,O-Z)                                          00321330
  514.       INTEGER*2 IG,ILD,NEW,KACT                                         00321340
  515.       COMMON /S/ NN,MM                                                  00321350
  516.       COMMON /A/ MAXGRD,NRMAXG(4)                                       R0321360
  517.       DIMENSION IG(II1,1),ILD(1),NEW(1),KACT(1)                         00321370
  518.       COMMON /BITS/NBITIN                                               00321380
  519.       DIMENSION IC(1)                                                   00321390
  520.       INTEGER SUMW,SUMSQ                                                00321400
  521.       MAXB=0                                                            00321410
  522.       MAXW=0                                                            00321420
  523.       SUMW=0                                                            00321430
  524.       SUMSQ=0                                                           00321440
  525.       AVERW=0.                                                          00321450
  526.       RMS=0.                                                            00321460
  527.       IF((NN*MM).LE.0) RETURN                                           00321470
  528.       IF(NC.GT.0) GO TO 8                                               00321480
  529.       DO 5 I=1,NN                                                       00321490
  530.       K=ILD(I)                                                          00321500
  531.       IF(K.LE.0) GO TO 5                                                00321510
  532.       NEW(K)=I                                                          00321520
  533.     5 CONTINUE                                                          00321530
  534.     8 CONTINUE                                                          00321540
  535.       DO 10 I=1,NN                                                      00321550
  536.    10 KACT(I)=0                                                         00321560
  537.       IWAVE=1                                                           00321570
  538.       KT=0                                                              00321580
  539.       DO 40 I=1,NN                                                      00321590
  540.       K=NEW(I)                                                          00321600
  541.       IF(NC) 18,18,15                                                   00321610
  542.    15 IF(K.LE.0) GO TO 40                                               00321620
  543.       IF(NC-IC(K)) 40,18,40                                             00321630
  544.    18 CONTINUE                                                          00321640
  545.       KT=KT + 1                                                         00321650
  546.       DO 20 J=1,MM                                                      00321660
  547.       L=IG(K,J)                                                         00321670
  548.       IF(L.EQ.0) GO TO 30                                               00321680
  549.       M=ILD(L)                                                          00321690
  550.       MAXB=MAX0(MAXB,I-M)                                               00321700
  551.       IF(M.LE.I) GO TO 20                                               00321710
  552.       IF(KACT(M).EQ.1) GO TO 20                                         00321720
  553.       IWAVE=IWAVE+1                                                     00321730
  554.       KACT(M)=1                                                         00321740
  555.    20 CONTINUE                                                          00321750
  556.    30 CONTINUE                                                          00321760
  557.       IF(KACT(I).EQ.1) IWAVE=IWAVE-1                                    00321770
  558.       MAXW=MAX0(MAXW,IWAVE)                                             00321780
  559.       SUMW=SUMW+IWAVE                                                   00321790
  560.       SUMSQ=SUMSQ+IWAVE*IWAVE                                           00321800
  561.    40 CONTINUE                                                          00321810
  562.       ANN=DBLE(KT)                                                      R0321820
  563.       AVERW=DBLE(SUMW)/ANN                                              R0321830
  564.       SQ=DBLE(SUMSQ)                                                    R0321840
  565.       RMS=DSQRT(SQ/ANN)                                                 00321850
  566.       RETURN                                                            00321860
  567.       END                                                               00321870
  568.       SUBROUTINE FNDIAM(SND1,SND2,NDSTK,NR,NDEG,LVL,LVLS1,LVLS2,        00087790
  569.      -  IWK,IDFLT,NDLST,IDIM)                                           00087800
  570.       IMPLICIT REAL*8(A-H,O-Z)                                          00087810
  571.       INTEGER*2 NDSTK,NDEG,LVL,LVLS1,LVLS2,IWK,NDLST                    00087820
  572.       INTEGER FLAG,SND,SND1,SND2                                        00087830
  573.       COMMON /A/ MAXGRD,MAXDEG,N,IDPTH,IDEG                             00087840
  574.       COMMON /PREP/XDZ(2),KSKIP,RRPREP(8)                               R0087850
  575.       DIMENSION NDSTK(NR,1),NDEG(1),LVL(1),LVLS1(1),LVLS2(1),IWK(1)     00087860
  576.       DIMENSION  NDLST(IDIM)                                            00087870
  577.       FLAG=0                                                            00087880
  578.       MTW2=N                                                            00087890
  579.       SND=SND1                                                          00087900
  580.    20 DO 25 I=1,N                                                       00087910
  581.         LVL(I)=0                                                        00087920
  582.    25 CONTINUE                                                          00087930
  583.       LVLN=1                                                            00087940
  584.       CALL TREE(SND,NDSTK,NR,LVL,IWK,NDEG,LVLWTH,LVLBOT,LVLN,MAXLW,MTW2)00087950
  585.       IF(FLAG.GE.1) GO TO 110                                           00087960
  586.       FLAG=1                                                            00087970
  587.    70 IDPTH=LVLN-1                                                      00087980
  588.       MTW1=MAXLW                                                        00087990
  589.       DO 75 I=1,N                                                       00088000
  590.         LVLS1(I)=LVL(I)                                                 00088010
  591.    75 CONTINUE                                                          00088020
  592.       NDXN=1                                                            00088030
  593.       NDXL=0                                                            00088040
  594.       MTW2=N                                                            00088050
  595.       CALL SORTDG(NDLST,IWK(LVLBOT),NDXL,LVLWTH,NDEG)                   00088060
  596.       IF(NDXL.LE.IDIM) GO TO 100                                        00088070
  597.       NDXL=4*IDIM                                                       00088080
  598.       WRITE(6,90)NDXL                                                   00088090
  599.    90 FORMAT(//20X,31HAN INTERNAL DEFAULT DIMENSION (,I4,12H) IS SMALLER00088100
  600.      $        /20X,50HTHAN YOUR PROBLEM REQUIRES. INCREASE IT BY PUTTING00088110
  601.      $        /20X,48HA LARGER NO. IN COL. 21-25 OF THE RENUMBER CARD.  00088120
  602.      $        /20X,19HEXECUTION WILL END.//)                            00088130
  603.       KSKIP=1                                                           00088140
  604.       RETURN                                                            00088150
  605.   100 CONTINUE                                                          00088160
  606.       SND=NDLST(1)                                                      00088170
  607.       GO TO 20                                                          00088180
  608.   110 IF(IDPTH.GE.LVLN-1) GO TO 120                                     00088190
  609.       SND1=SND                                                          00088200
  610.       GO TO 70                                                          00088210
  611.   120 IF(MAXLW.GE.MTW2) GO TO 130                                       00088220
  612.       MTW2=MAXLW                                                        00088230
  613.       SND2=SND                                                          00088240
  614.       DO 125 I=1,N                                                      00088250
  615.         LVLS2(I)=LVL(I)                                                 00088260
  616.   125 CONTINUE                                                          00088270
  617.   130 IF(NDXN.EQ.NDXL) GO TO 140                                        00088280
  618.       NDXN=NDXN+1                                                       00088290
  619.       SND=NDLST(NDXN)                                                   00088300
  620.       GO TO 20                                                          00088310
  621.   140 IDFLT=1                                                           00088320
  622.       IF(MTW2.LE.MTW1) IDFLT=2                                          00088330
  623.       RETURN                                                            00088340
  624.       END                                                               00088350
  625.       SUBROUTINE TREE(IROOT,NDSTK,NR,LVL,IWK,NDEG,LVLWTH,LVLBOT,        00313850
  626.      -LVLN,MAXLW,IBORT)                                                 00313860
  627.       IMPLICIT REAL*8(A-H,O-Z)                                          00313870
  628.       INTEGER*2 NDSTK,LVL,IWK,NDEG                                      00313880
  629.       DIMENSION NDSTK(NR,1),LVL(1),IWK(1),NDEG(1)                       00313890
  630.       COMMON /A/ MAXGRD,MAXDEG,NRMAXG(3)                                R0313900
  631.       COMMON /BITS/NBITIN                                               00313910
  632.       MAXLW=0                                                           00313920
  633.       ITOP=LVLN                                                         00313930
  634.       INOW=LVLN                                                         00313940
  635.       LVLBOT=LVLN                                                       00313950
  636.       LVLTOP=LVLN+1                                                     00313960
  637.       LVLN=1                                                            00313970
  638.       LVL(IROOT)=1                                                      00313980
  639.       IWK(ITOP)=IROOT                                                   00313990
  640.    30 LVLN=LVLN+1                                                       00314000
  641.    35 IWKNOW=IWK(INOW)                                                  00314010
  642.       NDROW=NDEG(IWKNOW)                                                00314020
  643.       DO 40 J=1,NDROW                                                   00314030
  644.       ITEST=NDSTK(IWKNOW,J)                                             00314040
  645.         IF(LVL(ITEST).NE.0) GO TO 40                                    00314050
  646.         LVL(ITEST)=LVLN                                                 00314060
  647.         ITOP=ITOP+1                                                     00314070
  648.         IWK(ITOP)=ITEST                                                 00314080
  649.    40 CONTINUE                                                          00314090
  650.       INOW=INOW+1                                                       00314100
  651.       IF(INOW.LT.LVLTOP) GO TO 35                                       00314110
  652.       LVLWTH=LVLTOP-LVLBOT                                              00314120
  653.       IF(MAXLW.LT.LVLWTH) MAXLW=LVLWTH                                  00314130
  654.       IF(MAXLW.GE.IBORT) RETURN                                         00314140
  655.       IF(ITOP.LT.LVLTOP) RETURN                                         00314150
  656.       LVLBOT=INOW                                                       00314160
  657.       LVLTOP=ITOP+1                                                     00314170
  658.       GO TO 30                                                          00314180
  659.       END                                                               00314190
  660.       INTEGER FUNCTION SORT2(XC,SIZE,STPT)                              00248470
  661.       IMPLICIT REAL*8(A-H,O-Z)                                          00248480
  662.       INTEGER*2 SIZE,STPT                                               00248490
  663.       INTEGER TEMP,XC                                                   00248500
  664.       DIMENSION SIZE(1),STPT(1)                                         00248510
  665.       SORT2=0                                                           00248520
  666.       IF(XC.EQ.0) RETURN                                                00248530
  667.       SORT2=1                                                           00248540
  668.       IND=XC                                                            00248550
  669.    10 ITEST=0                                                           00248560
  670.       IND=IND-1                                                         00248570
  671.       IF(IND.LT.1) RETURN                                               00248580
  672.       DO 17 I=1,IND                                                     00248590
  673.         J=I+1                                                           00248600
  674.         IF(SIZE(I).GE.SIZE(J)) GO TO 17                                 00248610
  675.         ITEST=1                                                         00248620
  676.         TEMP=SIZE(I)                                                    00248630
  677.         SIZE(I)=SIZE(J)                                                 00248640
  678.         SIZE(J)=TEMP                                                    00248650
  679.         TEMP=STPT(I)                                                    00248660
  680.         STPT(I)=STPT(J)                                                 00248670
  681.         STPT(J)=TEMP                                                    00248680
  682.    17 CONTINUE                                                          00248690
  683.       IF(ITEST.EQ.1) GO TO 10                                           00248700
  684.       RETURN                                                            00248710
  685.       END                                                               00248720
  686.