mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-03-05 18:29:15 +00:00
1. Commit library tape images, directories, and extracted text files. 2. Commit additional utilities under Unisys-Emode-Tools.
192 lines
15 KiB
Plaintext
192 lines
15 KiB
Plaintext
PROCEDURE GFLASH (Z, PICKK, PICKGF, LIMITGF, CALCPDC, T, P, VDF, X, GFLP0001
|
|
Y, ERRORGF) ; GFLP0002
|
|
GFLP0003
|
|
COMMENT GENERAL NON-ADIABATIC FLASH PROCEDURE GFLP0004
|
|
BY DONALD L. VOSS GFLP0005
|
|
PROFESSIONAL SERVICES GROUP, BURROUGHS CORPORATION GFLP0006
|
|
CARD SEQUENCE CODE STARTS WITH GFLP0001. GFLP0007
|
|
FIRST RELEASE DATE 11-1-63 GFLP0008
|
|
GFLP0009
|
|
THIS PROCEDURE DETERMINES THE PHASE COMPOSITIONS OF GFLP0010
|
|
VAPOR-LIQUID MIXTURES IN WHICH EQUILIBRIUM EXISTS BETWEEN GFLP0011
|
|
THE LIQUID AND VAPOR. GIVEN TWO VALUES OF T, P, OR VDF, GFLP0012
|
|
THIS PROCEDURE WILL CALCULATE THE THIRD VALUE. AN GFLP0013
|
|
ASSUMED VALUE OF THE THIRD PARAMETER MUST BE GIVEN. BY GFLP0014
|
|
SPECIFYING VDF = 1.0 OR 0, DEW-POINT OR BUBBLE-POINT GFLP0015
|
|
CALCULATIONS WILL BE MADE, RESPECTIVELY. THE KPICK GFLP0016
|
|
PROCEDURE IS USED TO CALCULATE THE K-RATIOS. GFLP0017
|
|
GFLP0018
|
|
THE INPUT PARAMETERS ARE GFLP0019
|
|
T - GIVEN OR ASSUMED TEMPERATURE, F - REAL GFLP0020
|
|
P - GIVEN OR ASSUMED PRESSURE, PSIA - REAL GFLP0021
|
|
VDF - GIVEN OR ASSUMED V/F - REAL GFLP0022
|
|
Z - MOLE FRACTIONS OF FEED COMPONENTS - REAL ARRAY GFLP0023
|
|
[0:N], WHERE N IS THE TOTAL NUMBER OF COMPONENTS. GFLP0024
|
|
THE ORDER OF COMPONENTS MUST BE THE SAME AS THE GFLP0025
|
|
PICKK[] ORDER. GFLP0026
|
|
PICKK - NUMBER OF COMPONENTS USING EACH K-RATIO PROCEDURE GFLP0027
|
|
- INTEGER ARRAY [0:7] GFLP0028
|
|
PICKK[0] - TOTAL NUMBER OF COMPONENTS GFLP0029
|
|
PICKK[1] - NO. USING KNGAA GFLP0030
|
|
PICKK[2] - NO. USING KIDEAL GFLP0031
|
|
PICKK[3] - NO. USING KPOLY GFLP0032
|
|
PICKK[4] - NO. USING PHIPART GFLP0033
|
|
PICKK[5] - NO. WHOSE K-RATIOS ARE GIVEN IN KC12[]. GFLP0034
|
|
PICKK[7] - NO. USING THE INTERPOLATION METHOD. GFLP0035
|
|
PICKGF - SPECIFIES PROBLEM TYPE - INTEGER GFLP0036
|
|
=1 TO CALCULATE T, GIVEN P AND VDF. GFLP0037
|
|
=2 TO CALCULATE P, GIVEN T AND VDF. GFLP0038
|
|
=3 TO CALCULATE VDF, GIVEN T AND P. GFLP0039
|
|
LIMITGF - T AND P LIMITS - REAL ARRAY [0:4] GFLP0040
|
|
LIMITGF[1] - MINIMUM T, F. GFLP0041
|
|
LIMITGF[2] - MAXIMUM T, F. GFLP0042
|
|
LIMITGF[3] - MINIMUM P, PSIA GFLP0043
|
|
LIMITGF[4] - MAXIMUM P, PSIA GFLP0044
|
|
CALCPDC - BOOLEAN. IF TRUE, CALCULATE THE PRESSURE GFLP0045
|
|
DEPENDENT COEFFICIENTS IN THE KNGAA PROCEDURE. FOR GFLP0046
|
|
CALCPDC = FALSE, P OF THE PRESENT ENTRY MUST EQUAL GFLP0047
|
|
P OF THE LAST ENTRY TO KNGAA. GFLP0048
|
|
IN ADDITION, THE VARIABLES KC1, KC2, KC4, KC5, AND KC7 TO GFLP0049
|
|
KC14 ARE NON-LOCAL TO GFLASH. THESE VARIABLES ARE GFLP0050
|
|
DEFINED IN THE KPICK PROCEDURE (PTS-41). GFLP0051
|
|
GFLP0052
|
|
THE OUTPUT PARAMETERS ARE GFLP0053
|
|
T - GIVEN OR CALCULATED TEMPERATURE, F - REAL GFLP0054
|
|
P - GIVEN OR CALCULATED PRESSURE, PSIA - REAL GFLP0055
|
|
VDF - GIVEN OR CALCULATED V/F - REAL GFLP0056
|
|
X - COMPONENT LIQUID MOL FRACTIONS - REAL ARRAY [0:N] GFLP0057
|
|
Y - COMPONENT VAPOR MOL FRACTIONS - REAL ARRAY [0:N] GFLP0058
|
|
GFLP0059
|
|
THE REFERENCE PARAMETER IS GFLP0060
|
|
ERRORGF - REFERENCE STATEMENT LABEL TO WHICH CONTROL IS GFLP0061
|
|
CHANGED IF THE LIMITS OF LIMITGF[] ARE EXCEEDED. GFLP0062
|
|
GFLP0063
|
|
THE PROCEDURES KNGAA, KIDEAL, KPOLY, PHIPART, ANT1, AND GFLP0064
|
|
KPICK MUST BE DECLARED PRIOR TO GFLASH. GFLP0065
|
|
THE PROCEDURES KNGAA, KIDEAL, KPOLY, PHIPART, AND ANT1 GFLP0066
|
|
MUST BE DECLARED PRIOR TO KPICK. GFLP0067
|
|
THE PROCEDURE ANT1 MUST BE DECLARED PRIOR TO KIDEAL. ; GFLP0068
|
|
GFLP0069
|
|
VALUE PICKGF, CALCPDC ; GFLP0070
|
|
REAL T, P, VDF ; GFLP0071
|
|
INTEGER PICKGF ; GFLP0072
|
|
BOOLEAN CALCPDC ; GFLP0073
|
|
LABEL ERRORGF ; GFLP0074
|
|
REAL ARRAY Z[0], LIMITGF[0], X[0], Y[0] ; GFLP0075
|
|
INTEGER ARRAY PICKK[0] ; GFLP0076
|
|
GFLP0077
|
|
BEGIN GFLP0078
|
|
REAL SUM1, SUM2, LLM, ULM, AVAL, CVAL, ZI, KI1V1, KI1, TOL ; GFLP0079
|
|
INTEGER I, N ; GFLP0080
|
|
BOOLEAN CALCT, CALCP, CALCVDF, OLEX, CALCPT, CALCPP ; GFLP0081
|
|
REAL ARRAY K, PKTP2[0:PICKK[0]] ; GFLP0082
|
|
LABEL GF1, GF2, GF3, GF4, GF5, GF6, GF7, GF8, GF9 ; GFLP0083
|
|
GFLP0084
|
|
COMMENT INITIAL CALCULATIONS ; GFLP0085
|
|
CALCPT ~ CALCPP ~ OLEX ~ FALSE ; N ~ PICKK[0] ; GFLP0086
|
|
CALCT ~ (PICKGF = 1) ; GFLP0087
|
|
CALCP ~ (PICKGF = 2) ; GFLP0088
|
|
CALCVDF ~ (PICKGF = 3) ; GFLP0089
|
|
GFLP0090
|
|
COMMENT SET-UP OF VARIABLES FOR T CALCULATION IF CALCT = TRUE, GFLP0091
|
|
FOR P CALCULATION IF CALCP = TRUE, OR FOR VDF CALCULATION GFLP0092
|
|
IF CALCVDF = TRUE ; GFLP0093
|
|
IF CALCT THEN GFLP0094
|
|
BEGIN GFLP0095
|
|
CALCPT ~ TRUE ; GFLP0096
|
|
LLM ~ LIMITGF[1] ; ULM ~ LIMITGF[2] ; GFLP0097
|
|
AVAL ~ T ; TOL ~ 0.001 GFLP0098
|
|
END GFLP0099
|
|
ELSE IF CALCP THEN GFLP0100
|
|
BEGIN GFLP0101
|
|
CALCPP ~ TRUE ; GFLP0102
|
|
LLM ~ LIMITGF[3] ; ULM ~ LIMITGF[4] ; GFLP0103
|
|
AVAL ~ P ; TOL ~ 0.001 GFLP0104
|
|
END GFLP0105
|
|
ELSE GFLP0106
|
|
BEGIN GFLP0107
|
|
LLM ~ 0 ; ULM ~ 1.0 ; AVAL ~ VDF ; TOL ~ 1.0@-6 GFLP0108
|
|
END ; GFLP0109
|
|
GFLP0110
|
|
COMMENT ITERATE HERE TO CALCULATE T OR P ; GFLP0111
|
|
GF1: KPICK (T, P, PICKK, CALCPT, CALCPP, CALCPDC, K, PKTP2, GFLP0112
|
|
PKTP2) ; GFLP0113
|
|
IF PICKGF ! 2 THEN CALCPDC ~ FALSE ; GFLP0114
|
|
GFLP0115
|
|
COMMENT DETERMINE IF TWO PHASES EXIST IN VDF CALCULATION ; GFLP0116
|
|
IF CALCVDF THEN GFLP0117
|
|
BEGIN GFLP0118
|
|
SUM1 ~ SUM2 ~ 0 ; GFLP0119
|
|
FOR I ~ 1 STEP 1 UNTIL N DO GFLP0120
|
|
BEGIN GFLP0121
|
|
SUM1 ~ Z[I]/K[I] + SUM1 ; GFLP0122
|
|
SUM2 ~ Z[I] | K[I] + SUM2 ; GFLP0123
|
|
PKTP2[I] ~ -(K[I] - 1.0)*2 GFLP0124
|
|
END ; GFLP0125
|
|
IF SUM1 > 1.0 THEN GO TO GF2 ; GFLP0126
|
|
GFLP0127
|
|
COMMENT VAPOR PHASE ONLY ; GFLP0128
|
|
VDF ~ 1.0 ; GO TO GF9 ; GFLP0129
|
|
GF2: IF SUM2 > 1.0 THEN GO TO GF3 ; GFLP0130
|
|
GFLP0131
|
|
COMMENT LIQUID PHASE ONLY ; GFLP0132
|
|
VDF ~ 0 ; GO TO GF9 GFLP0133
|
|
END ; GFLP0134
|
|
GFLP0135
|
|
COMMENT ITERATE HERE TO CALCULATE VDF, ALSO CONTINUE T AND P GFLP0136
|
|
CALCULATION. NEWTON-RAPHSON METHOD IS USED IN THE GFLP0137
|
|
CONVERGENCE SCHEME. ; GFLP0138
|
|
GF3: SUM1 ~ SUM2 ~ 0 ; GFLP0139
|
|
FOR I ~ 1 STEP 1 UNTIL N DO GFLP0140
|
|
BEGIN GFLP0141
|
|
ZI ~ Z[I] ; KI1 ~ K[I] - 1.0 ; GFLP0142
|
|
KI1V1 ~ KI1 | VDF + 1.0 ; GFLP0143
|
|
SUM1 ~ ZI | KI1/KI1V1 + SUM1 ; GFLP0144
|
|
SUM2 ~ PKTP2[I] | ZI/KI1V1*2 + SUM2 GFLP0145
|
|
END ; GFLP0146
|
|
CVAL ~ AVAL - SUM1/SUM2 ; GFLP0147
|
|
IF CVAL < LLM THEN GO TO GF5 ; GFLP0148
|
|
IF CVAL > ULM THEN GO TO GF7 ; GFLP0149
|
|
GFLP0150
|
|
COMMENT TEST IF TOLERENCE IS MET. RECYCLE IF NOT ; GFLP0151
|
|
IF TOL > ABS(SUM1) THEN GO TO GF8 ; GFLP0152
|
|
AVAL ~ CVAL ; GFLP0153
|
|
GF4: IF CALCT THEN T ~ AVAL GFLP0154
|
|
ELSE IF CALCP THEN P ~ AVAL GFLP0155
|
|
ELSE GFLP0156
|
|
BEGIN GFLP0157
|
|
VDF ~ AVAL ; GO TO GF3 GFLP0158
|
|
END ; GFLP0159
|
|
GO TO GF1 ; GFLP0160
|
|
GFLP0161
|
|
COMMENT TEST IF T, P, OR VDF EXCEEDS ITS LIMITS ; GFLP0162
|
|
GF5: IF AVAL = LLM THEN GFLP0163
|
|
BEGIN GFLP0164
|
|
IF NOT CALCP THEN GO TO ERRORGF ; GFLP0165
|
|
IF OLEX THEN GO TO ERRORGF ; GFLP0166
|
|
OLEX ~ TRUE ; AVAL ~ ULM - 50.0 ; GO TO GF4 GFLP0167
|
|
END ; GFLP0168
|
|
GF6: AVAL ~ LLM ; GO TO GF4 ; GFLP0169
|
|
GF7: IF AVAL = ULM THEN GFLP0170
|
|
BEGIN GFLP0171
|
|
IF NOT CALCP THEN GO TO ERRORGF ; GFLP0172
|
|
IF OLEX THEN GO TO ERRORGF ; GFLP0173
|
|
OLEX ~ TRUE ; AVAL ~ LLM + 50.0 ; GO TO GF4 GFLP0174
|
|
END ; GFLP0175
|
|
AVAL ~ ULM ; GO TO GF4 ; GFLP0176
|
|
GFLP0177
|
|
COMMENT CALCULATE COMPOSITIONS ; GFLP0178
|
|
GF8: IF CALCT THEN T ~ CVAL GFLP0179
|
|
ELSE IF CALCP THEN P ~ CVAL GFLP0180
|
|
ELSE VDF ~ CVAL ; GFLP0181
|
|
GF9: FOR I ~ 1 STEP 1 UNTIL N DO GFLP0182
|
|
BEGIN GFLP0183
|
|
IF VDF = 1.0 THEN X[I] ~ 0 GFLP0184
|
|
ELSE X[I] ~ Z[I]/((K[I] - 1.0) | VDF + 1.0) ; GFLP0185
|
|
IF VDF = 0 THEN Y[I] ~ 0 GFLP0186
|
|
ELSE IF VDF = 1.0 THEN Y[I] ~ Z[I] GFLP0187
|
|
ELSE Y[I] ~ K[I] | X[I] GFLP0188
|
|
END GFLP0189
|
|
GFLP0190
|
|
END GFLASH ; GFLP0191
|