1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-02-28 16:59:21 +00:00
Files
retro-software.B5500-software/CUBE-Library-13/Files/PTS074.alg
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

1122 lines
88 KiB
Plaintext

BEGIN BDIS0001
COMMENT BATCH DISTILLATION PROGRAM BDIS0002
BY DONALD L. VOSS BDIS0003
PROFESSIONAL SERVICES GROUP, BURROUGHS CORPORATION BDIS0004
CARD SEQUENCE CODE STARTS WITH BDIS0001. BDIS0005
FIRST RELEASE DATE 10-28-64 ; BDIS0006
BDIS0007
REAL P, TDIFF, STOP, QM, POIR1, R, DELQ1, DELQM, SUMD, SUMR, BDIS0008
DELD ; BDIS0009
INTEGER M, N, KEY, MAXIT, I, J, IDNO, STIME1, DAY, YEAR, IPOIR1, BDIS0010
ELMIN, ELSEC, PRMIN, PRSEC, IOMIN, IOSEC, STIME2, STIME3, BDIS0011
READF, READH, READIE, READCD, POPD, POCD, POIR, POIR2 ; BDIS0012
ALPHA MONTH ; BDIS0013
LABEL BD1, EOFCARD ; BDIS0014
REAL ARRAY TOL[0:3], LIMIT[0:2], SPEC[0:3] ; BDIS0015
BOOLEAN ARRAY CALCDHV[0:3] ; BDIS0016
ALPHA ARRAY ID[0:12] ; BDIS0017
FILE IN FIN1 (2, 10) ; BDIS0018
FILE OUT FOUT1 1 (2, 15) ; BDIS0019
FORMAT IN FNAME (2A6, 3F20.10), BDIS0020
FKH (E17.8, 3E16.8, X1, A2, 2A6) ; BDIS0021
FORMAT OUT FID1 ("BATCH DISTILLATION PROGRAM" // "INPUT DATA PRINT-",BDIS0022
"OUT" // "PROBLEM NUMBER", I15 BDIS0023
/// 6A6 // 6A6 /// "TOTAL NUMBER OF TRAYS", I11, BDIS0024
X7,"COLUMN PRESSURE, PSIA",F15.3//"TOTAL NUMBER OF ",BDIS0025
"COMPONENTS",I6,X7,"TEMPERATURE TOLERANCE, F.", BDIS0026
F11.3//"KEY COMPONENT NUMBER",I12,X7,"MOL FRACTION ",BDIS0027
"TOLERANCE, %",F11.3//"MAX. NO. OF ITERATIONS",I10,X7BDIS0028
, "HOLDUP TOLERANCE, %", F17.3//"LOWER LIMIT ON T, ",BDIS0029
"F.", X7, I5, X7, "UPPER LIMIT ON T, F.", X9, I7 /// BDIS0030
"PROBLEM SPECIFICATIONS: % OF INITIAL FEED WITH", BDIS0031
"DRAWN", F8.1, // X27, "REFLUX RATIO, L1/D", F17.1), BDIS0032
FID3 (X27, "MAXIMUM REFLUX RATIO, L1/D", F9.1 // X27, BDIS0033
"SPECIFICATION COMPONENT NO.", I6), BDIS0034
FID4 (X27, "% OF INITIAL FEED WITHDRAWN", F8.1 // X27, BDIS0035
"NO. OF CYCLES", I20), BDIS0036
FID5 (// "FEED MOLS, TRAY HOLDUP (CU. FT.), AND INITIAL ",BDIS0037
"ESTIMATES:"//X4,"HUM[M] =",F10.4," MOLS T[1] =", BDIS0038
F6.1, " F. T[M] = ", F6.1, " F." // X6, "I", X9, BDIS0039
"F[I]", X11, "X[M,I]", X9, "J", X7, "HUV[J]"), BDIS0040
FID6 (I7, F16.4, E16.5, I8, F14.5), BDIS0041
FID7 (I7, F16.4, E16.5), BDIS0042
FID8 (X39, I8, F14.5), BDIS0043
FID9 ("COMPONENT K-RATIO AND ENTHALPY DATA:" // BDIS0044
(2A6, X6, "TC[I] =", F9.3, X5, "PC[I] =", F9.3, X5, BDIS0045
"S[I] =", F10.5 / 7(4E16.8, X1, A2, 2A6 / ) BDIS0046
4E16.8, X1, A2, 2A6 / 4E16.8, X1, A2, 2A6 // )), BDIS0047
FERR (// "THIS PROBLEM WAS TERMINATED DUE TO THE", BDIS0048
" FOLLOWING REASON:" / ), BDIS0049
FERR1 (/ "THE MATRIX USED IN THE STARTUP PROCEDURE IS ", BDIS0050
"SINGULAR OR ILL-CONDITIONED" / ), BDIS0051
FERR2 (/ "THE MAXIMUM NUMBER OF ITERATIONS ALLOWED IN ", BDIS0052
"THE STARTUP PROCEDURE WAS EXCEEDED" / ), BDIS0053
FERR3 ( / "THE TEMPERATURE LIMITS WERE EXCEEDED IN THE ", BDIS0054
"TRANSIENT PROCEDURE"), BDIS0055
FSS1 ("BATCH DISTILLATION PROGRAM" // "PRINT-OUT OF ", BDIS0056
"STEADY-STATE CONDITIONS AT TOTAL REFLUX" // BDIS0057
"PROBLEM NUMBER", I15 /// 6A6 // 6A6 /// "T[J]:" / BDIS0058
(8F10.2)), BDIS0059
FSS2 (// "HUM[J]:" / (8F10.4)), BDIS0060
FSS3 (// "X[J,I]:"), BDIS0061
FSS4 (5E15.7), BDIS0062
FFP1 ("BATCH DISTILLATION PROGRAM" // "PRINT-OUT OF ", BDIS0063
"FINAL RESULTS AT END OF DISTILLATION" // BDIS0064
"PROBLEM NUMBER", I15 /// 6A6 // 6A6 /// BDIS0065
"DATE", X17, A6, I3, ",", I5 // "ELAPSED TIME", BDIS0066
I10, " MIN.,", I3, " SEC." // "PROCESSOR TIME", I8, BDIS0067
" MIN.," I3, " SEC." // "I/O TIME", I14, " MIN.,", BDIS0068
I3, " SEC." // BDIS0069
BDIS0070
BDIS0071
/" TRAY TEMPERATURE TRAY LIQUID TRAY LIQUI",BDIS0072
"D X SUMMATION Y SUMMATION" / X10, "OF TRAY, ",BDIS0073
"F. HOLDUP, MOLS HOLDUP,CU.FT. ON TRAY", BDIS0074
" ON TRAY"), BDIS0075
FFP2 (I4, F15.2, X1, 2F14.4, X2, 2F14.7), BDIS0076
FFP3 (/// "TOTAL MOLS OF DISTILLATE WITHDRAWN: ", F15.4, BDIS0077
/// " COMPONENT MOL FRACTIONS OF TOTAL DISTILLATE ", BDIS0078
"WITHDRAWN FROM COLUMN:" / (5E15.7)), BDIS0079
FFP4 (/// " COMPONENT MOLS OF TOTAL DISTILLATE WITHDRAWN",BDIS0080
" FROM COLUMN:" / (5F15.3)), BDIS0081
FFP5 (/// " TRAY LIQUID MOL FRACTIONS, X[J,I]:"), BDIS0082
FFP6 (5E15.7), BDIS0083
FFP7 (/// " TRAY VAPOR MOL FRACTIONS, Y[J,I]:") ; BDIS0084
BDIS0085
PROCEDURE DATE (MONTH, DAY, YEAR) ; BDIS0086
COMMENT THIS PROCEDURE CALCULATES THE MONTH, DAY OF THE MONTH, BDIS0087
AND YEAR FROM THE TIME(0) FUNCTION. MONTH IS ALPHA. DAY BDIS0088
AND YEAR ARE INTEGERS. ; BDIS0089
ALPHA MONTH ; BDIS0090
INTEGER DAY, YEAR ; BDIS0091
BEGIN BDIS0092
INTEGER T1, T6, T7, T9, DAZ, X ; BDIS0093
INTEGER ARRAY MESS[0:13] ; BDIS0094
ALPHA ARRAY MO [1:12] ; BDIS0095
INTEGER PROCEDURE ICV1 (SO, CH, SGN, LGTH) ; BDIS0096
VALUE CH, SGN, LGTH ; BDIS0097
INTEGER CH, SGN, LGTH ; BDIS0098
REAL SO ; BDIS0099
BEGIN BDIS0100
INTEGER EDE ; BDIS0101
INTEGER STREAM PROCEDURE IC8 (SO, CH, LGTH) ; BDIS0102
VALUE CH, LGTH ; BDIS0103
BEGIN BDIS0104
DI ~ LOC IC8 ; SI ~ SO ; SI ~ SI + CH ; BDIS0105
DS ~ LGTH OCT BDIS0106
END OF IC8 PROCEDURE ; BDIS0107
ICV1 ~ IC8 (SO, CH, LGTH) BDIS0108
END OF ICV1 PROCEDURE ; BDIS0109
FILL MO[*] WITH " JAN.", " FEB.", " MARCH", " APRIL", BDIS0110
" MAY", " JUNE", " JULY", "AUGUST", " SEPT.", BDIS0111
" OCT.", " NOV.", " DEC." ; BDIS0112
T6 ~ TIME(0) ; BDIS0113
T6 ~ ICV1 (T6, 3, 0, 5) ; BDIS0114
T1 ~ T6 MOD 1000 ; BDIS0115
IF T1 > 368 THEN T1 ~ 1 ; BDIS0116
T9 ~ T6 DIV 1000 ; BDIS0117
X ~ IF (T9 MOD 4) = 0 THEN 1 ELSE 0 ; BDIS0118
MESS[0] ~ 0 ; BDIS0119
MESS[1] ~ 31 ; MESS[2] ~ 59 + X ; BDIS0120
MESS[3] ~ 90 + X ; MESS[4] ~ 120 + X ; BDIS0121
MESS[5] ~ 151 + X ; MESS[6] ~ 181 + X ; BDIS0122
MESS[7] ~ 212 + X ; MESS[8] ~ 243 + X ; BDIS0123
MESS[9] ~ 273 + X ; MESS[10] ~ 304 + X ; BDIS0124
MESS[11] ~ 334 + X ; MESS[12] ~ 367 ; BDIS0125
MESS[13] ~ 1000 ; BDIS0126
X ~ 0 ; WHILE T1 > MESS[X] DO BDIS0127
BEGIN BDIS0128
X ~ X + 1 ; T7 ~ X BDIS0129
END ; BDIS0130
DAZ ~ T1 - MESS[X-1] ; BDIS0131
MONTH ~ MO[T7] ; DAY ~ DAZ ; YEAR ~ T9 + 1900 BDIS0132
END OF DATE PROCEDURE ; BDIS0133
BDIS0134
COMMENT DECLARATIONS AND FILL STATEMENTS FOR THE GLOBAL ARRAYS BDIS0135
OF THE HVPCOR PROCEDURE ; BDIS0136
REAL ARRAY HVC3, HVC4, HVC7, HVC8[0:2,0:6], HVC5, HVC9[0:49], BDIS0137
TR1S3, TR1S4[0:2] ; BDIS0138
INTEGER ARRAY HVC2[0:2] ; BDIS0139
FILL HVC2[*] WITH 0, 6, 6 ;BDIS0140
FILL HVC3[1,*] WITH 0.0, -1.1671875, -1.4894278, BDIS0141
-1.1559073, -1.3616489, -1.2883117, -1.3995702 ;BDIS0142
FILL HVC3[2,*] WITH 0.0, -1.2935283, -2.9748991, BDIS0143
-2.4260566, -1.8061761, -1.5492552, -1.4278796 ;BDIS0144
FILL HVC4[1,*] WITH 0.0, 0.0, -0.10587647, BDIS0145
-0.15860289, -0.15248362, -0.11896855, -0.12173253 ;BDIS0146
FILL HVC4[2,*] WITH 0.0, 0.0, -1.7678550, BDIS0147
-1.8686137, -1.2165188, -0.67716468, -0.61318349 ;BDIS0148
FILL HVC5[*] WITH 0.0, -0.68264275, -1.0872225, BDIS0149
0.047697762, -0.024306088, -0.0090858597, -0.001729015,BDIS0150
-0.0027521429, -2.2596067, 0.11921812, -0.046204775,BDIS0151
0.014351991, -0.023163497, 0.025471511, 0.013133272,BDIS0152
0.78097570, -0.17094139, 0.098209577, -0.044902667,BDIS0153
0.015565173, -0.010983720, 0.013622787, 0.28893313, BDIS0154
-0.25370399, 0.0052142570, 0.071616235, 0.046127269,BDIS0155
-0.11245569, -0.067557734, -2.5307361, -0.039864924,BDIS0156
-0.12607210, 0.13765330, -0.039550505, 0.0075315843,BDIS0157
-0.21354763, 2.2361128, -0.36080301, 0.49691013, BDIS0158
-0.41863117, -0.076349532, 0.43597890, -0.40507180, BDIS0159
0.26338300, 0.0083735620, -0.016716827, -0.016240225, BDIS0160
0.10507060, -0.12106818, 0.025741676 ; BDIS0161
FILL HVC7[1,*] WITH 0.0, -1.2729166, -1.6239677, BDIS0162
-1.5317194, -1.4788939, -1.4345722, -1.5801600 ;BDIS0163
FILL HVC7[2,*] WITH 0.0, -6.5718750, -12.149681, BDIS0164
-11.497100, -11.065928, -10.278189, -10.667091 ;BDIS0165
FILL HVC8[1,*] WITH 0.0, 0.0, -0.090954100,BDIS0166
-0.056326597, -0.075512113, -0.071434341, -0.063708461;BDIS0167
FILL HVC8[2,*] WITH 0.0, 0.0, -41.217490, BDIS0168
-22.312134, -21.043415, -20.693912, -26.268748 ;BDIS0169
FILL HVC9[*] WITH 0.0, 39.745103, 6.3744973, BDIS0170
-0.11410040, -0.0036340168, -8.2198154@-5, -2.1580705@-5, BDIS0171
2.9001251@-6, -44.671381, -6.7048192, 0.073453717, BDIS0172
-0.0066641733, 0.0017309322, -9.824585@-5, 1.343254@-5, BDIS0173
41.351011, 4.5915409, -0.029361153, 0.0018827038,BDIS0174
-0.0040032069, 7.6001770@-4, -9.750253@-5, -27.356096, BDIS0175
0.97045128, -0.28080321, 0.032749281, 0.0074142633,BDIS0176
-0.0017002214, 4.3344771@-4, 39.904305, -4.4069227, BDIS0177
0.52546214, -0.092967052, 0.0057307519, 0.0034063759,BDIS0178
-1.2990048@-4, 46.719260, 8.5852725, -0.62558932, BDIS0179
-0.011829404, -0.041450650, 0.014043180, -9.8770289@-4,BDIS0180
-3.7232051, -0.30920320, -0.0049008792, 0.0011831959,BDIS0181
9.1663621@-4, -1.8376908@-4, 3.8674416@-5 ;BDIS0182
BDIS0183
COMMENT READ IN DATA SET 1 ; BDIS0184
BD1: STIME1 ~ TIME(1) ; STIME2 ~ TIME(2) ; BDIS0185
STIME3 ~ TIME(3) ; BDIS0186
READ (FIN1, /, FOR I ~ 1 STEP 1 UNTIL 12 DO ID[I], BDIS0187
IDNO, M, N, KEY, MAXIT, P, TOL[1], TOL[2], TOL[3], BDIS0188
LIMIT[1], LIMIT[2], POPD, POCD, POIR, IPOIR1, POIR2, QM, BDIS0189
SPEC[1], SPEC[2] ) [EOFCARD] ; BDIS0190
BDIS0191
BEGIN BDIS0192
COMMENT START OF BLOCK 2 OF PROGRAM ; BDIS0193
OWN REAL ARRAY F, S, TC, PC[0:N], BDIS0194
HUM, HUV, DELL, DELV, T[0:M], BDIS0195
X, Y[0:M,0:N] ; BDIS0196
OWN ALPHA ARRAY NAME1, NAME2[0:N], AHV, AHL[0:N,0:3], AK[0:N,0:7,0:3] ; BDIS0197
LABEL BD2, ERR1, ERR2, ERR3 ; BDIS0198
BDIS0199
COMMENT GLOBAL ARRAYS FOR THE KNGAA PROCEDURE ; BDIS0200
OWN REAL ARRAY KC1[0:N,0:28], KC15[0:N,0:4], KC16[0:7] ; BDIS0201
BDIS0202
COMMENT GLOBAL ARRAY FOR THE HVPCOR PROCEDURE ; BDIS0203
OWN REAL ARRAY HVC1[0:N,0:4] ; BDIS0204
BDIS0205
COMMENT GLOBAL ARRAY FOR THE HLIQ PROCEDURE ; BDIS0206
OWN REAL ARRAY HLC5[0:N,0:4] ; BDIS0207
BDIS0208
COMMENT GLOBAL ARRAYS FOR THE PHIPART PROCEDURE ; BDIS0209
INTEGER ARRAY TI1S1, TI1S2[0:3], TI1S3[0:2] ; BDIS0210
BDIS0211
COMMENT GLOBAL ARRAY FOR THE PHIPART AND TRANSIENT PROCEDURES ; BDIS0212
REAL ARRAY TR1S2 [0: IF (M>N-1 AND M>2) THEN M ELSE IF N-1>2 THEN BDIS0213
N-1 ELSE 2] ; BDIS0214
BDIS0215
COMMENT GLOBAL ARRAY FOR THE KNGAA, PHIPART, AND TRANSIENT BDIS0216
PROCEDURES ; BDIS0217
REAL ARRAY TR1S1 [0:IF (M>N-1 AND M>14) THEN M ELSE IF 14>N-1 THEN 14BDIS0218
ELSE N-1] ; BDIS0219
BDIS0220
COMMENT GLOBAL ARRAYS FOR THE STARTUP PROCEDURE ; BDIS0221
REAL ARRAY PHUMT[0:M,0:M], PHUMX[0:M,0:N], A[0:M+N,0:M+N], B, BDIS0222
C[0:M+N] ; BDIS0223
BDIS0224
COMMENT GLOBAL ARRAYS FOR THE TRANSIENT PROCEDURE ; BDIS0225
REAL ARRAY HV, HL, PHLT[0:M], PHLX[0:M,0:N], D[0:N] ; BDIS0226
BDIS0227
COMMENT GLOBAL ARRAYS FOR THE STARTUP AND TRANSIENT PROCEDURES ; BDIS0228
REAL ARRAY K, PKT[0:M,0:N], SBAR[0:M] ; BDIS0229
BDIS0230
COMMENT . . BDIS0231
. . BDIS0232
. . BDIS0233
. . BDIS0234
. . BDIS0235
THE KNGAA, PHIPART, HLIQ, HVPCOR, AND SOLVE PROCEDURES BDIS0236
MUST BE INSERTED HERE, IN THAT ORDER. BDIS0237
. . BDIS0238
. . BDIS0239
. . BDIS0240
. . BDIS0241
. . ;BDIS0242
BDIS0243
PROCEDURE STARTUP (M, N, KEY, P, F, S, HUV, TOL, LIMIT, MAXIT, POIR,BDIS0244
T, HUM, X, ERR1, ERR2) ; BDIS0245
BDIS0246
COMMENT THIS PROCEDURE CALCULATES THE STEADY-STATE CONDITIONS OF BDIS0247
A BATCH DISTILLATION COLUMN OPERATING AT TOTAL REFLUX. BDIS0248
THE TEMPERATURE, COMPONENT MOL FRACTIONS, AND MOLS OF BDIS0249
LIQUID HOLDUP ON EACH TRAY ARE CALCULATED BY MEANS OF A BDIS0250
NEWTON-RAPHSON TECHNIQUE. BDIS0251
BDIS0252
THE INPUT PARAMETERS ARE BDIS0253
M - TOTAL NUMBER OF TRAYS - INTEGER BDIS0254
N - TOTAL NUMBER OF COMPONENTS - INTEGER BDIS0255
KEY - KEY COMPONENT NUMBER - INTEGER BDIS0256
P - COLUMN PRESSURE, PSIA - REAL BDIS0257
F - COMPONENT FEED MOLS - REAL ARRAY [0:N], WHERE BDIS0258
F[0] = TOTAL MOLS OF FEED. BDIS0259
S - COMPONENT LIQUID MOLAR VOLUMES, CU. FT./MOL - BDIS0260
REAL ARRAY[0:N] BDIS0261
HUV - LIQUID HOLDUP ON TRAYS, CU. FT. - REAL ARRAY[0:M-1]BDIS0262
TOL - TOLERANCES ON VARIABLES - REAL ARRAY [0:3] BDIS0263
TOL[1] = TRAY TEMPERATURES, DEG. F. BDIS0264
TOL[2] = REBOILER LIQUID MOL FRACTIONS, PER CENT BDIS0265
TOL[3] = REBOILER LIQUID MOLAR HOLDUP, PER CENT BDIS0266
LIMIT - TEMPERATURE LIMITS - REAL ARRAY [0:2] BDIS0267
LIMIT[1] = MINIMUM T, F. BDIS0268
LIMIT[2] = MAXIMUM T, F. BDIS0269
MAXIT - MAXIMUM NUMBER OF ITERATIONS ALLOWED - INTEGER BDIS0270
POIR - INTEGER. IF = 1, PRINT INTERMEDIATE RESULTS. BDIS0271
T - INITIAL ESTIMATES OF THE TRAY TEMPERATURES, BDIS0272
DEG. F. - REAL ARRAY [0:M] BDIS0273
HUM[M] - INITIAL ESTIMATE OF REBOILER LIQUID HOLDUP, MOLS BDIS0274
(SEE OUTPUT PARAMETERS) BDIS0275
X[M,I] - INITIAL ESTIMATES OF REBOILER LIQUID MOL BDIS0276
MOL FRACTIONS (SEE OUTPUT PARAMETERS) BDIS0277
BDIS0278
IN ADDITION, THE REAL ARRAYS A[0:M+N,0:M+N], B, C[0:M+N], BDIS0279
K, PKT[0:M,0:N], PHUMT[0:M,0:M], PHUMX[0:M,0:N], AND BDIS0280
SBAR[0:M] PLUS THE GLOBAL ARRAYS OF KNGAA ARE GLOBAL BDIS0281
TO STARTUP. BDIS0282
BDIS0283
ALSO, THE OUTPUT FILE, FOUT1, MUST BE DECLARED GLOBAL TO BDIS0284
STARTUP. IT IS USED TO PRINT THE INTERMEDIATE RESULTS. BDIS0285
BDIS0286
THE OUTPUT PARAMETERS ARE BDIS0287
T - TRAY TEMPERATURES, DEG. F. - REAL ARRAY [0:M] BDIS0288
HUM - LIQUID HOLDUP ON TRAYS, MOLS - REAL ARRAY [0:M] BDIS0289
X - LIQUID TRAY COMPOSITIONS, MOL FRACTIONS - BDIS0290
REAL ARRAY [0:M,0:N] BDIS0291
BDIS0292
THE REFERENCE PARAMETERS ARE BDIS0293
ERR1 - REFERENCE STATEMENT LABEL TO WHICH CONTROL IS BDIS0294
CHANGED IF THE MATRIX USED IN STARTUP IS SINGULAR OR BDIS0295
ILL-CONDITIONED. BDIS0296
ERR2 - REFERENCE STATEMENT LABEL TO WHICH CONTROL IS BDIS0297
CHANGED IF MAXIT IS EXCEEDED. BDIS0298
BDIS0299
THE PROCEDURES SOLVE AND KNGAA MUST BE DECLARED PRIOR TO BDIS0300
STARTUP. CARDS 0230 AND 0250 OF SOLVE WERE MODIFIED TO BDIS0301
REMOVE THE OWN TYPE. ; BDIS0302
BDIS0303
VALUE N, M, KEY, P, F, S, HUV, TOL, LIMIT, MAXIT, POIR ; BDIS0304
REAL P ; BDIS0305
INTEGER N, M, KEY, MAXIT ; BDIS0306
INTEGER POIR ; BDIS0307
REAL ARRAY F, S, HUV, TOL, LIMIT, T, HUM[0], X[0,0] ; BDIS0308
LABEL ERR1, ERR2 ; BDIS0309
BDIS0310
BEGIN BDIS0311
REAL SUMX, SUMSX, PXM, EPS, CORR, TCORR, MAXDT, MAXDH, BDIS0312
MAXDX, LHFAC, UHFAC, LXFAC, UXFAC ; BDIS0313
INTEGER I, J, Q, MPN, MPI, G, MPG, L, ITER ; BDIS0314
BOOLEAN CALCPDC, RECYCLE, IR2, IR3, IR4, IR5, IR6, IR7, IR13, BDIS0315
IR14, IR15, IR16 ; BDIS0316
LABEL S1, S2, S3, S4, S5 ; BDIS0317
FORMAT OUT FIR1 (//"CORRECTIONS MULTIPLIED BY", F8.4), BDIS0318
FIR2 ( "X[M,I] SET TO LOWER LIMIT"), BDIS0319
FIR3 ( "SUMX > 1 NORMALIZED" ), BDIS0320
FIR4 ( "T SET TO LOWER LIMIT" ), BDIS0321
FIR5 ( "T SET TO UPPER LIMIT" ), BDIS0322
FIR6 ( "DELTA T SET TO MAXDT"), BDIS0323
FIR7 ( "HUM[M] SET TO LOWER LIMIT"), BDIS0324
FIR8 (/ "PRINT-OUT OF INTERMEDIATE RESULTS IN STARTUP"), BDIS0325
FIR9 ( "HUM[M] = ", F10.4 / "X[M,I]:" / (8E15.5) ), BDIS0326
FIR10 ( "T[J]:" / (12F10.2) ), BDIS0327
FIR11( "OVER-ALL MATERIAL UNBALANCE =", E14.5 BDIS0328
/ "COMPONENT MATERIAL UNBALANCE:" / (8E15.5)), BDIS0329
FIR12 ( "EQUILIBRIUM CONDITION UNBALANCES:" / (8E15.5)), BDIS0330
FIR14 ( "X[M,I] SET TO UPPER LIMIT"), BDIS0331
FIR15 ( "DELTA X[M,I] SET TO MAXDX"), BDIS0332
FIR16 ( "DELTA HUM[M] SET TO MAXDH") ; BDIS0333
BDIS0334
RECYCLE ~ TRUE ; ITER ~ 1 ; BDIS0335
BDIS0336
COMMENT PRINT OUT INTERMEDIATE RESULTS HEADING IF POIR = 1 ; BDIS0337
IF POIR = 1 THEN BDIS0338
BEGIN BDIS0339
FOR I ~ 1 STEP 1 UNTIL M + N DO C[I] ~ 0 ; BDIS0340
IR2 ~ IR3 ~ IR4 ~ IR5 ~ IR6 ~ IR7 ~ FALSE ; BDIS0341
WRITE (FOUT1[PAGE]) ; WRITE (FOUT1, FIR8) BDIS0342
END OF HEADING PRINTOUT ; BDIS0343
BDIS0344
COMMENT SET LIMITS ON CORRECTIONS TO HUM[M], X[M,I], AND T[J] ; BDIS0345
MAXDT ~ 20.0 ; BDIS0346
MAXDX ~ 1.0 ; LXFAC ~ 1.0@-4 ; UXFAC ~ 0.9999 ; BDIS0347
LHFAC ~ 0.2 ; UHFAC ~ 0.9999 ; MAXDH ~ 0.5 | F[0];BDIS0348
BDIS0349
COMMENT CALCULATE K-RATIOS AND T DERIVATIVES ; BDIS0350
CALCPDC ~ TRUE ; BDIS0351
S1: FOR J ~ 1 STEP 1 UNTIL M DO BDIS0352
BEGIN BDIS0353
IF J = 2 THEN CALCPDC ~ FALSE ; BDIS0354
KNGAA (T[J], P, N, CALCPDC, TRUE, FALSE, K[J,*], PKT[J,*],BDIS0355
C) BDIS0356
END OF K AND PKT CALCULATIONS ; BDIS0357
BDIS0358
COMMENT CALCULATE LIQUID MOL FRACTIONS OF ALL PLATES EXCEPT M ; BDIS0359
FOR J ~ M-1 STEP -1 UNTIL 1 DO BDIS0360
FOR I ~ 1 STEP 1 UNTIL N DO BDIS0361
IF X[J,I] ~ (K[J+1,I] | X[J+1,I]) < 0 THEN BDIS0362
BEGIN BDIS0363
X[J,I] ~ 1.0@-20 ; IR2 ~ TRUE BDIS0364
END OF X CALCULATIONS ; BDIS0365
BDIS0366
COMMENT CALCULATE TRAY AVERAGE SPECIFIC VOLUME AND TRAY MOLAR BDIS0367
LIQUID HOLDUP ; BDIS0368
FOR J ~ 1 STEP 1 UNTIL M DO BDIS0369
BEGIN BDIS0370
SUMSX ~ 0 ; BDIS0371
FOR I ~ 1 STEP 1 UNTIL N DO BDIS0372
SUMSX ~ X[J,I] | S[I] + SUMSX ; BDIS0373
SBAR[J] ~ SUMSX ; BDIS0374
IF J ! M THEN HUM[J] ~ HUV[J] / SBAR[J] BDIS0375
END OF SBAR AND HUM CALCULATIONS ; BDIS0376
BDIS0377
COMMENT CALCULATE PHUMT ( PARTIAL DERIVATIVE OF TRAY MOLAR LIQUID BDIS0378
HOLDUP WITH RESPECT TO EACH TRAY TEMPERATURE), A1, A3, BDIS0379
AND A7, WHERE THE COEFFICIENT MATRIX, A, IS STRUCTURED BDIS0380
AS FOLLOWS: . A1,M|M . A2,M|(N-1) . A3,M|1 . BDIS0381
............................................. BDIS0382
. A4,(N-1)|M . A5,(N-1)|(N-1) . A6,(N-1)|1 . BDIS0383
............................................. BDIS0384
. A7,1|M . A8,1|(N-1) . A9,1|1 .;BDIS0385
MPN ~ M + N ; BDIS0386
FOR J ~ 1 STEP 1 UNTIL M DO BDIS0387
BEGIN BDIS0388
A[J,MPN] ~ 0 ; BDIS0389
FOR Q ~ 1 STEP 1 UNTIL M DO BDIS0390
BEGIN BDIS0391
IF J = 1 THEN A[MPN,Q] ~ 0 ; BDIS0392
IF Q > J THEN BDIS0393
BEGIN BDIS0394
IF Q ! 1 AND J ! M THEN BDIS0395
BEGIN BDIS0396
SUMX ~ 0 ; BDIS0397
FOR I ~ 1 STEP 1 UNTIL N DO IF I ! KEY THEN BDIS0398
SUMX ~ (X[J,I] | PKT[Q,I] | S[I] / (X[M,I] | K[Q,I]) - BDIS0399
X[J,KEY] | PKT[Q,KEY] | S[KEY] / (X[M,KEY] | K[Q,KEY])) | BDIS0400
X[M,I] + SUMX ; BDIS0401
PHUMT[J,Q] ~ - (X[J,KEY] | PKT[Q,KEY] | S[KEY] / (X[M,KEY]BDIS0402
| K[Q,KEY]) + SUMX) | HUM[J] / SBAR[J] ; BDIS0403
A[MPN,Q] ~ A[MPN,Q] - PHUMT[J,Q] BDIS0404
END OF PHUMT AND A7 CALCULATIONS FOR Q GREATER THEN J ; BDIS0405
GO TO S2 BDIS0406
END OF A1 CALCULATIONS FOR Q GREATER THAN J BDIS0407
ELSE IF Q = J THEN BDIS0408
BEGIN BDIS0409
PHUMT[J,Q] ~ 0 ; BDIS0410
GO TO S2 BDIS0411
END OF PHUMT AND A1 CALCULATIONS FOR Q EQUAL TO J BDIS0412
ELSE BDIS0413
BEGIN BDIS0414
PHUMT[J,Q] ~ 0 ; A[J,Q] ~ 0 BDIS0415
END OF PHUMT AND A1 CALCULATIONS FOR Q LESS THAN J ; BDIS0416
GO TO S3 ; BDIS0417
S2: SUMX ~ 0 ; BDIS0418
FOR I ~ 1 STEP 1 UNTIL N DO IF I ! KEY THEN BDIS0419
SUMX ~ X[J,I] | K[J,I] | PKT[Q,I] / K[Q,I] - X[J,KEY] | BDIS0420
K[J,KEY] | X[M,I] | PKT[Q,KEY] / (X[M,KEY] | K[Q,KEY]) + BDIS0421
SUMX ; BDIS0422
A[J,Q] ~ X[J,KEY] | K[J,KEY] | PKT[Q,KEY] / (X[M,KEY] | BDIS0423
K[Q,KEY]) + SUMX ; BDIS0424
S3: END OF A3 CALCULATIONS BDIS0425
END OF PHUMT A1 A3 AND A7 CALCULATIONS ; BDIS0426
BDIS0427
COMMENT CALCULATE A2, A4, A6, A8, AND PHUMX (PARTIAL DERIVATIVE BDIS0428
OF TRAY MOLAR LIQUID HOLDUP WITH RESPECT TO REBOILER MOL BDIS0429
FRACTION) ; BDIS0430
FOR I ~ 1 STEP 1 UNTIL N DO IF I ! KEY THEN BDIS0431
BEGIN BDIS0432
IF I < KEY THEN MPI ~ M + I ELSE MPI ~ M + I - 1 ; BDIS0433
A[MPN,MPI] ~ 0 ; BDIS0434
A[MPI,MPN] ~ - X[M,I] ; BDIS0435
FOR Q ~ M STEP -1 UNTIL 1 DO BDIS0436
BEGIN BDIS0437
A[Q,MPI] ~ K[Q,I] | X[Q,I] / X[M,I] - K[Q,KEY] | X[Q,KEY] BDIS0438
/ X[M,KEY]; BDIS0439
IF Q ! 1 THEN BDIS0440
BEGIN BDIS0441
SUMX ~ 0 ; BDIS0442
FOR J ~ Q - 1 STEP -1 UNTIL 1 DO BDIS0443
SUMX ~ HUM[J] | X[J,I] | PKT[Q,I] / K[Q,I] + X[J,I] | BDIS0444
PHUMT[J,Q] + SUMX ; BDIS0445
A[MPI,Q] ~ - SUMX BDIS0446
END OF A4 CALCULATIONS BDIS0447
ELSE A[MPI,Q] ~ 0 ; BDIS0448
PHUMX[Q,I] ~ (S[KEY] | X[Q,KEY] / X[M,KEY] - S[I] | X[Q,I]BDIS0449
/ X[M,I]) | HUM[Q] / SBAR[Q] ; BDIS0450
A[MPN,MPI] ~ A[MPN,MPI] - PHUMX[Q,I] BDIS0451
END OF PHUMX A2 AND A8 CALCULATIONS BDIS0452
END OF PHUMX A2 A4 A6 AND A8 CALCULATIONS ; BDIS0453
BDIS0454
COMMENT CALCULATE A5 ; BDIS0455
FOR I ~ 1 STEP 1 UNTIL N DO IF I ! KEY THEN BDIS0456
BEGIN BDIS0457
IF I < KEY THEN MPI ~ M + I ELSE MPI ~ M + I - 1 ; BDIS0458
FOR G ~ 1 STEP 1 UNTIL N DO IF G ! KEY THEN BDIS0459
BEGIN BDIS0460
SUMX ~ 0 ; BDIS0461
FOR J ~ M STEP -1 UNTIL 1 DO BDIS0462
BEGIN BDIS0463
IF I ! G THEN PXM ~ 0 ELSE PXM ~ X[J,I] / X[M,I] ; BDIS0464
SUMX ~ X[J,I] | PHUMX[J,G] + HUM[J] | PXM + SUMX BDIS0465
END ; BDIS0466
IF G < KEY THEN MPG ~ M + G ELSE MPG ~ M + G - 1 ; BDIS0467
A[MPI,MPG] ~ - SUMX BDIS0468
END BDIS0469
END OF A5 CALCULATIONS ; BDIS0470
BDIS0471
COMMENT CALCULATE A9 ; BDIS0472
A[MPN,MPN] ~ -1.0 ; BDIS0473
BDIS0474
COMMENT CALCULATE THE CONSTANT VECTOR ; BDIS0475
C[MPN] ~ 0 ; BDIS0476
FOR L ~ 1 STEP 1 UNTIL MPN DO BDIS0477
IF L { M THEN BDIS0478
BEGIN BDIS0479
C[MPN] ~ HUM[L] + C[MPN] ; SUMX ~ 0 ; BDIS0480
FOR I ~ 1 STEP 1 UNTIL N DO BDIS0481
SUMX ~ K[L,I] | X[L,I] + SUMX ; BDIS0482
C[L] ~ 1.0 - SUMX BDIS0483
END BDIS0484
ELSE IF Q ~ L - M ! KEY THEN BDIS0485
BEGIN BDIS0486
SUMX ~ 0 ; FOR J ~ 1 STEP 1 UNTIL M DO BDIS0487
SUMX ~ X[J,Q] | HUM[J] + SUMX ; BDIS0488
G ~ IF Q < KEY THEN L ELSE L - 1 ; BDIS0489
C[G] ~ SUMX - F[Q] BDIS0490
END ; BDIS0491
C[MPN] ~ C[MPN] - F[0] ; BDIS0492
BDIS0493
COMMENT PRINT OUT INTERMEDIATE RESULTS IF POIR = 1 ; BDIS0494
IF POIR = 1 THEN BDIS0495
BEGIN BDIS0496
IF CORR ! 0 THEN BDIS0497
WRITE (FOUT1, FIR1, CORR) ; BDIS0498
WRITE (FOUT1, FIR9, HUM[M], FOR I ~ 1 STEP 1 UNTIL N DO BDIS0499
X[M,I] ) ; BDIS0500
WRITE (FOUT1, FIR10, FOR J ~ 1 STEP 1 UNTIL M DO T[J] ) ; BDIS0501
WRITE (FOUT1, FIR11, C[M+N], FOR I ~ 1 STEP 1 UNTIL N-1 DOBDIS0502
C[M+I] ) ; BDIS0503
WRITE (FOUT1, FIR12, FOR J ~ 1 STEP 1 UNTIL M DO C[J] ) ; BDIS0504
IF IR2 THEN WRITE (FOUT1, FIR2) ; BDIS0505
IF IR3 THEN WRITE (FOUT1, FIR3) ; BDIS0506
IF IR4 THEN WRITE (FOUT1, FIR4) ; BDIS0507
IF IR5 THEN WRITE (FOUT1, FIR5) ; BDIS0508
IF IR6 THEN WRITE (FOUT1, FIR6) ; BDIS0509
IF IR7 THEN WRITE (FOUT1, FIR7) ; BDIS0510
IF IR14 THEN WRITE (FOUT1, FIR14) ; BDIS0511
IF IR15 THEN WRITE (FOUT1, FIR15) ; BDIS0512
IF IR16 THEN WRITE (FOUT1, FIR16) ; BDIS0513
IR2 ~ IR3 ~ IR4 ~ IR5 ~ IR6 ~ IR7 ~ IR13 ~ IR14 ~ IR15 ~ BDIS0514
IR16 ~ FALSE BDIS0515
END OF INTERMEDIATE PRINT OUT ; BDIS0516
BDIS0517
COMMENT EXIT IF TOLERANCES ARE MET ; BDIS0518
IF NOT RECYCLE THEN GO TO S5 ; BDIS0519
BDIS0520
COMMENT EXIT TO ERR2 IF MAXIT HAS BEEN EXCEEDED ; BDIS0521
IF ITER ~ ITER + 1 > MAXIT + 1 THEN GO TO ERR2 ; BDIS0522
BDIS0523
COMMENT ENTER THE SOLVE PROCEDURE TO CALCULATE THE CORRECTIONS TO BDIS0524
T[], X[M,], AND HUM[M] ; BDIS0525
EPS ~ (M + N) / 2.0 | 1.0 @ -10 ; BDIS0526
SOLVE (MPN, A, C, FALSE, 0, 0, EPS, B, ERR1, S4) ; BDIS0527
BDIS0528
COMMENT ADD CORRECTIONS TO PREVIOUS VALUES AND TEST IF TOLERANCES BDIS0529
ARE MET ; BDIS0530
S4: CORR ~ 1.0 ; RECYCLE ~ FALSE ; BDIS0531
FOR L ~ 1 STEP 1 UNTIL MPN DO BDIS0532
IF L { M THEN BDIS0533
BEGIN BDIS0534
IF TOL[1] < ABS(B[L]) THEN RECYCLE ~ TRUE ; BDIS0535
IF ABS(B[L]) > MAXDT THEN BDIS0536
BEGIN BDIS0537
IF TCORR ~ ABS(MAXDT / B[L]) < CORR THEN CORR ~ TCORR ; BDIS0538
IR6 ~ TRUE BDIS0539
END OF MAXDT TEST ; BDIS0540
IF T[L] + B[L] < LIMIT[1] THEN BDIS0541
BEGIN BDIS0542
IF TCORR ~ ABS((T[L] - LIMIT[1]) / B[L]) < CORR THEN BDIS0543
CORR ~ TCORR ; IR4 ~ TRUE BDIS0544
END OF TEST ON LOWER LIMIT OF T BDIS0545
ELSE IF T[L] + B[L] > LIMIT[2] THEN BDIS0546
BEGIN BDIS0547
IF TCORR ~ ABS((LIMIT[2] - T[L]) / B[L]) < CORR THEN BDIS0548
CORR ~ TCORR ; IR5 ~ TRUE BDIS0549
END OF TEST ON UPPER LIMIT OF T BDIS0550
END OF TOLERANCE TEST ON T BDIS0551
ELSE IF Q ~ L - M ! KEY THEN BDIS0552
BEGIN BDIS0553
G ~ IF Q < KEY THEN L ELSE L - 1 ; BDIS0554
IF ABS(B[G]) > MAXDX THEN BDIS0555
BEGIN BDIS0556
IF TCORR ~ ABS(MAXDX / B[G]) < CORR THEN CORR ~ TCORR ; BDIS0557
IR15 ~ TRUE BDIS0558
END OF MAXDX TEST; BDIS0559
IF X[M,Q] + B[G] { 0 THEN BDIS0560
BEGIN BDIS0561
IF TCORR ~ ABS(X[M,Q] | (1.0 - LXFAC) / B[G]) < CORR THEN BDIS0562
CORR ~ TCORR ; IR2 ~ TRUE BDIS0563
END OF TEST FOR NEGATIVE X VALUES ; BDIS0564
IF X[M,Q] + B[G] } 1.0 THEN BDIS0565
BEGIN BDIS0566
IF TCORR ~ ABS((1.0 - X[M,Q]) | UXFAC / B[G]) < CORR THEN BDIS0567
CORR ~ TCORR ; IR14 ~ TRUE BDIS0568
END OF TEST FOR X GREATER THAN OR EQUAL TO 1 ; BDIS0569
IF TOL[2] < ABS(B[G] / X[M,Q] | 100.0) THEN RECYCLE ~ TRUEBDIS0570
END OF TOLERANCE TEST ON X ; BDIS0571
IF ABS(B[MPN]) > MAXDH THEN BDIS0572
BEGIN BDIS0573
IF TCORR ~ ABS(MAXDH / B[MPN]) < CORR THEN BDIS0574
CORR ~ TCORR ; IR16 ~ TRUE BDIS0575
END OF MAXDH TEST ; BDIS0576
IF HUM[M] + B[MPN] { 0 THEN BDIS0577
BEGIN BDIS0578
IF TCORR ~ ABS(HUM[M] | (1.0 - LHFAC) / B[MPN]) < CORR BDIS0579
THEN CORR ~ TCORR ; IR7 ~ TRUE BDIS0580
END OF TEST FOR NEGATIVE HUM ; BDIS0581
IF TOL[3] < ABS (B[MPN] / HUM[M] | 100.0) THEN BDIS0582
RECYCLE ~ TRUE ; BDIS0583
FOR L ~ 1 STEP 1 UNTIL MPN DO BDIS0584
IF L { M THEN T[L] ~ T[L] + B[L] | CORR BDIS0585
ELSE IF Q ~ (L-M) ! KEY THEN BDIS0586
BEGIN BDIS0587
G ~ IF Q < KEY THEN L ELSE L-1 ; BDIS0588
X[M,Q] ~ X[M,Q] + B[G] | CORR BDIS0589
END ; BDIS0590
HUM[M] ~ HUM[M] + B[MPN] | CORR ; BDIS0591
BDIS0592
COMMENT CALCULATE X[M,KEY] ; BDIS0593
SUMX ~ 0 ; BDIS0594
FOR I ~ 1 STEP 1 UNTIL N DO IF I ! KEY THEN BDIS0595
SUMX ~ X[M,I] + SUMX ; BDIS0596
IF SUMX > 1.0 THEN BDIS0597
BEGIN BDIS0598
X[M,KEY] ~ 1.0@-20 ; IR3 ~ TRUE ; BDIS0599
FOR I ~ 1 STEP 1 UNTIL N DO IF I ! KEY THEN BDIS0600
X[M,I] ~ X[M,I] / SUMX BDIS0601
END BDIS0602
ELSE X[M,KEY] ~ 1.0 - SUMX ; BDIS0603
GO TO S1 ; BDIS0604
BDIS0605
S5: END OF STARTUP PROCEDURE ; BDIS0606
PROCEDURE TRANSIENT (M, N, KEY, P, TC, PC, S, LIMIT, STOP, QM, BDIS0607
POIR1, POIR2, R, HUM, T, X, Y, DELL, DELV, DELQ1, DELQM, BDIS0608
DELD, D, SUMD, SUMR, SBAR, ERR1) ; BDIS0609
BDIS0610
COMMENT THIS PROCEDURE CALCULATES THE TRANSIENT CONDITIONS OF A BDIS0611
BATCH DISTILLATION COLUMN OPERATING AT CONSTANT REFLUX OR BDIS0612
AT VARIABLE REFLUX IN WHICH THE DISTILLATE COMPOSITION OF BDIS0613
A SPECIFIED COMPONENT IS MAINTAINED AT A CONSTANT VALUE. BDIS0614
BDIS0615
THE INPUT PARAMETERS ARE BDIS0616
M - TOTAL NUMBER OF TRAYS - INTEGER BDIS0617
N - TOTAL NUMBER OF COMPONENTS - INTEGER BDIS0618
KEY - KEY COMPONENT NUMBER - INTEGER BDIS0619
P - COLUMN PRESSURE, PSIA - REAL BDIS0620
TC - COMPONENT CRITICAL TEMPERATURES, DEG. R. - REAL BDIS0621
ARRAY[0:N] BDIS0622
PC - COMPONENT CRITICAL PRESSURES, PSIA - REAL BDIS0623
ARRAY [0:N] BDIS0624
S - COMPONENT LIQUID MOLAR VOLUMES, CU. FT./MOL - BDIS0625
REAL ARRAY[0:N] BDIS0626
LIMIT - TEMPERATURE LIMITS - REAL ARRAY [0:2] BDIS0627
LIMIT[1] = MINIMUM T, F. BDIS0628
LIMIT[2] = MAXIMUM T, F. BDIS0629
STOP - STOP = THE MOLS OF DISTILLATE TO BE WITHDRAWN, BDIS0630
UNLESS THE COLUMN IS TO OPERATE AT TOTAL REFLUX. BDIS0631
THEN, STOP = THE MOLS OF REFLUX TO BE RETURNED TO BDIS0632
THE COLUMN. - REAL BDIS0633
QM - IF THE REBOILER HEAT DUTY IS HELD CONSTANT. BDIS0634
THROUGHOUT THE DISTILLATION, IT MAY BE SPECIFIED BDIS0635
HERE AS BTU/HOUR TO ALLOW CALCULATION OF THE BDIS0636
CONDENSER DUTY AND THE LIQUID AND VAPOR RATES. SET BDIS0637
TO ZERO OTHERWISE. BDIS0638
POIR1 - INCREMENTAL VALUE OF D OR L1 (TOTAL REFLUX) USED BDIS0639
TO INDICATE THE POINT(S) OF INTERMEDIATE PRINTOUT, BDIS0640
MOLS - REAL. TO OMIT INTERMEDIATE PRINTOUT, SET BDIS0641
POIR1 > TOTAL MOLS WITHDRAWN OR REFLUXED (TOTAL BDIS0642
REFLUX). BDIS0643
POIR2 - INTEGER. IF = 1, PRINT X[J,I] WITH THE BDIS0644
INTERMEDIATE RESULTS. BDIS0645
R - REFLUX RATIO, L1/D. SET R > 1.0@10 FOR TOTAL BDIS0646
REFLUX OPERATION - REAL BDIS0647
HUM - INITIAL LIQUID HOLDUP ON TRAYS, MOLS - REAL BDIS0648
ARRAY [0:M] BDIS0649
T - INITIAL TRAY TEMPERATURES, F. - REAL ARRAY [0:M] BDIS0650
X - INITIAL LIQUID TRAY COMPOSITIONS, MOL FRACTIONS - BDIS0651
REAL ARRAY [0:M,0:N] BDIS0652
BDIS0653
THE OUTPUT PARAMETERS ARE BDIS0654
HUM - FINAL LIQUID HOLDUP ON TRAYS,MOLS - REAL ARRAY[0:M]BDIS0655
T - FINAL TRAY TEMPERATURES, DEG. F. - REAL ARRAY[0:M]BDIS0656
X - FINAL LIQUID TRAY COMPOSITIONS, MOL FRACTIONS - BDIS0657
REAL ARRAY [0:M,0:N] BDIS0658
Y - FINAL VAPOR TRAY COMPOSITIONS, MOL FRACTIONS - BDIS0659
REAL ARRAY [0:M,0:N] BDIS0660
DELL - FINAL INCREMENTAL LIQUID TRAY FLOWS, MOLS - REAL BDIS0661
ARRAY [0:M] BDIS0662
DELV - FINAL INCREMENTAL VAPOR TRAY FLOWS, MOLS - REAL BDIS0663
ARRAY [0:M] BDIS0664
DELQ1 - FINAL INCREMENTAL CONDENSER DUTY, BTU - REAL BDIS0665
DELQM - FINAL INCREMENTAL REBOILER DUTY, BTU - REAL BDIS0666
DELD - FINAL INCREMENTAL DISTILLATE FLOW, MOLS -REAL BDIS0667
D - COMPONENT TOTAL MOLS WITHDRAWN AS DISTILLATE - BDIS0668
REAL ARRAY [0:N] BDIS0669
SUMD - TOTAL MOLS OF DISTILLATE WITHDRAWN - REAL BDIS0670
SUMR - TOTAL MOLS OF REFLUX RETURNED TO COLUMN - REAL BDIS0671
SBAR - AVERAGE LIQUID MOLAR VOLUME ON TRAY, CU. FT./MOL - BDIS0672
REAL ARRAY [0:M] BDIS0673
BDIS0674
THE REFERENCE PARAMETER IS BDIS0675
ERR1 - REFERENCE STATEMENT LABEL TO WHICH CONTROL IS BDIS0676
CHANGED IF THE TEMPERATURE LIMITS ARE EXCEEDED. BDIS0677
IN ADDITION, THE REAL ARRAYS HV, HL, PHLT, SBAR[0:M], BDIS0679
K, PKT, PHLX[0:M,0:N], TR1S1, TR2S2[0: IF (M>N-1 AND M>14)BDIS0680
THEN M ELSE IF 14>N-1 THEN 14 ELSE N-1], AND THE GLOBAL BDIS0681
ARRAYS OF KNGAA, HLIQ, HVPCOR, AND PHIPART ARE GLOBAL TO BDIS0682
THE TRANSIENT PROCEDURE. BDIS0683
BDIS0684
ALSO, THE OUTPUT FILE, FOUT1, MUST BE DECLARED GLOBAL TO BDIS0685
TRANSIENT. IT IS USED TO PRINT THE RESULTS. BDIS0686
BDIS0687
THE PROCEDURES PHIPART, HVPCOR, HLIQ, AND KNGAA BDIS0688
MUST BE DECLARED PRIOR TO TRANSIENT. PHIPART MUST BE BDIS0689
DECLARED PRIOR TO HVPCOR ; BDIS0690
BDIS0691
VALUE M, N, KEY, P, TC, PC, S, LIMIT, STOP, QM, POIR1, POIR2, R;BDIS0692
REAL P, STOP, QM, R, DELQ1, DELQM, DELD, SUMD, SUMR, POIR1 ; BDIS0693
INTEGER M, N, KEY ; BDIS0694
INTEGER POIR2 ; BDIS0695
REAL ARRAY TC, PC, S, LIMIT, HUM, T, D, DELL, SBAR, DELV[0], X, BDIS0696
Y[0,0] ; BDIS0697
LABEL ERR1 ; BDIS0698
BDIS0699
BEGIN BDIS0700
REAL DELT, DELHUM, TRS1, SUM, SUM1, SUM2, SUM3, SKEY, KKEY, DL,BDIS0701
DV, MHUMJ, ANI, XJI, KJI, HLJ, PRNT, MAXXIJ ; BDIS0702
INTEGER I, J, L, NM1, JP1, JM1, MM1, NP1 ; BDIS0703
BOOLEAN CALCPDC ; BDIS0704
LABEL TR1, TR2 ; BDIS0705
FORMAT OUT FIR1 (/ "PRINT-OUT OF INTERMEDIATE RESULTS IN THE ", BDIS0706
"TRANSIENT PROCEDURE" /), BDIS0707
FIR3 ("COLUMN IS RUN AT TOTAL REFLUX" // "MOLS OF REFLUX",BDIS0708
" TO BE RETURNED ", F15.2 / ), BDIS0709
FIR4 ("COLUMN IS RUN AT CONSTANT REFLUX" // "REFLUX ", BDIS0710
"RATIO, L1/D ", F26.2 // "MOLS OF DISTILLATE TO BE ",BDIS0711
"WITHDRAWN ", F10.2 / ), BDIS0712
FIR6 ("REBOILER HEAT DUTY, BTU/HOUR ", F16.2 /), BDIS0713
FIR7 ("X[J,I]:"), BDIS0714
FIR8 (8E15.5), BDIS0715
FIR9 ("HUM[J]:"), BDIS0716
FIR10 ("T[J]:"), BDIS0717
FIR11 ("DELL[J]:"), BDIS0718
FIR12 ("L[J]:"), BDIS0719
FIR13 ("DELV[J]:"), BDIS0720
FIR14 ("V[J]:"), BDIS0721
FIR15 ("DELQ1 = ", E15.5, " DELQM = ", E15.5), BDIS0722
FIR16 ("Q1 = ", E15.5, " QM = ", E15.5, X6), BDIS0723
FIR17 (X49, " SUMD = ", E12.5, " SUMR = ", E12.5, BDIS0724
" R = ", E12.5) ; BDIS0725
BDIS0726
COMMENT PRINT OUT PROBLEM SPECIFICATIONS IF POIR1 ! 0 ; BDIS0727
IF POIR1 ! 0 THEN BDIS0728
BEGIN BDIS0729
WRITE (FOUT1 [PAGE]) ; BDIS0730
WRITE (FOUT1, FIR1) ; BDIS0731
IF R > 1.0@10 THEN WRITE (FOUT1, FIR3, STOP) BDIS0732
ELSE WRITE (FOUT1, FIR4, R, STOP) ; BDIS0733
IF QM ! 0 THEN WRITE (FOUT1, FIR6, QM) BDIS0734
END OF PROBLEM SPECIFICATIONS PRINT OUT ; BDIS0735
BDIS0736
COMMENT CALCULATE K-RATIOS, ENTHALPIES, AVERAGE TRAY SPECIFIC BDIS0737
VOLUMES, AND VAPOR MOL FRACTIONS ; BDIS0738
SUMD ~ SUMR ~ PRNT ~ 0 ; BDIS0739
FOR I ~ 1 STEP 1 UNTIL N DO D[I] ~ 0 ; BDIS0740
MAXXIJ ~ 0.01 ; DELD ~ DELL[1] ~ 0.1 ; BDIS0741
CALCPDC ~ TRUE ; NM1 ~ N - 1 ; BDIS0742
NP1 ~ N + 1 ; MM1 ~ M - 1 ; SKEY ~ S[KEY] ; BDIS0743
TR1: FOR J ~ 1 STEP 1 UNTIL M DO BDIS0744
BEGIN BDIS0745
IF J = 2 THEN CALCPDC ~ FALSE ; BDIS0746
KNGAA (T[J], P, N, CALCPDC, TRUE, FALSE, K[J,*], PKT[J,*],BDIS0747
C) ; BDIS0748
HLIQ (N, T[J], X[J,*], HL[J], PHLX[J,*], PHLT[J]) ; BDIS0749
FOR I ~ 1 STEP 1 UNTIL N DO IF I ! KEY THEN BDIS0750
PHLX[J,I] ~ PHLX[J,I] - PHLX[J,KEY] ; BDIS0751
IF J ! M THEN BDIS0752
BEGIN BDIS0753
SUM ~ 0 ; FOR I ~ 1 STEP 1 UNTIL N DO BDIS0754
SUM ~ X[J,I] | S[I] + SUM ; BDIS0755
SBAR[J] ~ SUM BDIS0756
END OF SBAR CALCULATION ; BDIS0757
IF J ! 1 THEN BDIS0758
BEGIN BDIS0759
SUM ~ 0 ; FOR I ~ 1 STEP 1 UNTIL N DO BDIS0760
SUM ~ SUM + Y[J,I] ~ (K[J,I] | X[J,I]) ; BDIS0761
CALCDHV[1] ~ CALCDHV[2] ~ CALCDHV[3] ~ FALSE ; BDIS0762
HVPCOR (N, T[J], P, Y[J,*], CALCDHV, HV[J], TRS1, TRS1, BDIS0763
TR1S1) BDIS0764
END BDIS0765
END OF DATA CALCULATIONS ; BDIS0766
BDIS0767
COMMENT CONDENSER CALCULATIONS ; BDIS0768
TRS1 ~ HUM[2] / (900.0 | (1.0 + R) | MAXXIJ) ; BDIS0769
IF R { 1.0@10 THEN BDIS0770
BEGIN BDIS0771
IF TRS1 > 1.1 | DELD THEN DELD ~ 1.1 | DELD BDIS0772
ELSE DELD ~ TRS1 ; BDIS0773
SUMD ~ SUMD + DELD ; DELL[1] ~ R | DELD ; BDIS0774
FOR I ~ 1 STEP 1 UNTIL N DO D[I] ~ D[I] + X[1,I] | DELD BDIS0775
END BDIS0776
ELSE BDIS0777
BEGIN BDIS0778
IF TRS1 > 1.1 | DELL[1] THEN DELL [1] ~ 1.1 | DELL[1] BDIS0779
ELSE DELL[1] ~ TRS1 ; DELD ~ 0 BDIS0780
END ; BDIS0781
MAXXIJ ~ 0 ; BDIS0782
SUM ~ 0 ; SUMR ~ DELL[1] + SUMR ; BDIS0783
FOR I ~ 1 STEP 1 UNTIL N DO IF I ! KEY THEN BDIS0784
SUM ~ (Y[2,I] - X[1,I]) | (S[I] - SKEY) + SUM ; BDIS0785
DELHUM ~ - (DELD + DELL[1]) | SUM / (SBAR[1] + SUM) ; BDIS0786
DELV[2] ~ DELD + DELL[1] + DELHUM ; BDIS0787
SUM ~ SUM1 ~ SUM2 ~ SUM3 ~ 0 ; BDIS0788
FOR I ~ 1 STEP 1 UNTIL N DO BDIS0789
BEGIN BDIS0790
IF I ! KEY THEN BDIS0791
BEGIN BDIS0792
SUM ~ SUM + TR1S1[I] ~ ((Y[2,I] - X[1,I]) | DELV[2] / BDIS0793
HUM[1]) ; BDIS0794
SUM1 ~ TR1S1[I] | (K[1,KEY] - K[1,I]) + SUM1 ; BDIS0795
SUM3 ~ PHLX[1,I] | TR1S1[I] + SUM3 BDIS0796
END ; BDIS0797
SUM2 ~ PKT[1,I] | X[1,I] + SUM2 BDIS0798
END ; BDIS0799
TR1S1[KEY] ~ - SUM ; DELT ~ SUM1 / SUM2 ; BDIS0800
DELQ1 ~ DELV[2] | (HV[2] - HL[1]) - HUM[1] | PHLT[1] | BDIS0801
DELT - HUM[1] | SUM3 ; BDIS0802
HUM[1] ~ HUM[1] + DELHUM ; T[1] ~ T[1] + DELT ; BDIS0803
FOR I ~ 1 STEP 1 UNTIL N DO X[1,I] ~ X[1,I] + TR1S1[I] ;BDIS0804
BDIS0805
COMMENT CALCULATIONS FOR TRAYS 2, 3, - - -, M-1 ; BDIS0806
FOR J ~ 2 STEP 1 UNTIL MM1 DO BDIS0807
BEGIN BDIS0808
KKEY ~ K[J,KEY] ; DV ~ DELV[J] ; MHUMJ ~ - HUM[J];BDIS0809
JP1 ~ J + 1 ; JM1 ~ J - 1 ; DL ~ DELL[JM1] ; BDIS0810
SUM3 ~ 0 ; FOR I ~ 1 STEP 1 UNTIL N DO BDIS0811
SUM3 ~ X[J,I] | PKT[J,I] + SUM3 ; BDIS0812
TRS1 ~ PHLT[J] / SUM3 ; BDIS0813
SUM ~ SUM1 ~ 0 ; HLJ ~ HL[J] ; BDIS0814
FOR I ~ 1 STEP 1 UNTIL N DO IF I ! KEY THEN BDIS0815
BEGIN BDIS0816
XJI ~ X[J,I] ; KJI ~ K[J,I] ; BDIS0817
ANI ~ (PHLX[J,I] + (KKEY - KJI) | TRS1) | MHUMJ ; BDIS0818
SUM ~ (TR1S1[I] ~ ((XJI - X[JM1,I] + TR1S1[I]) | DL + BDIS0819
(KJI - 1.0) | DV | XJI)) | ANI + SUM ; BDIS0820
SUM1 ~ (TR1S2[I] ~ (Y[JP1,I] - XJI)) | ANI + SUM1 BDIS0821
END ; BDIS0822
DELV[JP1] ~ ((HV[J] - HLJ) | DV + (HLJ - HL[JM1]) | DL - BDIS0823
SUM / MHUMJ) / ((HV[JP1] - HLJ) - SUM1 / MHUMJ) ; BDIS0824
SUM ~ 0 ; BDIS0825
FOR I ~ 1 STEP 1 UNTIL N DO IF I ! KEY THEN BDIS0826
BEGIN BDIS0827
SUM ~ SUM + TR1S1[I] ~ ((TR1S1[I] - TR1S2[I] | DELV[JP1]) BDIS0828
/ MHUMJ) ; BDIS0829
X[J,I] ~ X[J,I] + TR1S1[I] BDIS0830
END ; BDIS0831
X[J,KEY] ~ X[J,KEY] + TR1S1[KEY] ~ (-SUM) ; BDIS0832
SUM ~ SUM1 ~ 0 ; BDIS0833
FOR I ~ 1 STEP 1 UNTIL N DO BDIS0834
BEGIN BDIS0835
IF TR1S1[I] > MAXXIJ THEN MAXXIJ ~ TR1S1[I] ; BDIS0836
IF I ! KEY THEN BDIS0837
BEGIN BDIS0838
SUM ~ TR1S1[I] | (S[I] - SKEY) + SUM ; BDIS0839
SUM1 ~ TR1S1[I] | (KKEY - K[J,I]) + SUM1 BDIS0840
END BDIS0841
END ; BDIS0842
DELL[J] ~ HUM[J] | SUM / SBAR[J] + DELV[JP1] + DL - DV ; BDIS0843
HUM[J] ~ HUM[J] + DELV[JP1] - DELL[J] - DV + DL ; BDIS0844
T[J] ~ T[J] + SUM1 / SUM3 BDIS0845
END OF TRAY CALCULATIONS ; BDIS0846
BDIS0847
COMMENT REBOILER CALCULATIONS ; BDIS0848
DELHUM ~ DELL[MM1] - DELV[M] ; BDIS0849
SUM ~ SUM3 ~ 0 ; BDIS0850
FOR I ~ 1 STEP 1 UNTIL N DO BDIS0851
BEGIN BDIS0852
SUM3 ~ X[M,I] | PKT[M,I] + SUM3 ; BDIS0853
IF I ! KEY THEN BDIS0854
BEGIN BDIS0855
SUM ~ SUM + TR1S1[I] ~ (((X[MM1,I] - TR1S1[I] - X[M,I]) | BDIS0856
DELL[MM1] + (1.0 - K[M,I]) | X[M,I] | DELV[M]) / HUM[M]) ;BDIS0857
X[M,I] ~ X[M,I] + TR1S1[I] BDIS0858
END BDIS0859
END ; BDIS0860
X[M,KEY] ~ X[M,KEY] - SUM ; BDIS0861
SUM ~ SUM1 ~ 0 ; BDIS0862
FOR I ~ 1 STEP 1 UNTIL N DO IF I ! KEY THEN BDIS0863
BEGIN BDIS0864
SUM ~ (K[M,KEY] - K[M,I]) | TR1S1[I] + SUM ; BDIS0865
SUM1 ~ PHLX[M,I] | TR1S1[I] + SUM1 BDIS0866
END ; BDIS0867
T[J] ~ T[J] + DELT ~ (SUM / SUM3) ; BDIS0868
DELQM ~ (PHLT[M] | DELT + SUM1) | HUM[M] + HV[M] | DELV[M]BDIS0869
+ HL[M] | DELHUM - HL[MM1] | DELL[MM1] ; BDIS0870
HUM[M] ~ HUM[M] + DELHUM ; BDIS0871
BDIS0872
COMMENT PRINT OUT INTERMEDIATE RESULTS IF POIR1 ! 0 ; BDIS0873
IF POIR1 ! 0 THEN BDIS0874
IF (PRNT ~ (PRNT + (IF R{1.0@10 THEN DELD ELSE DELL[1]))) BDIS0875
} POIR1 THEN BDIS0876
BEGIN BDIS0877
WRITE (FOUT1 [DBL]) ; BDIS0878
PRNT ~ 0 ; BDIS0879
IF POIR2 = 1 THEN BDIS0880
BEGIN BDIS0881
WRITE (FOUT1, FIR7) ; FOR J ~ 1 STEP 1 UNTIL M DO BDIS0882
WRITE (FOUT1, FIR8, FOR I ~ 1 STEP 1 UNTIL N DO X[J,I]) BDIS0883
END ; BDIS0884
TRS1 ~ DELQ1 | QM / DELQM ; BDIS0885
IF QM ! 0 THEN WRITE (FOUT1[NO], FIR16, TRS1, QM) BDIS0886
ELSE WRITE (FOUT1[NO], FIR15, DELQ1, DELQM) ; BDIS0887
WRITE (FOUT1, FIR17, SUMD, SUMR, R) ; BDIS0888
WRITE (FOUT1, FIR9) ; BDIS0889
WRITE (FOUT1, FIR8, FOR J ~ 1 STEP 1 UNTIL M DO HUM[J]) ;BDIS0890
WRITE (FOUT1, FIR10) ; BDIS0891
WRITE (FOUT1, FIR8, FOR J ~ 1 STEP 1 UNTIL M DO T[J]) ; BDIS0892
FOR J ~ 1 STEP 1 UNTIL M DO BDIS0893
IF QM ! 0 THEN BDIS0894
BEGIN BDIS0895
TR1S1[J] ~ DELL[J] | QM / DELQM ; BDIS0896
TR1S2[J] ~ DELV[J] | QM / DELQM BDIS0897
END BDIS0898
ELSE BDIS0899
BEGIN BDIS0900
TR1S1[J] ~ DELL[J] ; BDIS0901
TR1S2[J] ~ DELV[J] BDIS0902
END ; BDIS0903
IF QM ! 0 THEN WRITE (FOUT1, FIR12) BDIS0904
ELSE WRITE (FOUT1, FIR11) ; BDIS0905
WRITE (FOUT1, FIR8, FOR J ~ 1 STEP 1 UNTIL M DO TR1S1[J]);BDIS0906
IF QM ! 0 THEN WRITE (FOUT1, FIR14) BDIS0907
ELSE WRITE (FOUT1, FIR13) ; BDIS0908
WRITE (FOUT1, FIR8, FOR J ~ 1 STEP 1 UNTIL M DO TR1S2[J]) BDIS0909
END OF INTERMEDIATE PRINT OUT ; BDIS0910
BDIS0911
COMMENT TEST FOR EXIT FROM THE PROCEDURE ; BDIS0912
IF R { 1.0@10 THEN SUM ~ SUMD ELSE SUM ~ SUMR ; BDIS0913
IF SUM } STOP THEN GO TO TR2 BDIS0914
ELSE GO TO TR1 ; BDIS0915
BDIS0916
TR2: END OF TRANSIENT PROCECURE ; BDIS0917
BDIS0918
COMMENT READ IN COMPONENT FEED MOLS ; BDIS0919
READ (FIN1, /, READF) ; BDIS0920
IF READF = 1 THEN BDIS0921
READ (FIN1, /, FOR I ~ 1 STEP 1 UNTIL N DO [F[I]] ) ; BDIS0922
BDIS0923
COMMENT READ IN TRAY HOLDUP VOLUMES ; BDIS0924
READ (FIN1, /, READH) ; BDIS0925
IF READH = 1 THEN BDIS0926
READ (FIN1, /, FOR J ~ 1 STEP 1 UNTIL M - 1 DO [HUV[J]]); BDIS0927
BDIS0928
COMMENT READ IN INITIAL ESTIMATES ; BDIS0929
READ (FIN1, /, READIE) ; BDIS0930
IF READIE = 1 THEN BDIS0931
READ (FIN1, /, HUM[M], FOR I ~ 1 STEP 1 UNTIL N DO BDIS0932
[X[M,I]], T[1], T[M] ) ; BDIS0933
BDIS0934
COMMENT ASSIGN VALUES TO DATA WHICH ARE NOT SPECIFIED ; BDIS0935
IF MAXIT = 0 THEN MAXIT ~ 10 ; BDIS0936
IF TOL[1] = 0 THEN TOL[1] ~ 0.2 ; BDIS0937
IF TOL[2] = 0 THEN TOL[2] ~ 0.1 ; BDIS0938
IF TOL[3] = 0 THEN TOL[3] ~ 0.1 ; BDIS0939
IF LIMIT[1] = 0 AND LIMIT[2] = 0 THEN BDIS0940
BEGIN BDIS0941
LIMIT[1] ~ -100.0 ; LIMIT[2] ~ 500.0 BDIS0942
END ; BDIS0943
F[0] ~ 0 ; FOR I ~ 1 STEP 1 UNTIL N DO BDIS0944
F[0] ~ F[I] + F[0] ; BDIS0945
TDIFF ~ (T[M] - T[1]) / (M - 1) ; BDIS0946
FOR J ~ M - 1 STEP - 1 UNTIL 1 DO T[J] ~ T[J+1] - TDIFF;BDIS0947
BDIS0948
COMMENT PRINT OUT PROBLEM DATA IF POPD = 1 ; BDIS0949
IF POPD = 1 THEN BDIS0950
BEGIN BDIS0951
WRITE (FOUT1[PAGE]); BDIS0952
WRITE (FOUT1,FID1, IDNO, FOR I ~ 1 STEP 1 UNTIL 12 DO BDIS0953
ID[I], M, P, N, TOL[1], KEY, TOL[2], MAXIT, TOL[3], BDIS0954
LIMIT[1], LIMIT[2], SPEC[1], SPEC[2]) ; BDIS0955
WRITE (FOUT1, FID5, HUM[M], T[1], T[M] ) ; BDIS0956
I ~ 1 ; BDIS0957
BD2: IF I { N AND I { M THEN BDIS0958
WRITE (FOUT1, FID6, I, F[I], X[M,I], I, HUV[I] ) BDIS0959
ELSE IF I { N AND I > M THEN BDIS0960
WRITE (FOUT1, FID7, I, F[I], X[M,I] ) BDIS0961
ELSE WRITE (FOUT1, FID8, I, HUV[I] ) ; BDIS0962
IF I ~ I + 1 { N OR I { M-1 THEN GO TO BD2 BDIS0963
END ; BDIS0964
BDIS0965
COMMENT READ IN COMPONENT PHYSICAL PROPERTY DATA ; BDIS0966
READ (FIN1, /, READCD) ; BDIS0967
IF READCD = 1 THEN BDIS0968
BEGIN BDIS0969
READ (FIN1, FNAME, FOR I ~ 1 STEP 1 UNTIL N DO BDIS0970
[NAME1[I], NAME2[I], TC[I], PC[I], S[I] ] ) ; BDIS0971
READ (FIN1, FKH, FOR I ~ 1 STEP 1 UNTIL N DO BDIS0972
FOR J ~ 1,2,3,4,5,6,7 DO [KC1[I,4|J-3], KC1[I,4|J-2], BDIS0973
KC1[I,4|J-1], KC1[I,4|J], AK[I,J,1], AK[I,J,2],AK[I,J,3]],BDIS0974
FOR I ~ 1 STEP 1 UNTIL N DO [FOR J~1,2,3,4 DO HVC1[I,J], BDIS0975
AHV[I,1], AHV[I,2], AHV[I,3] ], BDIS0976
FOR I ~ 1 STEP 1 UNTIL N DO [FOR J~1,2,3,4 DO HLC5[I,J], BDIS0977
AHL[I,1], AHL[I,2], AHL[I,3] ]) BDIS0978
END ; BDIS0979
BDIS0980
COMMENT PRINT OUT COMPONENT DATA IF POCD = 1 ; BDIS0981
IF POCD = 1 THEN BDIS0982
BEGIN BDIS0983
WRITE (FOUT1, FID9, FOR I ~ 1 STEP 1 UNTIL N DO BDIS0984
[NAME1[I], NAME2[I], TC[I], PC[I], S[I], BDIS0985
FOR J ~ 1,2,3,4,5,6,7 DO [KC1[I,4|J-3], KC1[I,4|J-2], BDIS0986
KC1[I,4|J-1], KC1[I,4|J], AK[I,J,1], AK[I,J,2],AK[I,J,3]],BDIS0987
FOR J ~ 1,2,3,4 DO HVC1[I,J], AHV[I,1], AHV[I,2],AHV[I,3],BDIS0988
FOR J ~ 1,2,3,4 DO HLC5[I,J], AHL[I,1],AHL[I,2],AHL[I,3]])BDIS0989
END ; BDIS0990
BDIS0991
COMMENT ENTER THE STARTUP PROCEDURE TO CALCULATE THE STEADY-STATE BDIS0992
CONDITIONS AT TOTAL REFLUX ; BDIS0993
STARTUP (M, N, KEY, P, F, S, HUV, TOL, LIMIT, MAXIT, POIR,BDIS0994
T, HUM, X, ERR1, ERR2) ; BDIS0995
BDIS0996
COMMENT PRINT THE STEADY-STATE CONDITIONS AT TOTAL REFLUX ; BDIS0997
WRITE (FOUT1 [PAGE] ) ; BDIS0998
WRITE (FOUT1, FSS1, IDNO, FOR I ~ 1 STEP 1 UNTIL 12 DO BDIS0999
ID[I], FOR J ~ 1 STEP 1 UNTIL M DO T[J] ) ; BDIS1000
WRITE (FOUT1, FSS2, FOR J ~ 1 STEP 1 UNTIL M DO HUM[J] ) ;BDIS1001
WRITE (FOUT1, FSS3) ; FOR J ~ 1 STEP 1 UNTIL M DO BDIS1002
WRITE (FOUT1, FSS4, FOR I ~ 1 STEP 1 UNTIL N DO X[J,I]); BDIS1003
BDIS1004
COMMENT PRELIMINARY CALCULATIONS FOR THE TRANSIENT CONDITIONS ; BDIS1005
STOP ~ SPEC[1] | F[0] | 0.01 ; BDIS1006
R ~ SPEC[2] ; BDIS1007
POIR1 ~ STOP / (IPOIR1 + 0.99) ; BDIS1008
BDIS1009
COMMENT ENTER THE TRANSIENT PROCEDURE TO CALCULATE THE TRANSIENT BDIS1010
CONDITIONS ; BDIS1011
TRANSIENT (M, N, KEY, P, TC, PC, S, LIMIT, STOP, QM, BDIS1012
POIR1, POIR2, R, HUM, T, X, Y, DELL, DELV, DELQ1, DELQM, BDIS1013
DELD, D, SUMD, SUMR, SBAR, ERR3) ; BDIS1014
BDIS1015
COMMENT PRINT THE FINAL RESULTS ; BDIS1016
WRITE (FOUT1 [PAGE] ) ; BDIS1017
DATE (MONTH, DAY, YEAR) ; BDIS1018
ELMIN ~ (ELSEC ~ (TIME(1) - STIME1)) DIV 3600 ; BDIS1019
ELSEC ~ (ELSEC DIV 60) MOD 60 ; BDIS1020
PRMIN ~ (PRSEC ~ (TIME(2) - STIME2)) DIV 3600 ; BDIS1021
PRSEC ~ (PRSEC DIV 60) MOD 60 ; BDIS1022
IOMIN ~ (IOSEC ~ (TIME(3) - STIME3)) DIV 3600 ; BDIS1023
IOSEC ~ (IOSEC DIV 60) MOD 60 ; BDIS1024
WRITE (FOUT1, FFP1, IDNO, FOR I ~ 1 STEP 1 UNTIL 12 DO BDIS1025
ID[I], MONTH, DAY, YEAR, ELMIN, ELSEC, PRMIN, PRSEC, BDIS1026
IOMIN, IOSEC) ; BDIS1027
FOR J ~ 1 STEP 1 UNTIL M DO BDIS1028
BEGIN BDIS1029
TR1S1[1] ~ TR1S1[2] ~ 0 ; BDIS1030
TR1S2[J] ~ HUM[J] | SBAR[J] ; BDIS1031
FOR I ~ 1 STEP 1 UNTIL N DO BDIS1032
BEGIN BDIS1033
TR1S1[1] ~ TR1S1[1] + X[J,I] ; BDIS1034
TR1S1[2] ~ TR1S1[2] + Y[J,I] BDIS1035
END ; BDIS1036
WRITE ( FOUT1, FFP2, J, T[J], HUM[J], TR1S2[J], TR1S1[1], BDIS1037
TR1S1[2]) BDIS1038
END ; BDIS1039
TR1S1[0] ~ 0 ; FOR I ~ 1 STEP 1 UNTIL N DO BDIS1040
TR1S1[0] ~ TR1S1[0] + D[I] ; BDIS1041
FOR I ~ 1 STEP 1 UNTIL N DO BDIS1042
TR1S1[I] ~ D[I] / TR1S1[0] ; BDIS1043
WRITE (FOUT1, FFP3, SUMD, FOR I ~ 1 STEP 1 UNTIL N DO BDIS1044
TR1S1[I]) ; BDIS1045
WRITE (FOUT1, FFP4, FOR I ~ 1 STEP 1 UNTIL N DO D[I] ) ; BDIS1046
WRITE (FOUT1, FFP5) ; BDIS1047
FOR J ~ 1 STEP 1 UNTIL M DO BDIS1048
WRITE (FOUT1, FFP6, FOR I ~ 1 STEP 1 UNTIL N DO X[J,I] ); BDIS1049
WRITE (FOUT1, FFP7) ; BDIS1050
FOR J ~ 1 STEP 1 UNTIL M DO BDIS1051
WRITE (FOUT1, FFP6, FOR I ~ 1 STEP 1 UNTIL N DO Y[J,I]); BDIS1052
BDIS1053
COMMENT RECYCLE TO READ IN NEXT PROBLEM ; BDIS1054
GO TO BD1 ; BDIS1055
BDIS1056
COMMENT PRINT OUT ERROR MESSAGES; BDIS1057
ERR1: WRITE (FOUT1, FERR) ; WRITE (FOUT1, FERR1) ; BDIS1058
GO TO BD1 ; BDIS1059
ERR2: WRITE (FOUT1, FERR) ; WRITE (FOUT1, FERR2) ; BDIS1060
GO TO BD1 ; BDIS1061
ERR3: WRITE (FOUT1, FERR) ; WRITE (FOUT1, FERR3) ; BDIS1062
GO BD1 BDIS1063
BDIS1064
END OF BLOCK 2 OF PROGRAM ; BDIS1065
BDIS1066
COMMENT THIS IS THE END OF THE BATCH DISTILLATION PROGRAM ; BDIS1067
EOFCARD: END. BDIS1068
"PROBLEM USED IN MEADOWS PAPER "ID1, / DATA SET 1, PROBLEM DATA
"7 TRAYS, 4 COMPONENTS " ID2,
1 PRONO, 7 M, 4 N, 2 KEY,20 MAXIT, 100.0 P, 0 TOLT, 0 TOLX, 0 TOLH,
0 LLIMIT, 0 ULIMIT, 1 POPD, 1 POCD, 1 POIR, 3 POIR1, 1 POIR2, 0 QM,
80.43 SPEC1: % WITHDRAWN, 5.0 SPEC2: L1/D,
1 READF, / DATA SET 2, FEED DATA
50.0, 50.0, 50.0, 50.0, / COMPONENT FEED MOLS
1 READH, / DATA SET 3, TRAY DATA
10.5, 10.5, 10.5, 10.5, 10.5, 10.5 , TRAY HOLDUP VOLUME, CU. FT.
1 READIE, / DATA SET 4, INITIAL ESTIMATES
160.0 HUM[M],
0.1, 0.2, 0.3, 0.4, / X[M,I]
100.0 T[1], 200.0 T[M],
1 READCD, / DATA SET5, COMPONENT DATA
NC4 765.22 550.7 1.6
NC5 845.52 489.5 1.84
IC5 829.6 483.0 1.86
C6 914.1 439.7 2.08
-0.14609524@ 03 0.17442830@ 04 -0.88504047@ 04 0.23172909@ 05*CP# 5000NC4 1
-0.32904241@ 05 0.24047149@ 05 -0.70717229@ 04 0.51791307@ 03*CP# 5000NC4 2
-0.60967471@ 04 0.30280354@ 05 -0.77393885@ 05 0.10670547@ 06*CP# 5000NC4 3
-0.75224715@ 05 0.21217935@ 05 -0.63796025@ 03 0.75662458@ 04*CP# 5000NC4 4
-0.36863956@ 05 0.92089775@ 05 -0.12320518@ 06 0.83414815@ 05*CP# 5000NC4 5
-0.22305445@ 05 0.28216774@ 03 -0.33359564@ 04 0.16069058@ 05*CP# 5000NC4 6
-0.39576618@ 05 0.51906262@ 05 -0.34121151@ 05 0.87318732@ 04*CP# 5000NC4 7
-0.10371977@ 03 0.10966453@ 04 -0.50722388@ 04 0.11754639@ 05*CP# 5000NC5 1
-0.14127402@ 05 0.81845946@ 04 -0.16956204@ 04 0.24380242@ 03*CP# 5000NC5 2
-0.21492877@ 04 0.78892828@ 04 -0.11607237@ 05 0.14031742@ 04*CP# 5000NC5 3
0.11581226@ 05 -0.75607267@ 04 -0.10736680@ 03 0.10561029@ 03*CP# 5000NC5 4
0.47752449@ 04 -0.28152337@ 05 0.65978843@ 05 -0.70069589@ 05*CP# 5000NC5 5
0.27856453@ 05 -0.24754430@ 02 0.93370388@ 03 -0.75623480@ 04*CP# 5000NC5 6
0.28002344@ 05 -0.53335958@ 05 0.50426510@ 05 -0.18653917@ 05*CP# 5000NC5 7
-0.18305484@ 03 0.21777317@ 04 -0.10945974@ 05 0.28287761@ 05*CP# 5000IC5 1
-0.39608830@ 05 0.28559400@ 05 -0.82940554@ 04 0.56296145@ 03*CP# 5000IC5 2
-0.65170005@ 04 0.31723596@ 05 -0.78882897@ 05 0.10528309@ 06*CP# 5000IC5 3
-0.71581396@ 05 0.19388801@ 05 -0.52509215@ 03 0.58763885@ 04*CP# 5000IC5 4
-0.26930887@ 05 0.61721460@ 05 -0.73163112@ 05 0.41517839@ 05*CP# 5000IC5 5
-0.83467070@ 04 0.15132424@ 03 -0.15333466@ 04 0.61208267@ 04*CP# 5000IC5 6
-0.11000576@ 05 0.72440636@ 04 0.17474641@ 04 -0.28406992@ 04*CP# 5000IC5 7
-0.38164575@ 03 0.46951509@ 04 -0.23870067@ 05 0.62677434@ 05*CP# 5000NC6 1
-0.89570741@ 05 0.66094338@ 05 -0.19686499@ 05 0.14660147@ 04*CP# 5000NC6 2
-0.18043894@ 05 0.90946557@ 05 -0.23662909@ 06 0.33485551@ 06*CP# 5000NC6 3
-0.24446629@ 06 0.72025953@ 05 -0.18285795@ 04 0.22547523@ 05*CP# 5000NC6 4
-0.11260287@ 06 0.29003841@ 06 -0.40580315@ 06 0.29239302@ 06*CP# 5000NC6 5
-0.84860607@ 05 0.76121690@ 03 -0.93390473@ 04 0.46228269@ 05*CP# 5000NC6 6
-0.11790527@ 06 0.16309981@ 06 -0.11591202@ 06 0.33082319@ 05*CP# 5000NC6 7
0.15675143@ 05 0.21864464@ 02 0.16089416@-01 -0.17931083@-05 HVC1 - N-C4H10
0.19066847@ 05 0.26819218@ 02 0.20174027@-01 -0.24417899@-05 HVC1 - N-C5H12
0.18635740@ 05 0.26220114@ 02 0.21312870@-01 -0.28625929@-05 HVC1 ISO-C5H12
0.21965245@ 05 0.31947241@ 02 0.24589594@-01 -0.34057931@-05 HVC1 - C6H14
0.56381802@ 04 0.32156941@ 02 0.18464268@-01 -0.66078112@-05 HLC5 - N-C4H10
0.66969614@ 04 0.38053567@ 02 0.22532208@-01 -0.66454438@-05
0.66009918@ 04 0.37564035@ 02 0.21591715@-01 -0.56235172@-05 HLC5 ISO-C5H12
0.76972475@ 04 0.44516063@ 02 0.27030713@-01 -0.75881413@-05 HLC5 - C6H14