iapws-if97 2.1.0 → 2.1.2
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/CHANGELOG.md +8 -0
- package/README.md +22 -61
- package/dist/backward/hs.d.ts.map +1 -1
- package/dist/backward/hs.js +36 -43
- package/dist/backward/hs.js.map +1 -1
- package/dist/backward/objective-normalization.d.ts +7 -0
- package/dist/backward/objective-normalization.d.ts.map +1 -0
- package/dist/backward/objective-normalization.js +8 -0
- package/dist/backward/objective-normalization.js.map +1 -0
- package/dist/backward/ph.d.ts.map +1 -1
- package/dist/backward/ph.js +24 -5
- package/dist/backward/ph.js.map +1 -1
- package/dist/backward/ps.d.ts.map +1 -1
- package/dist/backward/ps.js +18 -3
- package/dist/backward/ps.js.map +1 -1
- package/dist/backward/solution-validation.d.ts.map +1 -1
- package/dist/backward/solution-validation.js +24 -16
- package/dist/backward/solution-validation.js.map +1 -1
- package/dist/backward/th.d.ts.map +1 -1
- package/dist/backward/th.js +5 -0
- package/dist/backward/th.js.map +1 -1
- package/dist/backward/tolerances.d.ts +6 -0
- package/dist/backward/tolerances.d.ts.map +1 -0
- package/dist/backward/tolerances.js +21 -0
- package/dist/backward/tolerances.js.map +1 -0
- package/dist/backward/ts.d.ts.map +1 -1
- package/dist/backward/ts.js +5 -0
- package/dist/backward/ts.js.map +1 -1
- package/dist/constants.d.ts +38 -12
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +47 -13
- package/dist/constants.js.map +1 -1
- package/dist/core/input-validation.d.ts +2 -0
- package/dist/core/input-validation.d.ts.map +1 -0
- package/dist/core/input-validation.js +7 -0
- package/dist/core/input-validation.js.map +1 -0
- package/dist/core/public-normalization.d.ts +2 -3
- package/dist/core/public-normalization.d.ts.map +1 -1
- package/dist/core/public-normalization.js +32 -9
- package/dist/core/public-normalization.js.map +1 -1
- package/dist/core/region-detector.d.ts.map +1 -1
- package/dist/core/region-detector.js +114 -56
- package/dist/core/region-detector.js.map +1 -1
- package/dist/core/region3-pt.d.ts.map +1 -1
- package/dist/core/region3-pt.js +6 -1
- package/dist/core/region3-pt.js.map +1 -1
- package/dist/core/solve-input-normalization.d.ts.map +1 -1
- package/dist/core/solve-input-normalization.js +4 -1
- package/dist/core/solve-input-normalization.js.map +1 -1
- package/dist/core/solver.d.ts.map +1 -1
- package/dist/core/solver.js +3 -0
- package/dist/core/solver.js.map +1 -1
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -16
- package/dist/index.js.map +1 -1
- package/dist/regions/boundaries.d.ts +0 -9
- package/dist/regions/boundaries.d.ts.map +1 -1
- package/dist/regions/boundaries.js +8 -0
- package/dist/regions/boundaries.js.map +1 -1
- package/dist/regions/region3-subregions.d.ts +6 -2
- package/dist/regions/region3-subregions.d.ts.map +1 -1
- package/dist/regions/region3-subregions.js +22 -14
- package/dist/regions/region3-subregions.js.map +1 -1
- package/dist/regions/region3.d.ts +5 -1
- package/dist/regions/region3.d.ts.map +1 -1
- package/dist/regions/region3.js +12 -2
- package/dist/regions/region3.js.map +1 -1
- package/dist/regions/region4.d.ts +3 -1
- package/dist/regions/region4.d.ts.map +1 -1
- package/dist/regions/region4.js +9 -6
- package/dist/regions/region4.js.map +1 -1
- package/dist/saturation/common.d.ts +1 -0
- package/dist/saturation/common.d.ts.map +1 -1
- package/dist/saturation/common.js +53 -14
- package/dist/saturation/common.js.map +1 -1
- package/dist/saturation/region4-boundaries.d.ts +14 -0
- package/dist/saturation/region4-boundaries.d.ts.map +1 -0
- package/dist/saturation/region4-boundaries.js +79 -0
- package/dist/saturation/region4-boundaries.js.map +1 -0
- package/dist/saturation/region4-hs.d.ts +3 -0
- package/dist/saturation/region4-hs.d.ts.map +1 -0
- package/dist/saturation/region4-hs.js +165 -0
- package/dist/saturation/region4-hs.js.map +1 -0
- package/dist/saturation/two-phase.d.ts.map +1 -1
- package/dist/saturation/two-phase.js +9 -9
- package/dist/saturation/two-phase.js.map +1 -1
- package/dist/saturation.d.ts +6 -1
- package/dist/saturation.d.ts.map +1 -1
- package/dist/saturation.js +6 -1
- package/dist/saturation.js.map +1 -1
- package/dist/solvers/nelder-mead.d.ts +0 -4
- package/dist/solvers/nelder-mead.d.ts.map +1 -1
- package/dist/solvers/nelder-mead.js +29 -12
- package/dist/solvers/nelder-mead.js.map +1 -1
- package/dist/solvers/newton-raphson.d.ts +1 -4
- package/dist/solvers/newton-raphson.d.ts.map +1 -1
- package/dist/solvers/newton-raphson.js +15 -4
- package/dist/solvers/newton-raphson.js.map +1 -1
- package/dist/transport/properties.d.ts +1 -0
- package/dist/transport/properties.d.ts.map +1 -1
- package/dist/transport/properties.js +44 -4
- package/dist/transport/properties.js.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solver.d.ts","sourceRoot":"","sources":["../../src/core/solver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAmB,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"solver.d.ts","sourceRoot":"","sources":["../../src/core/solver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAmB,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAmD3E;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAwCxD;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAenD"}
|
package/dist/core/solver.js
CHANGED
|
@@ -5,6 +5,7 @@ import { region2 } from '../regions/region2.js';
|
|
|
5
5
|
import { region5 } from '../regions/region5.js';
|
|
6
6
|
import { detectRegionPT } from './region-detector.js';
|
|
7
7
|
import { solveRegion3PTBasic } from './region3-pt.js';
|
|
8
|
+
import { assertFiniteNumber } from './input-validation.js';
|
|
8
9
|
import { normalizeSolveInput } from './solve-input-normalization.js';
|
|
9
10
|
import { viscosity, thermalConductivity, surfaceTension, dielectricConstant, ionizationConstant } from '../transport/properties.js';
|
|
10
11
|
import { solvePH } from '../backward/ph.js';
|
|
@@ -50,6 +51,8 @@ function enrichState(basic) {
|
|
|
50
51
|
* @returns Complete steam state with transport properties
|
|
51
52
|
*/
|
|
52
53
|
export function solvePT(p, T) {
|
|
54
|
+
assertFiniteNumber('Pressure', p);
|
|
55
|
+
assertFiniteNumber('Temperature', T);
|
|
53
56
|
if (p < C.P_MIN || p > C.P_MAX) {
|
|
54
57
|
throw new OutOfRangeError('Pressure', p, C.P_MIN, C.P_MAX);
|
|
55
58
|
}
|
package/dist/core/solver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solver.js","sourceRoot":"","sources":["../../src/core/solver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"solver.js","sourceRoot":"","sources":["../../src/core/solver.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Public API exports.
|
|
5
5
|
*/
|
|
6
|
-
import type {
|
|
6
|
+
import type { SteamState, SolveInput } from './types.js';
|
|
7
7
|
export declare function solvePT(p: number, T: number): SteamState;
|
|
8
8
|
export declare function solve(input: SolveInput): SteamState;
|
|
9
|
-
export declare function solvePH(p: number, h: number):
|
|
10
|
-
export declare function solvePS(p: number, s: number):
|
|
11
|
-
export declare function solveHS(h: number, s: number):
|
|
12
|
-
export declare function solveTH(T: number, h: number):
|
|
13
|
-
export declare function solveTS(T: number, s: number):
|
|
14
|
-
export declare function solvePx(p: number, x: number):
|
|
15
|
-
export declare function solveTx(T: number, x: number):
|
|
9
|
+
export declare function solvePH(p: number, h: number): SteamState;
|
|
10
|
+
export declare function solvePS(p: number, s: number): SteamState;
|
|
11
|
+
export declare function solveHS(h: number, s: number): SteamState;
|
|
12
|
+
export declare function solveTH(T: number, h: number): SteamState;
|
|
13
|
+
export declare function solveTS(T: number, s: number): SteamState;
|
|
14
|
+
export declare function solvePx(p: number, x: number): SteamState;
|
|
15
|
+
export declare function solveTx(T: number, x: number): SteamState;
|
|
16
16
|
export type { SteamState, SolveInput } from './types.js';
|
|
17
17
|
export { Region, IF97Error, OutOfRangeError, ConvergenceError } from './types.js';
|
|
18
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAWzD,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAExD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAEnD;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAExD;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAExD;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAExD;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAExD;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAExD;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAExD;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAExD;AAGD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
import { solve as solveAny, solvePT as solvePTInternal } from './core/solver.js';
|
|
2
2
|
import { normalizePublicState } from './core/public-normalization.js';
|
|
3
|
-
import { solvePH as solvePHInternal } from './backward/ph.js';
|
|
4
|
-
import { solvePS as solvePSInternal } from './backward/ps.js';
|
|
5
|
-
import { solveHS as solveHSInternal } from './backward/hs.js';
|
|
6
|
-
import { solveTH as solveTHInternal } from './backward/th.js';
|
|
7
|
-
import { solveTS as solveTSInternal } from './backward/ts.js';
|
|
8
|
-
import { solvePx as solvePxInternal, solveTx as solveTxInternal } from './saturation/two-phase.js';
|
|
9
|
-
function normalizeBasicState(state) {
|
|
10
|
-
return normalizePublicState(state);
|
|
11
|
-
}
|
|
12
3
|
function normalizeSteamState(state) {
|
|
13
4
|
return normalizePublicState(state);
|
|
14
5
|
}
|
|
@@ -22,25 +13,25 @@ export function solve(input) {
|
|
|
22
13
|
return normalizeSteamState(solveAny(input));
|
|
23
14
|
}
|
|
24
15
|
export function solvePH(p, h) {
|
|
25
|
-
return
|
|
16
|
+
return normalizeSteamState(solveAny({ mode: 'PH', p, h }));
|
|
26
17
|
}
|
|
27
18
|
export function solvePS(p, s) {
|
|
28
|
-
return
|
|
19
|
+
return normalizeSteamState(solveAny({ mode: 'PS', p, s }));
|
|
29
20
|
}
|
|
30
21
|
export function solveHS(h, s) {
|
|
31
|
-
return
|
|
22
|
+
return normalizeSteamState(solveAny({ mode: 'HS', h, s }));
|
|
32
23
|
}
|
|
33
24
|
export function solveTH(T, h) {
|
|
34
|
-
return
|
|
25
|
+
return normalizeSteamState(solveAny({ mode: 'TH', T, h }));
|
|
35
26
|
}
|
|
36
27
|
export function solveTS(T, s) {
|
|
37
|
-
return
|
|
28
|
+
return normalizeSteamState(solveAny({ mode: 'TS', T, s }));
|
|
38
29
|
}
|
|
39
30
|
export function solvePx(p, x) {
|
|
40
|
-
return
|
|
31
|
+
return normalizeSteamState(solveAny({ mode: 'Px', p, x }));
|
|
41
32
|
}
|
|
42
33
|
export function solveTx(T, x) {
|
|
43
|
-
return
|
|
34
|
+
return normalizeSteamState(solveAny({ mode: 'Tx', T, x }));
|
|
44
35
|
}
|
|
45
36
|
export { Region, IF97Error, OutOfRangeError, ConvergenceError } from './types.js';
|
|
46
37
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,SAAS,mBAAmB,CAAC,KAAiB;IAC5C,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,eAAe;AACf,wEAAwE;AACxE,oEAAoE;AACpE,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,OAAO,mBAAmB,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,KAAiB;IACrC,OAAO,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,OAAO,mBAAmB,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,OAAO,mBAAmB,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,OAAO,mBAAmB,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,OAAO,mBAAmB,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,OAAO,mBAAmB,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,OAAO,mBAAmB,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,OAAO,mBAAmB,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAID,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* IAPWS-IF97 Region Boundary Equations
|
|
3
|
-
*
|
|
4
|
-
* Boundary equations between regions, including:
|
|
5
|
-
* - B23: Boundary between Region 2 and Region 3
|
|
6
|
-
* - B3 subregion boundaries (ab, cd, ef, gh, ij, jk, mn, op, qu, rx, uv, wx)
|
|
7
|
-
*
|
|
8
|
-
* Reference: IAPWS-IF97 Section 4 & Supplementary Release on v(P,T) for Region 3
|
|
9
|
-
*/
|
|
10
1
|
/**
|
|
11
2
|
* B23 boundary: Temperature → Pressure
|
|
12
3
|
* Equation 5 (pp. 5), IAPWS-IF97
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundaries.d.ts","sourceRoot":"","sources":["../../src/regions/boundaries.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"boundaries.d.ts","sourceRoot":"","sources":["../../src/regions/boundaries.ts"],"names":[],"mappings":"AAcA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKnD;AAwBD,2BAA2B;AAC3B,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtC;AAED,2BAA2B;AAC3B,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtC;AAED,2BAA2B;AAC3B,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtC;AAED,2BAA2B;AAC3B,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtC;AAED,2BAA2B;AAC3B,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtC;AAED,2BAA2B;AAC3B,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtC;AAED,2BAA2B;AAC3B,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtC;AAED,2BAA2B;AAC3B,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtC;AAED,2BAA2B;AAC3B,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtC;AAED,2BAA2B;AAC3B,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtC;AAED,2BAA2B;AAC3B,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtC;AAED,2BAA2B;AAC3B,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtC"}
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Reference: IAPWS-IF97 Section 4 & Supplementary Release on v(P,T) for Region 3
|
|
9
9
|
*/
|
|
10
|
+
import { B23_P_MIN, B23_T_MAX, P_MAX, R2_T_MIN } from '../constants.js';
|
|
11
|
+
import { IF97Error } from '../types.js';
|
|
10
12
|
// ─── B23 Boundary (Region 2 ↔ Region 3) ────────────────────────────────────
|
|
11
13
|
/**
|
|
12
14
|
* B23 boundary: Temperature → Pressure
|
|
@@ -16,6 +18,9 @@
|
|
|
16
18
|
* @returns Pressure [MPa] on the B23 boundary
|
|
17
19
|
*/
|
|
18
20
|
export function boundary23_T_to_P(T) {
|
|
21
|
+
if (!Number.isFinite(T) || T < R2_T_MIN || T > B23_T_MAX) {
|
|
22
|
+
throw new IF97Error(`boundary23_T_to_P requires T in [${R2_T_MIN}, ${B23_T_MAX}] K, got ${T}`);
|
|
23
|
+
}
|
|
19
24
|
return 348.05185628969 - 1.1671859879975 * T + 0.0010192970039326 * T * T;
|
|
20
25
|
}
|
|
21
26
|
/**
|
|
@@ -26,6 +31,9 @@ export function boundary23_T_to_P(T) {
|
|
|
26
31
|
* @returns Temperature [K] on the B23 boundary
|
|
27
32
|
*/
|
|
28
33
|
export function boundary23_P_to_T(p) {
|
|
34
|
+
if (!Number.isFinite(p) || p < B23_P_MIN || p > P_MAX) {
|
|
35
|
+
throw new IF97Error(`boundary23_P_to_T requires p in [${B23_P_MIN}, ${P_MAX}] MPa, got ${p}`);
|
|
36
|
+
}
|
|
29
37
|
return 572.54459862746 + Math.sqrt((p - 13.91883977887) / 0.0010192970039326);
|
|
30
38
|
}
|
|
31
39
|
// ─── B3 Subregion Boundaries ────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundaries.js","sourceRoot":"","sources":["../../src/regions/boundaries.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"boundaries.js","sourceRoot":"","sources":["../../src/regions/boundaries.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
/** Compute specific volume for Region 3 saturation boundary. x=0 liquid, x=1 vapor
|
|
1
|
+
/** Compute specific volume for Region 3 saturation boundary. x=0 liquid, x=1 vapor
|
|
2
|
+
* Pressure thresholds from IAPWS Supplementary Release on Backward
|
|
3
|
+
* Equations v(P,T) for Region 3, Table 1 (saturation subregion limits). */
|
|
2
4
|
export declare function region3SatVolume(p: number, T: number, x: number): number;
|
|
3
|
-
/** Compute specific volume for Region 3 from P and T using subregion equations.
|
|
5
|
+
/** Compute specific volume for Region 3 from P and T using subregion equations.
|
|
6
|
+
* Pressure thresholds from IAPWS Supplementary Release on Backward
|
|
7
|
+
* Equations v(P,T) for Region 3, Figures 2–5. */
|
|
4
8
|
export declare function region3Volume(p: number, T: number): number;
|
|
5
9
|
//# sourceMappingURL=region3-subregions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"region3-subregions.d.ts","sourceRoot":"","sources":["../../src/regions/region3-subregions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"region3-subregions.d.ts","sourceRoot":"","sources":["../../src/regions/region3-subregions.ts"],"names":[],"mappings":"AAcA;;4EAE4E;AAC5E,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAWxE;AAED;;kDAEkD;AAClD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAqG1D"}
|
|
@@ -6,29 +6,36 @@ import { evalSubregion } from './region3-eval.js';
|
|
|
6
6
|
import { REGION3_SUBREGIONS as R3 } from './region3-data.js';
|
|
7
7
|
import { b3ab, b3cd, b3ef, b3gh, b3ij, b3jk, b3mn, b3op, b3qu, b3rx, b3uv, b3wx } from './boundaries.js';
|
|
8
8
|
import { saturationPressure, saturationTemperature } from './region4.js';
|
|
9
|
+
import { Pc } from '../constants.js';
|
|
9
10
|
import { IF97Error } from '../types.js';
|
|
10
|
-
|
|
11
|
+
// Shared liquid-side C/S saturation threshold from the Region 3 supplementary release.
|
|
12
|
+
const R3_C_S_LIQUID_BOUNDARY_PRESSURE = 19.00881189173929;
|
|
13
|
+
/** Compute specific volume for Region 3 saturation boundary. x=0 liquid, x=1 vapor
|
|
14
|
+
* Pressure thresholds from IAPWS Supplementary Release on Backward
|
|
15
|
+
* Equations v(P,T) for Region 3, Table 1 (saturation subregion limits). */
|
|
11
16
|
export function region3SatVolume(p, T, x) {
|
|
12
17
|
if (x === 0) {
|
|
13
|
-
if (p <
|
|
18
|
+
if (p < R3_C_S_LIQUID_BOUNDARY_PRESSURE)
|
|
14
19
|
return evalSubregion(R3.C, p, T);
|
|
15
20
|
if (p < 21.0434)
|
|
16
|
-
return evalSubregion(R3.S, p, T);
|
|
21
|
+
return evalSubregion(R3.S, p, T); // near P3cd
|
|
17
22
|
if (p < 21.9316)
|
|
18
|
-
return evalSubregion(R3.U, p, T);
|
|
23
|
+
return evalSubregion(R3.U, p, T); // near Puv
|
|
19
24
|
return evalSubregion(R3.Y, p, T);
|
|
20
25
|
}
|
|
21
26
|
if (p < 20.5)
|
|
22
|
-
return evalSubregion(R3.T, p, T);
|
|
27
|
+
return evalSubregion(R3.T, p, T); // near P3cd
|
|
23
28
|
if (p < 21.0434)
|
|
24
29
|
return evalSubregion(R3.R, p, T);
|
|
25
30
|
if (p < 21.9009)
|
|
26
|
-
return evalSubregion(R3.X, p, T);
|
|
31
|
+
return evalSubregion(R3.X, p, T); // near Pwx
|
|
27
32
|
return evalSubregion(R3.Z, p, T);
|
|
28
33
|
}
|
|
29
|
-
/** Compute specific volume for Region 3 from P and T using subregion equations.
|
|
34
|
+
/** Compute specific volume for Region 3 from P and T using subregion equations.
|
|
35
|
+
* Pressure thresholds from IAPWS Supplementary Release on Backward
|
|
36
|
+
* Equations v(P,T) for Region 3, Figures 2–5. */
|
|
30
37
|
export function region3Volume(p, T) {
|
|
31
|
-
if (p > 40) {
|
|
38
|
+
if (p > 40) { // Suppl. Release Fig. 2: subregions A/B
|
|
32
39
|
return T <= b3ab(p) ? evalSubregion(R3.A, p, T) : evalSubregion(R3.B, p, T);
|
|
33
40
|
}
|
|
34
41
|
if (p > 25) {
|
|
@@ -98,7 +105,7 @@ export function region3Volume(p, T) {
|
|
|
98
105
|
return evalSubregion(R3.Q, p, T);
|
|
99
106
|
if (T <= trx) {
|
|
100
107
|
const tef = b3ef(p), twx = b3wx(p), tuv = b3uv(p);
|
|
101
|
-
if (p > 22.11) {
|
|
108
|
+
if (p > 22.11) { // Suppl. Release Fig. 5 boundary
|
|
102
109
|
if (T <= tuv)
|
|
103
110
|
return evalSubregion(R3.U, p, T);
|
|
104
111
|
if (T <= tef)
|
|
@@ -107,7 +114,7 @@ export function region3Volume(p, T) {
|
|
|
107
114
|
return evalSubregion(R3.W, p, T);
|
|
108
115
|
return evalSubregion(R3.X, p, T);
|
|
109
116
|
}
|
|
110
|
-
if (p >
|
|
117
|
+
if (p > Pc) { // above critical pressure → no saturation line
|
|
111
118
|
if (T <= tuv)
|
|
112
119
|
return evalSubregion(R3.U, p, T);
|
|
113
120
|
if (T <= tef)
|
|
@@ -144,12 +151,13 @@ export function region3Volume(p, T) {
|
|
|
144
151
|
return evalSubregion(R3.R, p, T);
|
|
145
152
|
return evalSubregion(R3.K, p, T);
|
|
146
153
|
}
|
|
147
|
-
if (p
|
|
154
|
+
if (p >= R3_C_S_LIQUID_BOUNDARY_PRESSURE && p <= 20.5) {
|
|
148
155
|
const tcd = b3cd(p), Ts = saturationTemperature(p);
|
|
149
|
-
if (T <=
|
|
150
|
-
|
|
151
|
-
|
|
156
|
+
if (T <= Ts) {
|
|
157
|
+
if (T < tcd && T < Ts)
|
|
158
|
+
return evalSubregion(R3.C, p, T);
|
|
152
159
|
return evalSubregion(R3.S, p, T);
|
|
160
|
+
}
|
|
153
161
|
return evalSubregion(R3.T, p, T);
|
|
154
162
|
}
|
|
155
163
|
if (p > 16.5291642526) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"region3-subregions.js","sourceRoot":"","sources":["../../src/regions/region3-subregions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,kBAAkB,IAAI,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACzG,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,
|
|
1
|
+
{"version":3,"file":"region3-subregions.js","sourceRoot":"","sources":["../../src/regions/region3-subregions.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,9 +10,13 @@ import type { BasicProperties } from '../types.js';
|
|
|
10
10
|
/**
|
|
11
11
|
* Compute Region 3 thermodynamic properties from density and temperature.
|
|
12
12
|
*
|
|
13
|
-
*
|
|
13
|
+
* Low-level Region 3 equation entry point. Callers must provide a finite,
|
|
14
|
+
* strictly positive density because the Helmholtz formulation contains ln(ρ).
|
|
15
|
+
*
|
|
16
|
+
* @param rho - Density [kg/m³], must be > 0
|
|
14
17
|
* @param T - Temperature [K]
|
|
15
18
|
* @returns Basic thermodynamic properties
|
|
19
|
+
* @throws {IF97Error} if rho is non-finite or not strictly positive
|
|
16
20
|
*/
|
|
17
21
|
export declare function region3ByRhoT(rho: number, T: number): BasicProperties;
|
|
18
22
|
//# sourceMappingURL=region3.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"region3.d.ts","sourceRoot":"","sources":["../../src/regions/region3.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"region3.d.ts","sourceRoot":"","sources":["../../src/regions/region3.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,aAAa,CAAC;AAuDrE;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,eAAe,CA6DrE"}
|
package/dist/regions/region3.js
CHANGED
|
@@ -7,9 +7,12 @@
|
|
|
7
7
|
* Reference: IAPWS-IF97, Section 7 (Equations for Region 3)
|
|
8
8
|
*/
|
|
9
9
|
import { R } from '../constants.js';
|
|
10
|
-
import { Region } from '../types.js';
|
|
10
|
+
import { IF97Error, Region } from '../types.js';
|
|
11
11
|
// ─── Coefficient Table (Table 30, IAPWS-IF97) ──────────────────────────────
|
|
12
12
|
const COEFFICIENTS = [
|
|
13
|
+
// Entry 0 is the coefficient n₁ for the logarithmic term n₁·ln(δ).
|
|
14
|
+
// It shares the [I=0, J=0] shape with entry 1 but is handled separately
|
|
15
|
+
// in the evaluation loop (index 0 = ln term, indices 1+ = polynomial).
|
|
13
16
|
[0, 0, 1.0658070028513],
|
|
14
17
|
[0, 0, -0.15732845290239e2],
|
|
15
18
|
[0, 1, 0.20944396974307e2],
|
|
@@ -57,11 +60,18 @@ const T_STAR = 647.096; // T* [K] (critical temperature)
|
|
|
57
60
|
/**
|
|
58
61
|
* Compute Region 3 thermodynamic properties from density and temperature.
|
|
59
62
|
*
|
|
60
|
-
*
|
|
63
|
+
* Low-level Region 3 equation entry point. Callers must provide a finite,
|
|
64
|
+
* strictly positive density because the Helmholtz formulation contains ln(ρ).
|
|
65
|
+
*
|
|
66
|
+
* @param rho - Density [kg/m³], must be > 0
|
|
61
67
|
* @param T - Temperature [K]
|
|
62
68
|
* @returns Basic thermodynamic properties
|
|
69
|
+
* @throws {IF97Error} if rho is non-finite or not strictly positive
|
|
63
70
|
*/
|
|
64
71
|
export function region3ByRhoT(rho, T) {
|
|
72
|
+
if (!Number.isFinite(rho) || rho <= 0) {
|
|
73
|
+
throw new IF97Error(`region3ByRhoT requires a finite positive density, got ${rho}`);
|
|
74
|
+
}
|
|
65
75
|
const delta = rho / RHO_STAR;
|
|
66
76
|
const tau = T_STAR / T;
|
|
67
77
|
const v = 1 / rho;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"region3.js","sourceRoot":"","sources":["../../src/regions/region3.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"region3.js","sourceRoot":"","sources":["../../src/regions/region3.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,9 @@ export declare function saturationPressure(T: number): number;
|
|
|
19
19
|
* Saturation temperature for a given pressure.
|
|
20
20
|
* Equation 31 (pp. 34) of IAPWS-IF97.
|
|
21
21
|
*
|
|
22
|
-
* @param p - Pressure [MPa],
|
|
22
|
+
* @param p - Pressure [MPa], P_MIN ≤ P ≤ Pc
|
|
23
|
+
* (P_MIN = Psat(273.15 K), the lower pressure bound matching
|
|
24
|
+
* saturationPressure's lower temperature bound per IAPWS-IF97 §8)
|
|
23
25
|
* @returns Saturation temperature [K]
|
|
24
26
|
* @throws {OutOfRangeError} if P is outside valid range
|
|
25
27
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"region4.d.ts","sourceRoot":"","sources":["../../src/regions/region4.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"region4.d.ts","sourceRoot":"","sources":["../../src/regions/region4.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAyBH;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAapD;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAgBvD"}
|
package/dist/regions/region4.js
CHANGED
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Reference: IAPWS-IF97, Section 8 (Equations for Region 4)
|
|
8
8
|
*/
|
|
9
|
-
import { Tc,
|
|
9
|
+
import { Tc, Pc, P_MIN } from '../constants.js';
|
|
10
10
|
import { OutOfRangeError } from '../types.js';
|
|
11
|
+
import { normalizeRegion4Pressure, normalizeRegion4Temperature, } from '../saturation/region4-boundaries.js';
|
|
11
12
|
// ─── Saturation Line Coefficients (Table 34, IAPWS-IF97) ───────────────────
|
|
12
13
|
const n = [
|
|
13
14
|
0, // n[0] unused (1-indexed)
|
|
@@ -38,25 +39,27 @@ export function saturationPressure(T) {
|
|
|
38
39
|
const A = theta * theta + n[1] * theta + n[2];
|
|
39
40
|
const B = n[3] * theta * theta + n[4] * theta + n[5];
|
|
40
41
|
const C = n[6] * theta * theta + n[7] * theta + n[8];
|
|
41
|
-
return Math.pow(2 * C / (-B + Math.sqrt(B * B - 4 * A * C)), 4);
|
|
42
|
+
return normalizeRegion4Pressure(Math.pow(2 * C / (-B + Math.sqrt(B * B - 4 * A * C)), 4));
|
|
42
43
|
}
|
|
43
44
|
/**
|
|
44
45
|
* Saturation temperature for a given pressure.
|
|
45
46
|
* Equation 31 (pp. 34) of IAPWS-IF97.
|
|
46
47
|
*
|
|
47
|
-
* @param p - Pressure [MPa],
|
|
48
|
+
* @param p - Pressure [MPa], P_MIN ≤ P ≤ Pc
|
|
49
|
+
* (P_MIN = Psat(273.15 K), the lower pressure bound matching
|
|
50
|
+
* saturationPressure's lower temperature bound per IAPWS-IF97 §8)
|
|
48
51
|
* @returns Saturation temperature [K]
|
|
49
52
|
* @throws {OutOfRangeError} if P is outside valid range
|
|
50
53
|
*/
|
|
51
54
|
export function saturationTemperature(p) {
|
|
52
|
-
if (p <
|
|
53
|
-
throw new OutOfRangeError('Pressure', p,
|
|
55
|
+
if (p < P_MIN || p > Pc) {
|
|
56
|
+
throw new OutOfRangeError('Pressure', p, P_MIN, Pc);
|
|
54
57
|
}
|
|
55
58
|
const beta = Math.pow(p, 0.25);
|
|
56
59
|
const E = beta * beta + n[3] * beta + n[6];
|
|
57
60
|
const F = n[1] * beta * beta + n[4] * beta + n[7];
|
|
58
61
|
const G = n[2] * beta * beta + n[5] * beta + n[8];
|
|
59
62
|
const D = 2 * G / (-F - Math.sqrt(F * F - 4 * E * G));
|
|
60
|
-
return (n[10] + D - Math.sqrt(Math.pow(n[10] + D, 2) - 4 * (n[9] + n[10] * D))) / 2;
|
|
63
|
+
return normalizeRegion4Temperature((n[10] + D - Math.sqrt(Math.pow(n[10] + D, 2) - 4 * (n[9] + n[10] * D))) / 2);
|
|
61
64
|
}
|
|
62
65
|
//# sourceMappingURL=region4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"region4.js","sourceRoot":"","sources":["../../src/regions/region4.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"region4.js","sourceRoot":"","sources":["../../src/regions/region4.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export interface SaturationEndpoints {
|
|
|
13
13
|
liquid: BasicProperties;
|
|
14
14
|
vapor: BasicProperties;
|
|
15
15
|
}
|
|
16
|
+
export declare function rawQualityFromSaturationProperty(liquidValue: number, vaporValue: number, mixtureValue: number): number;
|
|
16
17
|
/**
|
|
17
18
|
* Compute saturated liquid and vapour properties at a given pressure.
|
|
18
19
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/saturation/common.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/saturation/common.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAcnD,0EAA0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,eAAe,CAAC;CACxB;AA2CD,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,MAAM,CAWR;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAwB5E;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAc/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,MAAM,CAMR;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,mBAAmB,EAC9B,YAAY,EAAE,MAAM,GACnB,eAAe,CA8BjB"}
|