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

  1.       SUBROUTINE NUMBAR(SND,NUM,NDSTK,LVLS2,NDEG,RENUM,LVLST,LSTPT,NR,  MOD04653
  2.      1NFLG,IBW2,IPF2,IPFA,ISDIR,STKA,STKB,STKC,STKD,IDIM)               MOD04654
  3.       INTEGER NDSTK,LVLS2,NDEG,RENUM,LVLST,LSTPT,IPFA,STKA,STKB,        MOD04655
  4.      1STKC,STKD                                                         MOD04656
  5.       INTEGER SND,XA,XB,XC,XD,CX,END                                    MOD04657
  6.       INTEGER TEST                                                      MOD04658
  7.       COMMON/UNIT/II11,II22                                             MOD04659
  8.       DIMENSION STKA(1),STKB(1),STKC(1),STKD(1)                         MOD04660
  9.       COMMON /A/ MAXGRD,MAXDEG,N,IDPTH,IDEG                             MOD04661
  10.       COMMON /PREP/XDZ(2),KSKIP                                         MOD04662
  11.       COMMON /BITS/NBITIN                                               MOD04663
  12.       DIMENSION IPFA(1)                                                 MOD04664
  13.       DIMENSION NDSTK(NR,1),LVLS2(1),NDEG(1),RENUM(1),LVLST(1),LSTPT(1) MOD04665
  14.       DO 3 I=1,N                                                        MOD04666
  15.       IPFA(I)=0                                                         MOD04667
  16. 3     CONTINUE                                                          MOD04668
  17.       NSTPT=1                                                           MOD04669
  18.       DO 5 I=1,IDPTH                                                    MOD04670
  19.       LSTPT(I)=NSTPT                                                    MOD04671
  20.       DO 5 J=1,N                                                        MOD04672
  21.       IF(LVLS2(J).NE.I) GO TO 5                                         MOD04673
  22.       LVLST(NSTPT)=J                                                    MOD04674
  23.       NSTPT=NSTPT+1                                                     MOD04675
  24. 5     CONTINUE                                                          MOD04676
  25.       LSTPT(IDPTH+1)=NSTPT                                              MOD04677
  26.       LVLN=0                                                            MOD04678
  27.       IF(NFLG.LT.0) LVLN=IDPTH+1                                        MOD04679
  28.       XC=1                                                              MOD04680
  29.       STKC(XC)=SND                                                      MOD04681
  30. 10    CX=1                                                              MOD04682
  31.       XD=0                                                              MOD04683
  32.       LVLN=LVLN+NFLG                                                    MOD04684
  33.       LST=LSTPT(LVLN)                                                   MOD04685
  34.       LND=LSTPT(LVLN+1)-1                                               MOD04686
  35. 20    IPRO=STKC(CX)                                                     MOD04687
  36.       RENUM(IPRO)=NUM                                                   MOD04688
  37.       NUM=NUM+ISDIR                                                     MOD04689
  38.       END=NDEG(IPRO)                                                    MOD04690
  39.       XA=0                                                              MOD04691
  40.       XB=0                                                              MOD04692
  41.       DO 50 I=1,END                                                     MOD04693
  42.       TEST=NDSTK(IPRO,I)                                                MOD04694
  43.       INX=RENUM(TEST)                                                   MOD04695
  44.       IF(INX.EQ.0) GO TO 30                                             MOD04696
  45.       IF(INX.LT.0) GO TO 50                                             MOD04697
  46.       NBW=(RENUM(IPRO)-INX)*ISDIR                                       MOD04698
  47.       IF(ISDIR.GT.0) INX=RENUM(IPRO)                                    MOD04699
  48.       IF(IPFA(INX).LT.NBW) IPFA(INX)=NBW                                MOD04700
  49.       GO TO 50                                                          MOD04701
  50. 30    RENUM(TEST)=-1                                                    MOD04702
  51.       IF(LVLS2(TEST).EQ.LVLS2(IPRO)) GO TO 40                           MOD04703
  52.       XB=XB+1                                                           MOD04704
  53.       NDXL=XB                                                           MOD04705
  54.       IF(XB.GT.IDIM) GO TO 150                                          MOD04706
  55.       STKB(XB)=TEST                                                     MOD04707
  56.       GO TO 50                                                          MOD04708
  57. 40    XA=XA+1                                                           MOD04709
  58.       NDXL=XA                                                           MOD04710
  59.       IF(XA.GT.IDIM) GO TO 150                                          MOD04711
  60.       STKA(XA)=TEST                                                     MOD04712
  61. 50    CONTINUE                                                          MOD04713
  62.       IF(XA.EQ.0) GO TO 55                                              MOD04714
  63.       IF(XA.EQ.1) GO TO 52                                              MOD04715
  64.       CALL SORTDG(STKC,STKA,XC,XA,NDEG)                                 MOD04716
  65.       GO TO 55                                                          MOD04717
  66. 52    XC=XC+1                                                           MOD04718
  67.       NDXL=XC                                                           MOD04719
  68.       IF(XC.GT.IDIM) GO TO 150                                          MOD04720
  69.       STKC(XC)=STKA(XA)                                                 MOD04721
  70. 55    IF(XB.EQ.0) GO TO 65                                              MOD04722
  71.       IF(XB.EQ.1) GO TO 62                                              MOD04723
  72.       CALL SORTDG(STKD,STKB,XD,XB,NDEG)                                 MOD04724
  73.       GO TO 65                                                          MOD04725
  74. 62    XD=XD+1                                                           MOD04726
  75.       NDXL=XD                                                           MOD04727
  76.       IF(XD.GT.IDIM) GO TO 150                                          MOD04728
  77.       STKD(XD)=STKB(XB)                                                 MOD04729
  78. 65    CX=CX+1                                                           MOD04730
  79.       IF(XC.GE.CX) GO TO 20                                             MOD04731
  80.       MAX=IDEG+1                                                        MOD04732
  81.       SND=N+1                                                           MOD04733
  82.       DO 70 I=LST,LND                                                   MOD04734
  83.       TEST=LVLST(I)                                                     MOD04735
  84.       IF(RENUM(TEST).NE.0) GO TO 70                                     MOD04736
  85.       IF(NDEG(TEST).GE.MAX) GO TO 70                                    MOD04737
  86.       RENUM(SND)=0                                                      MOD04738
  87.       RENUM(TEST)=-1                                                    MOD04739
  88.       MAX=NDEG(TEST)                                                    MOD04740
  89.       SND=TEST                                                          MOD04741
  90. 70    CONTINUE                                                          MOD04742
  91.       IF(SND.EQ.N+1) GO TO 75                                           MOD04743
  92.       XC=XC+1                                                           MOD04744
  93.       NDXL=XC                                                           MOD04745
  94.       IF(XC.GT.IDIM) GO TO 150                                          MOD04746
  95.       STKC(XC)=SND                                                      MOD04747
  96.       GO TO 20                                                          MOD04748
  97. 75    IF(XD.EQ.0) GO TO 100                                             MOD04749
  98.       DO 80 I=1,XD                                                      MOD04750
  99.       STKC(I)=STKD(I)                                                   MOD04751
  100. 80    CONTINUE                                                          MOD04752
  101.       XC=XD                                                             MOD04753
  102.       GO TO 10                                                          MOD04754
  103. 100   DO 120 I=1,N                                                      MOD04755
  104.       IF(IPFA(I).GT.IBW2) IBW2=IPFA(I)                                  MOD04756
  105.       IPF2=IPF2+IPFA(I)                                                 MOD04757
  106. 120   CONTINUE                                                          MOD04758
  107.       RETURN                                                            MOD04759
  108. 150   NDXL=4*IDIM                                                       MOD04760
  109.       WRITE(II22,90)NDXL                                                MOD04761
  110. 90    FORMAT(//20X,31HAN INTERNAL DEFAULT DIMENSION (,I4,12H) IS SMALLERMOD04762
  111.      $/20X,46HTHAN YOUR PROBLEM REQUIRES. THE VALUE IS BEING,           MOD04763
  112.      $/20X,41HINTERNALLY INCREASED AND THE RESEQUENCING,                MOD04764
  113.      $/20X,14H IS CONTINUED.//)                                         MOD04765
  114.       KSKIP=10                                                          MOD04766
  115.       RETURN                                                            MOD04767
  116.       END                                                               MOD04768
  117.       SUBROUTINE FNDIAM(SND1,SND2,NDSTK,NR,NDEG,LVL,LVLS1,LVLS2,        MOD02839
  118.      1IWK,IDFLT,NDLST,IDIM)                                             MOD02840
  119.       INTEGER FLAG,SND,SND1,SND2                                        MOD02841
  120.       COMMON /A/ MAXGRD,MAXDEG,N,IDPTH,IDEG                             MOD02842
  121.       COMMON /PREP/XDZ(2),KSKIP                                         MOD02843
  122.       COMMON/UNIT/II11,II22                                             MOD02844
  123.       DIMENSION NDSTK(NR,1),NDEG(1),LVL(1),LVLS1(1),LVLS2(1),IWK(1)     MOD02845
  124.       DIMENSION  NDLST(IDIM)                                            MOD02846
  125.       FLAG=0                                                            MOD02847
  126.       MTW2=N                                                            MOD02848
  127.       SND=SND1                                                          MOD02849
  128. 20    DO 25 I=1,N                                                       MOD02850
  129.       LVL(I)=0                                                          MOD02851
  130. 25    CONTINUE                                                          MOD02852
  131.       LVLN=1                                                            MOD02853
  132.       CALL TREE(SND,NDSTK,NR,LVL,IWK,NDEG,LVLWTH,LVLBOT,LVLN,MAXLW,MTW2)MOD02854
  133.       IF(FLAG.GE.1) GO TO 110                                           MOD02855
  134.       FLAG=1                                                            MOD02856
  135. 70    IDPTH=LVLN-1                                                      MOD02857
  136.       MTW1=MAXLW                                                        MOD02858
  137.       DO 75 I=1,N                                                       MOD02859
  138.       LVLS1(I)=LVL(I)                                                   MOD02860
  139. 75    CONTINUE                                                          MOD02861
  140.       NDXN=1                                                            MOD02862
  141.       NDXL=0                                                            MOD02863
  142.       MTW2=N                                                            MOD02864
  143.       CALL SORTDG(NDLST,IWK(LVLBOT),NDXL,LVLWTH,NDEG)                   MOD02865
  144.       IF(NDXL.LE.IDIM) GO TO 100                                        MOD02866
  145.       NDXL=4*IDIM                                                       MOD02867
  146.       WRITE(II22,90)NDXL                                                MOD02868
  147. 90    FORMAT(//20X,31HAN INTERNAL DEFAULT DIMENSION (,I4,12H) IS SMALLERMOD02869
  148.      $/20X,50HTHAN YOUR PROBLEM REQUIRES. INCREASE IT BY PUTTING        MOD02870
  149.      $/20X,48HA LARGER NO. IN COL. 21-25 OF THE RENUMBER CARD.          MOD02871
  150.      $/20X,19HEXECUTION WILL END.//)                                    MOD02872
  151.       KSKIP=1                                                           MOD02873
  152.       RETURN                                                            MOD02874
  153. 100   CONTINUE                                                          MOD02875
  154.       SND=NDLST(1)                                                      MOD02876
  155.       GO TO 20                                                          MOD02877
  156. 110   IF(IDPTH.GE.LVLN-1) GO TO 120                                     MOD02878
  157.       SND1=SND                                                          MOD02879
  158.       GO TO 70                                                          MOD02880
  159. 120   IF(MAXLW.GE.MTW2) GO TO 130                                       MOD02881
  160.       MTW2=MAXLW                                                        MOD02882
  161.       SND2=SND                                                          MOD02883
  162.       DO 125 I=1,N                                                      MOD02884
  163.       LVLS2(I)=LVL(I)                                                   MOD02885
  164. 125   CONTINUE                                                          MOD02886
  165. 130   IF(NDXN.EQ.NDXL) GO TO 140                                        MOD02887
  166.       NDXN=NDXN+1                                                       MOD02888
  167.       SND=NDLST(NDXN)                                                   MOD02889
  168.       GO TO 20                                                          MOD02890
  169. 140   IDFLT=1                                                           MOD02891
  170.       IF(MTW2.LE.MTW1) IDFLT=2                                          MOD02892
  171.       RETURN                                                            MOD02893
  172.       END                                                               MOD02894
  173.       SUBROUTINE SCHEME (IG,II1,NN,IP,ILD,IC,IDEG,IDIS,IW,NEW,ICC,IPP,  MOD06303
  174.      $MM,M2,KT)                                                         MOD06304
  175.       COMMON/UNIT/II11,II22,IPPP,INPPP,INPFFF,ITER                      MOD06305
  176.       DIMENSION IG(II1,1),IC(II1),IDEG(II1),IDIS(II1),IW(II1),          MOD06306
  177.      $NEW(II1),ICC(II1),IPP(M2),ILD(II1)                                MOD06307
  178.       COMMON /BAND/  NRNM(3)                                            MOD06308
  179.       COMMON /TRASH/ ISTART(100)                                        MOD06309
  180.       DIMENSION NODESL(100)                                             MOD06310
  181.       NSTN=NRNM(3)                                                      MOD06311
  182.       LINE=60                                                           MOD06312
  183.       ISTA=0                                                            MOD06313
  184.       NT=80                                                             MOD06314
  185.       NUM=1                                                             MOD06315
  186.       NOM=2                                                             MOD06316
  187.       IO=2                                                              MOD06317
  188.       CALL DEGREE(IG,II1,IDEG,NN,MM)                                    MOD06318
  189.       NCM=COMPNT(IG,II1,IC,IDEG,IW,ICC,NN)                              MOD06319
  190. 50    FORMAT(//20X,47H--WARNING-- MODEL HAS A UNCONNECTED STRUCTURE^  ) MOD06320
  191.       MAXD=MAXDGR(0,IC,IDEG,NN)                                         MOD06321
  192.       MM=MAXD                                                           MOD06322
  193.       DO 100 I=1,NN                                                     MOD06323
  194.       NEW(I)=I                                                          MOD06324
  195. 100   ILD(I)=I                                                          MOD06325
  196.       IS=MAXBND(0,IG,II1,IC,IDEG,NEW,ILD,NN,IH)                         MOD06326
  197.       KORIG=IS                                                          MOD06327
  198.       IH0=IH                                                            MOD06328
  199.       DO 110 I=1,NN                                                     MOD06329
  200.       NEW(I)=0                                                          MOD06330
  201. 110   ILD(I)=0                                                          MOD06331
  202.       CALL DIST(IDEG,IPP,IP,MEDIAN,MODD,NN,MM)                          MOD06332
  203.       IF(IP.EQ.0) GO TO 200                                             MOD06333
  204.       DO 150 I=1,NN                                                     MOD06334
  205.       IF(MOD(I,LINE).EQ.1)WRITE(II22,120)                               MOD06335
  206. 120   FORMAT(37H1LABEL  COMP MDIST  DEGR  CONNECTIONS ,10X,             MOD06336
  207.      $18H(INTERNAL NUMBERS) )                                           MOD06337
  208.       MDIST=0                                                           MOD06338
  209.       DO 130 J=1,MAXD                                                   MOD06339
  210.       IS1 = IG(I,J)                                                     MOD06340
  211.       IF(IS1.EQ.0)GO TO 130                                             MOD06341
  212.       MDIST=MAX0(MDIST,IABS(I-IS1))                                     MOD06342
  213. 130   CONTINUE                                                          MOD06343
  214.       IPP(1)=IC(I)                                                      MOD06344
  215.       IPP(2)=IDEG(I)                                                    MOD06345
  216.       DO 140 IP1=1,MAXD                                                 MOD06346
  217. 140   IPP (IP1+2) = IG(I,IP1)                                           MOD06347
  218.       IS1=MAXD+2                                                        MOD06348
  219. 150   WRITE(II22,160)I,IPP(1),MDIST,(IPP(J),J=2,IS1)                    MOD06349
  220. 160   FORMAT(5I6,20I5/ 25(25X,21I5/))                                   MOD06350
  221.       WRITE(II22,170)                                                   MOD06351
  222. 170   FORMAT(1H1,//,32X,31HPROGRAMMER INFORMATION MESSAGES /)           MOD06352
  223.       WRITE(II22,180) IS,IH                                             MOD06353
  224. 180   FORMAT(19H ORIGINAL BANDWIDTH,I7,10H   PROFILE,I10)               MOD06354
  225.       WRITE(II22,190) MODD                                              MOD06355
  226. 190   FORMAT(30H MODE OF DEGREE DISTRIBUTION =,I5)                      MOD06356
  227. 200   CONTINUE                                                          MOD06357
  228.       IF(IO.EQ.3) IS=IH                                                 MOD06358
  229.       DO 350 NC=1,NCM                                                   MOD06359
  230.       MI=MINDEG(NC,IC,IDEG,NN)                                          MOD06360
  231.       MAD=MI                                                            MOD06361
  232.       IF(NOM) 210,220,210                                               MOD06362
  233. 210   MA=MAXDGR(NC,IC,IDEG,NN)                                          MOD06363
  234.       MAD=MI+((MA-MI)*NUM)/NOM                                          MOD06364
  235.       MAD=MIN0(MAD,MEDIAN-1)                                            MOD06365
  236.       MAD=MAX0(MAD,MI)                                                  MOD06366
  237. 220   IF(IP.EQ.0) GO TO 260                                             MOD06367
  238.       WRITE(II22,230) NC                                                MOD06368
  239. 230   FORMAT(22H *******     COMPONENT,I5,12H     *******)              MOD06369
  240.       IF(IO.EQ.2) WRITE(II22,240)                                       MOD06370
  241. 240   FORMAT(43H OPTION 2 SELECTED  (CRITERION - BANDWIDTH ,            MOD06371
  242.      $57HMINIMIZATION|   CONDITION - MINMAX NUMBER OF NODES/LEVEL) )    MOD06372
  243.       IF(IO.EQ.3) WRITE(II22,250)                                       MOD06373
  244. 250   FORMAT(52H OPTION 3 SELECTED (CRITERION - MINIMIZATION OF SUM|,   MOD06374
  245.      $44H   CONDITION - MINMAX NUMBER OF NODES/LEVEL) )                 MOD06375
  246. 260   CALL DIAM(NC,MAD,NL,NODESL,MAXLEV,IG,II1,IC,IDEG,IDIS,IW,ICC,NN)  MOD06376
  247.       IF(NSTN.GT.0.AND.NC.EQ.1) READ(ITER,261)(ISTART(J),J=1,NSTN)      MOD06377
  248. 261   FORMAT(16I5)                                                      MOD06378
  249.       IF(NSTN.LE.0)GO TO 269                                            MOD06379
  250.       MF=0                                                              MOD06380
  251.       DO 267 I=1,NSTN                                                   MOD06381
  252.       J=ISTART(I)                                                       MOD06382
  253.       IF(IC(J).NE.NC) GO TO 267                                         MOD06383
  254.       MF=MF+1                                                           MOD06384
  255.       NODESL(MF)=J                                                      MOD06385
  256. 267   CONTINUE                                                          MOD06386
  257.       IF(MF.GT.0) NL=MF                                                 MOD06387
  258.       NL=MIN0(NL  ,100)                                                 MOD06388
  259.       CALL FIXIT(NODESL,NL)                                             MOD06389
  260. 269   CONTINUE                                                          MOD06390
  261.       IF(IP.EQ.0) GO TO 270                                             MOD06391
  262.       WRITE(II22,280) NC,MAD                                            MOD06392
  263.       WRITE(II22,290) MAXLEV                                            MOD06393
  264.       WRITE(II22,300) (NODESL(J),J=1,NL)                                MOD06394
  265. 270   CONTINUE                                                          MOD06395
  266. 280   FORMAT(10H COMPONENT,I5,19H    MAX DEGREE USED,I5)                MOD06396
  267. 290   FORMAT(52H STARTING NODES FOR MINMAX NUMBER OF NODES PER LEVEL,I5)MOD06397
  268. 300   FORMAT(4X,20I5)                                                   MOD06398
  269.       JMAX=MIN0(NT,NL)                                                  MOD06399
  270.       IM=900000000                                                      MOD06400
  271.       IMM=IM                                                            MOD06401
  272.       M=1                                                               MOD06402
  273.       IF(NSTN.GT.0.AND.MF.GT.0)  M=NL                                   MOD06403
  274.       IF(NSTN.GT.0.AND.MF.GT.0) JMAX=1                                  MOD06404
  275.       DO 340 J=1,JMAX                                                   MOD06405
  276.       CALL RELABL(M,NODESL(J ),IG,II1,IC,IDEG,IDIS,IW,NEW,ICC,ILD,NN)   MOD06406
  277.       IB=MAXBND(NC,IG,II1,IC,IDEG,NEW,ILD,NN,IH)                        MOD06407
  278.       IF(IP.NE.0) WRITE(II22,310) NODESL(J),IB,IH                       MOD06408
  279. 310   FORMAT(14H STARTING NODE,I6,4X,9HBANDWIDTH,I6,3X,7HPROFILE,I8)    MOD06409
  280.       IF(IO.EQ.3) IB=IH                                                 MOD06410
  281.       IE=ICC(NC+1)-1                                                    MOD06411
  282.       IF(IM-IB) 340,330,320                                             MOD06412
  283. 320   IM=IB                                                             MOD06413
  284.       IMM=IH                                                            MOD06414
  285.       IJ=J                                                              MOD06415
  286.       GO TO 340                                                         MOD06416
  287. 330   IF(IMM.LE.IH) GO TO 340                                           MOD06417
  288.       IMM=IH                                                            MOD06418
  289.       IJ=J                                                              MOD06419
  290. 340   CONTINUE                                                          MOD06420
  291.       IF(NSTN.GT.0.AND.MF.GT.0) GO TO 350                               MOD06421
  292.       CALL RELABL(1,NODESL(IJ),IG,II1,IC,IDEG,IDIS,IW,NEW,ICC,ILD,NN)   MOD06422
  293. 350   CONTINUE                                                          MOD06423
  294.       CALL STACK(IDEG,NEW,ILD,IW,NN,KT)                                 MOD06424
  295.       IB=MAXBND(0,IG,II1,IC,IDEG,NEW,ILD,NN,IH)                         MOD06425
  296.       WRITE(II22,360)                                                   MOD06426
  297. 360   FORMAT(21H0 ORIGINAL LABELING -)                                  MOD06427
  298.       WRITE (6,380)  KORIG                                              MOD06428
  299.       WRITE(II22,370)                                                   MOD06429
  300. 370   FORMAT(21H  STD CM RELABELING -)                                  MOD06430
  301.       WRITE (6,380)  IB                                                 MOD06431
  302. 380   FORMAT (1H+,26X,9HBANDWIDTH,I7)                                   MOD06432
  303. 390   FORMAT(21H  REV CM RELABELING -)                                  MOD06433
  304. 400   IF(IO.EQ.3) IB=IH                                                 MOD06434
  305.       IF(IB-IS) 450,410,420                                             MOD06435
  306. 410   IF(IH.LT.IH0) GO TO 450                                           MOD06436
  307. 420   DO 430 I=1,NN                                                     MOD06437
  308.       ILD(I)=I                                                          MOD06438
  309. 430   NEW(I)=I                                                          MOD06439
  310.       CALL STACK(IDEG,NEW,ILD,IW,NN,KT)                                 MOD06440
  311.       IB=IS                                                             MOD06441
  312.       IH=IH0                                                            MOD06442
  313.       WRITE(II22,440)                                                   MOD06443
  314. 440   FORMAT(21H ORIG CM RELABELING -)                                  MOD06444
  315.       WRITE (6,380)  IB                                                 MOD06445
  316. 450   IHE=IH                                                            MOD06446
  317.       CALL REVERS(NEW,ILD,NN,KT)                                        MOD06447
  318.       IB=MAXBND(0,IG,II1,IC,IDEG,NEW,ILD,NN,IH)                         MOD06448
  319.       WRITE(II22,390)                                                   MOD06449
  320.       WRITE (6,380)  IB                                                 MOD06450
  321. 460   IF(IH.LT.IHE) GO TO 470                                           MOD06451
  322.       CALL REVERS(NEW,ILD,NN,KT)                                        MOD06452
  323.       IB=MAXBND(0,IG,II1,IC,IDEG,NEW,ILD,NN,IH)                         MOD06453
  324. 470   IHE=IH                                                            MOD06454
  325.       KNEW=IB                                                           MOD06455
  326.       WRITE(II22,480)                                                   MOD06456
  327. 480   FORMAT(21H  ** FINAL LABELING -)                                  MOD06457
  328.       WRITE (6,380)  KNEW                                               MOD06458
  329. 490   CONTINUE                                                          MOD06459
  330. 500   IF((NCM-KT).GT.1) WRITE(II22,50)                                  MOD06460
  331.       RETURN                                                            MOD06461
  332.       END                                                               MOD06462
  333.       SUBROUTINE DEGREE(IG,II1,IDEG,NN,MM)                              MOD01257
  334.       DIMENSION IG(II1,1),IDEG(1)                                       MOD01258
  335.       DO 120 I=1,NN                                                     MOD01259
  336.       IDEG(I)=0                                                         MOD01260
  337.       DO 110 J=1,MM                                                     MOD01261
  338.       IF(IG(I,J)) 120,120,100                                           MOD01262
  339. 100   IDEG(I)=IDEG(I)+1                                                 MOD01263
  340. 110   CONTINUE                                                          MOD01264
  341. 120   CONTINUE                                                          MOD01265
  342.       RETURN                                                            MOD01266
  343.       END                                                               MOD01267
  344.       SUBROUTINE DIST(IDEG,HIST,IP,MEDIAN,MODD,NN,MM)                   MOD01966
  345.       COMMON/UNIT/II11,II22                                             MOD01967
  346.       DIMENSION IDEG(1),HIST(1)                                         MOD01968
  347.       INTEGER HIST,IDEG                                                 MOD01969
  348.       MM1=MM+1                                                          MOD01970
  349.       DO 100 I=1,MM1                                                    MOD01971
  350. 100   HIST(I)=0                                                         MOD01972
  351.       DO 110 I=1,NN                                                     MOD01973
  352.       K=IDEG(I)+1                                                       MOD01974
  353. 110   HIST(K)=HIST(K)+1                                                 MOD01975
  354.       MODD=0                                                            MOD01976
  355.       MAX=0                                                             MOD01977
  356.       DO 120 I=1,MM1                                                    MOD01978
  357.       K=HIST(I)                                                         MOD01979
  358.       IF(K.LE.MAX) GO TO 120                                            MOD01980
  359.       MAX=K                                                             MOD01981
  360.       MODD=I-1                                                          MOD01982
  361. 120   CONTINUE                                                          MOD01983
  362.       IF(IP.EQ.0) GO TO 160                                             MOD01984
  363.       WRITE(II22,130)                                                   MOD01985
  364. 130   FORMAT(26H1NODAL DEGREE HISTOGRAM --//10X,                        MOD01986
  365.      $26HDEGREE  NUMBER  CUM. TOTAL)                                    MOD01987
  366.       ISUM=0                                                            MOD01988
  367.       DO 140 I=1,MM1                                                    MOD01989
  368.       ISUM=ISUM+HIST(I)                                                 MOD01990
  369.       K=I-1                                                             MOD01991
  370. 140   WRITE(II22,150) K,HIST(I),ISUM                                    MOD01992
  371. 150   FORMAT(8X,2I8,I12)                                                MOD01993
  372. 160   DO 170 I=2,MM1                                                    MOD01994
  373. 170   HIST(I)=HIST(I)+HIST(I-1)                                         MOD01995
  374.       NN2=NN/2                                                          MOD01996
  375.                                                                         MOD01997
  376.       DO 180 I=1,MM1                                                    MOD01998
  377.       IF(HIST(I).GT.NN2) GO TO 190                                      MOD01999
  378. 180   CONTINUE                                                          MOD02000
  379. 190   MEDIAN=I-1                                                        MOD02001
  380.       IF(IP.NE.0) WRITE(II22,200) MEDIAN,MODD                           MOD02002
  381. 200   FORMAT(/10X,6HMEDIAN,I6/10X,6H  MODE,I6)                          MOD02003
  382.       RETURN                                                            MOD02004
  383.       END                                                               MOD02005
  384.       SUBROUTINE DIAM(NC,MAXDEG,NL,NODESL,MAXLEV,                       MOD01296
  385.      $IG,II1,IC,IDEG,IDIS,IW,ICC,NN)                                    MOD01297
  386.       DIMENSION IG(II1,1),IDIS(1),IW(1),ICC(1),IC(1),IDEG(1)            MOD01298
  387.       DIMENSION NODESL(1)                                               MOD01299
  388.       NL=0                                                              MOD01300
  389.       MAXLEV=10000                                                      MOD01301
  390.       DO 150 I=1,NN                                                     MOD01302
  391.       IF(NC-IC(I)) 150,100,150                                          MOD01303
  392. 100   IF(MAXDEG-IDEG(I)) 150,110,110                                    MOD01304
  393. 110   MD=IDIST(I,ML,MAXLEV,IG,II1,IC,IDEG,IDIS,IW,ICC,NN)               MOD01305
  394.       IF(MD) 170,170,120                                                MOD01306
  395. 120   IF(ML-MAXLEV)130,140,150                                          MOD01307
  396. 130   MAXLEV=ML                                                         MOD01308
  397.       NL=1                                                              MOD01309
  398.       NODESL(1)=I                                                       MOD01310
  399.       GO TO 150                                                         MOD01311
  400. 140   IF(NL.GE.100) GO TO 150                                           MOD01312
  401.       NL=NL+1                                                           MOD01313
  402.       NODESL(NL)=I                                                      MOD01314
  403. 150   CONTINUE                                                          MOD01315
  404. 160   RETURN                                                            MOD01316
  405. 170   ML=1                                                              MOD01317
  406.       NODESL(1)=I                                                       MOD01318
  407.       MAXLEV=0                                                          MOD01319
  408.       RETURN                                                            MOD01320
  409.       END                                                               MOD01321
  410.       SUBROUTINE FIXIT(LIST,NL)                                         MOD02616
  411.       DIMENSION LIST(1)                                                 MOD02617
  412.       IF(NL.LE.0) RETURN                                                MOD02618
  413.       IF(NL.EQ.1) GO TO 180                                             MOD02619
  414.       NL1=NL-1                                                          MOD02620
  415.       DO 110 I=1,NL1                                                    MOD02621
  416.       IF(LIST(I).EQ.0) GO TO 110                                        MOD02622
  417.       I1=I+1                                                            MOD02623
  418.       DO 100 J=I1,NL                                                    MOD02624
  419.       IF(LIST(I).NE.LIST(J)) GO TO 100                                  MOD02625
  420.       LIST(I)=0                                                         MOD02626
  421.       GO TO 110                                                         MOD02627
  422. 100   CONTINUE                                                          MOD02628
  423. 110   CONTINUE                                                          MOD02629
  424.       DO 140 I=1,NL1                                                    MOD02630
  425.       K=0                                                               MOD02631
  426. 120   IF(LIST(I).NE.0) GO TO 140                                        MOD02632
  427.       K=K+1                                                             MOD02633
  428.       DO 130 J=I,NL1                                                    MOD02634
  429. 130   LIST(J)=LIST(J+1)                                                 MOD02635
  430.       LIST(NL)=0                                                        MOD02636
  431.       IF(K.GE.(NL-I+1)) GO TO 150                                       MOD02637
  432.       GO TO 120                                                         MOD02638
  433. 140   CONTINUE                                                          MOD02639
  434. 150   DO 160 I=1,NL                                                     MOD02640
  435.       J=NL-I+1                                                          MOD02641
  436.       IF(LIST(J).NE.0) GO TO 170                                        MOD02642
  437. 160   CONTINUE                                                          MOD02643
  438. 170   NL=NL-I+1                                                         MOD02644
  439.       RETURN                                                            MOD02645
  440. 180   IF(LIST(1).EQ.0) NL=0                                             MOD02646
  441.       RETURN                                                            MOD02647
  442.       END                                                               MOD02648
  443.       SUBROUTINE RELABL(NS,NODES,IG,II1,IC,IDEG,IDIS,IW,NEW,ICC,ILD,NN) MOD05569
  444.       DIMENSION IG(II1,1),IC(1),IDEG(1),IDIS(1),IW(1),NEW(1),ICC(1)     MOD05570
  445.       DIMENSION ILD(1)                                                  MOD05571
  446.       INTEGER X                                                         MOD05572
  447.       DIMENSION NODES( 1),IAJ(50)                                       MOD05573
  448.       I=NODES(1)                                                        MOD05574
  449.       ICN=IC(I)                                                         MOD05575
  450.       NT=ICC(ICN)-1                                                     MOD05576
  451.       DO 110 I=1,NN                                                     MOD05577
  452.       IF(IC(I)-ICN) 110,100,110                                         MOD05578
  453. 100   IDIS(I)=0                                                         MOD05579
  454. 110   CONTINUE                                                          MOD05580
  455.       DO 120 J=1,NS                                                     MOD05581
  456.       JJ=NODES(J)                                                       MOD05582
  457.       IDIS(JJ)=-1                                                       MOD05583
  458.       JT=J+NT                                                           MOD05584
  459.       NEW(JT)=JJ                                                        MOD05585
  460. 120   ILD(JJ)=JT                                                        MOD05586
  461.       KI=NT                                                             MOD05587
  462.       KO=NS+NT                                                          MOD05588
  463.       LL=KO                                                             MOD05589
  464.       L=1                                                               MOD05590
  465.       J=KO                                                              MOD05591
  466.       NNC=ICC(ICN+1)-1                                                  MOD05592
  467. 130   KI=KI+1                                                           MOD05593
  468.       IF(KI-LL)150,140,150                                              MOD05594
  469. 140   L=L+1                                                             MOD05595
  470.       LL=KO+1                                                           MOD05596
  471. 150   II=NEW(KI)                                                        MOD05597
  472.       N=IDEG(II)                                                        MOD05598
  473.       IF(N)160,280,160                                                  MOD05599
  474. 160   IJ=0                                                              MOD05600
  475.       DO 180 I=1,N                                                      MOD05601
  476.       IA = IG(II,I)                                                     MOD05602
  477.       IF(IDIS(IA)) 180,170,180                                          MOD05603
  478. 170   IJ=IJ+1                                                           MOD05604
  479.       IDIS(IA)=L                                                        MOD05605
  480.       KO=KO+1                                                           MOD05606
  481.       IAJ(IJ)=IA                                                        MOD05607
  482.       IW(IJ)=IDEG(IA)                                                   MOD05608
  483. 180   CONTINUE                                                          MOD05609
  484.       IF(IJ-1)270,190,200                                               MOD05610
  485. 190   J=KO                                                              MOD05611
  486.       IZ=IAJ(1)                                                         MOD05612
  487.       NEW(KO)=IZ                                                        MOD05613
  488.       ILD(IZ)=KO                                                        MOD05614
  489.       GO TO 270                                                         MOD05615
  490. 200   X=0                                                               MOD05616
  491. 210   DO 240 I=2,IJ                                                     MOD05617
  492.       IF(IW(I)-IW(I-1))220,240,240                                      MOD05618
  493. 220   CONTINUE                                                          MOD05619
  494.       X=IW(I)                                                           MOD05620
  495.       IW(I)=IW(I-1)                                                     MOD05621
  496.       IW(I-1)=X                                                         MOD05622
  497. 230   X=IAJ(I)                                                          MOD05623
  498.       IAJ(I)=IAJ(I-1)                                                   MOD05624
  499.       IAJ(I-1)=X                                                        MOD05625
  500. 240   CONTINUE                                                          MOD05626
  501.       IF(X)250,250,200                                                  MOD05627
  502. 250   DO 260 I=1,IJ                                                     MOD05628
  503.       J=J+1                                                             MOD05629
  504.       IZ=IAJ(I)                                                         MOD05630
  505.       NEW(J)=IZ                                                         MOD05631
  506.       ILD(IZ)=J                                                         MOD05632
  507. 260   CONTINUE                                                          MOD05633
  508. 270   IF(KO-NNC)130,280,280                                             MOD05634
  509. 280   CONTINUE                                                          MOD05635
  510.       RETURN                                                            MOD05636
  511.       END                                                               MOD05637
  512.       SUBROUTINE STACK(IDEG,NEW,ILD,IW,NN,KT)                           MOD06842
  513.       INTEGER  IDEG,IW,NEW                                              MOD06843
  514.       INTEGER ILD                                                       MOD06844
  515.       DIMENSION IDEG(1),NEW(1),ILD(1),IW(1)                             MOD06845
  516.       KT=0                                                              MOD06846
  517.       NN1=NN-1                                                          MOD06847
  518.       DO 100 I=1,NN                                                     MOD06848
  519.       IF(IDEG(I).GT.0) GO TO 100                                        MOD06849
  520.       KT=KT+1                                                           MOD06850
  521.       IW(KT)=ILD(I)                                                     MOD06851
  522. 100   CONTINUE                                                          MOD06852
  523.       IF(KT.LE.0) GO TO 140                                             MOD06853
  524.       CALL SORT(IW,KT)                                                  MOD06854
  525.       DO 130 L=1,KT                                                     MOD06855
  526.       I=IW(L)-L+1                                                       MOD06856
  527.       K=NEW(I)                                                          MOD06857
  528.       IF(I.GE.NN) GO TO 120                                             MOD06858
  529.       DO 110 J=I,NN1                                                    MOD06859
  530. 110   NEW(J)=NEW(J+1)                                                   MOD06860
  531. 120   NEW(NN)=K                                                         MOD06861
  532. 130   CONTINUE                                                          MOD06862
  533. 140   DO 150 I=1,NN                                                     MOD06863
  534.       K=NEW(I)                                                          MOD06864
  535. 150   ILD(K)=I                                                          MOD06865
  536.       RETURN                                                            MOD06866
  537.       END                                                               MOD06867
  538.       SUBROUTINE SORT(LIST,NL)                                          MOD06641
  539.       DIMENSION LIST(1)                                                 MOD06642
  540.       IF(NL.LE.1) RETURN                                                MOD06643
  541.       NL1=NL-1                                                          MOD06644
  542.       DO 110 I=1,NL1                                                    MOD06645
  543.       K=NL-I                                                            MOD06646
  544.       KFLAG=0                                                           MOD06647
  545.       DO 100 J=1,K                                                      MOD06648
  546.       IF(LIST(J).LE.LIST(J+1)) GO TO 100                                MOD06649
  547.       KFLAG=1                                                           MOD06650
  548.       L=LIST(J)                                                         MOD06651
  549.       LIST(J)=LIST(J+1)                                                 MOD06652
  550.       LIST(J+1)=L                                                       MOD06653
  551. 100   CONTINUE                                                          MOD06654
  552.       IF(KFLAG.EQ.0) RETURN                                             MOD06655
  553. 110   CONTINUE                                                          MOD06656
  554.       RETURN                                                            MOD06657
  555.       END                                                               MOD06658
  556.       INTEGER FUNCTION SORT2(XC,SIZE,STPT)                              MOD06659
  557.       INTEGER SIZE,STPT                                                 MOD06660
  558.       INTEGER TEMP,XC                                                   MOD06661
  559.       DIMENSION SIZE(1),STPT(1)                                         MOD06662
  560.       SORT2=0                                                           MOD06663
  561.       IF(XC.EQ.0) RETURN                                                MOD06664
  562.       SORT2=1                                                           MOD06665
  563.       IND=XC                                                            MOD06666
  564. 10    ITEST=0                                                           MOD06667
  565.       IND=IND-1                                                         MOD06668
  566.       IF(IND.LT.1) RETURN                                               MOD06669
  567.       DO 17 I=1,IND                                                     MOD06670
  568.       J=I+1                                                             MOD06671
  569.       IF(SIZE(I).GE.SIZE(J)) GO TO 17                                   MOD06672
  570.       ITEST=1                                                           MOD06673
  571.       TEMP=SIZE(I)                                                      MOD06674
  572.       SIZE(I)=SIZE(J)                                                   MOD06675
  573.       SIZE(J)=TEMP                                                      MOD06676
  574.       TEMP=STPT(I)                                                      MOD06677
  575.       STPT(I)=STPT(J)                                                   MOD06678
  576.       STPT(J)=TEMP                                                      MOD06679
  577. 17    CONTINUE                                                          MOD06680
  578.       IF(ITEST.EQ.1) GO TO 10                                           MOD06681
  579.       RETURN                                                            MOD06682
  580.       END                                                               MOD06683
  581.       SUBROUTINE REVERS(NEW,ILD,NN,KT)                                  MOD06068
  582.       DIMENSION NEW(1),ILD(1)                                           MOD06069
  583.       J=(NN-KT)/2                                                       MOD06070
  584.       LL=NN-KT+1                                                        MOD06071
  585.       DO 100 I=1,J                                                      MOD06072
  586.       L=LL-I                                                            MOD06073
  587.       K=NEW(L)                                                          MOD06074
  588.       NEW(L)=NEW(I)                                                     MOD06075
  589. 100   NEW(I)=K                                                          MOD06076
  590.       DO 110 I=1,NN                                                     MOD06077
  591.       K=NEW(I)                                                          MOD06078
  592. 110   ILD(K)=I                                                          MOD06079
  593.       RETURN                                                            MOD06080
  594.       END                                                               MOD06081
  595.       SUBROUTINE SORTDG(STK1,STK2,X1,X2,NDEG)                           MOD06684
  596.       INTEGER NDEG,STK1,STK2                                            MOD06685
  597.       INTEGER X1,X2,TEMP                                                MOD06686
  598.       DIMENSION NDEG(1),STK1(1),STK2(1)                                 MOD06687
  599.       IND=X2                                                            MOD06688
  600. 10    ITEST=0                                                           MOD06689
  601.       IND=IND-1                                                         MOD06690
  602.       IF(IND.LT.1) GO TO 40                                             MOD06691
  603.       DO 30 I=1,IND                                                     MOD06692
  604.       J=I+1                                                             MOD06693
  605.       ISTK2=STK2(I)                                                     MOD06694
  606.       JSTK2=STK2(J)                                                     MOD06695
  607.       IF(NDEG(ISTK2).LE.NDEG(JSTK2)) GO TO 30                           MOD06696
  608.       ITEST=1                                                           MOD06697
  609.       TEMP=STK2(I)                                                      MOD06698
  610.       STK2(I)=STK2(J)                                                   MOD06699
  611.       STK2(J)=TEMP                                                      MOD06700
  612. 30    CONTINUE                                                          MOD06701
  613.       IF(ITEST.EQ.1) GO TO 10                                           MOD06702
  614. 40    DO 50 I=1,X2                                                      MOD06703
  615.       X1=X1+1                                                           MOD06704
  616.       STK1(X1)=STK2(I)                                                  MOD06705
  617. 50    CONTINUE                                                          MOD06706
  618.       RETURN                                                            MOD06707
  619.       END                                                               MOD06708
  620.