Trailing-Edge
-
PDP-10 Archives
-
decuslib20-02
-
decus/20-0026/soln.cdk
There are 2 other files named soln.cdk in the archive. Click here to see a list.
$JOB SOLN[30,30]
$FORTRAN SOLN
C SOLN 10
C ..................................................................SOLN 20
C SOLN 30
C SAMPLE MAIN PROGRAM - SOLN SOLN 40
C SOLN 50
C PURPOSE SOLN 60
C SOLUTION OF A SET OF SIMULTANEOUS EQUATIONS SOLN 70
C SOLN 80
C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED SOLN 90
C SIMQ SOLN 100
C MATIN SOLN 110
C MXOUT SOLN 120
C LOC SOLN 130
C SOLN 140
C METHOD SOLN 150
C A MATRIX OF SIMULTANEOUS EQUATIONS COEFFICIENTS AND A VECTORSOLN 160
C OF CONSTANTS ARE READ FROM THE STANDARD INPUT DEVICE. THE SOLN 170
C SOLUTION IS OBTAINED AND LISTED ON THE STANDARD OUTPUT SOLN 180
C DEVICE. THIS PROCEDURE IS REPEATED FOR OTHER SETS OF SOLN 190
C EQUATIONS UNTIL A BLANK CARD IS ENCOUNTERED. SOLN 200
C SOLN 210
C ..................................................................SOLN 220
C SOLN 230
C MATRIX IS DIMENSIONED FOR 2500 ELEMENTS. THEREFORE, NUMBER OF SOLN 240
C EQUATIONS TO BE SOLVED CANNOT EXCEED 50 UNLESS DIMENSION SOLN 250
C STATEMENT IS CHANGED SOLN 260
C SOLN 270
DIMENSION A(2500),B(50) SOLN 280
C SOLN 290
10 FORMAT(1H1,34HSOLUTION OF SIMULTANEOUS EQUATIONS) SOLN 300
11 FORMAT(1H0,44HDIMENSIONED AREA TOO SMALL FOR INPUT MATRIX ,I4) SOLN 310
12 FORMAT(1H0,20HEXECUTION TERMINATED) SOLN 320
13 FORMAT(1H0,47HROW AND COLUMN DIMENSIONS NOT EQUAL FOR MATRIX ,I4) SOLN 330
14 FORMAT(1H0,42HINCORRECT NUMBER OF DATA CARDS FOR MATRIX ,I4) SOLN 340
15 FORMAT(1H0,18HGO ON TO NEXT CASE) SOLN 350
16 FORMAT(1H0,38HSTRUCTURE CODE IS NOT ZERO FOR MATRIX ,I4) SOLN 360
17 FORMAT(1H1,17HORIGINAL B VECTOR,////) SOLN 370
18 FORMAT(1H1,15HSOLUTION VALUES,////) SOLN 380
19 FORMAT(1H0,18HMATRIX IS SINGULAR) SOLN 390
20 FORMAT(7F10.0) SOLN 400
21 FORMAT(I3,10X,E16.6) SOLN 410
22 FORMAT(1H0,11HEND OF CASE) SOLN 420
C SOLN 430
C ..................................................................SOLN 440
C SOLN 450
WRITE (6,10) SOLN 460
25 CALL MATIN(ICOD,A,2500,N,M,MS,IER) SOLN 470
IF(N) 30,95,30 SOLN 480
30 IF(IER-1) 45,35,40 SOLN 490
35 WRITE(6,11) ICOD SOLN 500
GO TO 90 SOLN 510
40 WRITE(6,14) ICOD SOLN 520
GO TO 95 SOLN 530
45 IF(N-M) 50,55,50 SOLN 540
50 WRITE(6,13) ICOD SOLN 550
GO TO 90 SOLN 560
55 IF(MS) 60,65,60 SOLN 570
60 WRITE(6,16) ICOD SOLN 580
GO TO 90 SOLN 590
65 CALL MXOUT(ICOD,A,N,M,MS,60,120,2) SOLN 600
READ(5,20)(B(I),I=1,N) SOLN 610
WRITE(6,17) SOLN 620
DO 70 I=1,N SOLN 630
70 WRITE(6,21) I,B(I) SOLN 640
CALL SIMQ(A,B,N,KS) SOLN 650
IF(KS-1) 80,75,80 SOLN 660
75 WRITE(6,19) SOLN 670
WRITE(6,15) SOLN 680
GO TO 25 SOLN 690
80 WRITE(6,18) SOLN 700
DO 85 I=1,N SOLN 710
85 WRITE(6,21) I,B(I) SOLN 720
WRITE(6,22) SOLN 730
GO TO 25 SOLN 740
90 READ(5,20)(B(I),I=1,N) SOLN 750
WRITE(6,15) SOLN 760
GO TO 25 SOLN 770
95 WRITE(6,12) SOLN 780
RETURN SOLN 790
END SOLN 800
$FORTRAN MATIN
C MATI 10
C ..................................................................MATI 20
C MATI 30
C SUBROUTINE MATIN MATI 40
C MATI 50
C PURPOSE MATI 60
C READS CONTROL CARD AND MATRIX DATA ELEMENTS FROM LOGICAL MATI 70
C UNIT 5 MATI 80
C MATI 90
C USAGE MATI 100
C CALL MATIN(ICODE,A,ISIZE,IROW,ICOL,IS,IER) MATI 110
C MATI 120
C DESCRIPTION OF PARAMETERS MATI 130
C ICODE-UPON RETURN, ICODE WILL CONTAIN FOUR DIGIT MATI 140
C IDENTIFICATION CODE FROM MATRIX PARAMETER CARD MATI 150
C A -DATA AREA FOR INPUT MATRIX MATI 160
C ISIZE-NUMBER OF ELEMENTS DIMENSIONED BY USER FOR AREA A MATI 170
C IROW -UPON RETURN, IROW WILL CONTAIN ROW DIMENSION FROM MATI 180
C MATRIX PARAMETER CARD MATI 190
C ICOL -UPON RETURN, ICOL WILL CONTAIN COLUMN DIMENSION FROM MATI 200
C MATRIX PARAMETER CARD MATI 210
C IS -UPON RETURN, IS WILL CONTAIN STORAGE MODE CODE FROM MATI 220
C MATRIX PARAMETER CARD WHERE MATI 230
C IS=0 GENERAL MATRIX MATI 240
C IS=1 SYMMETRIC MATRIX MATI 250
C IS=2 DIAGONAL MATRIX MATI 260
C IER -UPON RETURN, IER WILL CONTAIN AN ERROR CODE WHERE MATI 270
C IER=0 NO ERROR MATI 280
C IER=1 ISIZE IS LESS THAN NUMBER OF ELEMENTS IN MATI 290
C INPUT MATRIX MATI 300
C IER=2 INCORRECT NUMBER OF DATA CARDS MATI 310
C MATI 320
C REMARKS MATI 330
C NONE MATI 340
C MATI 350
C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED MATI 360
C LOC MATI 370
C MATI 380
C METHOD MATI 390
C SUBROUTINE ASSUMES THAT INPUT MATRIX CONSISTS OF PARAMETER MATI 400
C CARD FOLLOWED BY DATA CARDS MATI 410
C PARAMETER CARD HAS THE FOLLOWING FORMAT MATI 420
C COL. 1- 2 BLANK MATI 430
C COL. 3- 6 UP TO FOUR DIGIT IDENTIFICATION CODE MATI 440
C COL. 7-10 NUMBER OF ROWS IN MATRIX MATI 450
C COL.11-14 NUMBER OF COLUMNS IN MATRIX MATI 460
C COL.15-16 STORAGE MODE OF MATRIX WHERE MATI 470
C 0 - GENERAL MATRIX MATI 480
C 1 - SYMMETRIC MATRIX MATI 490
C 2 - DIAGONAL MATRIX MATI 500
C DATA CARDS ARE ASSUMED TO HAVE SEVEN FIELDS OF TEN COLUMNS MATI 510
C EACH. DECIMAL POINT MAY APPEAR ANYWHERE IN A FIELD. IF NO MATI 520
C DECIMAL POINT IS INCLUDED, IT IS ASSUMED THAT THE DECIMAL MATI 530
C POINT IS AT THE END OF THE 10 COLUMN FIELD. NUMBER IN EACH MATI 540
C FIELD MAY BE PRECEDED BY BLANKS. DATA ELEMENTS MUST BE MATI 550
C PUNCHED BY ROW. A ROW MAY CONTINUE FROM CARD TO CARD. MATI 560
C HOWEVER EACH NEW ROW MUST START IN THE FIRST FIELD OF THE MATI 570
C NEXT CARD. ONLY THE UPPER TRIANGULAR PORTION OF A SYMMETRICMATI 580
C OR THE DIAGONAL ELEMENTS OF A DIAGONAL MATRIX ARE CONTAINED MATI 590
C ON DATA CARDS. THE FIRST ELEMENT OF EACH NEW ROW WILL BE MATI 600
C THE DIAGONAL ELEMENT FOR A MATRIX WITH SYMMETRIC OR MATI 610
C DIAGONAL STORAGE MODE. COLUMNS 71-80 OF DATA CARDS MAY BE MATI 620
C USED FOR IDENTIFICATION, SEQUENCE NUMBERING, ETC.. MATI 630
C THE LAST DATA CARD FOR ANY MATRIX MUST BE FOLLOWED BY A CARDMATI 640
C WITH A 9 PUNCH IN COLUMN 1. MATI 650
C MATI 660
C.......................................................................MATI 670
C MATI 680
SUBROUTINE MATIN(ICODE, A,ISIZE,IROW,ICOL,IS,IER) MATI 690
DIMENSION A(1) MATI 700
DIMENSION CARD(8) MATI 710
1 FORMAT(7F10.0) MATI 720
2 FORMAT(I6,2I4,I2) MATI 730
C MATI 740
IDC=7 MATI 750
IER=0 MATI 760
READ( 5,2,END=999)ICODE,IROW,ICOL,IS MATI 770
CALL LOC(IROW,ICOL,ICNT,IROW,ICOL,IS) MATI 780
IF(ISIZE-ICNT)6,7,7 MATI 790
6 IER=1 MATI 800
7 IF (ICNT)38,38,8 MATI 810
8 ICOLT=ICOL MATI 820
IROCR=1 MATI 830
C MATI 840
C COMPUTE NUMBER OF CARDS FOR THIS ROW MATI 850
C MATI 860
11 IRCDS=(ICOLT-1)/IDC+1 MATI 870
IF(IS-1)15,15,12 MATI 880
12 IRCDS=1 MATI 890
C MATI 900
C SET UP LOOP FOR NUMBER OF CARDS IN ROW MATI 910
C MATI 920
15 DO 31 K=1,IRCDS MATI 930
READ(5,1)(CARD(I),I=1,IDC) MATI 940
C MATI 950
C SKIP THROUGH DATA CARDS IF INPUT AREA TOO SMALL MATI 960
C MATI 970
IF(IER)16,16,31 MATI 980
16 L=0 MATI 990
C MATI1000
C COMPUTE COLUMN NUMBER FOR FIRST FIELD IN CURRENT CARD MATI1010
C MATI1020
JS=(K-1)*IDC+ICOL-ICOLT+1 MATI1030
JE=JS+IDC-1 MATI1040
IF(IS-1)19,19,17 MATI1050
17 JE=JS MATI1060
C MATI1070
C SET UP LOOP FOR DATA ELEMENTS WITHIN CARD MATI1080
C MATI1090
19 DO 30 J=JS,JE MATI1100
IF(J-ICOL)20,20,31 MATI1110
20 CALL LOC(IROCR ,J,IJ,IROW,ICOL,IS) MATI1120
L=L+1 MATI1130
30 A(IJ)=CARD(L) MATI1140
31 CONTINUE MATI1150
IROCR=IROCR+1 MATI1160
IF(IROW-IROCR) 38,35,35 MATI1170
35 IF(IS-1)37,36,36 MATI1180
36 ICOLT=ICOLT-1 MATI1190
37 GO TO 11 MATI1200
38 READ(5,1,END=999) CARD(1) MATI1210
IF(CARD(1)-9.E9)39,40,39 MATI1220
39 IER=2 MATI1230
40 RETURN MATI1240
999 STOP
END MATI1250
$FORTRAN MXOUT
C MXOU 10
C ..................................................................MXOU 20
C MXOU 30
C SUBROUTINE MXOUT MXOU 40
C MXOU 50
C PURPOSE MXOU 60
C PRODUCES AN OUTPUT LISTING OF ANY SIZED ARRAY ON MXOU 70
C LOGICAL UNIT 6 MXOU 80
C MXOU 90
C USAGE MXOU 100
C CALL MXOUT(ICODE,A,N,M,MS,LINS,IPOS,ISP) MXOU 110
C MXOU 120
C DESCRIPTION OF PARAMETERS MXOU 130
C ICODE- INPUT CODE NUMBER TO BE PRINTED ON EACH OUTPUT PAGE MXOU 140
C A-NAME OF OUTPUT MATRIX MXOU 150
C N-NUMBER OF ROWS IN A MXOU 160
C M-NUMBER OF COLUMNS IN A MXOU 170
C MS-STORAGE MODE OF A WHERE MS= MXOU 180
C 0-GENERAL MXOU 190
C 1-SYMMETRIC MXOU 200
C 2-DIAGONAL MXOU 210
C LINS-NUMBER OF PRINT LINES ON THE PAGE (USUALLY 60) MXOU 220
C IPOS-NUMBER OF PRINT POSITIONS ACROSS THE PAGE (USUALLY 132)MXOU 230
C ISP-LINE SPACING CODE, 1 FOR SINGLE SPACE, 2 FOR DOUBLE MXOU 240
C SPACE MXOU 250
C MXOU 260
C REMARKS MXOU 270
C NONE MXOU 280
C MXOU 290
C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED MXOU 300
C LOC MXOU 310
C MXOU 320
C METHOD MXOU 330
C THIS SUBROUTINE CREATES A STANDARD OUTPUT LISTING OF ANY MXOU 340
C SIZED ARRAY WITH ANY STORAGE MODE. EACH PAGE IS HEADED WITH MXOU 350
C THE CODE NUMBER,DIMENSIONS AND STORAGE MODE OF THE ARRAY. MXOU 360
C EACH COLUMN AND ROW IS ALSO HEADED WITH ITS RESPECTIVE MXOU 370
C NUMBER. MXOU 380
C MXOU 390
C ..................................................................MXOU 400
C MXOU 410
SUBROUTINE MXOUT (ICODE,A,N,M,MS,LINS,IPOS,ISP) MXOU 420
DIMENSION A(1),B(8) MXOU 430
1 FORMAT(1H1,5X, 7HMATRIX ,I5,6X,I3,5H ROWS,6X,I3,8H COLUMNS, MXOU 440
18X,13HSTORAGE MODE ,I1,8X,5HPAGE ,I2,/) MXOU 450
2 FORMAT(12X,8HCOLUMN ,7(3X,I3,10X)) MXOU 460
3 FORMAT(1H ) MXOU 470
4 FORMAT(1H ,7X,4HROW ,I3,7(E16.6)) MXOU 480
5 FORMAT(1H0,7X,4HROW ,I3,7(E16.6)) MXOU 490
C MXOU 500
J=1 MXOU 510
C MXOU 520
C WRITE HEADING MXOU 530
C MXOU 540
NEND=IPOS/16-1 MXOU 550
LEND=(LINS/ISP)-2 MXOU 560
IPAGE=1 MXOU 570
10 LSTRT=1 MXOU 580
20 WRITE(6,1)ICODE,N,M,MS,IPAGE MXOU 590
JNT=J+NEND-1 MXOU 600
IPAGE=IPAGE+1 MXOU 610
31 IF(JNT-M)33,33,32 MXOU 620
32 JNT=M MXOU 630
33 CONTINUE MXOU 640
WRITE(6,2)(JCUR,JCUR=J,JNT) MXOU 650
IF(ISP-1) 35,35,40 MXOU 660
35 WRITE(6,3) MXOU 670
40 LTEND=LSTRT+LEND-1 MXOU 680
DO 80 L=LSTRT,LTEND MXOU 690
C MXOU 700
C FORM OUTPUT ROW LINE MXOU 710
C MXOU 720
DO 55 K=1,NEND MXOU 730
KK=K MXOU 740
JT = J+K-1 MXOU 750
CALL LOC(L,JT,IJNT,N,M,MS) MXOU 760
B(K)=0.0 MXOU 770
IF(IJNT)50,50,45 MXOU 780
45 B(K)=A(IJNT) MXOU 790
50 CONTINUE MXOU 800
C MXOU 810
C CHECK IF LAST COLUMN. IF YES GO TO 60 MXOU 820
C MXOU 830
IF(JT-M) 55,60,60 MXOU 840
55 CONTINUE MXOU 850
C MXOU 860
C END OF LINE, NOW WRITE MXOU 870
C MXOU 880
60 IF(ISP-1)65,65,70 MXOU 890
65 WRITE(6,4)L,(B(JW),JW=1,KK) MXOU 900
GO TO 75 MXOU 910
70 WRITE(6,5)L,(B(JW),JW=1,KK) MXOU 920
C MXOU 930
C IF END OF ROWS,GO CHECK COLUMNS MXOU 940
C MXOU 950
75 IF(N-L)85,85,80 MXOU 960
80 CONTINUE MXOU 970
C MXOU 980
C END OF PAGE, NOW CHECK FOR MORE OUTPUT MXOU 990
C MXOU1000
LSTRT=LSTRT+LEND MXOU1010
GO TO 20 MXOU1020
C MXOU1030
C END OF COLUMNS, THEN RETURN MXOU1040
C MXOU1050
85 IF(JT-M)90,95,95 MXOU1060
90 J=JT+1 MXOU1070
GO TO 10 MXOU1080
95 RETURN MXOU1090
END MXOU1100
$DECK SOL.CDR
000100100010 20
1.0000000 0.6644085 0.7601008 0.7507505 0.4299425 0.0033291 0.7284786 30
0.6751766 0.8635910 0.7446845 40
0.6644085 1.0000000 0.6271802 0.6194650 0.3547574 0.0027470 0.6010878 50
0.5571068 0.7125728 0.6144597 60
0.7601008 0.6271802 1.0000000 0.7086843 0.4058519 0.0031426 0.6876602 70
0.6373449 0.8152021 0.7029582 80
0.7507505 0.6194650 0.7086843 1.0000000 0.4008593 0.0031039 0.6792011 90
0.6295047 0.8051740 0.6943108 100
0.4299425 0.3547574 0.4058519 0.4008593 1.0000000 0.0017776 0.3889673 110
0.3605070 0.4611099 0.3976204 120
0.0033291 0.0027470 0.0031426 0.0031039 0.0017776 1.0000000 0.0030119 130
0.0027915 0.0035705 0.0030789 140
0.7284786 0.6010878 0.6876602 0.6792011 0.3889673 0.0030119 1.0000000 150
0.6108296 0.7812874 0.6737132 160
0.6751766 0.5571068 0.6373449 0.6295047 0.3605070 0.0027915 0.6108296 170
1.0000000 0.7241215 0.6244183 180
0.8635910 0.7125728 0.8152021 0.8051740 0.4611099 0.0035705 0.7812874 190
0.7241215 1.0000000 0.7986682 200
0.7446845 0.6144597 0.7029582 0.6943108 0.3976204 0.0030789 0.6737132 210
0.6244183 0.7986682 1.0000000 220
9 230
110. -120. 10. 145. -50. 44.2 -14. 240
38.5 22. 1650. 250
$EOD
.ASSIGN CDR 5
.ASSIGN LPT 6
.SET CDR SOL
.EXECUTE/REL SOLN,MATIN,MXOUT,WES:SSP/LIB
%FIN::
.DELETE SOL.CDR