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

  1.       SUBROUTINE RENUMC(NX,IES)                                         00206710
  2.       IMPLICIT REAL*8 (A-H,O-Z)                                         00206720
  3.       REAL*8  NPAR                                                      00206730
  4.       COMMON/ELPAR/NPAR(14),NUMNP,II(7),MTOT,I2(6),NUMEL,NUMEL2         00206740
  5.      & ,NRELPA(41)                                                      R0206741
  6.       COMMON /BAND/ NRNM(3),NRBAND(5)                                   R0206750
  7.       COMMON/SIZE/NDMX,MXDF,NSMX,NTERM,NADND                            00206760
  8.       COMMON /TRASH/ X(30),RRTRAS(460)                                  R0206770
  9.       COMMON /SUPEL/ LDUM(4),NEADD,NRSUPE                               R0206780
  10.       COMMON/PREP/XMX,XAD,KSKIP,NDYN,I1,RRPREP(7)                       R0206790
  11.       COMMON/FORCE/ NLC,NELD                                            R0206800
  12.       COMMON /A/ MAXGRD,MAXDEG,NRMAXG(3)                                R0206810
  13.       COMMON /BITS/ NBITIN                                              00206820
  14.       COMMON /ZERO/ KT                                                  00206830
  15.       COMMON A(1)                                                       00206840
  16.       MULT=4                                                            00206850
  17.       CALL SECOND(T1)                                                   00206860
  18.       NC=IABS(NX)                                                       00206870
  19.       M2=2*NC                                                           00206880
  20.       MTEF= MTOT*MULT                                                   00206890
  21.       NBITIN=15                                                         00206900
  22.       NWORDS=M2+NUMNP*7+NC*MULT*(NUMNP+MULT)/4                          00206910
  23.       IF(NRNM(2).EQ.2) NWORDS=MTEF                                      00206920
  24.       N=NUMNP                                                           00206930
  25.       II1=NUMNP                                                         00206940
  26.       IF(N.LT.100) N=100                                                00206950
  27.       N=N+3                                                             00206960
  28.       N=N-MOD(N,4)                                                      00206970
  29.       MAXGRD=N                                                          00206980
  30.       IIR=N/MULT                                                        00206990
  31.         IF(MULT.EQ.1)IIR=NUMNP                                          00207000
  32.       MAXDEG=NC                                                         00207010
  33.       IF(NWORDS.GT.MTEF) WRITE(6, 100)                                  00207020
  34.       IF(NWORDS.GT.MTEF) KSKIP=1                                        00207030
  35.       IF(NWORDS.GT.MTEF) RETURN                                         00207040
  36.   100 FORMAT (/20X, 95HFOR THE GIVEN NO. OF NODES THERE IS NOT ENOUGH ST00207050
  37.      $ORAGE ALLOCATED -- NO MINIMIZATION IS ALLOWED.//)                 00207060
  38.       N2=1+NUMEL*13                                                     00207070
  39.       NZ=NTERM                                                          00207080
  40.       IF(NZ.EQ.0) NZ=1                                                  00207090
  41.       CALL ELORD(A(1),NUMEL,NUMEL2,NZ,NADND,A(N2))                      00207100
  42.       ND=(NUMNP+MULT)/MULT                                              00207110
  43.       N1=1                                                              00207120
  44.       N2=N1+ND                                                          00207130
  45.       IF(NRNM(2).EQ.2) CALL RENRST(A(N1),NUMNP,KT)                      00207140
  46.       IF(NRNM(2).EQ.2)     GO TO 106                                    00207150
  47.       DO 105 I=1,MTOT                                                   00207160
  48.   105 A(I)=0.0                                                          00207170
  49.       CALL CONECT(A(N2),NUMNP,NUMEL,I1,KSKIP,NC,X(1),NZ,NADND,II1)      00207180
  50.       IF(KSKIP.EQ.1) RETURN                                             00207190
  51.       N3=N2+IIR*NC                                                      00207200
  52.       N4=N3+ND                                                          00207210
  53.       N5=N4+ND                                                          00207220
  54.       N6=N5+ND                                                          00207230
  55.       N7=N6+ND                                                          00207240
  56.       N8=N7+ND                                                          00207250
  57.       N9=N8+ND                                                          00207260
  58.       IF(NRNM(3).GE.0.AND.NRNM(3).LT.9000) GO TO 9105                   00207270
  59.       CALL SETNOD(A(N2),II1,A(N3),NUMNP,A(N1),KT,I1)                    00207280
  60.       GO TO 106                                                         00207290
  61.  9105 CONTINUE                                                          00207300
  62.       CALL SCHEME(A(N2),II1,NUMNP,0,A(N1),A(N3),A(N4),A(N5),A(N6),A(N7),00207310
  63.      $ A(N8),A(N9),NX,M2,KT)                                            00207320
  64.   106 CONTINUE                                                          00207330
  65.       CALL NODORD(A(N2),NUMNP,A(N1),KT,I1)                              00207340
  66.       NUMEL=NUMEL-NEADD                                                 00207350
  67.       N3=N2+NUMEL*5                                                     00207360
  68.       N4=N3+NZ*NADND                                                    00207370
  69.       N5=N4+NADND                                                       00207380
  70.       IF(N5.GT.MTOT) CALL ERROR(N5-MTOT)                                00207390
  71.       CALL ELRORD(A(N2),NUMEL,NUMEL2,A(N1),NUMNP,I1,A(N3),A(N4),NZ,NADND00207400
  72.      $)                                                                 00207410
  73.       IF(IES.NE.0)CALL FGNORD(NUMNP,A(N1),IES)                          00207420
  74.       N3=N2+NLC*6                                                       00207430
  75.       IF(NLC.GT.0) CALL LDRORD(A(N1),A(N2),A(N3),NUMNP,NLC)             00207440
  76.       CALL RORD(A(N1),A(N2),NUMNP)                                      00207450
  77.       NTERM=NTERM-NEADD                                                 00207460
  78.       CALL SECOND(T2)                                                   00207470
  79.       T2=T2-T1                                                          00207480
  80.       WRITE(6, 110)T2                                                   00207490
  81.   110 FORMAT(///20X,F8.2, 53H SECONDS WERE REQUIRED TO REDUCE THE MODELS00207500
  82.      $ BANDWIDTH//)                                                     00207510
  83.       RETURN                                                            00207520
  84.       END                                                               00207530
  85.       SUBROUTINE SCHEME (IG,II1,NN,IP,ILD,IC,IDEG,IDIS,IW,NEW,ICC,IPP,  00225390
  86.      $MM,M2,KT)                                                         00225400
  87.       IMPLICIT REAL*8(A-H,O-Z)                                          00225410
  88.       INTEGER*2 IC, IDEG, IDIS, IW, NEW, ICC                            00225420
  89.       INTEGER*2  IG, ILD,IPP                                            00225430
  90.       DIMENSION IG(II1,1),IC(II1),IDEG(II1),IDIS(II1),IW(II1),          00225440
  91.      $          NEW(II1),ICC(II1),IPP(M2),ILD(II1)                      00225450
  92.       COMMON /BAND/  NRNM(3),NRBAND(5)                                  R0225460
  93.       COMMON /TRASH/ ISTART(100),RRTRAS(440)                            R0225470
  94.       DIMENSION NODESL(100)                                             00225480
  95.       NSTN=NRNM(3)                                                      00225490
  96.       LINE=60                                                           00225500
  97.       ISTA=0                                                            00225510
  98.       NT=80                                                             00225520
  99.       NUM=1                                                             00225530
  100.       NOM=2                                                             00225540
  101.       IO=2                                                              00225550
  102.       CALL DEGREE(IG,II1,IDEG,NN,MM)                                    00225560
  103.       NCM=COMPNT(IG,II1,IC,IDEG,IW,ICC,NN)                              00225570
  104.    50 FORMAT(//20X,47H--WARNING-- MODEL HAS A UNCONNECTED STRUCTURE^  ) 00225580
  105.       MAXD=MAXDGR(0,IC,IDEG,NN)                                         00225590
  106.       MM=MAXD                                                           00225600
  107.       DO 100 I=1,NN                                                     00225610
  108.       NEW(I)=I                                                          00225620
  109.   100 ILD(I)=I                                                          00225630
  110.       IS=MAXBND(0,IG,II1,IC,IDEG,NEW,ILD,NN,IH)                         00225640
  111.       KORIG=IS                                                          00225650
  112.       IH0=IH                                                            00225660
  113.       DO 110 I=1,NN                                                     00225670
  114.       NEW(I)=0                                                          00225680
  115.   110 ILD(I)=0                                                          00225690
  116.       CALL DIST(IDEG,IPP,IP,MEDIAN,MODD,NN,MM)                          00225700
  117.       IF(IP.EQ.0) GO TO 200                                             00225710
  118.       DO 150 I=1,NN                                                     00225720
  119.       IF(MOD(I,LINE).EQ.1)WRITE(6,120)                                  00225730
  120.   120 FORMAT(37H1LABEL  COMP MDIST  DEGR  CONNECTIONS ,10X,             00225740
  121.      $   18H(INTERNAL NUMBERS) )                                        00225750
  122.       MDIST=0                                                           00225760
  123.       DO 130 J=1,MAXD                                                   00225770
  124.       IS1 = IG(I,J)                                                     00225780
  125.       IF(IS1.EQ.0)GO TO 130                                             00225790
  126.       MDIST=MAX0(MDIST,IABS(I-IS1))                                     00225800
  127.   130 CONTINUE                                                          00225810
  128.       IPP(1)=IC(I)                                                      00225820
  129.       IPP(2)=IDEG(I)                                                    00225830
  130.       DO 140 IP1=1,MAXD                                                 00225840
  131.   140 IPP (IP1+2) = IG(I,IP1)                                           00225850
  132.       IS1=MAXD+2                                                        00225860
  133.   150 WRITE(6,160)I,IPP(1),MDIST,(IPP(J),J=2,IS1)                       00225870
  134.   160 FORMAT(5I6,20I5/ 25(25X,21I5/))                                   00225880
  135.       WRITE(6,170)                                                      00225890
  136.   170 FORMAT(1X ,//,32X,31HPROGRAMMER INFORMATION MESSAGES /)           00225900
  137.       WRITE(6,180) IS,IH                                                00225910
  138.   180 FORMAT(19H ORIGINAL BANDWIDTH,I7,10H   PROFILE,I10)               00225920
  139.       WRITE(6,190) MODD                                                 00225930
  140.   190 FORMAT(30H MODE OF DEGREE DISTRIBUTION =,I5)                      00225940
  141.   200 CONTINUE                                                          00225950
  142.       IF(IO.EQ.3) IS=IH                                                 00225960
  143.       DO 350 NC=1,NCM                                                   00225970
  144.       MI=MINDEG(NC,IC,IDEG,NN)                                          00225980
  145.       MAD=MI                                                            00225990
  146.       IF(NOM) 210,220,210                                               00226000
  147.   210 MA=MAXDGR(NC,IC,IDEG,NN)                                          00226010
  148.       MAD=MI+((MA-MI)*NUM)/NOM                                          00226020
  149.       MAD=MIN0(MAD,MEDIAN-1)                                            00226030
  150.       MAD=MAX0(MAD,MI)                                                  00226040
  151.   220 IF(IP.EQ.0) GO TO 260                                             00226050
  152.       WRITE(6,230) NC                                                   00226060
  153.   230 FORMAT(22H *******     COMPONENT,I5,12H     *******)              00226070
  154.       IF(IO.EQ.2) WRITE(6,240)                                          00226080
  155.   240 FORMAT(43H OPTION 2 SELECTED  (CRITERION - BANDWIDTH ,            00226090
  156.      $  57HMINIMIZATION|   CONDITION - MINMAX NUMBER OF NODES/LEVEL) )  00226100
  157.       IF(IO.EQ.3) WRITE(6,250)                                          00226110
  158.   250 FORMAT(52H OPTION 3 SELECTED (CRITERION - MINIMIZATION OF SUM|,   00226120
  159.      $  44H   CONDITION - MINMAX NUMBER OF NODES/LEVEL) )               00226130
  160.   260 CALL DIAM(NC,MAD,NL,NODESL,MAXLEV,IG,II1,IC,IDEG,IDIS,IW,ICC,NN)  00226140
  161.       IF(NSTN.GT.0.AND.NC.EQ.1) READ(5,261)(ISTART(J),J=1,NSTN)         00226150
  162.   261 FORMAT(16I5)                                                      00226160
  163.       IF(NSTN.LE.0)GO TO 269                                            00226170
  164.       MF=0                                                              00226180
  165.       DO 267 I=1,NSTN                                                   00226190
  166.       J=ISTART(I)                                                       00226200
  167.       IF(IC(J).NE.NC) GO TO 267                                         00226210
  168.       MF=MF+1                                                           00226220
  169.       NODESL(MF)=J                                                      00226230
  170.   267 CONTINUE                                                          00226240
  171.       IF(MF.GT.0) NL=MF                                                 00226250
  172.       NL=MIN0(NL  ,100)                                                 00226260
  173.       CALL FIXIT(NODESL,NL)                                             00226270
  174.   269 CONTINUE                                                          00226280
  175.       IF(IP.EQ.0) GO TO 270                                             00226290
  176.       WRITE(6,280) NC,MAD                                               00226300
  177.       WRITE(6,290) MAXLEV                                               00226310
  178.       WRITE(6,300) (NODESL(J),J=1,NL)                                   00226320
  179.   270 CONTINUE                                                          00226330
  180.   280 FORMAT(10H COMPONENT,I5,19H    MAX DEGREE USED,I5)                00226340
  181.   290 FORMAT(52H STARTING NODES FOR MINMAX NUMBER OF NODES PER LEVEL,I5)00226350
  182.   300 FORMAT(4X,20I5)                                                   00226360
  183.       JMAX=MIN0(NT,NL)                                                  00226370
  184.       IM=900000000                                                      00226380
  185.       IMM=IM                                                            00226390
  186.       M=1                                                               00226400
  187.       IF(NSTN.GT.0.AND.MF.GT.0)  M=NL                                   00226410
  188.       IF(NSTN.GT.0.AND.MF.GT.0) JMAX=1                                  00226420
  189.       DO 340 J=1,JMAX                                                   00226430
  190.       CALL RELABL(M,NODESL(J ),IG,II1,IC,IDEG,IDIS,IW,NEW,ICC,ILD,NN)   00226440
  191.       IB=MAXBND(NC,IG,II1,IC,IDEG,NEW,ILD,NN,IH)                        00226450
  192.       IF(IP.NE.0) WRITE(6,310) NODESL(J),IB,IH                          00226460
  193.   310 FORMAT(14H STARTING NODE,I6,4X,9HBANDWIDTH,I6,3X,7HPROFILE,I8)    00226470
  194.       IF(IO.EQ.3) IB=IH                                                 00226480
  195.       IE=ICC(NC+1)-1                                                    00226490
  196.       IF(IM-IB) 340,330,320                                             00226500
  197.   320 IM=IB                                                             00226510
  198.       IMM=IH                                                            00226520
  199.       IJ=J                                                              00226530
  200.       GO TO 340                                                         00226540
  201.   330 IF(IMM.LE.IH) GO TO 340                                           00226550
  202.       IMM=IH                                                            00226560
  203.       IJ=J                                                              00226570
  204.   340 CONTINUE                                                          00226580
  205.       IF(NSTN.GT.0.AND.MF.GT.0) GO TO 350                               00226590
  206.       CALL RELABL(1,NODESL(IJ),IG,II1,IC,IDEG,IDIS,IW,NEW,ICC,ILD,NN)   00226600
  207.   350 CONTINUE                                                          00226610
  208.       CALL STACK(IDEG,NEW,ILD,IW,NN,KT)                                 00226620
  209.       IB=MAXBND(0,IG,II1,IC,IDEG,NEW,ILD,NN,IH)                         00226630
  210.       WRITE(6,360)                                                      00226640
  211.   360 FORMAT(21H0 ORIGINAL LABELING -)                                  00226650
  212.       WRITE (6,380)  KORIG                                              00226660
  213.       WRITE(6,370)                                                      00226670
  214.   370 FORMAT(21H  STD CM RELABELING -)                                  00226680
  215.       WRITE (6,380)  IB                                                 00226690
  216.   380 FORMAT (1H+,26X,9HBANDWIDTH,I7)                                   00226700
  217.   390 FORMAT(21H  REV CM RELABELING -)                                  00226710
  218.   400 IF(IO.EQ.3) IB=IH                                                 00226720
  219.       IF(IB-IS) 450,410,420                                             00226730
  220.   410 IF(IH.LT.IH0) GO TO 450                                           00226740
  221.   420 DO 430 I=1,NN                                                     00226750
  222.       ILD(I)=I                                                          00226760
  223.   430 NEW(I)=I                                                          00226770
  224.       CALL STACK(IDEG,NEW,ILD,IW,NN,KT)                                 00226780
  225.       IB=IS                                                             00226790
  226.       IH=IH0                                                            00226800
  227.       WRITE(6,440)                                                      00226810
  228.   440 FORMAT(21H ORIG CM RELABELING -)                                  00226820
  229.       WRITE (6,380)  IB                                                 00226830
  230.   450 IHE=IH                                                            00226840
  231.       CALL REVERS(NEW,ILD,NN,KT)                                        00226850
  232.       IB=MAXBND(0,IG,II1,IC,IDEG,NEW,ILD,NN,IH)                         00226860
  233.       WRITE(6,390)                                                      00226870
  234.       WRITE (6,380)  IB                                                 00226880
  235.   460 IF(IH.LT.IHE) GO TO 470                                           00226890
  236.       CALL REVERS(NEW,ILD,NN,KT)                                        00226900
  237.       IB=MAXBND(0,IG,II1,IC,IDEG,NEW,ILD,NN,IH)                         00226910
  238.   470 IHE=IH                                                            00226920
  239.       KNEW=IB                                                           00226930
  240.       WRITE(6,480)                                                      00226940
  241.   480 FORMAT(21H  ** FINAL LABELING -)                                  00226950
  242.       WRITE (6,380)  KNEW                                               00226960
  243.   490 CONTINUE                                                          00226970
  244.   500 IF((NCM-KT).GT.1) WRITE(6,50)                                     00226980
  245.       RETURN                                                            00226990
  246.       END                                                               00227000
  247.       SUBROUTINE DEGREE(IG,II1,IDEG,NN,MM)                              00055800
  248.       INTEGER*2  IDEG                                                   00055810
  249.       INTEGER*2  IG                                                     00055820
  250.       DIMENSION IG(II1,1),IDEG(1)                                       00055830
  251.       DO 120 I=1,NN                                                     00055840
  252.       IDEG(I)=0                                                         00055850
  253.       DO 110 J=1,MM                                                     00055860
  254.       IF(IG(I,J)) 120,120,100                                           00055870
  255.   100 IDEG(I)=IDEG(I)+1                                                 00055880
  256.   110 CONTINUE                                                          00055890
  257.   120 CONTINUE                                                          00055900
  258.       RETURN                                                            00055910
  259.       END                                                               00055920
  260.       SUBROUTINE DIST(IDEG,HIST,IP,MEDIAN,MODD,NN,MM)                   00061010
  261.       IMPLICIT REAL*8(A-H,O-Z)                                          00061020
  262.       DIMENSION IDEG(1),HIST(1)                                         00061030
  263.       INTEGER*2 HIST,IDEG                                               00061040
  264.       MM1=MM+1                                                          00061050
  265.       DO 100 I=1,MM1                                                    00061060
  266.   100 HIST(I)=0                                                         00061070
  267.       DO 110 I=1,NN                                                     00061080
  268.       K=IDEG(I)+1                                                       00061090
  269.   110 HIST(K)=HIST(K)+1                                                 00061100
  270.       MODD=0                                                            00061110
  271.       MAX=0                                                             00061120
  272.       DO 120 I=1,MM1                                                    00061130
  273.       K=HIST(I)                                                         00061140
  274.       IF(K.LE.MAX) GO TO 120                                            00061150
  275.       MAX=K                                                             00061160
  276.       MODD=I-1                                                          00061170
  277.   120 CONTINUE                                                          00061180
  278.       IF(IP.EQ.0) GO TO 160                                             00061190
  279.       WRITE(6,130)                                                      00061200
  280.   130 FORMAT(26H1NODAL DEGREE HISTOGRAM --//10X,                        00061210
  281.      $      26HDEGREE  NUMBER  CUM. TOTAL)                              00061220
  282.       ISUM=0                                                            00061230
  283.       DO 140 I=1,MM1                                                    00061240
  284.       ISUM=ISUM+HIST(I)                                                 00061250
  285.       K=I-1                                                             00061260
  286.   140 WRITE(6,150) K,HIST(I),ISUM                                       00061270
  287.   150 FORMAT(8X,2I8,I12)                                                00061280
  288.   160 DO 170 I=2,MM1                                                    00061290
  289.   170 HIST(I)=HIST(I)+HIST(I-1)                                         00061300
  290.       NN2=NN/2                                                          00061310
  291.                                                                         00061320
  292.        DO 180 I=1,MM1                                                   00061330
  293.       IF(HIST(I).GT.NN2) GO TO 190                                      00061340
  294.   180 CONTINUE                                                          00061350
  295.   190 MEDIAN=I-1                                                        00061360
  296.       IF(IP.NE.0) WRITE(6,200) MEDIAN,MODD                              00061370
  297.   200 FORMAT(/10X,6HMEDIAN,I6/10X,6H  MODE,I6)                          00061380
  298.       RETURN                                                            00061390
  299.       END                                                               00061400
  300.       SUBROUTINE DIAM(NC,MAXDEG,NL,NODESL,MAXLEV,                       00059400
  301.      $ IG,II1,IC,IDEG,IDIS,IW,ICC,NN)                                   00059410
  302.       INTEGER*2 IG                                                      00059420
  303.       INTEGER*2  IC,IDEG,IDIS,IW,ICC                                    00059430
  304.       DIMENSION IG(II1,1),IDIS(1),IW(1),ICC(1),IC(1),IDEG(1)            00059440
  305.       DIMENSION NODESL(1)                                               00059450
  306.       NL=0                                                              00059460
  307.       MAXLEV=10000                                                      00059470
  308.       DO 150 I=1,NN                                                     00059480
  309.       IF(NC-IC(I)) 150,100,150                                          00059490
  310.   100 IF(MAXDEG-IDEG(I)) 150,110,110                                    00059500
  311.   110 MD=IDIST(I,ML,MAXLEV,IG,II1,IC,IDEG,IDIS,IW,ICC,NN)               00059510
  312.       IF(MD) 170,170,120                                                00059520
  313.   120 IF(ML-MAXLEV)130,140,150                                          00059530
  314.   130 MAXLEV=ML                                                         00059540
  315.       NL=1                                                              00059550
  316.       NODESL(1)=I                                                       00059560
  317.       GO TO 150                                                         00059570
  318.   140 IF(NL.GE.100) GO TO 150                                           00059580
  319.       NL=NL+1                                                           00059590
  320.       NODESL(NL)=I                                                      00059600
  321.   150 CONTINUE                                                          00059610
  322.   160 RETURN                                                            00059620
  323.   170 ML=1                                                              00059630
  324.       NODESL(1)=I                                                       00059640
  325.       MAXLEV=0                                                          00059650
  326.       RETURN                                                            00059660
  327.       END                                                               00059670
  328.       SUBROUTINE FIXIT(LIST,NL)                                         00087450
  329.       IMPLICIT REAL*8(A-H,O-Z)                                          00087460
  330.       DIMENSION LIST(1)                                                 00087470
  331.       IF(NL.LE.0) RETURN                                                00087480
  332.       IF(NL.EQ.1) GO TO 180                                             00087490
  333.       NL1=NL-1                                                          00087500
  334.       DO 110 I=1,NL1                                                    00087510
  335.       IF(LIST(I).EQ.0) GO TO 110                                        00087520
  336.       I1=I+1                                                            00087530
  337.       DO 100 J=I1,NL                                                    00087540
  338.       IF(LIST(I).NE.LIST(J)) GO TO 100                                  00087550
  339.       LIST(I)=0                                                         00087560
  340.       GO TO 110                                                         00087570
  341.   100 CONTINUE                                                          00087580
  342.   110 CONTINUE                                                          00087590
  343.       DO 140 I=1,NL1                                                    00087600
  344.       K=0                                                               00087610
  345.   120 IF(LIST(I).NE.0) GO TO 140                                        00087620
  346.       K=K+1                                                             00087630
  347.       DO 130 J=I,NL1                                                    00087640
  348.   130 LIST(J)=LIST(J+1)                                                 00087650
  349.       LIST(NL)=0                                                        00087660
  350.       IF(K.GE.(NL-I+1)) GO TO 150                                       00087670
  351.       GO TO 120                                                         00087680
  352.   140 CONTINUE                                                          00087690
  353.   150 DO 160 I=1,NL                                                     00087700
  354.       J=NL-I+1                                                          00087710
  355.       IF(LIST(J).NE.0) GO TO 170                                        00087720
  356.   160 CONTINUE                                                          00087730
  357.   170 NL=NL-I+1                                                         00087740
  358.       RETURN                                                            00087750
  359.   180 IF(LIST(1).EQ.0) NL=0                                             00087760
  360.       RETURN                                                            00087770
  361.       END                                                               00087780
  362.       SUBROUTINE RELABL(NS,NODES,IG,II1,IC,IDEG,IDIS,IW,NEW,ICC,ILD,NN) 00203660
  363.       IMPLICIT REAL*8(A-H,O-Z)                                          00203670
  364.       INTEGER*2 IC, IDEG, IDIS, IW, NEW, ICC                            00203680
  365.       DIMENSION IG(II1,1),IC(1),IDEG(1),IDIS(1),IW(1),NEW(1),ICC(1)     00203690
  366.       DIMENSION ILD(1)                                                  00203700
  367.       INTEGER X                                                         00203710
  368.       DIMENSION NODES( 1),IAJ(50)                                       00203720
  369.       I=NODES(1)                                                        00203730
  370.       ICN=IC(I)                                                         00203740
  371.       NT=ICC(ICN)-1                                                     00203750
  372.       DO 110 I=1,NN                                                     00203760
  373.       IF(IC(I)-ICN) 110,100,110                                         00203770
  374.   100 IDIS(I)=0                                                         00203780
  375.   110 CONTINUE                                                          00203790
  376.       DO 120 J=1,NS                                                     00203800
  377.       JJ=NODES(J)                                                       00203810
  378.       IDIS(JJ)=-1                                                       00203820
  379.       JT=J+NT                                                           00203830
  380.       NEW(JT)=JJ                                                        00203840
  381.   120 ILD(JJ)=JT                                                        00203850
  382.       KI=NT                                                             00203860
  383.       KO=NS+NT                                                          00203870
  384.       LL=KO                                                             00203880
  385.       L=1                                                               00203890
  386.       J=KO                                                              00203900
  387.       NNC=ICC(ICN+1)-1                                                  00203910
  388.   130 KI=KI+1                                                           00203920
  389.       IF(KI-LL)150,140,150                                              00203930
  390.   140 L=L+1                                                             00203940
  391.       LL=KO+1                                                           00203950
  392.   150 II=NEW(KI)                                                        00203960
  393.       N=IDEG(II)                                                        00203970
  394.       IF(N)160,280,160                                                  00203980
  395.   160 IJ=0                                                              00203990
  396.       DO 180 I=1,N                                                      00204000
  397.       IA = IG(II,I)                                                     00204010
  398.       IF(IDIS(IA)) 180,170,180                                          00204020
  399.   170 IJ=IJ+1                                                           00204030
  400.       IDIS(IA)=L                                                        00204040
  401.       KO=KO+1                                                           00204050
  402.       IAJ(IJ)=IA                                                        00204060
  403.       IW(IJ)=IDEG(IA)                                                   00204070
  404.   180 CONTINUE                                                          00204080
  405.       IF(IJ-1)270,190,200                                               00204090
  406.   190 J=KO                                                              00204100
  407.       IZ=IAJ(1)                                                         00204110
  408.       NEW(KO)=IZ                                                        00204120
  409.       ILD(IZ)=KO                                                        00204130
  410.       GO TO 270                                                         00204140
  411.   200 X=0                                                               00204150
  412.   210 DO 240 I=2,IJ                                                     00204160
  413.       IF(IW(I)-IW(I-1))220,240,240                                      00204170
  414.   220 CONTINUE                                                          00204180
  415.       X=IW(I)                                                           00204190
  416.       IW(I)=IW(I-1)                                                     00204200
  417.       IW(I-1)=X                                                         00204210
  418.   230 X=IAJ(I)                                                          00204220
  419.       IAJ(I)=IAJ(I-1)                                                   00204230
  420.       IAJ(I-1)=X                                                        00204240
  421.   240 CONTINUE                                                          00204250
  422.       IF(X)250,250,200                                                  00204260
  423.   250 DO 260 I=1,IJ                                                     00204270
  424.       J=J+1                                                             00204280
  425.       IZ=IAJ(I)                                                         00204290
  426.       NEW(J)=IZ                                                         00204300
  427.       ILD(IZ)=J                                                         00204310
  428.   260 CONTINUE                                                          00204320
  429.   270 IF(KO-NNC)130,280,280                                             00204330
  430.   280 CONTINUE                                                          00204340
  431.       RETURN                                                            00204350
  432.       END                                                               00204360
  433.       SUBROUTINE STACK(IDEG,NEW,ILD,IW,NN,KT)                           00265520
  434.       INTEGER*2  IDEG,IW,NEW                                            00265530
  435.       INTEGER*2 ILD                                                             
  436.       DIMENSION IDEG(1),NEW(1),ILD(1),IW(1)                             00265550
  437.       KT=0                                                              00265560
  438.       NN1=NN-1                                                          00265570
  439.       DO 100 I=1,NN                                                     00265580
  440.       IF(IDEG(I).GT.0) GO TO 100                                        00265590
  441.       KT=KT+1                                                           00265600
  442.       IW(KT)=ILD(I)                                                     00265610
  443.   100 CONTINUE                                                          00265620
  444.       IF(KT.LE.0) GO TO 140                                             00265630
  445.       CALL SORT(IW,KT)                                                  00265640
  446.       DO 130 L=1,KT                                                     00265650
  447.       I=IW(L)-L+1                                                       00265660
  448.       K=NEW(I)                                                          00265670
  449.       IF(I.GE.NN) GO TO 120                                             00265680
  450.       DO 110 J=I,NN1                                                    00265690
  451.   110 NEW(J)=NEW(J+1)                                                   00265700
  452.   120 NEW(NN)=K                                                         00265710
  453.   130 CONTINUE                                                          00265720
  454.   140 DO 150 I=1,NN                                                     00265730
  455.       K=NEW(I)                                                          00265740
  456.   150 ILD(K)=I                                                          00265750
  457.       RETURN                                                            00265760
  458.       END                                                               00265770
  459.       SUBROUTINE REVERS(NEW,ILD,NN,KT)                                  00210450
  460.       INTEGER*2 NEW                                                     00210460
  461.       INTEGER*2  ILD                                                    00210470
  462.       DIMENSION NEW(1),ILD(1)                                           00210480
  463.       J=(NN-KT)/2                                                       00210490
  464.       LL=NN-KT+1                                                        00210500
  465.       DO 100 I=1,J                                                      00210510
  466.       L=LL-I                                                            00210520
  467.       K=NEW(L)                                                          00210530
  468.       NEW(L)=NEW(I)                                                     00210540
  469.   100 NEW(I)=K                                                          00210550
  470.       DO 110 I=1,NN                                                     00210560
  471.       K=NEW(I)                                                          00210570
  472.   110 ILD(K)=I                                                          00210580
  473.       RETURN                                                            00210590
  474.       END                                                               00210600
  475.       FUNCTION COMPNT(IG,II1,IC,IDEG,IW,ICC,NN)                         00048210
  476.       IMPLICIT REAL*8(A-H,O-Z)                                          00048220
  477.       INTEGER*2  IC,IDEG,IW,ICC                                         00048230
  478.       INTEGER*2  IG                                                     00048240
  479.       DIMENSION IG(II1,1),IC(1),IDEG(1),IW(1),ICC(1)                    00048250
  480.       DO 100 I=1,NN                                                     00048260
  481.       ICC(I)=0                                                          00048270
  482.       IC(I)=0                                                           00048280
  483.   100 CONTINUE                                                          00048290
  484.       NC=0                                                              00048300
  485.       ICC(1)=1                                                          00048310
  486.   110 DO 120 I=1,NN                                                     00048320
  487.       IF(IC(I)) 120,130,120                                             00048330
  488.   120 COMPNT=NC                                                         00048340
  489.       RETURN                                                            00048350
  490.   130 NC=NC+1                                                           00048360
  491.       KI=0                                                              00048370
  492.       KO=1                                                              00048380
  493.       IW(1)=I                                                           00048390
  494.       IC(I)=NC                                                          00048400
  495.       IF(NC-1)150,140,140                                               00048410
  496.   140 IS=ICC(NC)+1                                                      00048420
  497.       ICC(NC+1)=IS                                                      00048430
  498.   150 KI=KI+1                                                           00048440
  499.       II=IW(KI)                                                         00048450
  500.       N=IDEG(II)                                                        00048460
  501.       IF(N)160,110,160                                                  00048470
  502.   160 DO 180 I=1,N                                                      00048480
  503.       IA = IG(II,I)                                                     00048490
  504.       IF(IC(IA)) 180,170,180                                            00048500
  505.   170 IC(IA)=NC                                                         00048510
  506.       KO=KO+1                                                           00048520
  507.       IW(KO)=IA                                                         00048530
  508.       IS=ICC(NC+1)+1                                                    00048540
  509.       ICC(NC+1)=IS                                                      00048550
  510.   180 CONTINUE                                                          00048560
  511.       IF(KO-KI)110,110,150                                              00048570
  512.       END                                                               00048580
  513.       SUBROUTINE RENRST(ISIR,NUMNP,KT)                                  00205520
  514.       INTEGER*2 ISIR                                                    00205530
  515.       DIMENSION ISIR(NUMNP)                                             00205540
  516.       READ (5,100,END=110) NZ,KT,(ISIR(I),I=1,NZ)                       00205550
  517.    90 CONTINUE                                                          00205560
  518.       IF(NZ.EQ.NUMNP) RETURN                                            00205570
  519.   100 FORMAT(16I5)                                                      00205580
  520.   110 WRITE(6,120)                                                      00205590
  521.   120 FORMAT(//53H THE NO. OF NODES IS NOT THE SAME AS THE PREVIOUS RUN)00205600
  522.       STOP                                                              00205610
  523.       END                                                               00205620
  524.       SUBROUTINE SORT(LIST,NL)                                          00248280
  525.       INTEGER*2 LIST                                                    00248290
  526.       DIMENSION LIST(1)                                                 00248300
  527.       IF(NL.LE.1) RETURN                                                00248310
  528.       NL1=NL-1                                                          00248320
  529.       DO 110 I=1,NL1                                                    00248330
  530.       K=NL-I                                                            00248340
  531.       KFLAG=0                                                           00248350
  532.       DO 100 J=1,K                                                      00248360
  533.       IF(LIST(J).LE.LIST(J+1)) GO TO 100                                00248370
  534.       KFLAG=1                                                           00248380
  535.       L=LIST(J)                                                         00248390
  536.       LIST(J)=LIST(J+1)                                                 00248400
  537.       LIST(J+1)=L                                                       00248410
  538.   100 CONTINUE                                                          00248420
  539.       IF(KFLAG.EQ.0) RETURN                                             00248430
  540.   110 CONTINUE                                                          00248440
  541.       RETURN                                                            00248450
  542.       END                                                               00248460
  543.