| 1 |
REQUIRE "johnpye/thermo_types.a4c"; |
| 2 |
|
| 3 |
MODEL iapws_sat_pressure; |
| 4 |
|
| 5 |
p IS_A pressure; |
| 6 |
T IS_A temperature; |
| 7 |
pc IS_A pressure_constant; |
| 8 |
Tc IS_A temperature_constant; |
| 9 |
|
| 10 |
Tc :== 647.096 {K}; |
| 11 |
pc :== 22.064 {MPa}; |
| 12 |
|
| 13 |
tau IS_A factor; |
| 14 |
tau_eq: tau = 1 - (T/Tc); |
| 15 |
|
| 16 |
sat_pressure_curve: ln(p/pc) = (Tc/T)*( |
| 17 |
a[1]*tau + a[2]*tau^1.5 + a[3]*tau^3 + a[4]*tau^3.5 + a[5]*tau^4 + a[6]*tau^7.5 |
| 18 |
); |
| 19 |
|
| 20 |
a[1..6] IS_A real_constant; |
| 21 |
a[1] :== -7.85951783; |
| 22 |
a[2] :== 1.84408259; |
| 23 |
a[3] :== -11.7866497; |
| 24 |
a[4] :== 22.6807411; |
| 25 |
a[5] :== -15.9618719; |
| 26 |
a[6] :== 1.80122502; |
| 27 |
|
| 28 |
METHODS |
| 29 |
METHOD default_self; |
| 30 |
RUN reset; RUN values; |
| 31 |
END default_self; |
| 32 |
METHOD specify; |
| 33 |
FIX T; |
| 34 |
END specify; |
| 35 |
METHOD values; |
| 36 |
T := 373.1243 {K}; |
| 37 |
END values; |
| 38 |
METHOD self_test; |
| 39 |
ASSERT abs(p - 101.325 {kPa}) < 1 {Pa}; |
| 40 |
END self_test; |
| 41 |
|
| 42 |
END iapws_sat_pressure; |
| 43 |
|
| 44 |
MODEL iapws_sat_density; |
| 45 |
|
| 46 |
rhof IS_A mass_density; |
| 47 |
rhog IS_A mass_density; |
| 48 |
rhoc IS_A mass_density_constant; |
| 49 |
Tc IS_A temperature_constant; |
| 50 |
T IS_A temperature; |
| 51 |
|
| 52 |
rhoc :== 322 {kg/m^3}; |
| 53 |
Tc :== 647.096 {K}; |
| 54 |
|
| 55 |
tau IS_A factor; |
| 56 |
|
| 57 |
tau = 1 - T/Tc; |
| 58 |
|
| 59 |
rhof / rhoc = 1 + b[1]*tau^(1/3) + b[2]*tau^(2/3) + b[3]*tau^(5/3) + b[4]*tau^(16/3) + b[5] * tau^(43/3) + b[6]*tau^(110/3); |
| 60 |
|
| 61 |
rhog / rhoc = exp( c[1]*tau^(2/6) + c[2] * tau^(4/6) +c[3]*tau^(8/6) + c[4] *tau^(18/6) + c[5]*tau^(37/6) + c[6]*tau^(71/6) ); |
| 62 |
|
| 63 |
b[1..6] IS_A real_constant; |
| 64 |
b[1] :== 1.99274064; |
| 65 |
b[2] :== 1.09965342; |
| 66 |
b[3] :== -0.510839303; |
| 67 |
b[4] :== -1.75493479; |
| 68 |
b[5] :== -45.5170352; |
| 69 |
b[6] :== -6.74694450e5; |
| 70 |
|
| 71 |
c[1..6] IS_A real_constant; |
| 72 |
c[1] :== -2.03150240; |
| 73 |
c[2] :== -2.68302940; |
| 74 |
c[3] :== -5.38626492; |
| 75 |
c[4] :== -17.2991605; |
| 76 |
c[5] :== -44.7586581; |
| 77 |
c[6] :== -63.9201063; |
| 78 |
|
| 79 |
METHODS |
| 80 |
|
| 81 |
METHOD default_self; |
| 82 |
RUN test_1; |
| 83 |
END default_self; |
| 84 |
|
| 85 |
METHOD specify; |
| 86 |
FIX T; |
| 87 |
END specify; |
| 88 |
|
| 89 |
METHOD values; |
| 90 |
T := 273.16 {K}; |
| 91 |
END values; |
| 92 |
|
| 93 |
(* the following methods implement the reference data points from the IAPWS supsat.pdf release. *) |
| 94 |
|
| 95 |
METHOD test_1; |
| 96 |
RUN ClearAll; |
| 97 |
RUN specify; |
| 98 |
RUN values; |
| 99 |
END test_1; |
| 100 |
|
| 101 |
METHOD test_2; |
| 102 |
RUN ClearAll; |
| 103 |
RUN specify; |
| 104 |
T := 373.1243 {K}; |
| 105 |
END test_2; |
| 106 |
|
| 107 |
METHOD test_3; |
| 108 |
RUN ClearAll; |
| 109 |
RUN specify; |
| 110 |
T := 647.096 {K}; |
| 111 |
END test_3; |
| 112 |
|
| 113 |
END iapws_sat_density; |