/
PTS033-T200004.alg
153 lines (137 loc) · 10.9 KB
/
PTS033-T200004.alg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
PROCEDURE KNGAA (T, P, N, CALCPDC, CALCPT, CALCPP, K, PKT, PKP) ; KNGP0001
COMMENT N.G.A.A. K-RATIO PROCEDURE. KNGP0002
BY A. PAUL OLESON AND DONALD L. VOSS KNGP0003
PROFESSIONAL SERVICES GROUP, BURROUGHS CORPORATION KNGP0004
FIRST RELEASE DATE: 5-5-63 KNGP0005
THIS PROCEDURE CALCULATES VAPOR-LIQUID EQUILIBRIUM RATIOS KNGP0006
(Y/X) FOR LIGHT HYDROCARBONS BY MEANS OF THE N.G.A.A. KNGP0007
CORRELATION. ALSO CALCULATED, BY OPTION, ARE THE KNGP0008
TEMPERATURE AND PRESSURE DERIVATIVES OF THE K-RATIOS. KNGP0009
COMPONENTS MAY BE REFERENCED TO ANY COMPONENT IN THE KNGP0010
SYSTEM BY K = K[R](A + B | T + C | T*2), WHERE KNGP0011
A = KC1[I,2] | P + KC1[I,3], KNGP0012
B = KC1[I,4] | P + KC1[I,5], KNGP0013
C = KC1[I,6] | P + KC1[I,7], KNGP0014
AND T IS DEGREES RANKINE/1000. KNGP0015
THE INPUT PARAMETERS ARE KNGP0016
T - TEMPERATURE, F - REAL KNGP0017
P - PRESSURE, PSIA - REAL KNGP0018
N - NUMBER OF COMPONENTS - INTEGER KNGP0019
CALCPDC - BOOLEAN. IF TRUE, CALCULATE P DEPENDENT KNGP0020
COEFFICIENTS. FOR CALCPDC = FALSE, P OF THE LAST KNGP0021
ENTRY MUST EQUAL P OF THE PRESENT ENTRY. KNGP0022
CALCPT - BOOLEAN. IF TRUE, CALCULATE THE T DERIVATIVE KNGP0023
OF K. KNGP0024
CALCPP - BOOLEAN. IF TRUE, CALCULATE THE P DERIVATIVE KNGP0025
OF K. KNGP0026
ALSO, THE VARIABLE KC1 IS NON-LOCAL. KNGP0027
KC1 - N.G.A.A. COEFFICIENTS - REAL ARRAY [0:N,0:28], KNGP0028
WHERE THE 28 COEFFICIENTS ARE ALTERNATELY 4 SETS KNGP0029
OF 7 P COEFFICIENTS. IF KC1[I,1] = 0, COMPONENT KNGP0030
I IS REFERENCED TO COMPONENT R AND KC1[I,8] = R. KNGP0031
R IS REAL AND MUST BE GREATER THAN I. KNGP0032
THE OUTPUT PARAMETERS ARE KNGP0033
K - COMPONENT VAPOR-LIQUID EQUILIBRIUM RATIOS (Y/X) - KNGP0034
REAL ARRAY [0:N] KNGP0035
PKT - COMPONENT T DERIVATIVES OF K - REAL ARRAY [0:N] KNGP0036
PKP - COMPONENT P DERIVATIVES OF K - REAL ARRAY [0:N] ; KNGP0037
VALUE T, P, N, CALCPDC, CALCPT, CALCPP ; KNGP0038
INTEGER N ; KNGP0039
BOOLEAN CALCPDC, CALCPT, CALCPP ; KNGP0040
REAL T, P ; KNGP0041
ARRAY K[0], PKT[0], PKP[0] ; KNGP0042
BEGIN KNGP0043
LABEL KNG1, KNG2, KNG3, KNG4, KNG5, KNG6, KNG7, KNG8, KNG9 ; KNGP0044
INTEGER I, J, U, E, G, TIS1, Q ; KNGP0045
REAL TRS1, TR1, TR12 ; KNGP0046
OWN REAL LOGP ; KNGP0047
ARRAY TR1S1[0:4] ; KNGP0048
OWN ARRAY PDC[0:N,0:4], LOGP1[0:7] ; KNGP0049
COMMENT CALCULATE PRESSURE DEPENDENT COEFFICIENTS IF CALCPDC = 1 ;KNGP0050
IF CALCPDC THEN KNGP0051
BEGIN KNGP0052
LOGP ~ LN(P) | 0.1 ; LOGP1[1] ~ 1.0 ; KNGP0053
FOR U ~ 2 STEP 1 UNTIL 7 DO KNGP0054
LOGP1[U] ~ LOGP1[U-1] | LOGP ; KNGP0055
LOGP ~ 10.0 | LOGP ; KNGP0056
FOR I ~ 1 STEP 1 UNTIL N DO KNGP0057
BEGIN KNGP0058
IF KC1[I,1] = 0 THEN GO TO KNG1 ; KNGP0059
FOR J ~ 1, 8, 15, 22 DO KNGP0060
BEGIN KNGP0061
Q ~ J + 6 ; KNGP0062
E ~ Q DIV 7 ; KNGP0063
PDC[I,E] ~ 0 ; KNGP0064
TIS1 ~ 1 - J ; KNGP0065
FOR U ~ J STEP 1 UNTIL Q DO KNGP0066
BEGIN KNGP0067
G ~ U + TIS1 ; KNGP0068
PDC[I,E] ~ KC1[I,U] | LOGP1[G] + PDC[I,E] KNGP0069
END KNGP0070
END ; KNGP0071
GO TO KNG2 ; KNGP0072
COMMENT CALCULATE PRESSURE DEPENDENT COEFFICIENTS OF REFERENCED KNGP0073
COMPONENTS ; KNGP0074
KNG1: PDC[I,1] ~ 0 ; KNGP0075
PDC[I,2] ~ KC1[I,2] | P + KC1[I,3] ; KNGP0076
PDC[I,3] ~ KC1[I,4] | P + KC1[I,5] ; KNGP0077
PDC[I,4] ~ KC1[I,6] | P + KC1[I,7] ; KNGP0078
KNG2: END KNGP0079
END ; KNGP0080
COMMENT CALCULATE K-RATIOS ; KNGP0081
KNG3: TR1 ~ (T + 459.7) | 0.001 ; TR12 ~ TR1*2 ; KNGP0082
FOR I ~ N STEP -1 UNTIL 1 DO KNGP0083
BEGIN KNGP0084
IF PDC[I,1] = 0 THEN GO TO KNG4 ; KNGP0085
K[I] ~ EXP (PDC[I,4] | TR12 + PDC[I,3] | TR1 + KNGP0086
PDC[I,1]/TR1 + PDC[I,2] - LOGP) ; KNGP0087
GO TO KNG5 ; KNGP0088
COMMENT CALCULATE K-RATIOS OF REFERENCED COMPONENTS ; KNGP0089
KNG4: K[I] ~ K[KC1[I,8]] | (PDC[I,3] | TR1 + PDC[I,2] + KNGP0090
PDC[I,4] | TR12) ; KNGP0091
KNG5: END ; KNGP0092
COMMENT CALCULATE TEMPERATURE DERIVATIVES OF K-RATIOS, IF CALCPT KNGP0093
IS TRUE ; KNGP0094
IF CALCPT THEN KNGP0095
FOR I ~ N STEP -1 UNTIL 1 DO KNGP0096
BEGIN KNGP0097
IF PDC[I,1] = 0 THEN GO TO KNG6 ; KNGP0098
PKT[I] ~ (-PDC[I,1]/TR12 + 2.0 | PDC[I,4] | TR1 + KNGP0099
PDC[I,3] ) | 0.001 | K[I] ; KNGP0100
GO TO KNG7 ; KNGP0101
COMMENT CALCULATE TEMPERATURE DERIVATIVES OF K-RATIOS FOR KNGP0102
REFERENCED COMPONENTS ; KNGP0103
KNG6: E ~ KC1[I,8] ; KNGP0104
PKT[I] ~ K[I]/K[E] | PKT[E] + (PDC[I,4] | 2.0 | TR1 + KNGP0105
PDC[I,3] ) | K[E] | 0.001 ; KNGP0106
KNG7: END ; KNGP0107
COMMENT CALCULATE PRESSURE DERIVATIVES OF K-RATIOS, IF CALCPP IS KNGP0108
TRUE ; KNGP0109
IF CALCPP THEN KNGP0110
FOR I ~ N STEP -1 UNTIL 1 DO KNGP0111
BEGIN KNGP0112
IF PDC[I,1] = 0 THEN GO TO KNG8 ; KNGP0113
FOR J ~ 1, 8, 15, 22 DO KNGP0114
BEGIN KNGP0115
Q ~ J + 5 ; KNGP0116
E ~ (J + 6) DIV 7 ; KNGP0117
TR1S1[E] ~ 0 ; TRS1 ~ 1.0 ; KNGP0118
TIS1 ~ 1 - J ; KNGP0119
FOR U ~ J STEP 1 UNTIL Q DO KNGP0120
BEGIN KNGP0121
G ~ U + TIS1 ; KNGP0122
TR1S1[E] ~ KC1[I,U+1] | LOGP1[G] | TRS1 + TR1S1[E] ; KNGP0123
TRS1 ~ TRS1 + 1.0 KNGP0124
END KNGP0125
END ; KNGP0126
PKP[I] ~ (TR1S1[4] | TR12 + TR1S1[3] | TR1 + TR1S1[1]/TR1 KNGP0127
+ TR1S1[2] - 10.0) | 0.1 | K[I]/P ; KNGP0128
GO TO KNG9 ; KNGP0129
COMMENT CALCULATE PRESSURE DERIVATIVES OF K-RATIOS FOR REFERENCED KNGP0130
COMPONENTS ; KNGP0131
KNG8: E ~ KC1[I,8] ; KNGP0132
PKP[I] ~ (KC1[I,6] | TR12 + KC1[I,4] | TR1 + KC1[I,2] ) | KNGP0133
K[E] + (PDC[I,4] | TR12 + PDC[I,3] | TR1 + PDC[I,2] ) | KNGP0134
PKP[E] ; KNGP0135
KNG9: END KNGP0136
END KNGAA ; KNGP0137