iapws-if97 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +113 -0
- package/dist/backward/hs.d.ts +16 -0
- package/dist/backward/hs.d.ts.map +1 -0
- package/dist/backward/hs.js +234 -0
- package/dist/backward/hs.js.map +1 -0
- package/dist/backward/ph.d.ts +21 -0
- package/dist/backward/ph.d.ts.map +1 -0
- package/dist/backward/ph.js +231 -0
- package/dist/backward/ph.js.map +1 -0
- package/dist/backward/ps.d.ts +13 -0
- package/dist/backward/ps.d.ts.map +1 -0
- package/dist/backward/ps.js +189 -0
- package/dist/backward/ps.js.map +1 -0
- package/dist/constants.d.ts +65 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +74 -0
- package/dist/constants.js.map +1 -0
- package/dist/core/region-detector.d.ts +24 -0
- package/dist/core/region-detector.d.ts.map +1 -0
- package/dist/core/region-detector.js +409 -0
- package/dist/core/region-detector.js.map +1 -0
- package/dist/core/solver.d.ts +19 -0
- package/dist/core/solver.d.ts.map +1 -0
- package/dist/core/solver.js +92 -0
- package/dist/core/solver.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/regions/boundaries.d.ts +50 -0
- package/dist/regions/boundaries.d.ts.map +1 -0
- package/dist/regions/boundaries.js +98 -0
- package/dist/regions/boundaries.js.map +1 -0
- package/dist/regions/region1.d.ts +18 -0
- package/dist/regions/region1.d.ts.map +1 -0
- package/dist/regions/region1.js +95 -0
- package/dist/regions/region1.js.map +1 -0
- package/dist/regions/region2.d.ts +18 -0
- package/dist/regions/region2.d.ts.map +1 -0
- package/dist/regions/region2.js +134 -0
- package/dist/regions/region2.js.map +1 -0
- package/dist/regions/region3-data-am.d.ts +19 -0
- package/dist/regions/region3-data-am.d.ts.map +1 -0
- package/dist/regions/region3-data-am.js +53 -0
- package/dist/regions/region3-data-am.js.map +1 -0
- package/dist/regions/region3-data-nz.d.ts +18 -0
- package/dist/regions/region3-data-nz.d.ts.map +1 -0
- package/dist/regions/region3-data-nz.js +53 -0
- package/dist/regions/region3-data-nz.js.map +1 -0
- package/dist/regions/region3-eval.d.ts +30 -0
- package/dist/regions/region3-eval.d.ts.map +1 -0
- package/dist/regions/region3-eval.js +25 -0
- package/dist/regions/region3-eval.js.map +1 -0
- package/dist/regions/region3-subregions.d.ts +5 -0
- package/dist/regions/region3-subregions.d.ts.map +1 -0
- package/dist/regions/region3-subregions.js +164 -0
- package/dist/regions/region3-subregions.js.map +1 -0
- package/dist/regions/region3.d.ts +18 -0
- package/dist/regions/region3.d.ts.map +1 -0
- package/dist/regions/region3.js +112 -0
- package/dist/regions/region3.js.map +1 -0
- package/dist/regions/region4.d.ts +27 -0
- package/dist/regions/region4.d.ts.map +1 -0
- package/dist/regions/region4.js +62 -0
- package/dist/regions/region4.js.map +1 -0
- package/dist/regions/region5.d.ts +18 -0
- package/dist/regions/region5.d.ts.map +1 -0
- package/dist/regions/region5.js +92 -0
- package/dist/regions/region5.js.map +1 -0
- package/dist/saturation/common.d.ts +12 -0
- package/dist/saturation/common.d.ts.map +1 -0
- package/dist/saturation/common.js +75 -0
- package/dist/saturation/common.js.map +1 -0
- package/dist/saturation/two-phase.d.ts +22 -0
- package/dist/saturation/two-phase.d.ts.map +1 -0
- package/dist/saturation/two-phase.js +44 -0
- package/dist/saturation/two-phase.js.map +1 -0
- package/dist/solvers/nelder-mead.d.ts +21 -0
- package/dist/solvers/nelder-mead.d.ts.map +1 -0
- package/dist/solvers/nelder-mead.js +99 -0
- package/dist/solvers/nelder-mead.js.map +1 -0
- package/dist/solvers/newton-raphson.d.ts +25 -0
- package/dist/solvers/newton-raphson.d.ts.map +1 -0
- package/dist/solvers/newton-raphson.js +44 -0
- package/dist/solvers/newton-raphson.js.map +1 -0
- package/dist/transport/properties.d.ts +47 -0
- package/dist/transport/properties.d.ts.map +1 -0
- package/dist/transport/properties.js +205 -0
- package/dist/transport/properties.js.map +1 -0
- package/dist/types.d.ts +161 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +56 -0
- package/dist/types.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IAPWS-IF97 Backward Equations: P-H → T, v
|
|
3
|
+
*
|
|
4
|
+
* Given pressure and specific enthalpy, compute temperature (and volume for R3).
|
|
5
|
+
* Uses backward equations for initial guess + Newton-Raphson refinement.
|
|
6
|
+
*
|
|
7
|
+
* Reference: IAPWS-IF97 Supplementary Release on Backward Equations
|
|
8
|
+
*/
|
|
9
|
+
import { Region, IF97Error } from '../types.js';
|
|
10
|
+
import * as C from '../constants.js';
|
|
11
|
+
import { region1 } from '../regions/region1.js';
|
|
12
|
+
import { region2 } from '../regions/region2.js';
|
|
13
|
+
import { region3ByRhoT } from '../regions/region3.js';
|
|
14
|
+
import { region5 } from '../regions/region5.js';
|
|
15
|
+
import { saturationTemperature } from '../regions/region4.js';
|
|
16
|
+
import { detectRegionPH } from '../core/region-detector.js';
|
|
17
|
+
import { newtonRaphson } from '../solvers/newton-raphson.js';
|
|
18
|
+
import { nelderMead } from '../solvers/nelder-mead.js';
|
|
19
|
+
import { mixSaturationState, qualityFromSaturationProperty, saturationEndpointsAtPressure, } from '../saturation/common.js';
|
|
20
|
+
// ─── Backward Polynomial Evaluator ─────────────────────────────────────────
|
|
21
|
+
function evalPoly(table, piShift, etaShift, pi, eta) {
|
|
22
|
+
let sum = 0;
|
|
23
|
+
for (const [I, J, N] of table) {
|
|
24
|
+
sum += N * Math.pow(pi - piShift, I) * Math.pow(eta - etaShift, J);
|
|
25
|
+
}
|
|
26
|
+
return sum;
|
|
27
|
+
}
|
|
28
|
+
// ─── Region 1 Backward T(P,H) — Eq. 11 ────────────────────────────────────
|
|
29
|
+
const R1_PH = [
|
|
30
|
+
[0, 0, -238.72489924521], [0, 1, 404.21188637945], [0, 2, 113.49746881718], [0, 6, -5.8457616048039],
|
|
31
|
+
[0, 22, -0.0001528548241314], [0, 32, -1.0866707695377e-6], [1, 0, -13.391744872602], [1, 1, 43.211039183559],
|
|
32
|
+
[1, 2, -54.010067170506], [1, 3, 30.535892203916], [1, 4, -6.5964749423638], [1, 10, 0.0093965400878363],
|
|
33
|
+
[1, 32, 1.157364750534e-7], [2, 10, -0.000025858641282073], [2, 32, -4.0644363084799e-9],
|
|
34
|
+
[3, 10, 6.6456186191635e-8], [3, 32, 8.0670734103027e-11], [4, 32, -9.3477771213947e-13],
|
|
35
|
+
[5, 32, 5.8265442020601e-15], [6, 32, -1.5020185953503e-17],
|
|
36
|
+
];
|
|
37
|
+
function r1BackwardT(p, h) {
|
|
38
|
+
return evalPoly(R1_PH, 0, -1, p, h / 2500);
|
|
39
|
+
}
|
|
40
|
+
// ─── Region 2 Backward T(P,H) ─────────────────────────────────────────────
|
|
41
|
+
// B2bc boundary (exported for future use)
|
|
42
|
+
export function b2bc_H_P(h) {
|
|
43
|
+
return 0.90584278514723e-3 - 0.67955786399241 * h + 0.12809002730136e-3 * h * h;
|
|
44
|
+
}
|
|
45
|
+
// Subregion 2a — Eq. 22
|
|
46
|
+
const R2A_PH = [
|
|
47
|
+
[0, 0, 1089.8952318288], [0, 1, 849.51654495535], [0, 2, -107.81748091826], [0, 3, 33.153654801263],
|
|
48
|
+
[0, 7, -7.4232016790248], [0, 20, 11.765048724356], [1, 0, 1.844574935579], [1, 1, -4.1792700549624],
|
|
49
|
+
[1, 2, 6.2478196935812], [1, 3, -17.344563108114], [1, 7, -200.58176862096], [1, 9, 271.96065473796],
|
|
50
|
+
[1, 11, -455.11318285818], [1, 18, 3091.9688604755], [1, 44, 252266.40357872], [2, 0, -0.0061707422868339],
|
|
51
|
+
[2, 2, -0.31078046629583], [2, 7, 11.670873077107], [2, 36, 128127984.04046], [2, 38, -985549096.23276],
|
|
52
|
+
[2, 40, 2822454697.3002], [2, 42, -3594897141.0703], [2, 44, 1722734991.3197], [3, 24, -13551.334240775],
|
|
53
|
+
[3, 44, 12848734.66465], [4, 12, 1.3865724283226], [4, 32, 235988.32556514], [4, 44, -13105236.545054],
|
|
54
|
+
[5, 32, 7399.9835474766], [5, 36, -551966.9703006], [5, 42, 3715408.5996233], [6, 34, 19127.7292396],
|
|
55
|
+
[6, 44, -415351.64835634], [7, 28, -62.459855192507],
|
|
56
|
+
];
|
|
57
|
+
function r2aBackwardT(p, h) {
|
|
58
|
+
return evalPoly(R2A_PH, 0, 2.1, p, h / 2000);
|
|
59
|
+
}
|
|
60
|
+
// Subregion 2b — Eq. 23
|
|
61
|
+
const R2B_PH = [
|
|
62
|
+
[0, 0, 1489.5041079516], [0, 1, 743.07798314034], [0, 2, -97.708318797837], [0, 12, 2.4742464705674],
|
|
63
|
+
[0, 18, -0.63281320016026], [0, 24, 1.1385952129658], [0, 28, -0.47811863648625], [0, 40, 0.0085208123431544],
|
|
64
|
+
[1, 0, 0.93747147377932], [1, 2, 3.3593118604916], [1, 6, 3.3809355601454], [1, 12, 0.16844539671904],
|
|
65
|
+
[1, 18, 0.73875745236695], [1, 24, -0.47128737436186], [1, 28, 0.15020273139707], [1, 40, -0.002176411421975],
|
|
66
|
+
[2, 2, -0.021810755324761], [2, 8, -0.10829784403677], [2, 18, -0.046333324635812], [2, 40, 0.000071280351959551],
|
|
67
|
+
[3, 1, 0.00011032831789999], [3, 2, 0.00018955248387902], [3, 12, 0.0030891541160537], [3, 24, 0.0013555504554949],
|
|
68
|
+
[4, 2, 2.8640237477456e-7], [4, 12, -0.000010779857357512], [4, 18, -0.000076462712454814],
|
|
69
|
+
[4, 24, 0.000014052392818316], [4, 28, -0.000031083814331434], [4, 40, -1.0302738212103e-6],
|
|
70
|
+
[5, 18, 2.821728163504e-7], [5, 24, 1.2704902271945e-6], [5, 40, 7.3803353468292e-8],
|
|
71
|
+
[6, 28, -1.1030139238909e-8], [7, 2, -8.1456365207833e-14], [7, 28, -2.5180545682962e-11],
|
|
72
|
+
[9, 1, -1.7565233969407e-18], [9, 40, 8.6934156344163e-15],
|
|
73
|
+
];
|
|
74
|
+
function r2bBackwardT(p, h) {
|
|
75
|
+
return evalPoly(R2B_PH, 2, 2.6, p, h / 2000);
|
|
76
|
+
}
|
|
77
|
+
// Subregion 2c — Eq. 24
|
|
78
|
+
const R2C_PH = [
|
|
79
|
+
[-7, 0, -3236839855524.2], [-7, 4, 7326335090218.1], [-6, 0, 358250899454.47], [-6, 2, -583401318515.9],
|
|
80
|
+
[-5, 0, -10783068217.47], [-5, 2, 20825544563.171], [-2, 0, 610747.83564516], [-2, 1, 859777.2253558],
|
|
81
|
+
[-1, 0, -25745.72360417], [-1, 2, 31081.088422714], [0, 0, 1208.2315865936], [0, 1, 482.19755109255],
|
|
82
|
+
[1, 4, 3.7966001272486], [1, 8, -10.842984880077], [2, 4, -0.04536417267666],
|
|
83
|
+
[6, 0, 1.4559115658698e-13], [6, 1, 1.126159740723e-12], [6, 4, -1.7804982240686e-11],
|
|
84
|
+
[6, 10, 1.2324579690832e-7], [6, 12, -1.1606921130984e-6], [6, 16, 0.000027846367088554],
|
|
85
|
+
[6, 20, -0.00059270038474176], [6, 22, 0.0012918582991878],
|
|
86
|
+
];
|
|
87
|
+
function r2cBackwardT(p, h) {
|
|
88
|
+
return evalPoly(R2C_PH, -25, 1.8, p, h / 2000);
|
|
89
|
+
}
|
|
90
|
+
function r2BackwardT(p, h) {
|
|
91
|
+
let T;
|
|
92
|
+
if (p <= C.R2_P_CRT) {
|
|
93
|
+
T = r2aBackwardT(p, h);
|
|
94
|
+
}
|
|
95
|
+
else if (p <= 6.546699678) {
|
|
96
|
+
T = r2bBackwardT(p, h);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
if (p < 905.84278514723 - 0.67955786399241 * h + 1.2809002730136e-4 * h * h) {
|
|
100
|
+
T = r2bBackwardT(p, h);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
T = r2cBackwardT(p, h);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (p <= C.Pc) {
|
|
107
|
+
T = Math.max(saturationTemperature(p), T);
|
|
108
|
+
}
|
|
109
|
+
return T;
|
|
110
|
+
}
|
|
111
|
+
// ─── Region 3 Backward T(P,H) and v(P,H) ──────────────────────────────────
|
|
112
|
+
/** B3ab boundary: P → H */
|
|
113
|
+
export function b3ab_P_to_H(p) {
|
|
114
|
+
return 2014.64004206875 + 3.74696550136983 * p - 0.0219921901054187 * p * p + 0.000087513168600995 * p * p * p;
|
|
115
|
+
}
|
|
116
|
+
const R3A_PH_T = [
|
|
117
|
+
[-12, 0, -1.33645667811215e-7], [-12, 1, 4.55912656802978e-6], [-12, 2, -1.46294640700979e-5],
|
|
118
|
+
[-12, 6, 0.0063934131297008], [-12, 14, 372.783927268847], [-12, 16, -7186.54377460447],
|
|
119
|
+
[-12, 20, 573494.7521034], [-12, 22, -2675693.29111439], [-10, 1, -3.34066283302614e-5],
|
|
120
|
+
[-10, 5, -0.0245479214069597], [-10, 12, 47.8087847764996], [-8, 0, 7.64664131818904e-6],
|
|
121
|
+
[-8, 2, 0.00128350627676972], [-8, 4, 0.0171219081377331], [-8, 10, -8.51007304583213],
|
|
122
|
+
[-5, 2, -0.0136513461629781], [-3, 0, -3.84460997596657e-6], [-2, 1, 0.00337423807911655],
|
|
123
|
+
[-2, 3, -0.551624873066791], [-2, 4, 0.72920227710747], [-1, 0, -0.00992522757376041],
|
|
124
|
+
[-1, 2, -0.119308831407288], [0, 0, 0.793929190615421], [0, 1, 0.454270731799386],
|
|
125
|
+
[1, 1, 0.20999859125991], [3, 0, -0.00642109823904738], [3, 1, -0.023515586860454],
|
|
126
|
+
[4, 0, 0.00252233108341612], [4, 3, -0.00764885133368119], [10, 4, 0.0136176427574291],
|
|
127
|
+
[12, 5, -0.0133027883575669],
|
|
128
|
+
];
|
|
129
|
+
const R3A_PH_V = [
|
|
130
|
+
[-12, 6, 0.00529944062966028], [-12, 8, -0.170099690234461], [-12, 12, 11.1323814312927],
|
|
131
|
+
[-12, 18, -2178.98123145125], [-10, 4, -0.000506061827980875], [-10, 7, 0.556495239685324],
|
|
132
|
+
[-10, 10, -9.43672726094016], [-8, 5, -0.297856807561527], [-8, 12, 93.9353943717186],
|
|
133
|
+
[-6, 3, 0.0192944939465981], [-6, 4, 0.421740664704763], [-6, 22, -3689141.2628233],
|
|
134
|
+
[-4, 2, -0.00737566847600639], [-4, 3, -0.354753242424366], [-3, 7, -1.99768169338727],
|
|
135
|
+
[-2, 3, 1.15456297059049], [-2, 16, 5683.6687581596], [-1, 0, 0.00808169540124668],
|
|
136
|
+
[-1, 1, 0.172416341519307], [-1, 2, 1.04270175292927], [-1, 3, -0.297691372792847],
|
|
137
|
+
[0, 0, 0.560394465163593], [0, 1, 0.275234661176914], [1, 0, -0.148347894866012],
|
|
138
|
+
[1, 1, -0.0651142513478515], [1, 2, -2.92468715386302], [2, 0, 0.0664876096952665],
|
|
139
|
+
[2, 2, 3.52335014263844], [3, 0, -0.0146340792313332], [4, 2, -2.24503486668184],
|
|
140
|
+
[5, 2, 1.10533464706142], [8, 2, -0.0408757344495612],
|
|
141
|
+
];
|
|
142
|
+
const R3B_PH_T = [
|
|
143
|
+
[-12, 0, 0.000032325457364492], [-12, 1, -0.000127575556587181], [-10, 0, -0.000475851877356068],
|
|
144
|
+
[-10, 1, 0.00156183014181602], [-10, 5, 0.105724860113781], [-10, 10, -85.8514221132534],
|
|
145
|
+
[-10, 12, 724.140095480911], [-8, 0, 0.00296475810273257], [-8, 1, -0.00592721983365988],
|
|
146
|
+
[-8, 2, -0.0126305422818666], [-8, 4, -0.115716196364853], [-8, 10, 84.9000969739595],
|
|
147
|
+
[-6, 0, -0.0108602260086615], [-6, 1, 0.0154304475328851], [-6, 2, 0.0750455441524466],
|
|
148
|
+
[-4, 0, 0.0252520973612982], [-4, 1, -0.0602507901232996], [-3, 5, -3.07622221350501],
|
|
149
|
+
[-2, 0, -0.0574011959864879], [-2, 4, 5.03471360939849], [-1, 2, -0.925081888584834],
|
|
150
|
+
[-1, 4, 3.91733882917546], [-1, 6, -77.314600713019], [-1, 10, 9493.08762098587],
|
|
151
|
+
[-1, 14, -1410437.19679409], [-1, 16, 8491662.30819026], [0, 0, 0.861095729446704],
|
|
152
|
+
[0, 2, 0.32334644281172], [1, 1, 0.873281936020439], [3, 1, -0.436653048526683],
|
|
153
|
+
[5, 1, 0.286596714529479], [6, 1, -0.131778331276228], [8, 1, 0.00676682064330275],
|
|
154
|
+
];
|
|
155
|
+
const R3B_PH_V = [
|
|
156
|
+
[-12, 0, -2.25196934336318e-9], [-12, 1, 1.40674363313486e-8], [-8, 0, 2.3378408528056e-6],
|
|
157
|
+
[-8, 1, -3.31833715229001e-5], [-8, 3, 0.00107956778514318], [-8, 6, -0.271382067378863],
|
|
158
|
+
[-8, 7, 1.07202262490333], [-8, 8, -0.853821329075382], [-6, 0, -2.15214194340526e-5],
|
|
159
|
+
[-6, 1, 0.00076965608822273], [-6, 2, -0.00431136580433864], [-6, 5, 0.453342167309331],
|
|
160
|
+
[-6, 6, -0.507749535873652], [-6, 10, -100.475154528389], [-4, 3, -0.219201924648793],
|
|
161
|
+
[-4, 6, -3.21087965668917], [-4, 10, 607.567815637771], [-3, 0, 0.000557686450685932],
|
|
162
|
+
[-3, 2, 0.18749904002955], [-2, 1, 0.00905368030448107], [-2, 2, 0.285417173048685],
|
|
163
|
+
[-1, 0, 0.0329924030996098], [-1, 1, 0.239897419685483], [-1, 4, 4.82754995951394],
|
|
164
|
+
[-1, 5, -11.8035753702231], [0, 0, 0.169490044091791], [1, 0, -0.0179967222507787],
|
|
165
|
+
[1, 1, 0.0371810116332674], [2, 2, -0.0536288335065096], [2, 6, 1.6069710109252],
|
|
166
|
+
];
|
|
167
|
+
// R4: saturation pressure boundary from enthalpy
|
|
168
|
+
const R4_H_PSAT = [
|
|
169
|
+
[0, 0, 0.600073641753024], [1, 1, -9.36203654849857], [1, 3, 24.6590798594147],
|
|
170
|
+
[1, 4, -107.014222858224], [1, 36, -9.15821315805768e13], [5, 3, -8625.32011700662],
|
|
171
|
+
[7, 0, -23.5837344740032], [8, 24, 2.52304969384128e17], [14, 16, -3.89718771997719e18],
|
|
172
|
+
[20, 16, -3.33775713645296e22], [22, 3, 3.56499469636328e10], [24, 18, -1.48547544720641e26],
|
|
173
|
+
[28, 8, 3.30611514838798e18], [36, 24, 8.13641294467829e37],
|
|
174
|
+
];
|
|
175
|
+
/** R4: enthalpy → saturation pressure for PH boundary detection */
|
|
176
|
+
export function r4EnthalpyToPsat(h) {
|
|
177
|
+
const mu = h / 2600;
|
|
178
|
+
let p = 0;
|
|
179
|
+
for (const [I, J, N] of R4_H_PSAT) {
|
|
180
|
+
p += N * Math.pow(mu - 1.02, I) * Math.pow(mu - 0.608, J);
|
|
181
|
+
}
|
|
182
|
+
return 22 * p;
|
|
183
|
+
}
|
|
184
|
+
// ─── Main PH Solver ────────────────────────────────────────────────────────
|
|
185
|
+
/**
|
|
186
|
+
* Solve for thermodynamic state given P and H.
|
|
187
|
+
* @param p - Pressure [MPa]
|
|
188
|
+
* @param h - Specific enthalpy [kJ/kg]
|
|
189
|
+
*/
|
|
190
|
+
export function solvePH(p, h) {
|
|
191
|
+
const region = detectRegionPH(p, h);
|
|
192
|
+
switch (region) {
|
|
193
|
+
case Region.Region1: {
|
|
194
|
+
const T0 = r1BackwardT(p, h);
|
|
195
|
+
const T = newtonRaphson((T_x) => region1(p, T_x).enthalpy - h, T0);
|
|
196
|
+
return region1(p, T);
|
|
197
|
+
}
|
|
198
|
+
case Region.Region2: {
|
|
199
|
+
const T0 = r2BackwardT(p, h);
|
|
200
|
+
const T = newtonRaphson((T_x) => region2(p, T_x).enthalpy - h, T0);
|
|
201
|
+
return region2(p, T);
|
|
202
|
+
}
|
|
203
|
+
case Region.Region3: {
|
|
204
|
+
const hBound = b3ab_P_to_H(p);
|
|
205
|
+
let T0, v0;
|
|
206
|
+
if (h < hBound) {
|
|
207
|
+
T0 = 760 * evalPoly(R3A_PH_T, -0.240, 0.615, p / 100, h / 2300);
|
|
208
|
+
v0 = 0.0028 * evalPoly(R3A_PH_V, -0.128, 0.727, p / 100, h / 2100);
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
T0 = 860 * evalPoly(R3B_PH_T, -0.298, 0.720, p / 100, h / 2800);
|
|
212
|
+
v0 = 0.0088 * evalPoly(R3B_PH_V, -0.0661, 0.720, p / 100, h / 2800);
|
|
213
|
+
}
|
|
214
|
+
const sol = nelderMead((pair) => Math.abs(region3ByRhoT(1 / pair[0], pair[1]).enthalpy - h) +
|
|
215
|
+
Math.abs(region3ByRhoT(1 / pair[0], pair[1]).pressure - p), [v0, T0]);
|
|
216
|
+
return region3ByRhoT(1 / sol.x[0], sol.x[1]);
|
|
217
|
+
}
|
|
218
|
+
case Region.Region4: {
|
|
219
|
+
const endpoints = saturationEndpointsAtPressure(p);
|
|
220
|
+
const x = qualityFromSaturationProperty(endpoints.liquid.enthalpy, endpoints.vapor.enthalpy, h);
|
|
221
|
+
return mixSaturationState(endpoints, x);
|
|
222
|
+
}
|
|
223
|
+
case Region.Region5: {
|
|
224
|
+
const T = newtonRaphson((T_x) => region5(p, T_x).enthalpy - h, 1500);
|
|
225
|
+
return region5(p, T);
|
|
226
|
+
}
|
|
227
|
+
default:
|
|
228
|
+
throw new IF97Error(`Cannot determine region for P=${p} MPa, h=${h} kJ/kg`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=ph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ph.js","sourceRoot":"","sources":["../../src/backward/ph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IAPWS-IF97 Backward Equations: P-S → T, v
|
|
3
|
+
*
|
|
4
|
+
* Reference: IAPWS-IF97 Supplementary Release on Backward Equations
|
|
5
|
+
*/
|
|
6
|
+
import type { BasicProperties } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Solve for thermodynamic state given P and S.
|
|
9
|
+
* @param p - Pressure [MPa]
|
|
10
|
+
* @param s - Specific entropy [kJ/(kg·K)]
|
|
11
|
+
*/
|
|
12
|
+
export declare function solvePS(p: number, s: number): BasicProperties;
|
|
13
|
+
//# sourceMappingURL=ps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ps.d.ts","sourceRoot":"","sources":["../../src/backward/ps.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,aAAa,CAAC;AA8JrE;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,eAAe,CA8C7D"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IAPWS-IF97 Backward Equations: P-S → T, v
|
|
3
|
+
*
|
|
4
|
+
* Reference: IAPWS-IF97 Supplementary Release on Backward Equations
|
|
5
|
+
*/
|
|
6
|
+
import { Region, IF97Error } from '../types.js';
|
|
7
|
+
import * as C from '../constants.js';
|
|
8
|
+
import { region1 } from '../regions/region1.js';
|
|
9
|
+
import { region2 } from '../regions/region2.js';
|
|
10
|
+
import { region3ByRhoT } from '../regions/region3.js';
|
|
11
|
+
import { region5 } from '../regions/region5.js';
|
|
12
|
+
import { detectRegionPS } from '../core/region-detector.js';
|
|
13
|
+
import { newtonRaphson } from '../solvers/newton-raphson.js';
|
|
14
|
+
import { nelderMead } from '../solvers/nelder-mead.js';
|
|
15
|
+
import { mixSaturationState, qualityFromSaturationProperty, saturationEndpointsAtPressure, } from '../saturation/common.js';
|
|
16
|
+
function evalPoly(table, piShift, sigShift, pi, sig) {
|
|
17
|
+
let sum = 0;
|
|
18
|
+
for (const [I, J, N] of table)
|
|
19
|
+
sum += N * Math.pow(pi - piShift, I) * Math.pow(sig - sigShift, J);
|
|
20
|
+
return sum;
|
|
21
|
+
}
|
|
22
|
+
// ─── Region 1 Backward T(P,S) ──────────────────────────────────────────────
|
|
23
|
+
const R1_PS = [
|
|
24
|
+
[0, 0, 174.78268058307], [0, 1, 34.806930892873], [0, 2, 6.5292584978455], [0, 3, 0.33039981775489],
|
|
25
|
+
[0, 11, -1.9281382923196e-7], [0, 31, -2.4909197244573e-23], [1, 0, -0.26107636489332],
|
|
26
|
+
[1, 1, 0.22592965981586], [1, 2, -0.064256463395226], [1, 3, 0.0078876289270526],
|
|
27
|
+
[1, 12, 3.5672110607366e-10], [1, 31, 1.7332496994895e-24], [2, 0, 0.00056608900654837],
|
|
28
|
+
[2, 1, -0.00032635483139717], [2, 2, 0.000044778286690632], [2, 9, -5.1322156908507e-10],
|
|
29
|
+
[2, 31, -4.2522657042207e-26], [3, 10, 2.6400441360689e-13], [3, 32, 7.8124600459723e-29],
|
|
30
|
+
[4, 32, -3.0732199903668e-31],
|
|
31
|
+
];
|
|
32
|
+
function r1BackwardT(p, s) {
|
|
33
|
+
return evalPoly(R1_PS, 0, -2, p, s);
|
|
34
|
+
}
|
|
35
|
+
// ─── Region 2 Backward T(P,S) — Subregions 2a/2b/2c ───────────────────────
|
|
36
|
+
const R2A_PS = [
|
|
37
|
+
[-1.5, -24, -392359.83861984], [-1.5, -23, 515265.7382727], [-1.5, -19, 40482.443161048],
|
|
38
|
+
[-1.5, -13, -321.93790923902], [-1.5, -11, 96.961424218694], [-1.5, -10, -22.867846371773],
|
|
39
|
+
[-1.25, -19, -449429.14124357], [-1.25, -15, -5011.8336020166], [-1.25, -6, 0.35684463560015],
|
|
40
|
+
[-1, -26, 44235.33584819], [-1, -21, -13673.388811708], [-1, -17, 421632.6027864],
|
|
41
|
+
[-1, -16, 22516.925837475], [-1, -9, 474.42144865646], [-1, -8, -149.31130797647],
|
|
42
|
+
[-0.75, -15, -197811.26320452], [-0.75, -14, -23554.39947076], [-0.5, -26, -19070.616302076],
|
|
43
|
+
[-0.5, -13, 55375.669883164], [-0.5, -9, 3829.3691437363], [-0.5, -7, -603.91860580567],
|
|
44
|
+
[-0.25, -27, 1936.3102620331], [-0.25, -25, 4266.064369861], [-0.25, -11, -5978.0638872718],
|
|
45
|
+
[-0.25, -6, -704.01463926862], [0.25, 1, 338.36784107553], [0.25, 4, 20.862786635187],
|
|
46
|
+
[0.25, 8, 0.033834172656196], [0.25, 11, -0.000043124428414893], [0.5, 0, 166.53791356412],
|
|
47
|
+
[0.5, 1, -139.86292055898], [0.5, 5, -0.78849547999872], [0.5, 6, 0.072132411753872],
|
|
48
|
+
[0.5, 10, -0.0059754839398283], [0.5, 14, -0.000012141358953904], [0.5, 16, 2.3227096733871e-7],
|
|
49
|
+
[0.75, 0, -10.538463566194], [0.75, 4, 2.0718925496502], [0.75, 9, -0.072193155260427],
|
|
50
|
+
[0.75, 17, 2.074988708112e-7], [1, 7, -0.018340657911379], [1, 18, 2.9036272348696e-7],
|
|
51
|
+
[1.25, 3, 0.21037527893619], [1.25, 15, 0.00025681239729999], [1.5, 5, -0.012799002933781],
|
|
52
|
+
[1.5, 18, -8.2198102652018e-6],
|
|
53
|
+
];
|
|
54
|
+
const R2B_PS = [
|
|
55
|
+
[-6, 0, 316876.65083497], [-6, 11, 20.864175881858], [-5, 0, -398593.99803599],
|
|
56
|
+
[-5, 11, -21.816058518877], [-4, 0, 223697.85194242], [-4, 1, -2784.1703445817],
|
|
57
|
+
[-4, 11, 9.920743607148], [-3, 0, -75197.512299157], [-3, 1, 2970.8605951158],
|
|
58
|
+
[-3, 11, -3.4406878548526], [-3, 12, 0.38815564249115], [-2, 0, 17511.29508575],
|
|
59
|
+
[-2, 1, -1423.7112854449], [-2, 6, 1.0943803364167], [-2, 10, 0.89971619308495],
|
|
60
|
+
[-1, 0, -3375.9740098958], [-1, 1, 471.62885818355], [-1, 5, -1.9188241993679],
|
|
61
|
+
[-1, 8, 0.41078580492196], [-1, 9, -0.33465378172097], [0, 0, 1387.0034777505],
|
|
62
|
+
[0, 1, -406.63326195838], [0, 2, 41.72734715961], [0, 4, 2.1932549434532],
|
|
63
|
+
[0, 5, -1.0320050009077], [0, 6, 0.35882943516703], [0, 9, 0.0052511453726066],
|
|
64
|
+
[1, 0, 12.838916450705], [1, 1, -2.8642437219381], [1, 2, 0.56912683664855],
|
|
65
|
+
[1, 3, -0.099962954584931], [1, 7, -0.0032632037778459], [1, 8, 0.00023320922576723],
|
|
66
|
+
[2, 0, -0.1533480985745], [2, 1, 0.029072288239902], [2, 5, 0.00037534702741167],
|
|
67
|
+
[3, 0, 0.0017296691702411], [3, 1, -0.00038556050844504], [3, 3, -0.000035017712292608],
|
|
68
|
+
[4, 0, -0.000014566393631492], [4, 1, 5.6420857267269e-6], [5, 0, 4.1286150074605e-8],
|
|
69
|
+
[5, 1, -2.0684671118824e-8], [5, 2, 1.6409393674725e-9],
|
|
70
|
+
];
|
|
71
|
+
const R2C_PS = [
|
|
72
|
+
[-2, 0, 909.68501005365], [-2, 1, 2404.566708842], [-1, 0, -591.6232638713],
|
|
73
|
+
[0, 0, 541.45404128074], [0, 1, -270.98308411192], [0, 2, 979.76525097926],
|
|
74
|
+
[0, 3, -469.66772959435], [1, 0, 14.399274604723], [1, 1, -19.104204230429],
|
|
75
|
+
[1, 3, 5.3299167111971], [1, 4, -21.252975375934], [2, 0, -0.3114733441376],
|
|
76
|
+
[2, 1, 0.60334840894623], [2, 2, -0.042764839702509], [3, 0, 0.0058185597255259],
|
|
77
|
+
[3, 1, -0.014597008284753], [3, 5, 0.0056631175631027], [4, 0, -0.000076155864584577],
|
|
78
|
+
[4, 1, 0.00022440342919332], [4, 4, -0.000012561095013413], [5, 0, 6.3323132660934e-7],
|
|
79
|
+
[5, 1, -2.0541989675375e-6], [5, 2, 3.6405370390082e-8], [6, 0, -2.9759897789215e-9],
|
|
80
|
+
[6, 1, 1.0136618529763e-8], [7, 0, 5.9925719692351e-12], [7, 1, -2.0677870105164e-11],
|
|
81
|
+
[7, 3, -2.0874278181886e-11], [7, 4, 1.0162166825089e-10], [7, 5, -1.6429828281347e-10],
|
|
82
|
+
];
|
|
83
|
+
function r2BackwardT(p, s) {
|
|
84
|
+
if (p <= C.R2_P_CRT) {
|
|
85
|
+
return evalPoly(R2A_PS, 0, 2, p, s / 2);
|
|
86
|
+
}
|
|
87
|
+
if (s >= C.R2_S_CRT) {
|
|
88
|
+
return evalPoly(R2B_PS, 0, 10, p, s / 0.7853);
|
|
89
|
+
}
|
|
90
|
+
return evalPoly(R2C_PS, 0, 2, p, s / 2.9251);
|
|
91
|
+
}
|
|
92
|
+
// ─── Region 3 Backward T(P,S) and v(P,S) ──────────────────────────────────
|
|
93
|
+
const R3A_PS_T_TABLE = [
|
|
94
|
+
[-12, 28, 1500420082.63875], [-12, 32, -159397258480.424], [-10, 4, 5.02181140217975e-4],
|
|
95
|
+
[-10, 10, -67.2057767855466], [-10, 12, 1450.58545404456], [-10, 14, -8238.8953488889],
|
|
96
|
+
[-8, 5, -0.154852214233853], [-8, 7, 11.2305046746695], [-8, 8, -29.7000213482822],
|
|
97
|
+
[-8, 28, 43856513263.5495], [-6, 2, 0.00137837838635464], [-6, 6, -2.97478527157462],
|
|
98
|
+
[-6, 32, 9717779473494.13], [-5, 0, -5.71527767052398e-5], [-5, 14, 28830.794977842],
|
|
99
|
+
[-5, 32, -74442828926270.3], [-4, 6, 12.8017324848921], [-4, 10, -368.275545889071],
|
|
100
|
+
[-4, 36, 6647689047791770], [-2, 1, 0.044935925195888], [-2, 4, -4.22897836099655],
|
|
101
|
+
[-1, 1, -0.240614376434179], [-1, 6, -4.74341365254924], [0, 0, 0.72409399912611],
|
|
102
|
+
[0, 1, 0.923874349695897], [0, 4, 3.99043655281015], [1, 0, 0.0384066651868009],
|
|
103
|
+
[2, 0, -0.00359344365571848], [2, 3, -0.735196448821653], [3, 2, 0.188367048396131],
|
|
104
|
+
[8, 0, 0.000141064266818704], [8, 1, -0.00257418501496337], [10, 2, 0.00123220024851555],
|
|
105
|
+
];
|
|
106
|
+
const R3A_PS_V_TABLE = [
|
|
107
|
+
[-12, 10, 79.5544074093975], [-12, 12, -2382.6124298459], [-12, 14, 17681.3100617787],
|
|
108
|
+
[-10, 4, -0.00110524727080379], [-10, 8, -15.3213833655326], [-10, 10, 297.544599376982],
|
|
109
|
+
[-10, 20, -35031520.6871242], [-8, 5, 0.277513761062119], [-8, 6, -0.523964271036888],
|
|
110
|
+
[-8, 14, -148011.182995403], [-8, 16, 1600148.99374266], [-6, 28, 1708023226634.27],
|
|
111
|
+
[-5, 1, 0.000246866996006494], [-4, 5, 1.6532608479798], [-3, 2, -0.118008384666987],
|
|
112
|
+
[-3, 4, 2.537986423559], [-2, 3, 0.965127704669424], [-2, 8, -28.2172420532826],
|
|
113
|
+
[-1, 1, 0.203224612353823], [-1, 2, 1.10648186063513], [0, 0, 0.52612794845128],
|
|
114
|
+
[0, 1, 0.277000018736321], [0, 3, 1.08153340501132], [1, 0, -0.0744127885357893],
|
|
115
|
+
[2, 0, 0.0164094443541384], [4, 2, -0.0680468275301065], [5, 2, 0.025798857610164],
|
|
116
|
+
[6, 0, -0.000145749861944416],
|
|
117
|
+
];
|
|
118
|
+
const R3B_PS_T_TABLE = [
|
|
119
|
+
[-12, 1, 0.52711170160166], [-12, 3, -40.1317830052742], [-12, 4, 153.020073134484],
|
|
120
|
+
[-12, 7, -2247.99398218827], [-8, 0, -0.193993484669048], [-8, 1, -1.40467557893768],
|
|
121
|
+
[-8, 3, 42.6799878114024], [-6, 0, 0.752810643416743], [-6, 2, 22.6657238616417],
|
|
122
|
+
[-6, 4, -622.873556909932], [-5, 0, -0.660823667935396], [-5, 1, 0.841267087271658],
|
|
123
|
+
[-5, 2, -25.3717501764397], [-5, 4, 485.708963532948], [-5, 6, 880.531517490555],
|
|
124
|
+
[-4, 12, 2650155.92794626], [-3, 1, -0.359287150025783], [-3, 6, -656.991567673753],
|
|
125
|
+
[-2, 2, 2.41768149185367], [0, 0, 0.856873461222588], [2, 1, 0.655143675313458],
|
|
126
|
+
[3, 1, -0.213535213206406], [4, 0, 0.00562974957606348], [5, 24, -316955725450471.0],
|
|
127
|
+
[6, 0, -0.000699997000152457], [8, 3, 0.0119845803210767], [12, 1, 1.93848122022095e-5],
|
|
128
|
+
[14, 2, -2.15095749182309e-5],
|
|
129
|
+
];
|
|
130
|
+
const R3B_PS_V_TABLE = [
|
|
131
|
+
[-12, 0, 5.91599780322238e-5], [-12, 1, -0.00185465997137856], [-12, 2, 0.0104190510480013],
|
|
132
|
+
[-12, 3, 0.0059864730203859], [-12, 5, -0.771391189901699], [-12, 6, 1.72549765557036],
|
|
133
|
+
[-10, 0, -0.000467076079846526], [-10, 1, 0.0134533823384439], [-10, 2, -0.0808094336805495],
|
|
134
|
+
[-10, 4, 0.508139374365767], [-8, 0, 0.00128584643361683], [-5, 1, -1.63899353915435],
|
|
135
|
+
[-5, 2, 5.86938199318063], [-5, 3, -2.92466667918613], [-4, 0, -0.00614076301499537],
|
|
136
|
+
[-4, 1, 5.76199014049172], [-4, 2, -12.1613320606788], [-4, 3, 1.67637540957944],
|
|
137
|
+
[-3, 1, -7.44135838773463], [-2, 0, 0.0378168091437659], [-2, 1, 4.01432203027688],
|
|
138
|
+
[-2, 2, 16.0279837479185], [-2, 3, 3.17848779347728], [-2, 4, -3.58362310304853],
|
|
139
|
+
[-2, 12, -1159952.60446827], [0, 0, 0.199256573577909], [0, 1, -0.122270624794624],
|
|
140
|
+
[0, 2, -19.1449143716586], [1, 0, -0.0150448002905284], [1, 2, 14.6407900162154],
|
|
141
|
+
[2, 2, -3.2747778718823],
|
|
142
|
+
];
|
|
143
|
+
// ─── Main PS Solver ────────────────────────────────────────────────────────
|
|
144
|
+
/**
|
|
145
|
+
* Solve for thermodynamic state given P and S.
|
|
146
|
+
* @param p - Pressure [MPa]
|
|
147
|
+
* @param s - Specific entropy [kJ/(kg·K)]
|
|
148
|
+
*/
|
|
149
|
+
export function solvePS(p, s) {
|
|
150
|
+
const region = detectRegionPS(p, s);
|
|
151
|
+
switch (region) {
|
|
152
|
+
case Region.Region1: {
|
|
153
|
+
const T0 = r1BackwardT(p, s);
|
|
154
|
+
const T = newtonRaphson((T_x) => region1(p, T_x).entropy - s, T0);
|
|
155
|
+
return region1(p, T);
|
|
156
|
+
}
|
|
157
|
+
case Region.Region2: {
|
|
158
|
+
const T0 = r2BackwardT(p, s);
|
|
159
|
+
const T = newtonRaphson((T_x) => region2(p, T_x).entropy - s, T0);
|
|
160
|
+
return region2(p, T);
|
|
161
|
+
}
|
|
162
|
+
case Region.Region3: {
|
|
163
|
+
let T0, v0;
|
|
164
|
+
if (s <= C.R3_S_CRT) {
|
|
165
|
+
T0 = 760 * evalPoly(R3A_PS_T_TABLE, -0.240, 0.703, p / 100, s / 4.4);
|
|
166
|
+
v0 = 0.0028 * evalPoly(R3A_PS_V_TABLE, -0.187, 0.755, p / 100, s / 4.4);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
T0 = 860 * evalPoly(R3B_PS_T_TABLE, -0.760, 0.818, p / 100, s / 5.3);
|
|
170
|
+
v0 = 0.0088 * evalPoly(R3B_PS_V_TABLE, -0.298, 0.816, p / 100, s / 5.3);
|
|
171
|
+
}
|
|
172
|
+
const sol = nelderMead((pair) => Math.abs(region3ByRhoT(1 / pair[0], pair[1]).entropy - s) +
|
|
173
|
+
Math.abs(region3ByRhoT(1 / pair[0], pair[1]).pressure - p), [v0, T0]);
|
|
174
|
+
return region3ByRhoT(1 / sol.x[0], sol.x[1]);
|
|
175
|
+
}
|
|
176
|
+
case Region.Region4: {
|
|
177
|
+
const endpoints = saturationEndpointsAtPressure(p);
|
|
178
|
+
const x = qualityFromSaturationProperty(endpoints.liquid.entropy, endpoints.vapor.entropy, s);
|
|
179
|
+
return mixSaturationState(endpoints, x);
|
|
180
|
+
}
|
|
181
|
+
case Region.Region5: {
|
|
182
|
+
const T = newtonRaphson((T_x) => region5(p, T_x).entropy - s, 1500);
|
|
183
|
+
return region5(p, T);
|
|
184
|
+
}
|
|
185
|
+
default:
|
|
186
|
+
throw new IF97Error(`Cannot determine region for P=${p} MPa, s=${s} kJ/(kg·K)`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=ps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ps.js","sourceRoot":"","sources":["../../src/backward/ps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IAPWS-IF97 Constants
|
|
3
|
+
*
|
|
4
|
+
* Physical constants, critical point properties, and range limits
|
|
5
|
+
* for the IAPWS Industrial Formulation 1997.
|
|
6
|
+
*/
|
|
7
|
+
/** Specific gas constant for water [kJ/(kg·K)] */
|
|
8
|
+
export declare const R = 0.461526;
|
|
9
|
+
/** Critical temperature [K] */
|
|
10
|
+
export declare const Tc = 647.096;
|
|
11
|
+
/** Critical pressure [MPa] */
|
|
12
|
+
export declare const Pc = 22.064;
|
|
13
|
+
/** Critical density [kg/m³] */
|
|
14
|
+
export declare const RHOc = 322;
|
|
15
|
+
/** Triple point pressure [MPa] */
|
|
16
|
+
export declare const Pt = 0.000611657;
|
|
17
|
+
/** Minimum pressure [MPa] */
|
|
18
|
+
export declare const P_MIN = 0.000611212677444;
|
|
19
|
+
/** Maximum pressure [MPa] */
|
|
20
|
+
export declare const P_MAX = 100;
|
|
21
|
+
/** Minimum temperature [K] (273.15 K = 0 °C) */
|
|
22
|
+
export declare const T_MIN = 273.15;
|
|
23
|
+
/** Maximum temperature [K] (2273.15 K = 2000 °C) */
|
|
24
|
+
export declare const T_MAX = 2273.15;
|
|
25
|
+
/** Minimum specific entropy [kJ/(kg·K)] */
|
|
26
|
+
export declare const S_MIN = -0.00015454959194;
|
|
27
|
+
/** Maximum specific entropy [kJ/(kg·K)] */
|
|
28
|
+
export declare const S_MAX = 8.668866265157533;
|
|
29
|
+
/** Minimum specific enthalpy [kJ/kg] */
|
|
30
|
+
export declare const H_MIN = -0.041587825987;
|
|
31
|
+
/** Maximum specific enthalpy [kJ/kg] */
|
|
32
|
+
export declare const H_MAX = 7365.802234015646;
|
|
33
|
+
/** Region 2 minimum temperature for high-P subregions [K] (623.15 K = 350 °C) */
|
|
34
|
+
export declare const R2_T_MIN = 623.15;
|
|
35
|
+
/** Region 2 maximum temperature for backward eqs [K] (1073.15 K = 800 °C) */
|
|
36
|
+
export declare const R2_T_MAX = 1073.15;
|
|
37
|
+
/** Region 2 critical entropy boundary [kJ/(kg·K)] */
|
|
38
|
+
export declare const R2_S_CRT = 5.85;
|
|
39
|
+
/** Region 2 critical pressure boundary [MPa] */
|
|
40
|
+
export declare const R2_P_CRT = 4;
|
|
41
|
+
/** B23 minimum pressure [MPa] */
|
|
42
|
+
export declare const B23_P_MIN = 16.5291642526;
|
|
43
|
+
/** B23 maximum temperature [K] */
|
|
44
|
+
export declare const B23_T_MAX = 863.15;
|
|
45
|
+
/** Region 3 minimum temperature [K] */
|
|
46
|
+
export declare const R3_T_MIN = 623.15;
|
|
47
|
+
/** Region 3 critical entropy [kJ/(kg·K)] */
|
|
48
|
+
export declare const R3_S_CRT = 4.41202148223476;
|
|
49
|
+
/** Region 3 critical enthalpy [kJ/kg] */
|
|
50
|
+
export declare const R3_H_CRT = 2087.5468451171537;
|
|
51
|
+
/** Region 5 minimum temperature [K] */
|
|
52
|
+
export declare const R5_T_MIN = 1073.15;
|
|
53
|
+
/** Region 5 maximum pressure [MPa] */
|
|
54
|
+
export declare const R5_P_MAX = 50;
|
|
55
|
+
/** Region 5 maximum temperature [K] */
|
|
56
|
+
export declare const R5_T_MAX = 2273.15;
|
|
57
|
+
/** B23 minimum entropy [kJ/(kg·K)] */
|
|
58
|
+
export declare const B23_S_MIN = 5.048096828;
|
|
59
|
+
/** B23 maximum entropy [kJ/(kg·K)] */
|
|
60
|
+
export declare const B23_S_MAX = 5.260578707;
|
|
61
|
+
/** B23 minimum enthalpy [kJ/kg] */
|
|
62
|
+
export declare const B23_H_MIN = 2563.592004;
|
|
63
|
+
/** B23 maximum enthalpy [kJ/kg] */
|
|
64
|
+
export declare const B23_H_MAX = 2812.942061;
|
|
65
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,kDAAkD;AAClD,eAAO,MAAM,CAAC,WAAW,CAAC;AAI1B,+BAA+B;AAC/B,eAAO,MAAM,EAAE,UAAU,CAAC;AAE1B,8BAA8B;AAC9B,eAAO,MAAM,EAAE,SAAS,CAAC;AAEzB,+BAA+B;AAC/B,eAAO,MAAM,IAAI,MAAM,CAAC;AAIxB,kCAAkC;AAClC,eAAO,MAAM,EAAE,cAAc,CAAC;AAI9B,6BAA6B;AAC7B,eAAO,MAAM,KAAK,oBAAoB,CAAC;AAEvC,6BAA6B;AAC7B,eAAO,MAAM,KAAK,MAAQ,CAAC;AAE3B,gDAAgD;AAChD,eAAO,MAAM,KAAK,SAAS,CAAC;AAE5B,oDAAoD;AACpD,eAAO,MAAM,KAAK,UAAU,CAAC;AAE7B,2CAA2C;AAC3C,eAAO,MAAM,KAAK,oBAAoB,CAAC;AAEvC,2CAA2C;AAC3C,eAAO,MAAM,KAAK,oBAAoB,CAAC;AAEvC,wCAAwC;AACxC,eAAO,MAAM,KAAK,kBAAkB,CAAC;AAErC,wCAAwC;AACxC,eAAO,MAAM,KAAK,oBAAoB,CAAC;AAIvC,iFAAiF;AACjF,eAAO,MAAM,QAAQ,SAAS,CAAC;AAE/B,6EAA6E;AAC7E,eAAO,MAAM,QAAQ,UAAU,CAAC;AAEhC,qDAAqD;AACrD,eAAO,MAAM,QAAQ,OAAO,CAAC;AAE7B,gDAAgD;AAChD,eAAO,MAAM,QAAQ,IAAM,CAAC;AAI5B,iCAAiC;AACjC,eAAO,MAAM,SAAS,gBAAgB,CAAC;AAEvC,kCAAkC;AAClC,eAAO,MAAM,SAAS,SAAS,CAAC;AAIhC,uCAAuC;AACvC,eAAO,MAAM,QAAQ,SAAS,CAAC;AAE/B,4CAA4C;AAC5C,eAAO,MAAM,QAAQ,mBAAmB,CAAC;AAEzC,yCAAyC;AACzC,eAAO,MAAM,QAAQ,qBAAqB,CAAC;AAI3C,uCAAuC;AACvC,eAAO,MAAM,QAAQ,UAAU,CAAC;AAEhC,sCAAsC;AACtC,eAAO,MAAM,QAAQ,KAAK,CAAC;AAE3B,uCAAuC;AACvC,eAAO,MAAM,QAAQ,UAAU,CAAC;AAIhC,sCAAsC;AACtC,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC,sCAAsC;AACtC,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC,mCAAmC;AACnC,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC,mCAAmC;AACnC,eAAO,MAAM,SAAS,cAAc,CAAC"}
|