1 |
REQUIRE "system.a4l"; |
2 |
REQUIRE "atoms.a4l"; |
3 |
REQUIRE "johnpye/thermo_types.a4c"; |
4 |
|
5 |
(************************************************************************* |
6 |
|
7 |
The thermodynamic properties of water calculated with the |
8 |
IAPWS95 equations. Variables and units: |
9 |
|
10 |
T Temperature, K |
11 |
rho Density, kg/m^3 |
12 |
p Pressure, MPa |
13 |
u Specific internal energy, kJ/kg |
14 |
h Specific enthalpy, kJ/kg |
15 |
s Specific entropy, kJ/(kg*K) |
16 |
cv Isochoric specific heat, kJ/(kg*K) |
17 |
cp Isobaric specific heat, kJ/(kg*K) |
18 |
w Speed of sound, m/s |
19 |
|
20 |
References: |
21 |
|
22 |
[1] The International Association for the Properties of |
23 |
Water and Steam, "Release on the IAPWS Formulation 1995 |
24 |
for the Thermodynamic Properties of Ordinary Water |
25 |
Substance for General and Scientific Use", dated |
26 |
September 1996, Fredericia, Denmark. See the "Releases" |
27 |
section of the website http://www.iapws.org/. |
28 |
|
29 |
[2] NIST Chemistry Webbook: |
30 |
http://webbook.nist.gov/chemistry/fluid/ |
31 |
|
32 |
---------------------------------------------------------------------- |
33 |
|
34 |
freesteam-ascend - IAPWS-95 steam library for ASCEND |
35 |
Copyright (C) John Pye 2005 |
36 |
derived from work by Don Peterson for freesteam, (C) 2004. |
37 |
|
38 |
This program is free software; you can redistribute it |
39 |
and/or modify it under the terms of the GNU General Public |
40 |
License as published by the Free Software Foundation; either |
41 |
version 2 of the License, or (at your option) any later |
42 |
version. |
43 |
|
44 |
This program is distributed in the hope that it will be |
45 |
useful, but WITHOUT ANY WARRANTY; without even the implied |
46 |
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
47 |
PURPOSE. See the GNU General Public License for more |
48 |
details. |
49 |
|
50 |
You should have received a copy of the GNU General Public |
51 |
License along with this program; if not, write to the Free |
52 |
Software Foundation, Inc., 59 Temple Place, Suite 330, |
53 |
Boston, MA 02111-1307 USA |
54 |
|
55 |
*) |
56 |
|
57 |
MODEL steam_state; |
58 |
|
59 |
delta IS_A factor; |
60 |
tau IS_A factor; |
61 |
|
62 |
rho IS_A mass_density; |
63 |
T IS_A temperature; |
64 |
|
65 |
(*-------------- CONSTANTS ---------------*) |
66 |
rhoc IS_A mass_density_constant; |
67 |
Tc IS_A temperature_constant; |
68 |
|
69 |
rhoc "density of water at the critical point" |
70 |
:== 322 {kg/m^3}; |
71 |
|
72 |
Tc "temperature of water at the critical point" |
73 |
:== 647.096 {K}; |
74 |
|
75 |
tau = Tc / T; |
76 |
delta = rho / rhoc; |
77 |
|
78 |
|
79 |
range_0 IS_A set OF integer_constant; |
80 |
range_0 :== [1..8]; |
81 |
|
82 |
range_01 IS_A set OF integer_constant; |
83 |
range_01 :== [4..8]; |
84 |
|
85 |
range_r1 IS_A set OF integer_constant; |
86 |
range_r1 :== [1..7]; |
87 |
|
88 |
range_r2 IS_A set OF integer_constant; |
89 |
range_r2 :== [8..51]; |
90 |
|
91 |
range_r3 IS_A set OF integer_constant; |
92 |
range_r3 :== [52..54]; |
93 |
|
94 |
range_r4 IS_A set OF integer_constant; |
95 |
range_r4 :== [55..56]; |
96 |
|
97 |
n0[range_0] IS_A real_constant; |
98 |
n0[1] :== -8.32044648201; |
99 |
|
100 |
n0[2] :== 6.6832105268; |
101 |
n0[3] :== 3.00632; |
102 |
n0[4] :== 0.012436; |
103 |
|
104 |
n0[5] :== 0.97315; |
105 |
n0[6] :== 1.27950; |
106 |
n0[7] :== 0.96956; |
107 |
n0[8] :== 0.24873; |
108 |
|
109 |
gamma0[range_01] IS_A real_constant; |
110 |
gamma0[4] :== 1.28728967; |
111 |
gamma0[5] :== 3.53734222; |
112 |
gamma0[6] :== 7.74073708; |
113 |
gamma0[7] :== 9.24437796; |
114 |
gamma0[8] :== 27.5075105; |
115 |
|
116 |
n[1..56] IS_A real_constant; |
117 |
n[1] :== 0.12533547935523e-1; n[2] :== 0.78957634722828e+1; n[3] :== -0.87803203303561e+1; n[4] :== 0.31802509345418e+0; |
118 |
n[5] :== -0.26145533859358e+0; n[6] :== -0.78199751687981e-2; n[7] :== 0.88089493102134e-2; |
119 |
n[8] :== -0.66856572307965e+0; n[9] :== 0.20433810950965e+0; n[10] :== -0.66212605039687e-4; |
120 |
n[11] :== -0.19232721156002e+0; n[12] :== -0.25709043003438e+0; n[13] :== 0.16074868486251e+0; n[14] :== -0.40092828925807e-1; |
121 |
n[15] :== 0.39343422603254e-6; n[16] :== -0.75941377088144e-5; n[17] :== 0.56250979351888e-3; |
122 |
n[18] :== -0.15608652257135e-4; n[19] :== 0.11537996422951e-8; n[20] :== 0.36582165144204e-6; |
123 |
n[21] :== -0.13251180074668e-11; n[22] :== -0.62639586912454e-9; n[23] :== -0.10793600908932e+0; n[24] :== 0.17611491008752e-1; |
124 |
n[25] :== 0.22132295167546e+0; n[26] :== -0.40247669763528e+0; n[27] :== 0.58083399985759e+0; |
125 |
n[28] :== 0.49969146990806e-2; n[29] :== -0.31358700712549e-1; n[30] :== -0.74315929710341e+0; |
126 |
n[31] :== 0.47807329915480e+0; n[32] :== 0.20527940895948e-1; n[33] :== -0.13636435110343e+0; n[34] :== 0.14180634400617e-1; |
127 |
n[35] :== 0.83326504880713e-2; n[36] :== -0.29052336009585e-1; n[37] :== 0.38615085574206e-1; |
128 |
n[38] :== -0.20393486513704e-1; n[39] :== -0.16554050063734e-2; n[40] :== 0.19955571979541e-2; |
129 |
n[41] :== 0.15870308324157e-3; n[42] :== -0.16388568342530e-4; n[43] :== 0.43613615723811e-1; n[44] :== 0.34994005463765e-1; |
130 |
n[45] :== -0.76788197844621e-1; n[46] :== 0.22446277332006e-1; n[47] :== -0.62689710414685e-4; |
131 |
n[48] :== -0.55711118565645e-9; n[49] :== -0.19905718354408e+0; n[50] :== 0.31777497330738e+0; |
132 |
n[51] :== -0.11841182425981e+0; n[52] :== -0.31306260323435e+2; n[53] :== 0.31546140237781e+2; n[54] :== -0.25213154341695e+4; |
133 |
n[55] :== -0.14874640856724e+0; n[56] :== 0.31806110878444e+0; |
134 |
|
135 |
c[1..51] IS_A integer_constant; |
136 |
c[1] :== 0; c[2] :== 0; c[3] :== 0; c[4] :== 0; c[5] :== 0; |
137 |
c[6] :== 0; c[7] :== 0; c[8] :== 1; c[9] :== 1; c[10] :== 1; |
138 |
c[11] :== 1; c[12] :== 1; c[13] :== 1; c[14] :== 1; c[15] :== 1; |
139 |
c[16] :== 1; c[17] :== 1; c[18] :== 1; c[19] :== 1; c[20] :== 1; |
140 |
c[21] :== 1; c[22] :== 1; c[23] :== 2; c[24] :== 2; c[25] :== 2; |
141 |
c[26] :== 2; c[27] :== 2; c[28] :== 2; c[29] :== 2; c[30] :== 2; |
142 |
c[31] :== 2; c[32] :== 2; c[33] :== 2; c[34] :== 2; c[35] :== 2; |
143 |
c[36] :== 2; c[37] :== 2; c[38] :== 2; c[39] :== 2; c[40] :== 2; |
144 |
c[41] :== 2; c[42] :== 2; c[43] :== 3; c[44] :== 3; c[45] :== 3; |
145 |
c[46] :== 3; c[47] :== 4; c[48] :== 6; c[49] :== 6; c[50] :== 6; |
146 |
c[51] :== 6; |
147 |
|
148 |
d[1..54] IS_A integer_constant; |
149 |
d[1] :== 1; d[2] :== 1; d[3] :== 1; d[4] :== 2; d[5] :== 2; |
150 |
d[6] :== 3; d[7] :== 4; d[8] :== 1; d[9] :== 1; d[10] :== 1; |
151 |
d[11] :== 2; d[12] :== 2; d[13] :== 3; d[14] :== 4; d[15] :== 4; |
152 |
d[16] :== 5; d[17] :== 7; d[18] :== 9; d[19] :== 10; d[20] :== 11; |
153 |
d[21] :== 13; d[22] :== 15; d[23] :== 1; d[24] :== 2; d[25] :== 2; |
154 |
d[26] :== 2; d[27] :== 3; d[28] :== 4; d[29] :== 4; d[30] :== 4; |
155 |
d[31] :== 5; d[32] :== 6; d[33] :== 6; d[34] :== 7; d[35] :== 9; |
156 |
d[36] :== 9; d[37] :== 9; d[38] :== 9; d[39] :== 9; d[40] :== 10; |
157 |
d[41] :== 10; d[42] :== 12; d[43] :== 3; d[44] :== 4; d[45] :== 4; |
158 |
d[46] :== 5; d[47] :== 14; d[48] :== 3; d[49] :== 6; d[50] :== 6; |
159 |
d[51] :== 6; d[52] :== 3; d[53] :== 3; d[54] :== 3; |
160 |
|
161 |
t[1..54] IS_A real_constant; |
162 |
t[1] :== -0.5; t[2] :== 0.875; t[3] :== 1; t[4] :== 0.5; t[5] :== 0.75; |
163 |
t[6] :== 0.375; t[7] :== 1; t[8] :== 4; t[9] :== 6; t[10] :== 12; |
164 |
t[11] :== 1; t[12] :== 5; t[13] :== 4; t[14] :== 2; t[15] :== 13; |
165 |
t[16] :== 9; t[17] :== 3; t[18] :== 4; t[19] :== 11; t[20] :== 4; |
166 |
t[21] :== 13; t[22] :== 1; t[23] :== 7; t[24] :== 1; t[25] :== 9; |
167 |
t[26] :== 10; t[27] :== 10; t[28] :== 3; t[29] :== 7; t[30] :== 10; |
168 |
t[31] :== 10; t[32] :== 6; t[33] :== 10; t[34] :== 10; t[35] :== 1; |
169 |
t[36] :== 2; t[37] :== 3; t[38] :== 4; t[39] :== 8; t[40] :== 6; |
170 |
t[41] :== 9; t[42] :== 8; t[43] :== 16; t[44] :== 22; t[45] :== 23; |
171 |
t[46] :== 23; t[47] :== 10; t[48] :== 50; t[49] :== 44; t[50] :== 46; |
172 |
t[51] :== 50; t[52] :== 0; t[53] :== 1; t[54] :== 4; |
173 |
|
174 |
(* Correlation parameters *) |
175 |
|
176 |
(* TODO convert from C to ASCEND arrays? Note trickiness with 0- and 1-based array indices. *) |
177 |
|
178 |
a[range_r4] IS_A real_constant; |
179 |
a[55]:==3.5; |
180 |
a[56]:==3.5; |
181 |
|
182 |
b[range_r4] IS_A real_constant; |
183 |
b[55]:== 0.85; |
184 |
b[56]:== 0.95; |
185 |
|
186 |
A[range_r4] IS_A real_constant; |
187 |
A[55]:==0.32; |
188 |
A[56]:==0.32; |
189 |
|
190 |
B[range_r4] IS_A real_constant; |
191 |
B[55]:==0.2; |
192 |
B[56]:==0.2; |
193 |
|
194 |
C[range_r4] IS_A real_constant; |
195 |
C[55]:==28; |
196 |
C[56]:==32; |
197 |
|
198 |
D[range_r4] IS_A real_constant; |
199 |
D[55]:==700; |
200 |
D[56]:==800; |
201 |
|
202 |
beta_r4[range_r4] IS_A real_constant; |
203 |
beta_r4[55]:==0.3; |
204 |
beta_r4[56]:==0.3; |
205 |
|
206 |
alpha[range_r3] IS_A integer_constant; |
207 |
alpha[52]:==20; |
208 |
alpha[53]:==20; |
209 |
alpha[54]:==20; |
210 |
|
211 |
beta[range_r3] IS_A real_constant; |
212 |
beta[52]:==150; |
213 |
beta[53]:==150; |
214 |
beta[54]:==250; |
215 |
|
216 |
gamma[range_r3] IS_A real_constant; |
217 |
gamma[52]:==1.21; |
218 |
gamma[53]:==1.21; |
219 |
gamma[54]:==1.25; |
220 |
|
221 |
(*--------------- DIMENSIONLESS PARTIAL DERIVATIVES ---------------- *) |
222 |
|
223 |
(*------------ IDEAL PARTS ------------*) |
224 |
|
225 |
phi0 IS_A factor; |
226 |
phi0 = |
227 |
SUM[ n0[i]*ln(1-exp(-tau*gamma0[i])) | i IN [range_01] ] |
228 |
+ ln(delta) + n0[1] + n0[2]*tau + n0[3]*ln(tau); |
229 |
|
230 |
phi0delta IS_A factor; |
231 |
phi0delta = 1.0/delta; |
232 |
|
233 |
phi0deltadelta IS_A factor; |
234 |
phi0deltadelta = |
235 |
-1.0/(delta*delta); |
236 |
|
237 |
|
238 |
phi0tau IS_A factor; |
239 |
phi0tau = |
240 |
n0[2] + n0[3]/tau |
241 |
+ SUM[ n0[i]*gamma0[i]*(1/(1-exp(-tau*gamma0[i])) - 1) | i IN [range_01] ]; |
242 |
|
243 |
phi0deltatau IS_A real_constant; |
244 |
phi0deltatau :== 0.0; |
245 |
|
246 |
phi0tautau IS_A factor; |
247 |
phi0tautau |
248 |
= -n0[3]/(tau*tau) |
249 |
- SUM [ n0[i] * gamma0[i]^2 * exp(-tau*gamma0[i]) / ( 1 - exp(-tau*gamma0[i]) )^2 | i IN range_01 ]; |
250 |
|
251 |
(*----------- 'REAL' PARTS -- CLOSE YOUR EYES -----------*) |
252 |
|
253 |
d1 IS_A factor; |
254 |
d1 = delta - 1; |
255 |
|
256 |
t1 IS_A factor; |
257 |
t1 = tau -1; |
258 |
|
259 |
r3_b1[range_r3] IS_A factor; |
260 |
FOR i IN range_r3 CREATE |
261 |
r3_b1[i] = -alpha[i]*d1^2 - beta[i]* (tau - gamma[i])^2; |
262 |
END FOR; |
263 |
|
264 |
PSI[range_r4] IS_A factor; |
265 |
theta[range_r4] IS_A factor; |
266 |
DELTA[range_r4] IS_A factor; |
267 |
dDELTA_ddelta[range_r4] IS_A factor; |
268 |
dPSI_ddelta[range_r4] IS_A factor; |
269 |
dDELTAbi_ddelta[range_r4] IS_A factor; |
270 |
dDELTAbi_dtau[range_r4] IS_A factor; |
271 |
dPSI_dtau[range_r4] IS_A factor; |
272 |
d2DELTA_ddelta2[range_r4] IS_A factor; |
273 |
d2DELTAbi_ddelta2[range_r4] IS_A factor; |
274 |
d2PSI_ddelta2[range_r4] IS_A factor; |
275 |
d2DELTAbi_dtau2[range_r4] IS_A factor; |
276 |
d2PSI_dtau2[range_r4] IS_A factor; |
277 |
d2PSI_ddeltadtau[range_r4] IS_A factor; |
278 |
d2DELTAbi_ddeltadtau[range_r4] IS_A factor; |
279 |
|
280 |
FOR i IN range_r4 CREATE |
281 |
PSI[i] = exp(-C[i]*d1^2 - D[i]*t1^2); |
282 |
theta[i] = 1 - tau + A[i] * (d1^2)^( 1/(2 * beta_r4[i]) ); |
283 |
DELTA[i] = theta[i]^2 + B[i] * (d1^2)^a[i]; |
284 |
|
285 |
dDELTA_ddelta[i] = d1*(A[i]*theta[i]*2/beta_r4[i]* |
286 |
(d1^2)^(1/(2*beta_r4[i]) - 1) + 2*B[i]*a[i]* |
287 |
(d1^2)^(a[i] - 1) ); |
288 |
|
289 |
dPSI_ddelta[i] = -2*C[i]*d1*PSI[i]; |
290 |
|
291 |
dDELTAbi_ddelta[i] = b[i] * DELTA[i]^(b[i]-1) * dDELTA_ddelta[i]; |
292 |
|
293 |
dDELTAbi_dtau[i] = -2 * theta[i] * b[i] * DELTA[i]^(b[i]-1); |
294 |
dPSI_dtau[i] = -2 * D[i] * t1 * PSI[i]; |
295 |
|
296 |
d2PSI_ddelta2[i] = (2 * C[i] * d1^2 - 1) * 2 * C[i] * PSI[i]; |
297 |
|
298 |
d2DELTA_ddelta2[i] = 1/d1*dDELTA_ddelta[i] + d1^2*(4*B[i]*a[i]* |
299 |
(a[i]-1)*(d1^2)^(a[i]-2) + 2*A[i]^2* |
300 |
(1/(beta_r4[i]^2))*((d1^2) ^ (1/(2*beta_r4[i])-1))^2) + |
301 |
A[i]*theta[i]*4/beta_r4[i]*(1/(2*beta_r4[i]) - 1)* |
302 |
(d1^2)^(1/(2*beta_r4[i]) - 2); |
303 |
|
304 |
d2DELTAbi_ddelta2[i] =b[i]*(DELTA[i]^(b[i]-1) * |
305 |
d2DELTA_ddelta2[i] + (b[i]-1)*DELTA[i]^(b[i]-2)* |
306 |
dDELTA_ddelta[i]^2); |
307 |
|
308 |
d2DELTAbi_dtau2[i] = 2*b[i] * DELTA[i]^(b[i]-1) + |
309 |
4*theta[i]^2 * b[i]*(b[i]-1) * DELTA[i]^(b[i]-2); |
310 |
|
311 |
d2PSI_dtau2[i] = (2 * D[i] * t1^2 - 1) * 2 * D[i] * PSI[i]; |
312 |
|
313 |
d2PSI_ddeltadtau[i] = 4 * C[i] * D[i] * d1 * t1 * PSI[i]; |
314 |
|
315 |
d2DELTAbi_ddeltadtau[i] = -A[i] * b[i]*2/beta_r4[i] * |
316 |
DELTA[i]^(b[i]-1) * d1 * (d1^2)^(1/(2*beta_r4[i])-1) - |
317 |
2 * theta[i] * b[i] *(b[i]-1) * DELTA[i]^(b[i]-2) * |
318 |
dDELTA_ddelta[i]; |
319 |
|
320 |
END FOR; |
321 |
|
322 |
phir IS_A factor; |
323 |
phir "phir expr" |
324 |
= |
325 |
SUM[ n[i] * delta^d[i] * tau^t[i] | i IN [range_r1] ] |
326 |
+ |
327 |
SUM[ n[i] * delta^d[i] * tau^t[i] * |
328 |
exp(-delta^c[i]) | i IN [range_r2] ] |
329 |
+ |
330 |
SUM[ n[i] * delta^d[i] * tau^t[i] * exp( |
331 |
-alpha[i]*d1^2 - beta[i]* |
332 |
(tau - gamma[i])*(tau - gamma[i]) |
333 |
) | i IN [range_r3] ] |
334 |
+ |
335 |
SUM[ n[i] * DELTA[i]^b[i] * delta * PSI[i] | i IN [range_r4] ]; |
336 |
|
337 |
|
338 |
phirdelta IS_A factor; |
339 |
phirdelta = |
340 |
SUM[ n[i] * d[i] * delta^(d[i] - 1) * tau^t[i] | i IN range_r1 ] |
341 |
+ SUM[ n[i] * exp(-delta^c[i]) * (delta^(d[i]-1) * |
342 |
tau^t[i] * (d[i] - c[i] * delta^c[i]) ) | i IN range_r2 ] |
343 |
+ SUM[ n[i]*delta^d[i] * tau^t[i] * exp( r3_b1[i] ) * |
344 |
(d[i]/delta - 2*alpha[i]*d1) | i IN range_r3 ] |
345 |
+ SUM[ n[i] * ( |
346 |
DELTA[i]^b[i] * (PSI[i] + delta * dPSI_ddelta[i] ) |
347 |
+ dDELTAbi_ddelta[i] * delta * PSI[i] ) | i IN range_r4 ]; |
348 |
|
349 |
phirtau IS_A factor; |
350 |
phirtau = |
351 |
SUM[ n[i] * t[i] * delta^d[i] * tau^(t[i]-1) | i IN range_r1 ] |
352 |
+ SUM[ n[i]*t[i]*delta^d[i]*tau^(t[i]-1) * exp(-delta^c[i]) | i IN range_r2 ] |
353 |
+ SUM[ n[i] * delta^d[i] * tau^t[i] * exp( r3_b1[i] )* |
354 |
(t[i]/tau - 2*beta[i]*(tau - gamma[i])) | i IN range_r3 ] |
355 |
+ SUM[ n[i]*delta*(dDELTAbi_dtau[i] * PSI[i] + |
356 |
DELTA[i]^b[i]*dPSI_dtau[i]) | i IN range_r4 ]; |
357 |
|
358 |
|
359 |
phirdeltadelta IS_A factor; |
360 |
phirdeltadelta = |
361 |
SUM[ n[i] * d[i] * (d[i] - 1) * delta^(d[i]-2) * tau^t[i] | i IN range_r1 ] |
362 |
+ SUM[ n[i]*exp(-(delta^c[i]))*((delta^(d[i]-2))* |
363 |
(tau^t[i])*((d[i] - c[i]*(delta^c[i]))* |
364 |
(d[i]-1-c[i]*(delta^c[i])) - |
365 |
c[i]*c[i]*(delta^c[i]))) | i IN range_r2 ] |
366 |
+ SUM[ n[i]*(tau^t[i])*exp( r3_b1[i] )* |
367 |
(-2*alpha[i]*(delta^d[i]) + |
368 |
4*alpha[i]*alpha[i]*(delta^d[i])*d1^2 - |
369 |
4*d[i]*alpha[i]*(delta^(d[i]-1))*d1 + |
370 |
d[i]*(d[i]-1)*(delta^(d[i]-1))) | i IN range_r3 ] |
371 |
+ SUM[ n[i]*( |
372 |
DELTA[i]^b[i] * (2*dPSI_ddelta[i] + delta*d2PSI_ddelta2[i] ) |
373 |
+ 2*dDELTAbi_ddelta[i] * (PSI[i] + delta*dPSI_ddelta[i]) |
374 |
+ d2DELTAbi_ddelta2[i] * delta * PSI[i] ) | i IN range_r4 ]; |
375 |
|
376 |
phirtautau IS_A factor; |
377 |
phirtautau = |
378 |
SUM[ n[i] * t[i] * (t[i]-1) * delta^d[i] * |
379 |
tau^(t[i]-2) | i IN range_r1 ] |
380 |
+ SUM[ n[i]*t[i]*(t[i]-1)* delta^d[i] * |
381 |
tau^(t[i]-2) * exp(- delta^c[i] ) | i IN range_r2 ] |
382 |
+ SUM[ n[i] * delta^d[i] * tau^t[i] * exp( r3_b1[i] ) * |
383 |
( (t[i]/tau - 2*beta[i]* (tau - gamma[i]) )^2 - |
384 |
t[i]/tau^2 - 2*beta[i] ) | i IN range_r3 ] |
385 |
+ SUM[ n[i] * delta * (d2DELTAbi_dtau2[i] * PSI[i] + |
386 |
2 * dDELTAbi_dtau[i] * dPSI_dtau[i] + DELTA[i]^b[i] * d2PSI_dtau2[i] ) | i IN range_r4 ]; |
387 |
|
388 |
phirdeltatau IS_A factor; |
389 |
phirdeltatau = |
390 |
SUM[ n[i]*d[i]*t[i] * delta^(d[i]-1) * tau^(t[i]-1) | i IN range_r1 ] |
391 |
|
392 |
+ SUM[ n[i]*t[i] * delta^(d[i]-1) * tau^(t[i]-1) |
393 |
* (d[i] - c[i] * delta^c[i] * exp(-delta^c[i]) ) | i IN range_r2 ] |
394 |
+ SUM[ n[i] * delta^d[i] * tau^t[i] * exp( r3_b1[i] ) * |
395 |
(d[i]/delta - 2*alpha[i]*d1) * (t[i]/tau - 2*beta[i]* (tau - gamma[i]) ) | i IN range_r3 ] |
396 |
+ SUM[ n[i]*( DELTA[i]^b[i] * (dPSI_dtau[i] + delta * |
397 |
d2PSI_ddeltadtau[i] ) + delta * dDELTAbi_ddelta[i] * dPSI_dtau[i] + |
398 |
dDELTAbi_dtau[i] * (PSI[i] + delta * dPSI_ddelta[i] ) + |
399 |
d2DELTAbi_ddeltadtau[i] * delta * PSI[i] ) | i IN range_r4 ]; |
400 |
|
401 |
(*--------- THERMO PROPERTY RELATIONS ----------- *) |
402 |
|
403 |
p IS_A pressure; |
404 |
u IS_A specific_energy; |
405 |
h IS_A specific_enthalpy; |
406 |
s IS_A specific_entropy; |
407 |
cp IS_A specific_heat_capacity; |
408 |
cv IS_A specific_heat_capacity; |
409 |
w IS_A speed; |
410 |
|
411 |
pressure: p |
412 |
= rho*(1{GAS_C})*T*(1 + delta*phirdelta); |
413 |
|
414 |
internal_energy: u |
415 |
= (1{GAS_C})*T*tau*(phi0tau + phirtau); |
416 |
|
417 |
enthalpy: h |
418 |
= (1{GAS_C})*T*(1 + tau*(phi0tau + phirtau) + delta*phirdelta); |
419 |
|
420 |
entropy: s |
421 |
= (1{GAS_C})*(tau*(phi0tau + phirtau) - phi0 - phir); |
422 |
|
423 |
c_isochoric: cv |
424 |
= -(1{GAS_C})*tau*tau*(phi0tautau + phirtautau); |
425 |
|
426 |
c_isobaric: cp |
427 |
= (1{GAS_C})*( -tau*tau*(phi0tautau + phirtautau) + |
428 |
( 1 + delta*phirdelta - delta*tau*phirdeltatau )^2 |
429 |
/ ( 1 + 2*delta*phirdelta + delta*delta*phirdeltadelta) |
430 |
); |
431 |
|
432 |
spd_sound: w |
433 |
= sqrt((1{GAS_C})*T* ( 1 + 2*delta*phirdelta + delta*delta*phirdeltadelta - |
434 |
( 1 + delta*phirdelta - delta*tau*phirdeltatau )^2 |
435 |
/ ( tau*tau*(phi0tautau + phirtautau) ) |
436 |
)); |
437 |
|
438 |
|
439 |
METHODS |
440 |
METHOD default_self; |
441 |
(* nothing here *) |
442 |
END default_self; |
443 |
|
444 |
METHOD specify; |
445 |
FIX T; |
446 |
FIX rho; |
447 |
END specify; |
448 |
|
449 |
METHOD values; |
450 |
T := 290 {K}; |
451 |
rho := 997 {kg/m^3}; |
452 |
END values; |
453 |
|
454 |
END steam_state; |