1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-03-02 17:44:40 +00:00
Files
Paul Kimpel 2c72f7fd1d Commit CUBE Library version 13 of February 1972.
1. Commit library tape images, directories, and extracted text files.
2. Commit additional utilities under Unisys-Emode-Tools.
2018-05-27 11:24:23 -07:00

1201 lines
95 KiB
Plaintext

BEGIN 100
COMMENT PIPE STRESS ANALYSIS. 200
VICTOR BERMAN 300
(PROFESSIONAL SERVICES, BURROUGHS CORP. 400
CARD SEQUENCE CODE STARTS PSAN-0001 500
FIRST RELEASE DATE : 600
THE PROGRAM HANDLES PIPING SYSTEMS MADE OF ANY MATERIAL. 700
THE PHYSICAL PROPERTIES OF THE FOLLOWING MATERIALS HAVE 800
BEEN STORED IN THE COMPUTER MEMORY 900
LCS = LOW CARBON STEEL (LESS 3% CARBON) 1000
HCS = HIGH CARBON STEEL (MORE 3% CARBON) 1100
LCM = LOW-CHROME MOLYBDENUM STEEL (LESS 3% CHROME) 1200
ICM = INTEMEDIATE MOLY-CHROME STEEL (5 CR MO THRU 9 CR MO) 1300
AUS = AUSTENITIC STAINLESS STEEL (12 CR, 17 CR AND 27 CR) 1400
MON = MONEL (67% NI, 30% CU) 1500
KMO = K-MONEL (66% NI, 29% CU.AL.) 1600
ALU = ALUMINUM 1700
GCI = GRAY CAST IRON 1800
BRO = BRONZE 1900
WIR = WROUGHT IRON 2000
KON = COPPER NICKEL (70% CU, 30% NI) 2100
FOR ANY OTHER MATERIAL, ITS MODULUS OF ELASTICITY AND 2200
THERMAL COEFFICIENT OF EXPANSION MUST BE GIVEN 2300
A NUMBER OF FITTINGS CAN BE USED TO CONNECT PIPES, THE 2400
KIND OF FITTING MUST BE SPECIFIED BY THE PROPER IDENTIFIER 2500
MIT = MITER BEND (CLOSELY OR WIDELY SPACED) 2600
WTE = WELDING TEE 2700
RTE = REINFORCED FABRICATED TEE, WITH PAD OR SADDLE 2800
TEE = UNREINFORCED FABRICATED TEE 2900
BWJ = BUTT-WELDED JOINT, REDUCER, OR WELDING NECK 3000
DWF = DOUBLE WELDED SLIP-ON FLANGE 3100
FWJ = FILLET WELDED JOINT (SINGLE WELDED), SOCKER 3200
WELDED FLANGE, OR SINGLE WELDED SLIP-ON FLANGE 3300
LJF = LAP JOINT FLANGE 3400
SPJ = SCREWED PIPE JOINT OR SCREWED FLANGE ; 3500
BOOLEAN TMP, SNPR, SKB ; 3600
REAL A, AAX, AAY, AAZ, ALPH, AL1A, AL1B, AL1C, AL1D, AL1JA, 3700
AL1PR, ANLR, B, C, CA, CAA, CAB, CALPH, CB, CBB, CH, CON, 3800
CONEX, COSB, COSPH, COSSQB, CQ, CU, CU0, 3900
CV, CV0, DIH, DIRR, DIST, DIV1,HYP, K, KTA, KTE, KTE1, 4000
KTX, KTY, KTZ, L, LLL, ME, P, PHALR, PHIR, PHIRA, PI, Q, 4100
QX, RAD, RM, S, SA, SAAC2V, SABC2Q, SB, SBBC2U, SINB, 4200
SINPH, SINSQB, SPA, SPAA, SPAB, SPB, SPBB, SX, SXL, TAH, 4300
TAV, TB, TC, TE, U, UP0, UP00VP00, UX, UY, UZ, U0, U00V00, 4400
V, VP0, VX, VY, VZ, V0, W, WX, WY, WZ, XA, XC, YA, YC, ZA, 4500
KH, ZETAR, STRSMX, BET, 4600
MB, MPB, MTOR, MBM, MPBM, MTORM, MBEN, MBENM, KTT, 4700
SINM, SINN, SINC, COSN, COSM, COSC, AL1MR, STOR, 4800
STORM, SBEN, SEQ, SBENM, SEQM, 4900
ZC, DB ; 5000
INTEGER BP, BPP, CNS, G, GG, GGG, GH, H, HH, HHH, I, II, III, J, 5100
NL, PT, 5200
JJ, JJJ, KK, KKK, MPR, NAN, NB, NBAS, NM, NN, NNN, NPR,LP; 5300
ALPHA LCS, HCS, LCM, ICM, AUS, SCS, MON, KMO, ALU, GCI, BRO, 5400
BRS, WIR, KON, ANK, BRP, SKW, MIT, WTE, RTE, TEE, BWJ, 5500
DWF, FWJ, LJF, SPJ, MI1, MI2, MI3, MI4, MI5, MI6, MI7, 5600
FM, MT, FMMT, OPTION, LAST, LOP, PRK, RIG ; 5700
FILE IN FILE1(1,10) ; 5800
FILE OUT FILE2 1(1,15) ; 5900
REAL ARRAY AL1R, ARMX, ARMY, ARMZ, CHKX, CHKY, CHKZ[0:150], 6000
CNC, TEMP[0:60, 0:120], CNCT[0:120, 0:60], 6100
D[0:6, 0:6, 0:60], DE[0:6, 0:60], DEL[0:120], 6200
DI, EC, EPS, HAPHR, IN1, R[0:150], 6300
RFX, RFY, RFZ[0:60], MATE[0:280], BMAT, TR[0:6, 0:6], 6400
T, TH, X, Y, Z[0:150], MF, TEMPR[0:460] ; 6500
ALPHA ARRAY TYPE, FIT, MAT[0:150] ; 6600
BOOLEAN ARRAY PRN[0:60] ; 6700
ALPHA ARRAY IDENT[0:12] ; 6800
INTEGER ARRAY BASBR, BOL[0:60], BRA, PL, PREV[0:150], 6900
TRAV[0:20, 0:60], TRAVT[0:60, 0:20] ; 7000
FORMAT INA(A4, X1, I5), 7100
INB(I4, X3, 6F8.3, I5, 2F6.2, 2(X1, A3)), 7200
INC(I4, X3, 6F8.3, I5, 3(X1, A3)), 7300
INC1(X9, 6F8.5), 7400
INE1(16I5), 7500
IDENF(13A6), 7600
TI("MEMBER", X2, "ORIGIN", X7, "X", X12, "Y", X12, "Z", 7700
X6, "O.D.", X7, "THK", X7, "R", X7, "TEMP", X7, 7800
"METAL", X5, "TYPE", X3, "FITTING"////), 7900
TIA(X87, "MOD ELAS EXP COEF"////), 8000
FMAT("EC = ", F6.2, "|10 @ 6 P.S.I. EPS = ", F6.2, 8100
"|10 @ -6 IN. / IN."///), 8200
FOR3(I4, X4, I4, 3F13.3, 3F9.3, I9, X3, 3(X6, A3)///), 8300
FOR4(I4, X4, I4, 3F13.3, 3F9.3, I9, 2F7.2, 8400
2(X5, A3)///), 8500
FOR5("COORDINATES X = ", F7.3, " Y = ", F7.3, 8600
" Z = ", F7.3///), 8700
SNGLR(X10, "SINGULAR MATRIX"), 8800
ERIN(X10, "INPUT DATA ERROR"), 8900
FOR9("CONSTRAIN", I7, 5I11/) , 9000
FOR11(I4, X1, 6I11, 3I14/), 9100
FOR12("MIDPOINT", X63, 3I14/), 9200
SPAC(////), 9300
TI10(X35, "FORCES, MOMENTS AND STRESSES"//// 9400
X17, "FORCES IN POUNDS", X15, "MOMENTS IN ", 9500
"FOOT-POUNDS", X16, "STRESSES IN P.S.I."/// "POINT", X9, 9600
"FX", X9, "FY",X9, "FZ", X9, "MX", X9, "MY", X9, "MZ", X6, 9700
" BENDING TORSIONAL EQUIVALENT"///), 9800
TI12(X35, "ANCHOR AND CONSTRAINT REACTIONS"//// X25, 9900
"FORCES IN POUNDS", X25, "MOMENTS IN ", 10000
"FOOT-POUNDS"///"ANCHOR", X11, "FX", X9, "FY", X9, "FZ", 10100
X9, "F", X9, "MX", X9, "MY", X9, "MZ", X9, "M" ///), 10200
FOR14(I4, X4, 8I11/), 10300
FOR16(X5, "FURNISH PROPERTIES OF PIPE NO.", I4), 10400
FOR17(X35, "THAT WAS THE LAST PROBLEM"), 10500
FOR18(X5, "ERROR IN SPECIFYING MATERIAL OF PIPE NO.", I4), 10600
FOR19(X35, "THE MAXIMUM STRESS IS", I7, 10700
" P.S.I. AT POINT", I4), 10800
FOR20(X10, "LOOP AT MEMBER NO." I4, "CANNOT BE DEFINED"), 10900
TI9(X30, "FREE EXPANSIONS OF INTERCONNECTED BRANCHES") ; 11000
LIST DATAA(OPTION, TC), 11100
DATAB(PREV[J], X[J], Y[J], Z[J], DI[J], T[J], R[J], TH[J], 11200
EC[J], EPS[J], TYPE[J], FIT[J]), 11300
DATAC(PREV[J], X[J], Y[J], Z[J], DI[J], T[J], R[J], TH[J], 11400
MAT[J], TYPE[J], FIT[J]), 11500
DATAC1(FOR G ~ 1 STEP 1 UNTIL 6 DO [DE[G,I]]), 11600
IDEN(FOR G ~ 0 STEP 1 UNTIL 12 DO [IDENT[G]]), 11700
OUTB(J, PREV[J], X[J], Y[J], Z[J], DI[J], T[J], R[J], 11800
TH[J], EC[J], EPS[J], TYPE[J], FIT[J]), 11900
OUTC(J, PREV[J], X[J], Y[J], Z[J], DI[J], T[J], 12000
R[J], TH[J], MAT[J], TYPE[J], FIT[J]), 12100
OUT9(FOR KK ~ 14 STEP 1 UNTIL 16 DO [TEMPR[KK]], 12200
FOR KK ~ 11 STEP 1 UNTIL 13 DO [TEMPR[KK]]), 12300
OUT11(HH, FOR KK ~ 14 STEP 1 UNTIL 16 DO [TEMPR[KK]], 12400
FOR KK ~ 11 STEP 1 UNTIL 13 DO [TEMPR[KK]], SBEN, 12500
STOR, SEQ), 12600
OUT12(SBENM, STORM, SEQM), 12700
OUT14(TEMPR[50+I], FOR G ~ 1 STEP 1 UNTIL 8 DO 12800
[CNCT[I,G]]), 12900
OUTMAT(EC[J], EPS[J]), 13000
OUT19(STRSMX, PT) ; 13100
PROCEDURE JE(A, N, Z) ; 13200
VALUE N ; 13300
ARRAY A[0, 0], Z[0] ; 13400
INTEGER N ; 13500
BEGIN 13600
REAL Z1, D ; 13700
INTEGER I, J, K ; 13800
IF A[1,1] = 0 THEN 13900
BEGIN 14000
FOR I ~ 1 STEP 1 WHILE A[I,1] = 0 DO 14100
IF I > N THEN WRITE(FILE2, SNGLR) ; 14200
FOR K ~ N + 1 STEP -1 UNTIL 1 DO 14300
BEGIN 14400
D ~ A[1,K] ; A[1,K] ~ A[I,K] ; A[I,K] ~ D 14500
END 14600
END ; 14700
FOR K ~ N + 1 STEP -1 UNTIL 1 DO 14800
BEGIN 14900
FOR I ~ 1 STEP 1 UNTIL N DO Z[I] ~ A[I, 1] ; Z1 ~ Z[1] ; 15000
FOR J ~ 2 STEP 1 UNTIL K DO 15100
BEGIN 15200
D ~ A[1, J] / Z1 ; 15300
FOR I ~ 2 STEP 1 UNTIL N DO 15400
A[I - 1, J - 1] ~ A[I, J] - Z[I] | D ; 15500
A[N, J - 1] ~ D 15600
END 15700
END 15800
END JE ; 15900
REAL PROCEDURE ARCSIN(X1) ; 16000
VALUE X1 ; REAL X1 ; 16100
BEGIN 16200
REAL PIC,MC,X,T,Z ; 16300
LABEL L1 ; 16400
IF ABS(X1) < 1@-6 THEN 16500
BEGIN 16600
ARCSIN ~ X1 ; 16700
GO TO L1 16800
END ; 16900
PIC ~ 0 ; 17000
MC ~ 1 ; 17100
Z ~ SIGN(X1) ; 17200
X ~ ABS(X1) ; 17300
IF X > 0.92387953231 THEN 17400
BEGIN 17500
X ~ SQRT((1-X)/2) ; 17600
PIC ~ 1.57079632679 ; 17700
MC ~ -2 17800
END 17900
ELSE 18000
BEGIN 18100
IF X > 0.70710678119 THEN 18200
BEGIN 18300
X ~2|(X*2) - 1 ; 18400
PIC ~ 0.785398163397 ; 18500
MC ~ 0.5 18600
END ; 18700
END ; 18800
T ~ X*2 ; 18900
ARCSIN ~ ((0.364541120348 - 4.22649415434/ 19000
(T - 8.66648256098 - 6.1228848016/ 19100
(T - 3.2316720226 - 0.312873861283/ 19200
(T - 1.63902626905 - 0.0268477822258/ 19300
(T - 1.16535753774))))) | MC | X + PIC) | Z ; 19400
L1: END ; 19500
REAL PROCEDURE ARCCOS(X1) ; 19600
VALUE X1 ; REAL X1 ; 19700
BEGIN 19800
REAL PIC,MC,X,T,Z,PI2 ; 19900
LABEL L1 ; 20000
IF ABS(X1) < 1@-6 THEN 20100
BEGIN 20200
ARCCOS ~ X1 + 1.57079632679 ; 20300
GO TO L1 20400
END ; 20500
PIC ~ 0 ; 20600
MC ~ 1 ; 20700
Z ~ SIGN(X1) ; 20800
X ~ ABS(X1) ; 20900
IF X > 0.92387953231 THEN 21000
BEGIN 21100
X ~ SQRT((1-X)/2) ; 21200
PIC ~ 1.57079632679 ; 21300
MC ~ -2 21400
END 21500
ELSE 21600
BEGIN 21700
IF X > 0.70710678119 THEN 21800
BEGIN 21900
X ~2|(X*2) - 1 ; 22000
PIC ~ 0.785398163397 ; 22100
MC ~ 0.5 ; 22200
END ; 22300
END ; 22400
T ~ X*2 ; 22500
ARCCOS ~ ((0.364541120348 - 4.22649415434/ 22600
(T - 8.66648256098 - 6.1228848016/ 22700
(T - 3.2316720226 - 0.312873861283/ 22800
(T - 1.63902626905 - 0.0268477822258/ 22900
(T - 1.16535753774))))) | MC | X + PIC) | Z 23000
- 1.57079632679 ; 23100
L1: END ; 23200
PROCEDURE FE ; 23300
COMMENT THE EXPANSIONS THAT WOULD TAKE PLACE IF EACH BRANCH WOULD 23400
BE FREE TO EXPAND ARE CALCULATED. 23500
THE PRODUCT OF INERTIA, EI, HAS BEEN ASSUMED TO BE 1@8, 23600
ON THE OTHER HAND, THE DATA OF THERMAL EXPANSION IS 1@6 23700
TIMES THE ACTUAL VALUE. THEREFORE, CON = (1@8 / 1@6) / 144 23800
OR 0.6944 ; 23900
BEGIN 24000
REAL CONRO ; 24100
CON ~ 0.6944444 ; 24200
CONEX ~ 694444.44 ; 24300
CONRO ~ CONEX ; 24400
FOR G ~ 1 STEP 1 UNTIL 3 DO 24500
FOR I ~ 1 STEP 1 UNTIL NB DO DE[G,I] ~ DE[G,I] | CONRO ; 24600
FOR G ~ 4 STEP 1 UNTIL 6 DO 24700
FOR I ~ 1 STEP 1 UNTIL NB DO DE[G,I] ~ DE[G,I] | CONEX ; 24800
FOR J ~ 1 STEP 1 UNTIL NM DO 24900
BEGIN 25000
I ~ ABS (BRA[J]) ; 25100
KTE ~ (TH[J] - TC) | EPS[J] | CON ; 25200
DE[4,I] ~ DE[4,I] + X[J] | KTE ; 25300
DE[5,I] ~ DE[5,I] + Y[J] | KTE ; 25400
DE[6,I] ~ DE[6,I] + Z[J] | KTE 25500
END ; 25600
J ~ 6 | NBAS ; 25700
FOR I ~ 1 STEP 1 UNTIL J DO DEL[I] ~ 0 ; 25800
FOR II ~ 1 STEP 1 UNTIL NBAS DO 25900
FOR I ~ 1 STEP 1 UNTIL NB DO 26000
IF TRAV[II,I] ! 0 THEN 26100
BEGIN 26200
HH ~ 6 | II - 6 ; 26300
FOR G ~ 1 STEP 1 UNTIL 6 DO 26400
DEL[HH+G] ~ DEL[HH+G] + DE[G,I] 26500
END ; 26600
END FE ; 26700
PROCEDURE TRIGF ; 26800
BEGIN 26900
IF PL[J] = 1 OR PL[J] = 4 THEN 27000
BEGIN 27100
HYP ~ SQRT (AAY * 2 + AAZ * 2) ; 27200
ANLR ~ ARCSIN (AAZ / HYP) ; 27300
IF AAY < 0 THEN ANLR ~ PI - ANLR 27400
END 27500
ELSE IF PL[J] = 2 THEN 27600
BEGIN 27700
HYP ~ SQRT (AAX * 2 + AAZ * 2) ; 27800
ANLR ~ ARCSIN (AAX / HYP) ; 27900
IF AAZ < 0 THEN ANLR ~ PI - ANLR 28000
END 28100
ELSE IF PL[J] = 3 THEN 28200
BEGIN 28300
HYP ~ SQRT (AAX * 2 + AAY * 2) ; 28400
ANLR ~ ARCSIN (AAY / HYP) ; 28500
IF AAX < 0 THEN ANLR ~ PI - ANLR 28600
END ; 28700
END TRIGF ; 28800
PROCEDURE ANGLE ; 28900
BEGIN 29000
IF R[J] ! 0 THEN 29100
BEGIN 29200
AAX ~ X[J-1] ; AAY ~ Y[J-1] ; 29300
AAZ ~ Z[J-1] ; 29400
TRIGF ; 29500
AL1R[J-1] ~ ANLR ; 29600
AAX ~ X[J+1] ; AAY ~ Y[J+1] ; 29700
AAZ ~ Z[J+1] ; 29800
TRIGF ; 29900
AL1R[J+1] ~ ANLR 30000
END 30100
ELSE 30200
BEGIN 30300
AAX ~ X[J] ; AAY ~ Y[J] ; AAZ ~ Z[J] ; 30400
TRIGF ; 30500
AL1R[J] ~ ANLR 30600
END 30700
END ANGLE ; 30800
PROCEDURE SKEW ; 30900
BEGIN 31000
LABEL E250 ; 31100
COMMENT A ROTATION OF COORDINATE AXES MUST BE PERFORMED SO THAT 31200
THE BRANCH SHOULD RUN ALONG THE Z AXIS ; 31300
FOR G ~ 1 STEP 1 UNTIL 6 DO 31400
FOR H ~ 1 STEP 1 UNTIL 6 DO TR[G,H] ~ 0 ; 31500
IF SKB THEN GO TO E250 ; 31600
LLL ~ SQRT (X[JJJ] * 2 + Y[JJJ] * 2 + Z[JJJ] * 2) ; 31700
WX ~ X[JJJ] / LLL ; WY ~ Y[JJJ] / LLL ; 31800
WZ ~ Z[JJJ] / LLL ; 31900
VX ~ 1 / SQRT ((WX / WZ) * 2 + 1) ; 32000
VY ~ 0 ; VZ ~ -VX | WX / WZ ; 32100
UX ~ -VZ | WY / (VX * 2 + VZ * 2) ; UY ~ WX / VZ ; 32200
UZ ~ -VX | UX / VZ ; 32300
E250 : TEMP[1,1] ~ UX ; TEMP[1,2] ~ UY ; TEMP[1,3] ~ UZ ; 32400
TEMP[2,1] ~ VX ; TEMP[2,2] ~ VY ; TEMP[2,3] ~ VZ ; 32500
TEMP[3,1] ~ WX ; TEMP[3,2] ~ WY ; TEMP[3,3] ~ WZ ; 32600
FOR G ~ 1, 2, 3 DO FOR H ~ 1, 2, 3 DO 32700
TR[G+3,H+3] ~ TR[G,H] ~ TEMP[G,H] 32800
END SKEW ; 32900
PROCEDURE SKEB ; 33000
BEGIN 33100
LABEL EA, EB ; 33200
TEMPR[1] ~ X[J-1] ; TEMPR[2] ~ Y[J-1] ; 33300
TEMPR[3] ~ Z[J-1] ; TEMPR[4] ~ X[J+1] ; 33400
TEMPR[5] ~ Y[J+1] ; TEMPR[6] ~ Z[J+1] ; 33500
KTE ~ 0 ; 33600
FOR G ~ 1, 2, 3 DO KTE ~ TEMPR[G] * 2 + KTE ; 33700
KTE ~ SQRT (KTE) ; 33800
FOR G ~ 1, 2, 3 DO TEMPR[G] ~ TEMPR[G] / KTE ; KTE ~ 0; 33900
FOR G ~ 4, 5, 6 DO KTE ~ TEMPR[G] * 2 + KTE ; 34000
KTE ~ SQRT (KTE) ; 34100
FOR G ~ 4, 5, 6 DO TEMPR[G] ~ TEMPR[G] / KTE ; TMP ~ TRUE; 34200
FOR G ~ 1 STEP 1 UNTIL 6 DO IF TEMPR[G] = 0 THEN 34300
BEGIN 34400
GG ~ (G + 1) MOD 3 ; IF GG = 0 THEN GG ~ 3 ; 34500
GGG ~ (G + 2 ) MOD 3 ; IF GGG =0 THEN GGG ~ 3 ; 34600
TMP ~ FALSE ; GO TO EA 34700
END ; 34800
IF TMP THEN GO TO EB ; 34900
EA : IF TEMPR[GG] = 0 THEN 35000
BEGIN 35100
TEMPR[20+GG] ~ 10.0 ; TEMPR[20+GGG] ~ 0 35200
END 35300
ELSE IF TEMPR[GGG] = 0 THEN 35400
BEGIN 35500
TEMPR[20+GGG] ~ 10.0 ; TEMPR[20+GG] ~ 0 35600
END 35700
ELSE 35800
BEGIN 35900
TEMPR[20+GG] ~ 10.0 ; 36000
TEMPR[20+GGG] ~ -10.0 | TEMPR[GGG]/ TEMPR[GG] 36100
END ; 36200
IF G > 3 THEN H ~ -3 ELSE H ~ 3 ; KTE ~ 0 ; 36300
TEMPR[20+G] ~ -(TEMPR[GG+H] | TEMPR[20+GG] + 36400
TEMPR[GGG+H] | TEMPR[20+GGG]) / TEMPR[G+H] ; 36500
FOR G ~ 21, 22, 23 DO KTE ~ TEMPR[G] * 2 + KTE ; 36600
KTE ~ SQRT (KTE) ; 36700
FOR G ~ 21, 22, 23 DO TEMPR[G] ~ TEMPR[G] / KTE ; 36800
UX ~ TEMPR[21]; UY ~ TEMPR[22] ; UZ ~ TEMPR[23] ; 36900
EB : WX ~ TEMPR[4] ; WY ~ TEMPR[5] ; WZ ~ TEMPR[6] ; 37000
IF TMP THEN 37100
BEGIN 37200
KTX ~ TEMPR[1] ; KTY ~ TEMPR[2] ; KTZ ~ TEMPR[3] ; 37300
KTE ~ WY | KTZ - WZ | KTY ; 37400
UY ~ 10 | (-WX | KTZ + WZ | KTX ) / KTE ; 37500
UZ ~10 | (-WY | KTX + WX | KTY) / KTE ; 37600
LLL ~ SQRT (100.0 + UY * 2 + UZ * 2) ; 37700
UX ~10 / LLL ; UY ~ UY / LLL ; UZ ~ UZ / LLL 37800
END ; 37900
VX ~ WY | UZ - WZ | UY ; 38000
VY ~ WZ | UX - WX | UZ ; 38100
VZ ~ WX | UY - WY | UX ; 38200
SKB ~ TRUE ; SKEW ; SKB ~ FALSE ; 38300
END SKEB ; 38400
PROCEDURE TRANSF ; 38500
BEGIN 38600
TEMPR[1] ~ X[J+G] ; TEMPR[2] ~ Y[J+G] ; 38700
TEMPR[3] ~ Z[J+G] ; 38800
FOR GG ~ 1, 2, 3 DO 38900
BEGIN 39000
KTE ~ 0 ; 39100
FOR HH ~ 1, 2, 3 DO KTE ~ TR[GG,HH] | TEMPR[HH] + KTE ; 39200
IF ABS (KTE) < 0.0001 THEN KTE ~ 0 ; TEMPR[5+GG] ~ KTE 39300
END ; 39400
X[J+G]~ TEMPR[6] ; Y[J+G] ~ TEMPR[7] ; 39500
Z[J+G] ~ TEMPR[8] ; 39600
END TRANSF ; 39700
PROCEDURE MITCL ; 39800
BEGIN 39900
COMMENT THIS PROCEDURE CALCULATES THE FLEXIBILITY AND STRESS 40000
INTENSIFICATION FACTOR OF MITER BENDS. ; 40100
G ~ FIT[J].[42:6] ; ZETAR ~ AL1PR / (2 | G) ; 40200
KTE ~ SIN (ZETAR) / COS (ZETAR) ; 40300
S ~ 2 | R[J] | KTE ; 40400
IF S < (RM | (1 + KTE)) THEN 40500
KH ~ T[J] | S / (KTE | 2 | RM * 2) 40600
ELSE KH ~ (1 + 1 / KTE) | T[J] / (2 | RM) ; 40700
K ~ 1.52 / (KH * 0.8333) 40800
END MITCL ; 40900
PROCEDURE SHC ; 41000
BEGIN 41100
LABEL E1, E2, E3, E100, E10, E4, E5, E6, E7, E11, E12, E13, E14, 41200
E20, 41300
E200, E21, E22, E23, E111 ; 41400
SWITCH SWCH1 ~ E1, E2, E3, E1 ; 41500
SWITCH SWCH2 ~ E4, E5, E6, E4 ; 41600
SWITCH SWCH3 ~ E11, E12, E13, E11 ; 41700
SWITCH SWCH4 ~ E21, E22, E23, E21 ; 41800
PI ~ 3.1415927 ; 41900
RAD ~ 57.295779 ; 42000
FOR J ~ 1 STEP 1 UNTIL NM DO 42100
BEGIN 42200
IF TYPE[J] = "RIG" THEN GO TO E111 ; 42300
I ~ JJ ~ ABS (BRA[J]) ; 42400
XA ~ RFX[I] ; YA ~ RFY[I] ; ZA ~ RFZ[I] ; 42500
COMMENT THE PLANE IN WHICH EACH MEMBER LIES IS DETERMINED ; 42600
IF X[J] = 0 THEN PL[J] ~ 1 42700
ELSE IF Y[J] = 0 THEN PL[J] ~ 2 42800
ELSE IF Z[J] = 0 THEN PL[J] ~ 3 42900
ELSE 43000
BEGIN 43100
PL[J] ~ 4 ; IF BOL[I] = 0 THEN BOL[I] ~ J ; 43200
IF R[J] = 0 THEN 43300
BEGIN 43400
JJJ ~ J ; SKEW ; G ~ 0 ; TRANSF 43500
END 43600
ELSE 43700
BEGIN 43800
SKEB ; 43900
FOR G ~ -1, 0, 1 DO TRANSF 44000
END 44100
END ; 44200
IF TYPE[J] = "PRK" THEN 44300
BEGIN 44400
PRN[I] ~ TRUE ; D[2,2,I] ~ ENTIER (R[J]) ; 44500
IF T[J] ! 0 THEN D[1,1,I] ~ 694.4444 / T[J] ; 44600
GO TO E111 44700
END ; 44800
IN1[J]~ (DI[J] * 4 - (DI[J] - ABS (2 | T[J])) * 4) | 44900
PI / 64 ; 45000
Q ~ 100 / (EC[J] | IN1[J]) ; 45100
RM ~ (DI[J] - ABS (T[J])) | 0.5 ; 45200
IF R[J] ! 0 THEN GO TO E10 ; 45300
COMMENT FLEXIBILITY COEFFIECIENTS OF STRAIGHT MEMBERS ; 45400
K ~ 1.0 ; 45500
ANGLE ; 45600
COMMENT LOCATING THE MIDPOINT OF THE STRAIGHT MEMBERS ; 45700
G ~ PREV[J] ; IF G < 1 THEN G ~ J - 1 ; 45800
XC ~ CHKX[G] + 0.5 | X[J] ; 45900
YC ~ CHKY[G] + 0.5 | Y[J] ; 46000
ZC ~ CHKZ[G] + 0.5 | Z[J] ; JJ ~ J ; 46100
COMMENT IF ANY BRANCH IS SKEWED A ROTATION OF COORDINATES IS 46200
PERFORMED TO PLACE THE BRANCH IN THE Z PLANE ; 46300
GO TO SWCH1[PL[J]] ; 46400
E1 : A ~ YC - YA ; B ~ ZC - ZA ; C ~ XC - XA ; 46500
L ~ SQRT (Y[J] * 2 + Z[J] * 2) ; 46600
GO TO E100 ; 46700
E2 : A ~ ZC - ZA ; B ~ XC - XA ; C ~ YC - YA ; 46800
L ~ SQRT (X[J] * 2 + Z[J] * 2) ; 46900
GO TO E100 ; 47000
E3 : A ~ XC - XA ; B ~ YC - YA ; C ~ ZC - ZA ; 47100
L ~ SQRT (X[J] * 2 + Y[J] * 2) ; 47200
COMMENT PARAMETERS NEEDED TO OBTAIN THE SHAPE COEFFICIENTS OF 47300
STRAIGHT MEMBERS ; 47400
E100 : SX ~ K | Q | L ; SA ~ A | SX ; 47500
SB ~ B | SX ; 47600
SINB ~ SIN (AL1R[J]) ; COSB ~ COS (AL1R[J]) ; 47700
SINSQB ~ SINB * 2 ; COSSQB ~ COSB * 2 ; 47800
SXL ~ L * 2 | SX / 12 ; 47900
QX ~ (1.3 - K) | Q | L | COSB | SINB ; 48000
CQ ~ C | QX ; 48100
UX ~ (K | COSSQB + 1.3 | SINSQB) | Q | L ; 48200
U0 ~ A | UX - B | QX ; CU ~ C | UX ; 48300
VX ~ (K | SINSQB + 1.3 | COSSQB) | Q | L ; 48400
V0 ~ B | VX - A | QX ; CV ~ C | VX ; 48500
P ~ RM * 2 | Q | L / 144 ; S ~ 2.6 | P ; 48600
U ~ (2.6 | COSSQB + 0.5 | SINSQB) | P ; 48700
V ~ (2.6 | SINSQB + 0.5 | COSSQB) | P ; 48800
W ~ 2.1 | P | SINB | COSB ; 48900
SABC2Q ~ B | SA + SXL | COSB | SINB + C | CQ + W ; 49000
CU0 ~ C | U0 ; CV0 ~ C | V0 ; 49100
SAAC2V ~ A | SA + SXL | COSSQB + C | CV + U ; 49200
SBBC2U ~ B | SB + SXL | SINSQB + C | CU + V ; 49300
U00V00 ~ A | U0 + B | V0 + SXL + S ; 49400
GO TO E200 ; 49500
E10 : ANGLE ; 49600
GO TO SWCH2[PL[J]] ; 49700
E4 : DIST ~ SQRT (Y[J] * 2 + Z[J] * 2) ; 49800
GO TO E7 ; 49900
E5 : DIST ~ SQRT (X[J] * 2 + Z[J] * 2) ; 50000
GO TO E7 ; 50100
E6 : DIST ~ SQRT (X[J] * 2 + Y[J] * 2) ; 50200
E7 : PHIR ~ 2 | ARCSIN (DIST | 0.5 / R[J]) ; 50300
PHIRA ~ ABS (PHIR) ; HAPHR[J] ~ 0.5 | PHIRA ; 50400
ME ~ R[J] | ((1.0 / COS(HAPHR[J])) - 1.0) ; 50500
TE ~ SIN (HAPHR[J]) / COS (HAPHR[J]) | R[J] ; 50600
KTA ~ COS (HAPHR[J]) | R[J] ; 50700
GO TO SWCH3[PL[J]] ; 50800
E11 : TAH ~ Y[J-1] | TE / L ; 50900
TAV ~ Z[J-1] | TE / L ; 51000
DIH ~ 0.5 | Y[J] - TAH ; 51100
DIV1~ 0.5 | Z[J] - TAV ; 51200
DIRR ~ SQRT (DIH * 2 + DIV1 * 2) ; 51300
A ~ KTA | DIH / DIRR - YA + CHKY[J-1] + Y[J] | 0.5 ; 51400
B ~ KTA | DIV1/ DIRR - ZA + CHKZ[J-1] + Z[J] | 0.5 ; 51500
C ~ CHKX[J-1] - XA ; 51600
TB ~ Z[J] / Y[J] ; CH ~ Y[J-1] ; 51700
CV ~ Z[J-1] ; ARMX[J] ~ CHKX[J-1] ; 51800
ARMY[J] ~ ME | DIH / DIRR + TAH + CHKY[J-1] ; 51900
ARMZ[J] ~ ME | DIV1/ DIRR + TAV + CHKZ[J-1] ; 52000
GO TO E14 ; 52100
E12 : TAH ~ Z[J-1] | TE / L ; 52200
TAV ~ X[J-1] | TE / L ; 52300
DIH ~ 0.5 | Z[J] - TAH ; 52400
DIV1~ 0.5 | X[J] - TAV ; 52500
DIRR ~ SQRT (DIH * 2 + DIV1 * 2); 52600
A ~ KTA | DIH / DIRR - ZA + CHKZ[J-1] + Z[J] | 0.5 ; 52700
B ~ KTA | DIV1/ DIRR - XA + CHKX[J-1] + X[J] | 0.5 ; 52800
C ~ CHKY[J-1] - YA ; 52900
TB ~ X[J] / Z[J] ; CH ~ Z[J-1] ; 53000
CV ~ X[J-1] ; ARMY[J] ~ CHKY[J-1] ; 53100
ARMX[J] ~ ME | DIV1/ DIRR + TAV + CHKX[J-1] ; 53200
ARMZ[J] ~ ME | DIH / DIRR + TAH + CHKZ[J-1] ; 53300
GO TO E14 ; 53400
E13 : TAH ~ X[J-1] | TE / L ; 53500
TAV ~ Y[J-1] | TE / L ; 53600
DIH ~ 0.5 | X[J] - TAH ; 53700
DIV1~ 0.5 | Y[J] - TAV ; 53800
DIRR ~ SQRT (DIH * 2 + DIV1 * 2); 53900
A ~ KTA | DIH / DIRR - XA + CHKX[J-1] + X[J] | 0.5 ; 54000
B ~ KTA | DIV1/ DIRR - YA + CHKY[J-1] + Y[J] | 0.5 ; 54100
C ~ CHKZ[J-1] - ZA ; 54200
TB ~ Y[J] / X[J] ; CH ~ X[J-1] ; 54300
CV ~ Y[J-1] ; ARMZ[J] ~ CHKZ[J-1] ; 54400
ARMX[J] ~ ME | DIH / DIRR + TAH + CHKX[J-1] ; 54500
ARMY[J] ~ ME | DIV1/ DIRR + TAV + CHKY[J-1] ; 54600
E14 : AL1JA ~ AL1R[J-1] | RAD ; AL1B ~ AL1JA / 90 ; 54700
AL1C ~ ENTIER (AL1B) ; 54800
AL1D ~ ABS (AL1B - AL1C) ; AL1A ~ 90 | AL1D ; 54900
IF 90 - AL1A < 1@-4 THEN AL1A ~ 0 ; 55000
IF TB > 0 THEN 55100
BEGIN 55200
IF CH < 0 THEN AL1A ~ AL1A + 180 ; 55300
IF CH = 0 AND CV > 0 THEN AL1A ~ AL1A + 180 55400
END ; 55500
IF TB < 0 THEN 55600
BEGIN 55700
IF CV > 0 THEN AL1A ~ AL1A + 90 ; 55800
IF CV = 0 AND CH > 0 THEN AL1A ~ AL1A + 90 ; 55900
IF CV < 0 THEN AL1A ~ AL1A + 270 ; 56000
IF CV = 0 AND CH < 0 THEN AL1A ~ AL1A + 270 56100
END ; 56200
AL1PR ~ AL1A / RAD ; 56300
PHALR ~ AL1PR + PHIRA ; 56400
SINB ~ SIN (AL1PR) ; COSB ~ COS (AL1PR) ; 56500
SINPH ~ SIN (PHALR) ; COSPH ~ COS (PHALR) ; 56600
IF FIT[J].[30:12] = "MI" THEN MITCL 56700
ELSE K ~ 0.1375 | RM * 2 / (T[J] | R[J]) ; 56800
IF K < 1 THEN K ~ 1 ; 56900
CA ~ COSB - COSPH ; CB ~ SINB - SINPH ; 57000
CAB ~ (COSPH * 2 - SINPH * 2 - COSB * 2 + SINB * 2)|0.25 ; 57100
CAA ~ (PHIR - SINPH | COSPH + SINB | COSB) | 0.5 ; 57200
CBB ~ (PHIR + SINPH | COSPH - SINB | COSB) | 0.5 ; 57300
KTE ~ R[J] * 2 | K | Q ; SPA ~ KTE | CA ; 57400
SPB ~ KTE | CB ; SPAB ~ R[J] | KTE | CAB ; 57500
SPAA ~ R[J] | KTE | CAA ; 57600
SPBB ~ R[J] | KTE | CBB ; 57700
KTE1 ~ R[J] * 2 | Q | 1.3 ; 57800
UP0 ~ KTE1 | CA ; VP0 ~ KTE1 | CB ; 57900
UP00VP00 ~ R[J] | KTE1 | PHIR ; 58000
SX ~ R[J] | PHIR | K | Q ; 58100
SA ~ A | SX + SPA ; SB ~ B | SX + SPB ; 58200
QX ~ (K - 1.3) | R[J] | Q | CAB ; CQ ~ C | QX ; 58300
UX ~ (K | CBB + 1.3 | CAA) | R[J] | Q ; 58400
U0 ~ UX | A + UP0 - QX | B ; CU ~ C | UX ; 58500
VX ~ (K | CAA + 1.3 | CBB) | R[J] | Q ; 58600
V0 ~ VX | B + VP0 - QX | A ; CV ~ C | VX ; 58700
P ~ RM * 2 | R[J] | Q / 144 ; S ~ 2.6 | P | PHIR ; 58800
U ~ (2.6 | CBB + 0.5 | CAA) | P ; 58900
V ~ (2.6 | CAA + 0.5 | CBB) | P ; 59000
W ~ -2.1 | P | CAB ; 59100
SABC2Q ~ SX | A | B + SPA | B + SPB | A + SPAB + 59200
CQ | C + W ; 59300
CU0 ~ C | U0 ; CV0 ~ C | V0 ; 59400
SAAC2V ~ 2 | A | SPA + A * 2 | SX + CV | C + SPAA + U ; 59500
SBBC2U ~ 2 | B | SPB + B * 2 | SX + CU | C + SPBB + V ; 59600
U00V00 ~ UP00VP00 + 2 | A | UP0 + 2 | B | VP0 + 59700
A * 2 | UX + B * 2 | VX - 2 | A | B | QX + S ; 59800
E200 : I ~ ABS (BRA[J]) ; 59900
IF PL[J] = 4 THEN 60000
FOR G ~ -1, 0, 1 DO 60100
BEGIN 60200
IF (J + G) > NM OR (J + G) < 1 THEN GO TO E20 ; 60300
HHH ~ PREV[J+G] ; IF HHH { 0 THEN HHH ~ J + G - 1 ; 60400
X[J+G] ~ CHKX[J+G] - CHKX[HHH] ; 60500
Y[J+G] ~ CHKY[J+G] - CHKY[HHH] ; 60600
Z[J+G] ~ CHKZ[J+G] - CHKZ[HHH] ; 60700
E20 : END ; 60800
GO TO SWCH4[PL[J]] ; 60900
E21 : D[1,1,I] ~ D[1,1,I] + SX ; 61000
D[1,5,I] ~ D[1,5,I] + SB ; 61100
D[1,6,I] ~ D[1,6,I] - SA ; 61200
D[2,2,I] ~ D[2,2,I] + VX ; 61300
D[2,3,I] ~ D[2,3,I] + QX ; 61400
D[2,4,I] ~ D[2,4,I] - V0 ; 61500
D[2,5,I] ~ D[2,5,I] - CQ ; 61600
D[2,6,I] ~ D[2,6,I] + CV ; 61700
D[3,3,I] ~ D[3,3,I] + UX ; 61800
D[3,4,I] ~ D[3,4,I] + U0 ; 61900
D[3,5,I] ~ D[3,5,I] - CU ; 62000
D[3,6,I] ~ D[3,6,I] + CQ ; 62100
D[4,4,I] ~ D[4,4,I] + U00V00 ; 62200
D[4,5,I] ~ D[4,5,I] - CU0 ; 62300
D[4,6,I] ~ D[4,6,I] - CV0 ; 62400
D[5,5,I] ~ D[5,5,I] + SBBC2U ; 62500
D[5,6,I] ~ D[5,6,I] - SABC2Q ; 62600
D[6,6,I] ~ D[6,6,I] + SAAC2V ; 62700
GO TO E111 ; 62800
E22 : D[1,1,I] ~ D[1,1,I] + UX ; 62900
D[1,3,I] ~ D[1,3,I] + QX ; 63000
D[1,4,I] ~ D[1,4,I] + CQ ; 63100
D[1,5,I] ~ D[1,5,I] + U0 ; 63200
D[1,6,I] ~ D[1,6,I] - CU ; 63300
D[2,2,I] ~ D[2,2,I] + SX ; 63400
D[2,4,I] ~ D[2,4,I] - SA ; 63500
D[2,6,I] ~ D[2,6,I] + SB ; 63600
D[3,3,I] ~ D[3,3,I] + VX ; 63700
D[3,4,I] ~ D[3,4,I] + CV ; 63800
D[3,5,I] ~ D[3,5,I] - V0 ; 63900
D[3,6,I] ~ D[3,6,I] - CQ ; 64000
D[4,4,I] ~ D[4,4,I] + SAAC2V ; 64100
D[4,5,I] ~ D[4,5,I] - CV0 ; 64200
D[4,6,I] ~ D[4,6,I] - SABC2Q ; 64300
D[5,5,I] ~ D[5,5,I] + U00V00 ; 64400
D[5,6,I] ~ D[5,6,I] - CU0 ; 64500
D[6,6,I] ~ D[6,6,I] + SBBC2U ; 64600
GO TO E111 ; 64700
E23 : D[1,1,I] ~ D[1,1,I] + VX ; 64800
D[1,2,I] ~ D[1,2,I] + QX ; 64900
D[1,4,I] ~ D[1,4,I] - CQ ; 65000
D[1,5,I] ~ D[1,5,I] + CV ; 65100
D[1,6,I] ~ D[1,6,I] - V0 ; 65200
D[2,2,I] ~ D[2,2,I] + UX ; 65300
D[2,4,I] ~ D[2,4,I] - CU ; 65400
D[2,5,I] ~ D[2,5,I] + CQ ; 65500
D[2,6,I] ~ D[2,6,I] + U0 ; 65600
D[3,3,I] ~ D[3,3,I] + SX ; 65700
D[3,4,I] ~ D[3,4,I] + SB ; 65800
D[3,5,I] ~ D[3,5,I] - SA ; 65900
D[4,4,I] ~ D[4,4,I] + SBBC2U ; 66000
D[4,5,I] ~ D[4,5,I] - SABC2Q ; 66100
D[4,6,I] ~ D[4,6,I] - CU0 ; 66200
D[5,5,I] ~ D[5,5,I] + SAAC2V ; 66300
D[5,6,I] ~ D[5,6,I] - CV0 ; 66400
D[6,6,I] ~ D[6,6,I] + U00V00 ; 66500
E111 : END ; 66600
FOR I ~ 1 STEP 1 UNTIL NB DO 66700
FOR G ~ 1 STEP 1 UNTIL 6 DO 66800
FOR H ~ G + 1 STEP 1 UNTIL 6 DO D[H, G, I] ~ D[G, H, I] 66900
END SHC ; 67000
PROCEDURE BM ; 67100
BEGIN 67200
BMAT[1,5] ~ -KTZ ; 67300
BMAT[1,6] ~ KTY ; 67400
BMAT[2,4] ~ KTZ ; 67500
BMAT[2,6] ~ -KTX ; 67600
BMAT[3,4] ~ -KTY ; 67700
BMAT[3,5] ~ KTX ; 67800
END BM ; 67900
PROCEDURE LOOP ; 68000
BEGIN 68100
LABEL E115, E116, E117, E118 ; 68200
COMMENT THIS PROCEDURE FINDS THE BRANCHES THAT FORM A LOOP. ; 68300
NL ~ NL + 1 ; JJ ~ 0 ; 68400
BASBR[II] ~ BRA[J] ; 68500
E115 : JJ ~ JJ + 1 ; IF JJ > J THEN GO TO E117 ; 68600
KTX ~ ABS (CHKX[J] - CHKX[JJ] + X[JJ]) ; 68700
KTY ~ ABS (CHKY[J] - CHKY[JJ] + Y[JJ]) ; 68800
KTZ ~ ABS (CHKZ[J] - CHKZ[JJ] + Z[JJ]) ; 68900
IF KTX < 0.005 AND KTY < 0.005 AND KTZ < 0.005 69000
THEN GGG ~ BRA[JJ] 69100
ELSE GO TO E115 ; 69200
HHH ~ GGG - 1 ; 69300
FOR GGG ~ 1 STEP 1 UNTIL HHH DO 69400
TRAV[II,GGG] ~ TRAVT[GGG,II] ~ 0 ; 69500
JJJ ~ J ; 69600
E116 : G ~ BRA[JJJ] ; 69700
IF TYPE[JJJ] = "ANK" OR TYPE[JJJ] = "PRK" THEN 69800
TRAV[II,G] ~ 0 ELSE TRAV[II,G] ~ 1 ; 69900
TRAVT[G,II] ~ TRAV[II,G] ; 70000
IF PREV[JJJ] < 1 THEN JJJ ~ JJJ - 1 ELSE JJJ ~ PREV[JJJ] ; 70100
IF JJJ < JJ THEN GO TO E118 ; 70200
GO TO E116 ; 70300
E117 : WRITE(FILE2, FOR20, J) ; 70400
E118 : II ~ II + 1 ; 70500
END LOOP ; 70600
PROCEDURE MOMEN ; 70700
BEGIN 70800
LABEL E501, E502, E503, E505, E507 ; 70900
IF OPTION.[24:12] = "FM" THEN SNPR ~ TRUE 71000
ELSE SNPR ~ FALSE ; 71100
SKB ~ FALSE ; 71200
FOR II ~ 1 STEP 1 UNTIL NBAS DO IF PRN[BASBR[II]] THEN 71300
BEGIN 71400
III ~ BASBR[II] ; G ~ 6 | II - 4 ; 71500
GG ~ ENTIER (D[2,2,III]) ; 71600
FOR J ~ NNN STEP -1 UNTIL G DO MF[J+5] ~ MF[J] ; 71700
KTE ~ MF[G-1] ; G ~ G - 2 ; NNN ~ NNN + 5 ; 71800
FOR J ~ 1 STEP 1 UNTIL 6 DO MF[G+J] ~ 0 ; 71900
MF[G+GG] ~ KTE 72000
END ; 72100
WRITE(FILE2[PAGE]) ; WRITE(FILE2, TI10) ; 72200
COMMENT COMPUTATION OF FORCES AND MOMENTS AT BRANCHING POINTS. ; 72300
FOR I ~ 1 STEP 1 UNTIL NB DO 72400
BEGIN 72500
FOR KK ~ 1 STEP 1 UNTIL 6 DO CNC[I,KK] ~ 0 ; 72600
FOR II ~ 1 STEP 1 UNTIL NBAS DO 72700
IF TRAV[II,I] ! 0 THEN 72800
BEGIN 72900
G ~ BASBR[II] ; KTX ~ RFX[G] - RFX[I] ; 73000
KTY ~ RFY[G] - RFY[I] ; KTZ ~ RFZ[G] - RFZ[I]; 73100
BM ; GG ~ 6 | II - 6 ; 73200
FOR G ~ 1 STEP 1 UNTIL 6 DO 73300
BEGIN 73400
KTE ~ 0 ; 73500
FOR H ~ 1 STEP 1 UNTIL 6 DO 73600
KTE ~ BMAT[G,H] | MF[GG+H] + KTE ; 73700
CNC[I,G] ~ CNC[I,G] + KTE 73800
END 73900
END 74000
END ; 74100
NAN ~ 0 ; 74200
FOR I ~ 1 STEP 1 UNTIL NB DO 74300
BEGIN 74400
J ~ 0 ; 74500
E501 : J ~ J + 1 ; 74600
IF BRA[J] > I OR J > NM THEN GO TO E503 ; 74700
IF BRA[J] < I THEN GO TO E501 74800
ELSE IF BRA[J] = I THEN 74900
BEGIN 75000
IF SKB THEN FOR G ~ -2, -1, 0 DO 75100
BEGIN 75200
HHH ~ PREV[J+G] ; IF HHH { 0 THEN HHH ~ J + G - 1 ; 75300
X[J+G] ~ CHKX[J+G] - CHKX[HHH] ; 75400
Y[J+G] ~ CHKY[J+G] - CHKY[HHH] ; 75500
Z[J+G] ~ CHKZ[J+G] - CHKZ[HHH] ; 75600
END ; 75700
SKB ~ FALSE ; 75800
RM ~ (DI[J] - T[J]) | 0.5 ; TMP ~ FALSE ; 75900
IF TYPE[J] = "PRK" THEN 76000
BEGIN 76100
TMP ~ TRUE ; GO TO E502 76200
END ; 76300
KTX ~ RFX[I] - CHKX[J] + X[J] ; 76400
KTY ~ RFY[I] - CHKY[J] + Y[J] ; 76500
KTZ ~ RFZ[I] - CHKZ[J] + Z[J] ; 76600
IF PL[J] = 4 AND R[J] ! 0 THEN 76700
BEGIN 76800
SKEB ; FOR G ~ -1, 0, 1 DO TRANSF ; SKB ~ TRUE 76900
END ; 77000
ANGLE ; 77100
IF R[J] ! 0 THEN 77200
BEGIN 77300
AL1MR ~ (AL1R[J+1] + AL1R[J-1]) | 0.5 ; 77400
SINM ~ SIN (AL1R[J-1]) ; COSM ~ COS (AL1R[J-1]) ; 77500
SINN ~ SIN (AL1R[J+1]) ; COSN ~ COS (AL1R[J+1]) ; 77600
SINC ~ SIN (AL1MR) ; COSC ~ COS (AL1MR) 77700
END 77800
ELSE 77900
BEGIN 78000
SINN ~ SIN (AL1R[J]) ; COSN ~ COS (AL1R[J]) 78100
END ; 78200
IF TYPE[J-1] = "PRK" THEN GO TO E502 ; 78300
IF PREV[J] = -1 AND TYPE[J-1] ! "BRP" THEN GO TO E507 78400
ELSE WRITE(FILE2, SPAC) ; 78500
E502 : IF TMP THEN HH ~ J 78600
ELSE 78700
BEGIN 78800
IF PREV[J] = -1 THEN HH ~ J - 1 78900
ELSE HH ~ PREV[J] 79000
END ; 79100
BM ; 79200
FOR G ~ 1 STEP 1 UNTIL 6 DO 79300
BEGIN 79400
KTE ~ 0 ; 79500
FOR H ~ 1 STEP 1 UNTIL 6 DO 79600
KTE ~ BMAT[G,H] | CNC[I,H] + KTE ; 79700
TEMPR[10+G] ~ KTE 79800
END ; 79900
IF HH = 0 THEN GO TO E505 ; 80000
COMMENT FORCES AND MOMENTS AT THE ANCHORS ARE STORED IN MEMORY 80100
IN ORDER TO PRINT THEIR VALUES LATER ON. ; 80200
IF (TYPE[J] = "ANK" OR TYPE[J] = "PRK") AND TMP THEN 80300
BEGIN 80400
NAN ~ NAN + 1 ; HH ~ J ; 80500
E505 : KTE ~ 0 ; TEMPR[50+NAN] ~ HH ; 80600
FOR G ~ 14 STEP 1 UNTIL 16 DO 80700
BEGIN 80800
IF HH = 0 THEN CNCT[NAN,G-13] ~ TEMPR[G] ELSE 80900
CNCT[NAN,G-13] ~ -TEMPR[G] ; 81000
KTE ~ TEMPR[G] * 2 + KTE 81100
END ; 81200
CNCT[NAN,4]~ SQRT (KTE) ; KTE ~ 0 ; 81300
FOR G ~ 11 STEP 1 UNTIL 13 DO 81400
BEGIN 81500
IF HH = 0 THEN CNCT[NAN,G-6] ~ TEMPR[G] ELSE 81600
CNCT[NAN,G-6] ~ -TEMPR[G] ; 81700
KTE ~ TEMPR[G] * 2 + KTE 81800
END ; 81900
CNCT[NAN,8] ~ SQRT (KTE) ; 82000
END ; 82100
IF TYPE[J] = "PRK" THEN 82200
BEGIN 82300
WRITE(FILE2, FOR9, OUT9) ; GO TO E501 82400
END ; 82500
G ~ PL[J] ; IF G = 4 THEN G ~ 1 ; 82600
GG ~ (G+1) MOD 3 + 11 ; JJ ~ G MOD 3 + 11 ; 82700
IF (NOT TMP) AND R[J] ! 0 THEN 82800
BEGIN 82900
SINN ~ SINM ; COSN ~ COSM 83000
END ; 83100
MB ~ TEMPR[G+10] ; 83200
MPB ~ TEMPR[GG] | COSN - TEMPR[JJ] | SINN ; 83300
MTOR ~ -TEMPR[GG] | SINN - TEMPR[JJ] | COSN ; 83400
IF R[J] ! 0 AND TMP THEN 83500
BEGIN 83600
KTX ~ RFX[I] - ARMX[J] ; 83700
KTY ~ RFY[I] - ARMY[J] ; 83800
KTZ ~ RFZ[I] - ARMZ[J] ; BM ; 83900
FOR G ~ 1 STEP 1 UNTIL 6 DO 84000
BEGIN 84100
KTE ~ 0 ; 84200
FOR H ~ 1 STEP 1 UNTIL 6 DO 84300
KTE ~ BMAT[G,H] | CNC[I,H] + KTE ; 84400
TEMPR[20+G] ~ KTE 84500
END ; 84600
G ~ PL[J] ; IF G = 4 THEN G ~ 1 ; MBM ~ TEMPR[G+20] ; 84700
GG ~ (G+1) MOD 3 + 21 ; JJ ~ G MOD 3 + 21 ; 84800
MPBM ~ TEMPR[GG] | COSC - TEMPR[JJ] | SINC ; 84900
MTORM ~ -TEMPR[GG] | SINC - TEMPR[JJ] | COSC 85000
END ; 85100
IF (TYPE[J] = "BRP" AND TMP) OR (TYPE[J] = "SKW") 85200
OR (PREV[J] > 0 AND (NOT TMP)) 85300
OR (TYPE[J-1] = "BRP" AND (NOT TMP)) 85400
OR (TYPE[J+1] = "PRK" AND TMP) 85500
OR (TYPE[J-1] = "PRK" AND (NOT TMP)) THEN 85600
BEGIN 85700
KH ~ 1.0 ; 85800
IF FIT[J] = "TEE" THEN KH ~ T[J] / RM 85900
ELSE IF FIT[J] = "WTE" THEN KH ~ 4.4 | T[J] / RM 86000
ELSE IF FIT[J] = "RTE" THEN KH ~ 86100
(T[J] | 1.5) * 2.5 / (RM | T[J] * 1.5) ; 86200
IF FIT[J] = "DWF" THEN BET ~ 1.2 86300
ELSE IF FIT[J] = "FWJ" THEN BET ~ 1.3 86400
ELSE IF FIT[J] = "LJF" THEN BET ~ 1.6 86500
ELSE IF FIT[J] = "SPJ" THEN BET ~ 2.3 86600
ELSE BET ~ 0.9 / (KH * 0.66667) ; 86700
IF BET < 1.0 THEN BET ~ 1.0 86800
END 86900
ELSE BET ~ 1.0 ; 87000
KTT ~ 6 | BET | DI[J] / IN1[J] ; 87100
IF R[J] ! 0 AND TMP THEN 87200
BEGIN 87300
IF FIT[J].[30:12] = "MI" THEN MITCL 87400
ELSE KH ~ 0.1375 | RM * 2 / (T[J] | R[J]) ; 87500
BET ~ 0.9 / (KH * 0.66667) ; 87600
IF BET < 1.0 THEN BET ~ 1.0 ; 87700
KTT ~ 6 | BET | DI[J] / IN1[J] ; 87800
STORM ~ 0.5 | KTT | MTORM / BET ; 87900
SBENM ~ KTT | SQRT (MBM * 2 + MPBM * 2) ; 88000
SEQM ~ SQRT (SBENM * 2 + 4 | STORM * 2) ; 88100
IF SEQM > STRSMX THEN 88200
BEGIN 88300
STRSMX ~ SEQM ; PT ~ HH 88400
END ; 88500
IF SNPR THEN WRITE (FILE2, FOR12, OUT12) 88600
END ; 88700
STOR ~ 0.5 | KTT | MTOR / BET ; 88800
SBEN ~ KTT | SQRT (MB * 2 + MPB * 2) ; 88900
SEQ ~ SQRT (SBEN * 2 + 4 | STOR * 2) ; 89000
IF SEQ > STRSMX THEN 89100
BEGIN 89200
STRSMX ~ SEQ ; PT ~ HH 89300
END ; 89400
IF SNPR THEN WRITE (FILE2, FOR11, OUT11) ; 89500
IF TMP THEN GO TO E501 ; 89600
E507 : KTX ~ RFX[I] - CHKX[J] ; 89700
KTY ~ RFY[I] - CHKY[J] ; 89800
KTZ ~ RFZ[I] - CHKZ[J] ; 89900
TMP ~ TRUE ; GO TO E502 90000
END ; 90100
E503 : END 90200
END MOMEN ; 90300
FOR G ~ 1 STEP 1 UNTIL 6 DO 90400
FOR H ~ 1 STEP 1 UNTIL 6 DO 90500
BEGIN 90600
IF G = H THEN BMAT[G,H] ~ 1 90700
ELSE BMAT[G,H] ~ 0 90800
END ; 90900
CHKX[0] ~ CHKY[0] ~ CHKZ[0] ~ 0 ; 91000
FILL MATE[*] WITH 0.0, 91100
5.07, 5.35, 5.65, 5.90, 6.13, 6.38, 6.60, 6.82, 7.02,7.23, 91200
7.44, 7.65, 7.84, 7.97, 8.12, 8.19, 8.28, 8.36, 0.0, 27.9, 91300
5.07, 5.35, 5.65, 5.90, 6.13, 6.38, 6.60, 6.82, 7.02,7.23, 91400
7.44, 7.65, 7.84, 7.97, 8.12, 8.19, 8.28, 8.36, 0.0, 29.9, 91500
5.07, 5.35, 5.65, 5.90, 6.13, 6.38, 6.60, 6.82, 7.02,7.23, 91600
7.44, 7.65, 7.84, 7.97, 8.12, 8.19, 8.28, 8.36, 0.0, 29.9, 91700
4.77, 5.05, 5.32, 5.56, 5.79, 6.04, 6.19, 6.34, 6.50,6.66, 91800
6.80, 6.96, 7.10, 7.22, 7.32, 7.41, 7.49, 7.55, 0.0, 27.4, 91900
8.21, 8.47, 8.75, 8.98, 9.16, 9.34, 9.47, 9.59, 9.70,9.82, 92000
9.92,10.05,10.16,10.29,10.39,10.48,10.54,10.60, 0.0, 28.3, 92100
4.36, 4.59, 4.85, 5.10, 5.29, 5.50, 5.66, 5.81, 5.96,6.13, 92200
6.26, 6.39, 6.52, 6.63, 6.72, 6.78, 6.85, 6.90, 0.0, 29.2, 92300
5.72, 6.40, 6.95, 7.28, 7.55, 7.84, 8.02, 8.20, 8.40,8.58, 92400
8.78, 8.96, 9.16, 9.34, 9.52, 9.70, 9.88,10.04, 0.0, 26.0, 92500
0.0, 0.0, 0.0, 0.0, 0.0, 7.48, 7.68, 7.90, 8.09, 8.30, 92600
8.50, 8.70, 8.90, 9.10, 9.30, 9.50, 9.70, 9.89, 0.0, 26.0, 92700
10.04,10.61,11.25, 11.86,12.39,12.95,13.28,13.60,13.90, 92800
14.20, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.6, 92900
0.0, 0.0, 0.0, 0.0, 0.0, 5.75, 5.93, 6.10, 6.28, 6.47, 93000
6.65, 6.83, 7.00, 7.19, 0.0, 0.0, 0.0, 0.0, 0.0, 13.4, 93100
8.45, 8.65, 8.95, 9.32,9.66,10.03,10.12,10.23,10.32,10.44, 93200
10.52,10.62,10.72,10.80,10.90,11.00, 0.0, 0.0, 0.0, 13.4, 93300
8.24, 8.41, 8.73, 9.11, 9.42,9.76,10.00,10.23,10.47,10.69, 93400
10.92,11.16,11.40,11.63,11.85,12.09, 0.0, 0.0, 0.0, 14.0, 93500
5.79, 6.13, 6.48, 6.78, 7.04, 7.32, 7.48, 7.61, 7.73,7.88, 93600
8.01, 8.13, 8.29, 8.39, 0.0, 0.0, 0.0, 0.0, 0.0, 29.5, 93700
6.76, 7.19, 7.60, 7.94, 8.24, 8.54, 8.71, 8.90, 0.0,0.0, 93800
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 29.5 ; 93900
BEGIN 94000
LABEL E101, E102, E103, E104, E105, 94100
E109, E110, E110A, E110B, E123, E128 ; 94200
PROCEDURE PREVJ ; 94300
BEGIN 94400
LABEL E107 ; 94500
G ~ PREV[J] ; 94600
I ~ I + 1 ; III ~ BRA[G] ; BRA[J] ~ I ; 94700
RFX[I] ~ CHKX[G] ; RFY[I] ~ CHKY[G] ; RFZ[I] ~ CHKZ[G]; 94800
FOR HH ~ 1 STEP 1 WHILE TRAV[HH,III] = 0 DO 94900
IF HH > II THEN GO TO E107 ; 95000
FOR GG ~ 1 STEP 1 UNTIL III DO 95100
TRAV[II,GG] ~ TRAVT[GG,II] ~ TRAV[HH,GG]; 95200
E107 : TRAV[II,I] ~ TRAVT[I,II] ~ 1 95300
END PREVJ ; 95400
PROCEDURE ANKR ; 95500
BEGIN 95600
WRITE(FILE2, FOR5, CHKX[J], CHKY[J], CHKZ[J]) ; 95700
BASBR[II] ~ I ; II ~ II + 1 ; 95800
READ(FILE1, INC1, DATAC1) ; NAN ~ NAN + 1 95900
END ANKR ; 96000
PROCEDURE BRPT ; 96100
BEGIN 96200
I ~ I + 1 ; TRAV[II,I] ~ TRAVT[I,II] ~ 1 ; 96300
RFX[I] ~ CHKX[G] ; RFY[I] ~ CHKY[G] ; RFZ[I] ~ CHKZ[G]; 96400
END BRPT ; 96500
E109 : READ(FILE1, IDENF, IDEN) ; WRITE(FILE2, IDENF, IDEN) ; 96600
WRITE(FILE2, SPAC) ; 96700
READ(FILE1, INA, DATAA) ; WRITE(FILE2, TI) ; 96800
FOR G ~ 1 STEP 1 UNTIL 6 DO DE[G,1] ~ -DE[G,1] ; 96900
IF OPTION = "LAST" THEN GO TO E128 ; 97000
IF OPTION.[36:12] = "MT" THEN TMP ~ TRUE ELSE TMP ~ FALSE; 97100
SKB ~ FALSE ; 97200
IF (NOT TMP) THEN WRITE(FILE2, TIA) ; 97300
FOR I ~ 1 STEP 1 UNTIL NB DO 97400
BEGIN 97500
BOL[I] ~ 0 ; PRN[I] ~ FALSE 97600
END ; 97700
FOR G ~ 1 STEP 1 UNTIL 7 DO FOR H ~ 1 STEP 1 UNTIL 7 DO 97800
TRAV[G,H] ~ TRAVT[H,G] ~ 0 ; 97900
TRAV[1,1] ~ TRAVT[1,1] ~ BRA[1] ~ 1 ; 98000
FOR G ~ 1 STEP 1 UNTIL 6 DO 98100
FOR H ~ 1 STEP 1 UNTIL 20 DO DE[G,H] ~ 0 ; 98200
J ~ NAN ~ NL ~ STRSMX ~ 0 ; I ~ H ~ II ~ 1 ; 98300
READ(FILE1, INC1, DATAC1) ; 98400
E110 : J ~ J + 1 ; 98500
IF TMP THEN 98600
BEGIN 98700
READ(FILE1, INC, DATAC) ; 98800
IF PREV[J] = 999 THEN GO TO E110A ; 98900
IF MAT[J] = " " THEN 99000
BEGIN 99100
EC[J] ~ EC[J-1] ; EPS[J] ~ EPS[J-1] ; 99200
GO TO E110B 99300
END ; 99400
IF MAT[J] = "LCS" THEN HH~ 1 99500
ELSE IF MAT[J] = "HCS" THEN HH~ 2 99600
ELSE IF MAT[J] = "LCM" THEN HH~ 3 99700
ELSE IF MAT[J] = "ICM" THEN HH~ 4 99800
ELSE IF MAT[J] = "AUS" THEN HH~ 5 99900
ELSE IF MAT[J] = "SCS" THEN HH~ 6 100000
ELSE IF MAT[J] = "MON" THEN HH~ 7 100100
ELSE IF MAT[J] = "KMO" THEN HH~ 8 100200
ELSE IF MAT[J] = "ALU" THEN HH~ 9 100300
ELSE IF MAT[J] = "GCI" THEN HH~ 10 100400
ELSE IF MAT[J] = "BRO" THEN HH~ 11 100500
ELSE IF MAT[J] = "BRS" THEN HH~ 12 100600
ELSE IF MAT[J] = "WIR" THEN HH~ 13 100700
ELSE IF MAT[J] = "KON" THEN HH~ 14 100800
ELSE WRITE(FILE2, FOR18, J) ; 100900
HH ~ 20 | HH ; EC[J] ~MATE[HH] ; 101000
HH ~ HH - 20 ; 101100
KTE ~ 0.01 | TH[J] ; 101200
GG ~ ENTIER (KTE) ; JJ ~ ABS (GG) + 1 ; 101300
IF GG < 0 THEN JJ ~ -JJ ; 101400
KTX ~ MATE[HH+GG+4] ; 101500
KTY ~ MATE[HH+JJ+4] ; 101600
IF KTX = 0 OR KTY = 0 THEN 101700
BEGIN 101800
WRITE(FILE2, FOR17, J) ; GO TO E110 101900
END ; 102000
EPS[J]~ KTX + (KTY - KTX) | ABS (KTE - GG) ; 102100
WRITE(FILE2, FMAT, OUTMAT) 102200
END 102300
ELSE READ(FILE1, INB, DATAB) ; 102400
E110B : IF PREV[J] = 999 THEN GO TO E110A ; 102500
HHH ~ PREV[J] ; IF HHH { 0 THEN HHH ~ J - 1 ; 102600
CHKX[J] ~ CHKX[HHH] + X[J] ; 102700
CHKY[J] ~ CHKY[HHH] + Y[J] ; 102800
CHKZ[J] ~ CHKZ[HHH] + Z[J] ; 102900
IF DI[J] = 0 THEN DI[J] ~ DI[J-1] ; 103000
IF T[J] = 0 THEN 103100
BEGIN 103200
IF TYPE[J] ! "PRK" THEN T[J] ~ T[J-1] ; 103300
IF TYPE[J-1] = "RIG" THEN T[J] ~ T[J-2] 103400
END ; 103500
IF TH[J] = 0 THEN TH[J] ~ TH[J-1] ; 103600
IF TYPE[J] = "RIG" THEN T[J] ~ 0.5 | DI[J] ; 103700
IF TMP THEN WRITE(FILE2, FOR3, OUTC) 103800
ELSE WRITE(FILE2, FOR4, OUTB) ; 103900
BRA[J] ~ I ; 104000
IF J > 1 AND PREV[J] = 0 THEN PREV[J] ~ - 1 ; 104100
IF PREV[J] > 0 THEN GO TO E101 104200
ELSE IF (X[J] ! 0 AND Y[J] ! 0 AND Z[J] ! 0) OR 104300
(X[J-1] ! 0 AND Y[J-1] ! 0 AND Z[J-1] ! 0) THEN GO TO E102 104400
ELSE IF TYPE[J] = "BRP" OR TYPE[J] = "PRK" THEN GO TO E103 104500
ELSE IF TYPE[J] = "ANK" THEN GO TO E104 104600
ELSE IF TYPE[J] = "LOP" THEN GO TO E105 ELSE GO TO E110 ; 104700
IF PREV[J] > 0 THEN 104800
E101 : BEGIN 104900
IF TYPE[J-1] = "PRK" THEN 105000
FOR H ~ 1 STEP 1 UNTIL I DO TRAV[II,H] ~ TRAVT[H,II] ~ 0 ; 105100
PREVJ ; 105200
IF (X[J] ! 0 AND Y[J] ! 0 AND Z[J] ! 0) THEN 105300
E102 : BEGIN 105400
G ~ PREV[J] ; 105500
IF G < 1 THEN G ~ J - 1 ; 105600
IF TYPE[G] = "BRP" OR G ! J - 1 THEN I ~ I - 1 ; 105700
BRPT ; BRA[J] ~ I 105800
END ; 105900
IF (X[J-1] ! 0 AND Y[J-1] ! 0 AND Z[J-1] ! 0 AND 106000
PREV[J] < 1 AND TYPE[J] = " ") THEN 106100
BEGIN 106200
BRPT ; BRA[J] ~ I 106300
END ; 106400
E103 : IF TYPE[J] = "PRK" THEN 106500
BEGIN 106600
IF TYPE[J-1] = "BRP" THEN I ~ I - 1 ; 106700
H ~ PREV[J] ; IF H < 1 THEN PREV[J] ~ J - 1 ; 106800
PREVJ ; PREV[J] ~ H ; 106900
NAN ~ NAN + 1 ; BASBR[II] ~ I ; II ~ II + 1 ; 107000
FOR G ~ 1 STEP 1 UNTIL I - 1 DO TRAV[II,G] ~ 107100
TRAVT[G,II] ~ TRAV[II-1,G] ; I ~ I + 1 ; 107200
TRAV[II,I] ~ TRAVT[I,II] ~ 1 107300
END ; 107400
IF TYPE[J] = "BRP" THEN 107500
BEGIN 107600
G ~ J ; BRPT 107700
END ; 107800
E104 : IF TYPE[J] = "ANK" THEN ANKR ; 107900
E105 : IF TYPE[J] = "LOP" THEN LOOP 108000
END ; 108100
GO TO E110 ; 108200
E110A : NB ~ I ; 108300
RFX[1] ~ RFX[2] ; RFY[1] ~ RFY[2] ; RFZ[1] ~ RFZ[2] ; 108400
NBAS ~ NAN + NL ; NM ~ J - 1 ; 108500
NN ~ 6 | NB ; NNN ~ 6 | NBAS ; 108600
FE ; 108700
FOR G ~ 1 STEP 1 UNTIL 6 DO FOR H ~ 1 STEP 1 UNTIL 6 DO 108800
FOR I ~ 1 STEP 1 UNTIL NB DO D[G,H,I]~0.0 ; 108900
SHC ; 109000
COMMENT GENERATING THE CONNECTION MATRIX ; 109100
FOR G ~ 1 STEP 1 UNTIL NN DO 109200
FOR H ~ 1 STEP 1 UNTIL NNN DO CNC[G,H] ~ 0 ; 109300
FOR II ~ 1 STEP 1 UNTIL NBAS DO 109400
BEGIN 109500
III ~ BASBR[II] ; 109600
FOR I ~ 1 STEP 1 UNTIL NB DO 109700
IF TRAV[II,I] ! 0 THEN 109800
BEGIN 109900
KTX ~ RFX[III] - RFX[I] ; 110000
KTY ~ RFY[III] - RFY[I] ; 110100
KTZ ~ RFZ[III] - RFZ[I] ; 110200
BM ; 110300
KK ~ 6 | I - 6 ; KKK ~ 6 | II - 6 ; 110400
IF BOL[I] ! 0 THEN 110500
BEGIN 110600
TMP ~ FALSE ; JJJ ~ J ~ BOL[I] ; 110700
IF R[J] ! 0 THEN SKEB ELSE SKEW ; 110800
FOR G ~ 1 STEP 1 UNTIL 6 DO 110900
FOR H ~ 1 STEP 1 UNTIL 6 DO 111000
BEGIN 111100
KTE ~ 0 ; 111200
FOR HHH ~ 1 STEP 1 UNTIL 6 DO 111300
KTE ~ TR[G,HHH] | BMAT[HHH,H] + KTE ; 111400
CNC[KK+G,KKK+H] ~ KTE 111500
END 111600
END 111700
ELSE 111800
BEGIN 111900
FOR G ~ 1 STEP 1 UNTIL 6 DO 112000
FOR H ~ 1 STEP 1 UNTIL 6 DO 112100
CNC[KK+G,KKK+H] ~ BMAT[G,H] ; 112200
END 112300
END 112400
END ; 112500
COMMENT GENERATION OF CONNECTION MATRIX FOR PARTIALLY 112600
CONSTRAINED SYSTEMS. ; 112700
FOR G ~ 1 STEP 1 UNTIL NNN DO TEMPR[G] ~ 1.0 ; KK ~ 0 ; 112800
FOR II ~ 1 STEP 1 UNTIL NBAS DO 112900
BEGIN 113000
III ~ BASBR[II] ; 113100
IF PRN[III] THEN 113200
BEGIN 113300
GG ~ ENTIER (D[2,2,III]) ; GGG ~ 6 | II - 6 ; 113400
FOR J ~ 1 STEP 1 UNTIL 6 DO IF J ! GG THEN TEMPR[GGG+J] ~0 113500
END 113600
END ; 113700
FOR H ~ 1 STEP 1 UNTIL NNN DO 113800
IF TEMPR[H] = 0 THEN KK ~ KK + 1 113900
ELSE IF KK > 0 THEN 114000
BEGIN 114100
DEL[H-KK] ~ DEL[H] ; 114200
FOR G ~ 1 STEP 1 UNTIL NN DO 114300
CNC[G,H-KK] ~ CNC[G,H] 114400
END ; 114500
NNN ~ NNN - KK ; 114600
FOR G ~ 1 STEP 1 UNTIL NN DO TEMPR[G] ~ 1.0 ; KK ~ 0 ; 114700
FOR I ~ 1 STEP 1 UNTIL NB DO 114800
IF PRN[I] THEN 114900
BEGIN 115000
GG ~ ENTIER (D[2,2,I]) ; GGG ~ 6 | I - 6 ; 115100
FOR J ~ 1 STEP 1 UNTIL 6 DO IF J ! GG THEN TEMPR[GGG+J] ~0 115200
END ; 115300
FOR G ~ 1 STEP 1 UNTIL NN DO 115400
IF TEMPR[G] = 0 THEN KK ~ KK + 1 115500
ELSE IF KK > 0 THEN FOR H ~ 1 STEP 1 UNTIL NNN DO 115600
CNC[G-KK,H] ~ CNC[G,H] ; NN ~ NN - KK ; 115700
COMMENT THE TRANSPOSED MATRIX ; 115800
FOR G ~ 1 STEP 1 UNTIL NN DO 115900
FOR H ~ 1 STEP 1 UNTIL NNN DO 116000
CNCT[H,G] ~ CNC[G,H] ; 116100
KK ~ 0 ; 116200
FOR I ~ 1 STEP 1 UNTIL NB DO 116300
BEGIN 116400
GGG ~ 6 | I - 6 - 5 | KK ; 116500
IF PRN[I] THEN 116600
BEGIN 116700
GGG ~ GGG + 1 ; KK ~ KK + 1 ; 116800
KTE ~ D[1,1,I] ; 116900
FOR GG ~ 1 STEP 1 UNTIL NNN DO 117000
TEMP[GG,GGG] ~ CNCT[GG,GGG] | KTE ; 117100
END 117200
ELSE FOR H ~ 1 STEP 1 UNTIL 6 DO 117300
FOR GG ~ 1 STEP 1 UNTIL NNN DO 117400
BEGIN 117500
KTE ~ 0 ; 117600
FOR G ~ 1 STEP 1 UNTIL 6 DO 117700
KTE ~ CNCT[GG,GGG+G] | D[G,H,I] + KTE ; 117800
TEMP[GG,GGG+H] ~ KTE 117900
END 118000
END ; 118100
FOR G ~ 1 STEP 1 UNTIL NNN DO 118200
FOR H ~ 1 STEP 1 UNTIL NNN DO 118300
BEGIN 118400
KTE ~ 0 ; 118500
FOR HH ~ 1 STEP 1 UNTIL NN DO 118600
KTE ~ TEMP[G,HH] | CNC[HH,H] + KTE ; 118700
CNCT[G,H] ~ KTE 118800
END ; 118900
H ~ NNN + 1 ; 119000
FOR G ~ 1 STEP 1 UNTIL NNN DO CNCT[G,H] ~ DEL[G] ; 119100
JE(CNCT, NNN, MF) ; 119200
MOMEN ; 119300
WRITE(FILE2[PAGE]) ; WRITE(FILE2, TI12) ; 119400
FOR I ~ 0 STEP 1 UNTIL NAN DO WRITE(FILE2, FOR14, OUT14) ; 119500
WRITE(FILE2[PAGE]) ; WRITE(FILE2[PAGE],FOR19,OUT19); 119600
GO TO E109 ; 119700
E128 : WRITE (FILE2[PAGE]) ; WRITE(FILE2, FOR16) 119800
END ; 119900
END. 120000