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.
Files changed (95) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +113 -0
  3. package/dist/backward/hs.d.ts +16 -0
  4. package/dist/backward/hs.d.ts.map +1 -0
  5. package/dist/backward/hs.js +234 -0
  6. package/dist/backward/hs.js.map +1 -0
  7. package/dist/backward/ph.d.ts +21 -0
  8. package/dist/backward/ph.d.ts.map +1 -0
  9. package/dist/backward/ph.js +231 -0
  10. package/dist/backward/ph.js.map +1 -0
  11. package/dist/backward/ps.d.ts +13 -0
  12. package/dist/backward/ps.d.ts.map +1 -0
  13. package/dist/backward/ps.js +189 -0
  14. package/dist/backward/ps.js.map +1 -0
  15. package/dist/constants.d.ts +65 -0
  16. package/dist/constants.d.ts.map +1 -0
  17. package/dist/constants.js +74 -0
  18. package/dist/constants.js.map +1 -0
  19. package/dist/core/region-detector.d.ts +24 -0
  20. package/dist/core/region-detector.d.ts.map +1 -0
  21. package/dist/core/region-detector.js +409 -0
  22. package/dist/core/region-detector.js.map +1 -0
  23. package/dist/core/solver.d.ts +19 -0
  24. package/dist/core/solver.d.ts.map +1 -0
  25. package/dist/core/solver.js +92 -0
  26. package/dist/core/solver.js.map +1 -0
  27. package/dist/index.d.ts +24 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +28 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/regions/boundaries.d.ts +50 -0
  32. package/dist/regions/boundaries.d.ts.map +1 -0
  33. package/dist/regions/boundaries.js +98 -0
  34. package/dist/regions/boundaries.js.map +1 -0
  35. package/dist/regions/region1.d.ts +18 -0
  36. package/dist/regions/region1.d.ts.map +1 -0
  37. package/dist/regions/region1.js +95 -0
  38. package/dist/regions/region1.js.map +1 -0
  39. package/dist/regions/region2.d.ts +18 -0
  40. package/dist/regions/region2.d.ts.map +1 -0
  41. package/dist/regions/region2.js +134 -0
  42. package/dist/regions/region2.js.map +1 -0
  43. package/dist/regions/region3-data-am.d.ts +19 -0
  44. package/dist/regions/region3-data-am.d.ts.map +1 -0
  45. package/dist/regions/region3-data-am.js +53 -0
  46. package/dist/regions/region3-data-am.js.map +1 -0
  47. package/dist/regions/region3-data-nz.d.ts +18 -0
  48. package/dist/regions/region3-data-nz.d.ts.map +1 -0
  49. package/dist/regions/region3-data-nz.js +53 -0
  50. package/dist/regions/region3-data-nz.js.map +1 -0
  51. package/dist/regions/region3-eval.d.ts +30 -0
  52. package/dist/regions/region3-eval.d.ts.map +1 -0
  53. package/dist/regions/region3-eval.js +25 -0
  54. package/dist/regions/region3-eval.js.map +1 -0
  55. package/dist/regions/region3-subregions.d.ts +5 -0
  56. package/dist/regions/region3-subregions.d.ts.map +1 -0
  57. package/dist/regions/region3-subregions.js +164 -0
  58. package/dist/regions/region3-subregions.js.map +1 -0
  59. package/dist/regions/region3.d.ts +18 -0
  60. package/dist/regions/region3.d.ts.map +1 -0
  61. package/dist/regions/region3.js +112 -0
  62. package/dist/regions/region3.js.map +1 -0
  63. package/dist/regions/region4.d.ts +27 -0
  64. package/dist/regions/region4.d.ts.map +1 -0
  65. package/dist/regions/region4.js +62 -0
  66. package/dist/regions/region4.js.map +1 -0
  67. package/dist/regions/region5.d.ts +18 -0
  68. package/dist/regions/region5.d.ts.map +1 -0
  69. package/dist/regions/region5.js +92 -0
  70. package/dist/regions/region5.js.map +1 -0
  71. package/dist/saturation/common.d.ts +12 -0
  72. package/dist/saturation/common.d.ts.map +1 -0
  73. package/dist/saturation/common.js +75 -0
  74. package/dist/saturation/common.js.map +1 -0
  75. package/dist/saturation/two-phase.d.ts +22 -0
  76. package/dist/saturation/two-phase.d.ts.map +1 -0
  77. package/dist/saturation/two-phase.js +44 -0
  78. package/dist/saturation/two-phase.js.map +1 -0
  79. package/dist/solvers/nelder-mead.d.ts +21 -0
  80. package/dist/solvers/nelder-mead.d.ts.map +1 -0
  81. package/dist/solvers/nelder-mead.js +99 -0
  82. package/dist/solvers/nelder-mead.js.map +1 -0
  83. package/dist/solvers/newton-raphson.d.ts +25 -0
  84. package/dist/solvers/newton-raphson.d.ts.map +1 -0
  85. package/dist/solvers/newton-raphson.js +44 -0
  86. package/dist/solvers/newton-raphson.js.map +1 -0
  87. package/dist/transport/properties.d.ts +47 -0
  88. package/dist/transport/properties.d.ts.map +1 -0
  89. package/dist/transport/properties.js +205 -0
  90. package/dist/transport/properties.js.map +1 -0
  91. package/dist/types.d.ts +161 -0
  92. package/dist/types.d.ts.map +1 -0
  93. package/dist/types.js +56 -0
  94. package/dist/types.js.map +1 -0
  95. package/package.json +62 -0
@@ -0,0 +1,92 @@
1
+ import { Region, IF97Error, OutOfRangeError } from '../types.js';
2
+ import * as C from '../constants.js';
3
+ import { region1 } from '../regions/region1.js';
4
+ import { region2 } from '../regions/region2.js';
5
+ import { region3ByRhoT } from '../regions/region3.js';
6
+ import { region5 } from '../regions/region5.js';
7
+ import { region3Volume } from '../regions/region3-subregions.js';
8
+ import { detectRegionPT } from './region-detector.js';
9
+ import { newtonRaphson } from '../solvers/newton-raphson.js';
10
+ import { viscosity, thermalConductivity, surfaceTension, dielectricConstant, ionizationConstant } from '../transport/properties.js';
11
+ import { solvePH } from '../backward/ph.js';
12
+ import { solvePS } from '../backward/ps.js';
13
+ import { solveHS } from '../backward/hs.js';
14
+ import { solvePx, solveTx } from '../saturation/two-phase.js';
15
+ /**
16
+ * Compute full thermodynamic state from basic properties by adding transport properties.
17
+ */
18
+ function enrichState(basic) {
19
+ const rho = 1 / basic.specificVolume;
20
+ const mu = viscosity(basic.temperature, rho);
21
+ // drhodP_T = ρ · κ_T where κ_T is isothermal compressibility [1/MPa]
22
+ const drhodP_T = rho * basic.isothermalCompressibility;
23
+ return {
24
+ ...basic,
25
+ density: rho,
26
+ viscosity: mu,
27
+ thermalConductivity: thermalConductivity(basic.temperature, rho, basic.cp, basic.cv, drhodP_T, mu),
28
+ surfaceTension: surfaceTension(basic.temperature),
29
+ dielectricConstant: dielectricConstant(basic.temperature, rho),
30
+ ionizationConstant: ionizationConstant(basic.temperature, rho),
31
+ };
32
+ }
33
+ /**
34
+ * Solve Region 3 from P and T by first computing density via Newton-Raphson.
35
+ */
36
+ function solveRegion3PT(p, T) {
37
+ if (p === C.Pc && T === C.Tc) {
38
+ return region3ByRhoT(C.RHOc, T);
39
+ }
40
+ const v0 = region3Volume(p, T);
41
+ const rho = newtonRaphson((rho_x) => region3ByRhoT(rho_x, T).pressure - p, 1 / v0);
42
+ return region3ByRhoT(rho, T);
43
+ }
44
+ /**
45
+ * Solve for full thermodynamic state given pressure and temperature.
46
+ *
47
+ * @param p - Pressure [MPa]
48
+ * @param T - Temperature [K]
49
+ * @returns Complete steam state with transport properties
50
+ */
51
+ export function solvePT(p, T) {
52
+ if (p < C.P_MIN || p > C.P_MAX) {
53
+ throw new OutOfRangeError('Pressure', p, C.P_MIN, C.P_MAX);
54
+ }
55
+ if (T < C.T_MIN || T > C.T_MAX) {
56
+ throw new OutOfRangeError('Temperature', T, C.T_MIN, C.T_MAX);
57
+ }
58
+ const region = detectRegionPT(p, T);
59
+ let basic;
60
+ switch (region) {
61
+ case Region.Region1:
62
+ basic = region1(p, T);
63
+ break;
64
+ case Region.Region2:
65
+ basic = region2(p, T);
66
+ break;
67
+ case Region.Region3:
68
+ basic = solveRegion3PT(p, T);
69
+ break;
70
+ case Region.Region5:
71
+ basic = region5(p, T);
72
+ break;
73
+ default:
74
+ throw new IF97Error(`Cannot determine region for P=${p} MPa, T=${T} K`);
75
+ }
76
+ return enrichState(basic);
77
+ }
78
+ /**
79
+ * Unified solver: compute full thermodynamic state from any supported input pair.
80
+ * Routes to the correct solver based on input mode, enriches with transport properties.
81
+ */
82
+ export function solve(input) {
83
+ switch (input.mode) {
84
+ case 'PT': return solvePT(input.p, input.T);
85
+ case 'PH': return enrichState(solvePH(input.p, input.h));
86
+ case 'PS': return enrichState(solvePS(input.p, input.s));
87
+ case 'HS': return enrichState(solveHS(input.h, input.s));
88
+ case 'Px': return enrichState(solvePx(input.p, input.x));
89
+ case 'Tx': return enrichState(solveTx(input.T, input.x));
90
+ }
91
+ }
92
+ //# sourceMappingURL=solver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solver.js","sourceRoot":"","sources":["../../src/core/solver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * iapws-if97 — IAPWS-IF97 Steam/Water Properties Library
3
+ *
4
+ * Public API exports.
5
+ */
6
+ export { solvePT, solve } from './core/solver.js';
7
+ export { solvePH } from './backward/ph.js';
8
+ export { solvePS } from './backward/ps.js';
9
+ export { solveHS } from './backward/hs.js';
10
+ export { solvePx, solveTx } from './saturation/two-phase.js';
11
+ export type { SteamState, BasicProperties, SolveInput } from './types.js';
12
+ export { Region, IF97Error, OutOfRangeError, ConvergenceError } from './types.js';
13
+ export { region1 } from './regions/region1.js';
14
+ export { region2 } from './regions/region2.js';
15
+ export { region3ByRhoT } from './regions/region3.js';
16
+ export { saturationPressure, saturationTemperature } from './regions/region4.js';
17
+ export { region5 } from './regions/region5.js';
18
+ export { boundary23_T_to_P, boundary23_P_to_T } from './regions/boundaries.js';
19
+ export { region3Volume, region3SatVolume } from './regions/region3-subregions.js';
20
+ export { viscosity, thermalConductivity, surfaceTension, dielectricConstant, ionizationConstant } from './transport/properties.js';
21
+ export { detectRegionPT, detectRegionPH, detectRegionPS, detectRegionHS } from './core/region-detector.js';
22
+ export { newtonRaphson } from './solvers/newton-raphson.js';
23
+ export { nelderMead } from './solvers/nelder-mead.js';
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAG7D,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGlF,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGlF,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGnI,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3G,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,28 @@
1
+ /**
2
+ * iapws-if97 — IAPWS-IF97 Steam/Water Properties Library
3
+ *
4
+ * Public API exports.
5
+ */
6
+ // Core solvers
7
+ export { solvePT, solve } from './core/solver.js';
8
+ export { solvePH } from './backward/ph.js';
9
+ export { solvePS } from './backward/ps.js';
10
+ export { solveHS } from './backward/hs.js';
11
+ export { solvePx, solveTx } from './saturation/two-phase.js';
12
+ export { Region, IF97Error, OutOfRangeError, ConvergenceError } from './types.js';
13
+ // Region functions (for advanced usage)
14
+ export { region1 } from './regions/region1.js';
15
+ export { region2 } from './regions/region2.js';
16
+ export { region3ByRhoT } from './regions/region3.js';
17
+ export { saturationPressure, saturationTemperature } from './regions/region4.js';
18
+ export { region5 } from './regions/region5.js';
19
+ export { boundary23_T_to_P, boundary23_P_to_T } from './regions/boundaries.js';
20
+ export { region3Volume, region3SatVolume } from './regions/region3-subregions.js';
21
+ // Transport properties (for advanced usage)
22
+ export { viscosity, thermalConductivity, surfaceTension, dielectricConstant, ionizationConstant } from './transport/properties.js';
23
+ // Region detection
24
+ export { detectRegionPT, detectRegionPH, detectRegionPS, detectRegionHS } from './core/region-detector.js';
25
+ // Solvers
26
+ export { newtonRaphson } from './solvers/newton-raphson.js';
27
+ export { nelderMead } from './solvers/nelder-mead.js';
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAe;AACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAI7D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAElF,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAElF,4CAA4C;AAC5C,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEnI,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3G,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,50 @@
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
+ /**
11
+ * B23 boundary: Temperature → Pressure
12
+ * Equation 5 (pp. 5), IAPWS-IF97
13
+ *
14
+ * @param T - Temperature [K]
15
+ * @returns Pressure [MPa] on the B23 boundary
16
+ */
17
+ export declare function boundary23_T_to_P(T: number): number;
18
+ /**
19
+ * B23 boundary: Pressure → Temperature
20
+ * Equation 6 (pp. 6), IAPWS-IF97
21
+ *
22
+ * @param p - Pressure [MPa]
23
+ * @returns Temperature [K] on the B23 boundary
24
+ */
25
+ export declare function boundary23_P_to_T(p: number): number;
26
+ /** B3ab boundary: P → T */
27
+ export declare function b3ab(p: number): number;
28
+ /** B3cd boundary: P → T */
29
+ export declare function b3cd(p: number): number;
30
+ /** B3ef boundary: P → T */
31
+ export declare function b3ef(p: number): number;
32
+ /** B3gh boundary: P → T */
33
+ export declare function b3gh(p: number): number;
34
+ /** B3ij boundary: P → T */
35
+ export declare function b3ij(p: number): number;
36
+ /** B3jk boundary: P → T */
37
+ export declare function b3jk(p: number): number;
38
+ /** B3mn boundary: P → T */
39
+ export declare function b3mn(p: number): number;
40
+ /** B3op boundary: P → T */
41
+ export declare function b3op(p: number): number;
42
+ /** B3qu boundary: P → T */
43
+ export declare function b3qu(p: number): number;
44
+ /** B3rx boundary: P → T */
45
+ export declare function b3rx(p: number): number;
46
+ /** B3uv boundary: P → T */
47
+ export declare function b3uv(p: number): number;
48
+ /** B3wx boundary: P → T */
49
+ export declare function b3wx(p: number): number;
50
+ //# sourceMappingURL=boundaries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundaries.d.ts","sourceRoot":"","sources":["../../src/regions/boundaries.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;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"}
@@ -0,0 +1,98 @@
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
+ // ─── B23 Boundary (Region 2 ↔ Region 3) ────────────────────────────────────
11
+ /**
12
+ * B23 boundary: Temperature → Pressure
13
+ * Equation 5 (pp. 5), IAPWS-IF97
14
+ *
15
+ * @param T - Temperature [K]
16
+ * @returns Pressure [MPa] on the B23 boundary
17
+ */
18
+ export function boundary23_T_to_P(T) {
19
+ return 348.05185628969 - 1.1671859879975 * T + 0.0010192970039326 * T * T;
20
+ }
21
+ /**
22
+ * B23 boundary: Pressure → Temperature
23
+ * Equation 6 (pp. 6), IAPWS-IF97
24
+ *
25
+ * @param p - Pressure [MPa]
26
+ * @returns Temperature [K] on the B23 boundary
27
+ */
28
+ export function boundary23_P_to_T(p) {
29
+ return 572.54459862746 + Math.sqrt((p - 13.91883977887) / 0.0010192970039326);
30
+ }
31
+ // ─── B3 Subregion Boundaries ────────────────────────────────────────────────
32
+ // Supplementary Release on Backward Equations for v(P,T) in Region 3
33
+ /** Helper: evaluate polynomial Σ N[i] * P^I[i] */
34
+ function polyEval(p, I, N) {
35
+ let result = 0;
36
+ for (let i = 0; i < I.length; i++) {
37
+ result += N[i] * Math.pow(p, I[i]);
38
+ }
39
+ return result;
40
+ }
41
+ /** Helper: evaluate polynomial with ln(P) as argument */
42
+ function polyEvalLn(p, I, N) {
43
+ const lnP = Math.log(p);
44
+ let result = 0;
45
+ for (let i = 0; i < I.length; i++) {
46
+ result += N[i] * Math.pow(lnP, I[i]);
47
+ }
48
+ return result;
49
+ }
50
+ /** B3ab boundary: P → T */
51
+ export function b3ab(p) {
52
+ return polyEvalLn(p, [0, 1, 2, -1, -2], [1.54793642129415e3, -1.87661219490113e2, 2.13144632222113e1, -1.91887498864292e3, 9.18419702359447e2]);
53
+ }
54
+ /** B3cd boundary: P → T */
55
+ export function b3cd(p) {
56
+ return polyEval(p, [0, 1, 2, 3], [5.85276966696349e2, 2.78233532206915, -1.27283549295878e-2, 1.59090746562729e-4]);
57
+ }
58
+ /** B3ef boundary: P → T */
59
+ export function b3ef(p) {
60
+ return 3.727888004 * (p - 22.064) + 647.096;
61
+ }
62
+ /** B3gh boundary: P → T */
63
+ export function b3gh(p) {
64
+ return polyEval(p, [0, 1, 2, 3, 4], [-2.49284240900418e4, 4.28143584791546e3, -2.6902917314013e2, 7.51608051114157, -7.87105249910383e-2]);
65
+ }
66
+ /** B3ij boundary: P → T */
67
+ export function b3ij(p) {
68
+ return polyEval(p, [0, 1, 2, 3, 4], [5.84814781649163e2, -6.16179320924617e-1, 2.60763050899562e-1, -5.87071076864459e-3, 5.15308185433082e-5]);
69
+ }
70
+ /** B3jk boundary: P → T */
71
+ export function b3jk(p) {
72
+ return polyEval(p, [0, 1, 2, 3, 4], [6.17229772068439e2, -7.70600270141675, 6.97072596851896e-1, -1.57391839848015e-2, 1.37897492684194e-4]);
73
+ }
74
+ /** B3mn boundary: P → T */
75
+ export function b3mn(p) {
76
+ return polyEval(p, [0, 1, 2, 3], [5.35339483742384e2, 7.61978122720128, -1.58365725441648e-1, 1.92871054508108e-3]);
77
+ }
78
+ /** B3op boundary: P → T */
79
+ export function b3op(p) {
80
+ return polyEvalLn(p, [0, 1, 2, -1, -2], [0.969461372400213e3, -0.332500170441278e3, 0.642859598466067e2, 0.773845935768222e3, -0.152313732937084e4]);
81
+ }
82
+ /** B3qu boundary: P → T */
83
+ export function b3qu(p) {
84
+ return polyEval(p, [0, 1, 2, 3], [5.65603648239126e2, 5.29062258221222, -1.02020639611016e-1, 1.22240301070145e-3]);
85
+ }
86
+ /** B3rx boundary: P → T */
87
+ export function b3rx(p) {
88
+ return polyEval(p, [0, 1, 2, 3], [5.84561202520006e2, -1.02961025163669, 2.43293362700452e-1, -2.94905044740799e-3]);
89
+ }
90
+ /** B3uv boundary: P → T */
91
+ export function b3uv(p) {
92
+ return polyEval(p, [0, 1, 2, 3], [5.28199646263062e2, 8.90579602135307, -0.222814134903755, 0.286791682263697e-2]);
93
+ }
94
+ /** B3wx boundary: P → T */
95
+ export function b3wx(p) {
96
+ return polyEvalLn(p, [0, 1, 2, -1, -2], [7.2805260914538, 9.73505869861952e1, 1.47370491183191e1, 0.329196213998375e3, 8.73371668682417e2]);
97
+ }
98
+ //# sourceMappingURL=boundaries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundaries.js","sourceRoot":"","sources":["../../src/regions/boundaries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * IAPWS-IF97 Region 1: Subcooled Liquid
3
+ *
4
+ * Basic equation for the specific Gibbs free energy γ(π,τ)
5
+ * Valid for: 273.15 K ≤ T ≤ 623.15 K, Psat(T) ≤ P ≤ 100 MPa
6
+ *
7
+ * Reference: IAPWS-IF97, Section 5 (Equations for Region 1)
8
+ */
9
+ import type { BasicProperties } from '../types.js';
10
+ /**
11
+ * Compute Region 1 thermodynamic properties from pressure and temperature.
12
+ *
13
+ * @param p - Pressure [MPa]
14
+ * @param T - Temperature [K]
15
+ * @returns Basic thermodynamic properties
16
+ */
17
+ export declare function region1(p: number, T: number): BasicProperties;
18
+ //# sourceMappingURL=region1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region1.d.ts","sourceRoot":"","sources":["../../src/regions/region1.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,aAAa,CAAC;AA8CrE;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,eAAe,CA0C7D"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * IAPWS-IF97 Region 1: Subcooled Liquid
3
+ *
4
+ * Basic equation for the specific Gibbs free energy γ(π,τ)
5
+ * Valid for: 273.15 K ≤ T ≤ 623.15 K, Psat(T) ≤ P ≤ 100 MPa
6
+ *
7
+ * Reference: IAPWS-IF97, Section 5 (Equations for Region 1)
8
+ */
9
+ import { R } from '../constants.js';
10
+ import { Region } from '../types.js';
11
+ // ─── Coefficient Table (Table 2, IAPWS-IF97) ───────────────────────────────
12
+ const COEFFICIENTS = [
13
+ [0, -2, 0.14632971213167],
14
+ [0, -1, -0.84548187169114],
15
+ [0, 0, -3.756360367204],
16
+ [0, 1, 3.3855169168385],
17
+ [0, 2, -0.95791963387872],
18
+ [0, 3, 0.15772038513228],
19
+ [0, 4, -0.016616417199501],
20
+ [0, 5, 8.1214629983568e-4],
21
+ [1, -9, 2.8319080123804e-4],
22
+ [1, -7, -6.0706301565874e-4],
23
+ [1, -1, -0.018990068218419],
24
+ [1, 0, -0.032529748770505],
25
+ [1, 1, -0.021841717175414],
26
+ [1, 3, -5.283835796993e-5],
27
+ [2, -3, -4.7184321073267e-4],
28
+ [2, 0, -3.0001780793026e-4],
29
+ [2, 1, 4.7661393906987e-5],
30
+ [2, 3, -4.4141845330846e-6],
31
+ [2, 17, -7.2694996297594e-16],
32
+ [3, -4, -3.1679644845054e-5],
33
+ [3, 0, -2.8270797985312e-6],
34
+ [3, 6, -8.5205128120103e-10],
35
+ [4, -5, -2.2425281908e-6],
36
+ [4, -2, -6.5171222895601e-7],
37
+ [4, 10, -1.4341729937924e-13],
38
+ [5, -8, -4.0516996860117e-7],
39
+ [8, -11, -1.2734301741641e-9],
40
+ [8, -6, -1.7424871230634e-10],
41
+ [21, -29, -6.8762131295531e-19],
42
+ [23, -31, 1.4478307828521e-20],
43
+ [29, -38, 2.6335781662795e-23],
44
+ [30, -39, -1.1947622640071e-23],
45
+ [31, -40, 1.8228094581404e-24],
46
+ [32, -41, -9.3537087292458e-26],
47
+ ];
48
+ // Reduction constants for Region 1
49
+ const PI_STAR = 16.53; // P* [MPa]
50
+ const TAU_STAR = 1386.0; // T* [K]
51
+ /**
52
+ * Compute Region 1 thermodynamic properties from pressure and temperature.
53
+ *
54
+ * @param p - Pressure [MPa]
55
+ * @param T - Temperature [K]
56
+ * @returns Basic thermodynamic properties
57
+ */
58
+ export function region1(p, T) {
59
+ const pi = p / PI_STAR;
60
+ const tau = TAU_STAR / T;
61
+ // Reduced Gibbs free energy and its derivatives
62
+ let g = 0;
63
+ let g_pi = 0;
64
+ let g_pipi = 0;
65
+ let g_tau = 0;
66
+ let g_tautau = 0;
67
+ let g_pitau = 0;
68
+ for (const [I, J, N] of COEFFICIENTS) {
69
+ const piTerm = Math.pow(7.1 - pi, I);
70
+ const tauTerm = Math.pow(tau - 1.222, J);
71
+ g += N * piTerm * tauTerm;
72
+ g_pi += -N * I * Math.pow(7.1 - pi, I - 1) * tauTerm;
73
+ g_pipi += N * I * (I - 1) * Math.pow(7.1 - pi, I - 2) * tauTerm;
74
+ g_tau += N * piTerm * J * Math.pow(tau - 1.222, J - 1);
75
+ g_tautau += N * piTerm * J * (J - 1) * Math.pow(tau - 1.222, J - 2);
76
+ g_pitau += -N * I * Math.pow(7.1 - pi, I - 1) * J * Math.pow(tau - 1.222, J - 1);
77
+ }
78
+ return {
79
+ region: Region.Region1,
80
+ pressure: p,
81
+ temperature: T,
82
+ specificVolume: R * T * pi * g_pi / (1000 * p),
83
+ internalEnergy: R * T * (tau * g_tau - pi * g_pi),
84
+ entropy: R * (tau * g_tau - g),
85
+ enthalpy: R * T * tau * g_tau,
86
+ cp: R * (-tau * tau * g_tautau),
87
+ cv: R * (-tau * tau * g_tautau + Math.pow(g_pi - tau * g_pitau, 2) / g_pipi),
88
+ speedOfSound: Math.sqrt(1000 * R * T * g_pi * g_pi /
89
+ (Math.pow(g_pi - tau * g_pitau, 2) / (tau * tau * g_tautau) - g_pipi)),
90
+ quality: null,
91
+ isobaricExpansion: (1 - tau * g_pitau / g_pi) / T,
92
+ isothermalCompressibility: -pi * g_pipi / g_pi / p,
93
+ };
94
+ }
95
+ //# sourceMappingURL=region1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region1.js","sourceRoot":"","sources":["../../src/regions/region1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * IAPWS-IF97 Region 2: Superheated Steam
3
+ *
4
+ * Basic equation for the specific Gibbs free energy γ(π,τ) = γ°(π,τ) + γʳ(π,τ)
5
+ * Valid for: 273.15 K ≤ T ≤ 623.15 K at Psat(T), and T ≤ 1073.15 K at P ≤ 100 MPa
6
+ *
7
+ * Reference: IAPWS-IF97, Section 6 (Equations for Region 2)
8
+ */
9
+ import type { BasicProperties } from '../types.js';
10
+ /**
11
+ * Compute Region 2 thermodynamic properties from pressure and temperature.
12
+ *
13
+ * @param p - Pressure [MPa]
14
+ * @param T - Temperature [K]
15
+ * @returns Basic thermodynamic properties
16
+ */
17
+ export declare function region2(p: number, T: number): BasicProperties;
18
+ //# sourceMappingURL=region2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region2.d.ts","sourceRoot":"","sources":["../../src/regions/region2.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,aAAa,CAAC;AAkErE;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,eAAe,CAqE7D"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * IAPWS-IF97 Region 2: Superheated Steam
3
+ *
4
+ * Basic equation for the specific Gibbs free energy γ(π,τ) = γ°(π,τ) + γʳ(π,τ)
5
+ * Valid for: 273.15 K ≤ T ≤ 623.15 K at Psat(T), and T ≤ 1073.15 K at P ≤ 100 MPa
6
+ *
7
+ * Reference: IAPWS-IF97, Section 6 (Equations for Region 2)
8
+ */
9
+ import { R } from '../constants.js';
10
+ import { Region } from '../types.js';
11
+ // ─── Ideal Part Coefficients (Table 10) ─────────────────────────────────────
12
+ /** γ° coefficients: [_, J, N] (I is implicit for ideal part) */
13
+ const IDEAL_COEFFICIENTS = [
14
+ [0, -9.6927686500217],
15
+ [1, 10.086655968018],
16
+ [-5, -0.005608791128302],
17
+ [-4, 0.071452738081455],
18
+ [-3, -0.40710498223928],
19
+ [-2, 1.4240819171444],
20
+ [-1, -4.383951131945],
21
+ [2, -0.28408632460772],
22
+ [3, 0.021268463753307],
23
+ ];
24
+ // ─── Residual Part Coefficients (Table 11) ──────────────────────────────────
25
+ const RESIDUAL_COEFFICIENTS = [
26
+ [1, 0, -1.7731742473213e-3],
27
+ [1, 1, -0.017834862292358],
28
+ [1, 2, -0.045996013696365],
29
+ [1, 3, -0.057581259083432],
30
+ [1, 6, -0.05032527872793],
31
+ [2, 1, -3.3032641670203e-5],
32
+ [2, 2, -1.8948987516315e-4],
33
+ [2, 4, -3.9392777243355e-3],
34
+ [2, 7, -0.043797295650573],
35
+ [2, 36, -2.6674547914087e-5],
36
+ [3, 0, 2.0481737692309e-8],
37
+ [3, 1, 4.3870667284435e-7],
38
+ [3, 3, -3.227767723857e-5],
39
+ [3, 6, -1.5033924542148e-3],
40
+ [3, 35, -0.040668253562649],
41
+ [4, 1, -7.8847309559367e-10],
42
+ [4, 2, 1.2790717852285e-8],
43
+ [4, 3, 4.8225372718507e-7],
44
+ [5, 7, 2.2922076337661e-6],
45
+ [6, 3, -1.6714766451061e-11],
46
+ [6, 16, -2.1171472321355e-3],
47
+ [6, 35, -23.895741934104],
48
+ [7, 0, -5.905956432427e-18],
49
+ [7, 11, -1.2621808899101e-6],
50
+ [7, 25, -0.038946842435739],
51
+ [8, 8, 1.1256211360459e-11],
52
+ [8, 36, -8.2311340897998],
53
+ [9, 13, 1.9809712802088e-8],
54
+ [10, 4, 1.0406965210174e-19],
55
+ [10, 10, -1.0234747095929e-13],
56
+ [10, 14, -1.0018179379511e-9],
57
+ [16, 29, -8.0882908646985e-11],
58
+ [16, 50, 0.10693031879409],
59
+ [18, 57, -0.33662250574171],
60
+ [20, 20, 8.9185845355421e-25],
61
+ [20, 35, 3.0629316876232e-13],
62
+ [20, 48, -4.2002467698208e-6],
63
+ [21, 21, -5.9056029685639e-26],
64
+ [22, 53, 3.7826947613457e-6],
65
+ [23, 39, -1.2768608934681e-15],
66
+ [24, 26, 7.3087610595061e-29],
67
+ [24, 40, 5.5414715350778e-17],
68
+ [24, 58, -9.436970724121e-7],
69
+ ];
70
+ /**
71
+ * Compute Region 2 thermodynamic properties from pressure and temperature.
72
+ *
73
+ * @param p - Pressure [MPa]
74
+ * @param T - Temperature [K]
75
+ * @returns Basic thermodynamic properties
76
+ */
77
+ export function region2(p, T) {
78
+ const pi = p;
79
+ const tau = 540.0 / T;
80
+ // ── Ideal part derivatives ──
81
+ let gi = Math.log(pi);
82
+ let gi_pi = 1 / pi;
83
+ // gi_pipi = -1/(pi*pi) — not needed for Region 2 properties
84
+ let gi_tau = 0;
85
+ let gi_tautau = 0;
86
+ for (const [J, N] of IDEAL_COEFFICIENTS) {
87
+ gi += N * Math.pow(tau, J);
88
+ gi_tau += N * J * Math.pow(tau, J - 1);
89
+ gi_tautau += N * J * (J - 1) * Math.pow(tau, J - 2);
90
+ }
91
+ // ── Residual part derivatives ──
92
+ let gr = 0;
93
+ let gr_pi = 0;
94
+ let gr_pipi = 0;
95
+ let gr_tau = 0;
96
+ let gr_tautau = 0;
97
+ let gr_pitau = 0;
98
+ for (const [I, J, N] of RESIDUAL_COEFFICIENTS) {
99
+ const piPow = Math.pow(pi, I);
100
+ const tauShift = tau - 0.5;
101
+ const tauPow = Math.pow(tauShift, J);
102
+ gr += N * piPow * tauPow;
103
+ gr_pi += N * I * Math.pow(pi, I - 1) * tauPow;
104
+ gr_pipi += N * I * (I - 1) * Math.pow(pi, I - 2) * tauPow;
105
+ gr_tau += N * piPow * J * Math.pow(tauShift, J - 1);
106
+ gr_tautau += N * piPow * J * (J - 1) * Math.pow(tauShift, J - 2);
107
+ gr_pitau += N * I * Math.pow(pi, I - 1) * J * Math.pow(tauShift, J - 1);
108
+ }
109
+ const gp = gi_pi + gr_pi;
110
+ const gt = gi_tau + gr_tau;
111
+ const gtt = gi_tautau + gr_tautau;
112
+ return {
113
+ region: Region.Region2,
114
+ pressure: p,
115
+ temperature: T,
116
+ specificVolume: (R * T / (1000 * p)) * pi * gp,
117
+ internalEnergy: R * T * (tau * gt - pi * gp),
118
+ entropy: R * (tau * gt - (gi + gr)),
119
+ enthalpy: R * T * tau * gt,
120
+ cp: -R * tau * tau * gtt,
121
+ cv: R * (-tau * tau * gtt -
122
+ Math.pow(1 + pi * gr_pi - tau * pi * gr_pitau, 2) /
123
+ (1 - pi * pi * gr_pipi)),
124
+ speedOfSound: Math.sqrt(1000 * R * T *
125
+ (1 + 2 * pi * gr_pi + pi * pi * gr_pi * gr_pi) /
126
+ ((1 - pi * pi * gr_pipi) +
127
+ Math.pow(1 + pi * gr_pi - tau * pi * gr_pitau, 2) /
128
+ (tau * tau * gtt))),
129
+ quality: null,
130
+ isobaricExpansion: (1 + pi * gr_pi - tau * pi * gr_pitau) / (1 + pi * gr_pi) / T,
131
+ isothermalCompressibility: (1 - pi * pi * gr_pipi) / (1 + pi * gr_pi) / p,
132
+ };
133
+ }
134
+ //# sourceMappingURL=region2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region2.js","sourceRoot":"","sources":["../../src/regions/region2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Region 3 subregions a–m coefficient data.
3
+ * Reference: Supplementary Release on Backward Equations for v(P,T) in Region 3
4
+ */
5
+ import type { SubregionConfig } from './region3-eval.js';
6
+ export declare const R3A: SubregionConfig;
7
+ export declare const R3B: SubregionConfig;
8
+ export declare const R3C: SubregionConfig;
9
+ export declare const R3D: SubregionConfig;
10
+ export declare const R3E: SubregionConfig;
11
+ export declare const R3F: SubregionConfig;
12
+ export declare const R3G: SubregionConfig;
13
+ export declare const R3H: SubregionConfig;
14
+ export declare const R3I: SubregionConfig;
15
+ export declare const R3J: SubregionConfig;
16
+ export declare const R3K: SubregionConfig;
17
+ export declare const R3L: SubregionConfig;
18
+ export declare const R3M: SubregionConfig;
19
+ //# sourceMappingURL=region3-data-am.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region3-data-am.d.ts","sourceRoot":"","sources":["../../src/regions/region3-data-am.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,eAAO,MAAM,GAAG,EAAE,eAGjB,CAAC;AACF,eAAO,MAAM,GAAG,EAAE,eAGjB,CAAC;AACF,eAAO,MAAM,GAAG,EAAE,eAGjB,CAAC;AACF,eAAO,MAAM,GAAG,EAAE,eAGjB,CAAC;AACF,eAAO,MAAM,GAAG,EAAE,eAGjB,CAAC;AACF,eAAO,MAAM,GAAG,EAAE,eAGjB,CAAC;AACF,eAAO,MAAM,GAAG,EAAE,eAGjB,CAAC;AACF,eAAO,MAAM,GAAG,EAAE,eAGjB,CAAC;AACF,eAAO,MAAM,GAAG,EAAE,eAGjB,CAAC;AACF,eAAO,MAAM,GAAG,EAAE,eAGjB,CAAC;AACF,eAAO,MAAM,GAAG,EAAE,eAGjB,CAAC;AACF,eAAO,MAAM,GAAG,EAAE,eAGjB,CAAC;AACF,eAAO,MAAM,GAAG,EAAE,eAGjB,CAAC"}