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 @@
1
+ {"version":3,"file":"nelder-mead.js","sourceRoot":"","sources":["../../src/solvers/nelder-mead.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Newton-Raphson root-finding solver.
3
+ * Finds x such that f(x) = 0, with optional analytical derivative.
4
+ */
5
+ export interface NewtonRaphsonOptions {
6
+ /** Convergence tolerance (default 1e-7) */
7
+ tolerance?: number;
8
+ /** Maximum iterations (default 50) */
9
+ maxIterations?: number;
10
+ /** Step size for numerical derivative (default 1e-4) */
11
+ h?: number;
12
+ /** Machine epsilon (default 2.22e-16) */
13
+ epsilon?: number;
14
+ }
15
+ /**
16
+ * Solve f(x) = 0 using Newton-Raphson method.
17
+ *
18
+ * @param f - Function to find root of
19
+ * @param x0 - Initial guess
20
+ * @param fp - Optional analytical derivative f'(x)
21
+ * @param options - Solver options
22
+ * @returns x such that f(x) ≈ 0
23
+ */
24
+ export declare function newtonRaphson(f: (x: number) => number, x0: number, fp?: ((x: number) => number) | null, options?: NewtonRaphsonOptions): number;
25
+ //# sourceMappingURL=newton-raphson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"newton-raphson.d.ts","sourceRoot":"","sources":["../../src/solvers/newton-raphson.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,oBAAoB;IACnC,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EACxB,EAAE,EAAE,MAAM,EACV,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,EACnC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,MAAM,CA8BR"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Newton-Raphson root-finding solver.
3
+ * Finds x such that f(x) = 0, with optional analytical derivative.
4
+ */
5
+ /**
6
+ * Solve f(x) = 0 using Newton-Raphson method.
7
+ *
8
+ * @param f - Function to find root of
9
+ * @param x0 - Initial guess
10
+ * @param fp - Optional analytical derivative f'(x)
11
+ * @param options - Solver options
12
+ * @returns x such that f(x) ≈ 0
13
+ */
14
+ export function newtonRaphson(f, x0, fp, options) {
15
+ const tol = options?.tolerance ?? 1e-7;
16
+ const maxIter = options?.maxIterations ?? 50;
17
+ const h = options?.h ?? 1e-4;
18
+ const eps = options?.epsilon ?? 2.220446049250313e-16;
19
+ const hr = 1 / h;
20
+ let x = x0;
21
+ for (let iter = 0; iter < maxIter; iter++) {
22
+ const y = f(x);
23
+ let yp;
24
+ if (fp) {
25
+ yp = fp(x);
26
+ }
27
+ else {
28
+ // 5-point numerical derivative
29
+ const yph = f(x + h);
30
+ const ymh = f(x - h);
31
+ const yp2h = f(x + 2 * h);
32
+ const ym2h = f(x - 2 * h);
33
+ yp = ((ym2h - yp2h) + 8 * (yph - ymh)) * hr / 12;
34
+ }
35
+ if (Math.abs(yp) <= eps * Math.abs(y))
36
+ return x;
37
+ const x1 = x - y / yp;
38
+ if (Math.abs(x1 - x) <= tol * Math.abs(x1))
39
+ return x1;
40
+ x = x1;
41
+ }
42
+ return x;
43
+ }
44
+ //# sourceMappingURL=newton-raphson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"newton-raphson.js","sourceRoot":"","sources":["../../src/solvers/newton-raphson.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,CAAwB,EACxB,EAAU,EACV,EAAmC,EACnC,OAA8B;IAE9B,MAAM,GAAG,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;IACvC,MAAM,OAAO,GAAG,OAAO,EAAE,aAAa,IAAI,EAAE,CAAC;IAC7C,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC;IAC7B,MAAM,GAAG,GAAG,OAAO,EAAE,OAAO,IAAI,qBAAqB,CAAC;IACtD,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAEjB,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,IAAI,EAAU,CAAC;QAEf,IAAI,EAAE,EAAE,CAAC;YACP,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACb,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACrB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACrB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAEhD,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC;QACtD,CAAC,GAAG,EAAE,CAAC;IACT,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * IAPWS Transport Properties
3
+ *
4
+ * - Viscosity (IAPWS 2008)
5
+ * - Thermal Conductivity (IAPWS 2011)
6
+ * - Surface Tension (IAPWS 2014)
7
+ * - Dielectric Constant (IAPWS 1997)
8
+ * - Ionization Constant (IAPWS 2007)
9
+ */
10
+ /**
11
+ * Dynamic viscosity of water/steam [Pa·s]
12
+ * @param T Temperature [K]
13
+ * @param rho Density [kg/m³]
14
+ */
15
+ export declare function viscosity(T: number, rho: number): number;
16
+ /**
17
+ * Thermal conductivity of water/steam [W/(m·K)]
18
+ *
19
+ * When optional thermodynamic state parameters are provided, the full IAPWS 2011
20
+ * critical enhancement (λ₂) is computed. Otherwise λ₂ = 0 (backward compatible).
21
+ *
22
+ * @param T Temperature [K]
23
+ * @param rho Density [kg/m³]
24
+ * @param cp Isobaric heat capacity [kJ/(kg·K)] (optional)
25
+ * @param cv Isochoric heat capacity [kJ/(kg·K)] (optional)
26
+ * @param drhodP_T Isothermal density derivative ∂ρ/∂P|_T [kg/m³/MPa] (optional)
27
+ * @param mu Dynamic viscosity [Pa·s] (optional)
28
+ */
29
+ export declare function thermalConductivity(T: number, rho: number, cp?: number, cv?: number, drhodP_T?: number, mu?: number): number;
30
+ /**
31
+ * Surface tension of water [N/m]
32
+ * @param T Temperature [K], valid for 273.15 ≤ T ≤ 647.096
33
+ */
34
+ export declare function surfaceTension(T: number): number;
35
+ /**
36
+ * Static dielectric constant [dimensionless]
37
+ * @param T Temperature [K]
38
+ * @param rho Density [kg/m³]
39
+ */
40
+ export declare function dielectricConstant(T: number, rho: number): number;
41
+ /**
42
+ * Ionization constant pKw [dimensionless]
43
+ * @param T Temperature [K]
44
+ * @param rho Density [kg/m³]
45
+ */
46
+ export declare function ionizationConstant(T: number, rho: number): number;
47
+ //# sourceMappingURL=properties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../src/transport/properties.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CA4BxD;AAyBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EACtB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GACvD,MAAM,CA0BR;AAgDD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGhD;AAUD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAoBjE;AAMD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAgBjE"}
@@ -0,0 +1,205 @@
1
+ /**
2
+ * IAPWS Transport Properties
3
+ *
4
+ * - Viscosity (IAPWS 2008)
5
+ * - Thermal Conductivity (IAPWS 2011)
6
+ * - Surface Tension (IAPWS 2014)
7
+ * - Dielectric Constant (IAPWS 1997)
8
+ * - Ionization Constant (IAPWS 2007)
9
+ */
10
+ import { Tc, Pc, RHOc } from '../constants.js';
11
+ // ─── Viscosity (IAPWS 2008) ─────────────────────────────────────────────────
12
+ const MU0_H = [1.67752, 2.20462, 0.6366564, -0.241605];
13
+ const MU1_H = [
14
+ 5.20094e-1, 8.50895e-2, -1.08374, -2.89555e-1, 0, 0,
15
+ 2.22531e-1, 9.99115e-1, 1.88797, 1.26613, 0, 1.20573e-1,
16
+ -2.81378e-1, -9.06851e-1, -7.72479e-1, -4.89837e-1, -2.5704e-1, 0,
17
+ 1.61913e-1, 2.57399e-1, 0, 0, 0, 0,
18
+ -3.25372e-2, 0, 0, 6.98452e-2, 0, 0,
19
+ 0, 0, 0, 0, 8.72102e-3, 0,
20
+ 0, 0, 0, -4.35673e-3, 0, -5.93264e-4,
21
+ ];
22
+ /**
23
+ * Dynamic viscosity of water/steam [Pa·s]
24
+ * @param T Temperature [K]
25
+ * @param rho Density [kg/m³]
26
+ */
27
+ export function viscosity(T, rho) {
28
+ const That = T / Tc;
29
+ const rhat = rho / RHOc;
30
+ // μ₀ — dilute gas contribution
31
+ let sum0 = 0;
32
+ for (let i = 0; i < 4; i++)
33
+ sum0 += MU0_H[i] / Math.pow(That, i);
34
+ const mu0 = 100 * Math.sqrt(That) / sum0;
35
+ // μ₁ — finite-density contribution
36
+ let mu1sum = 0;
37
+ for (let j = 0; j < 6; j++) {
38
+ const x = Math.pow(1 / That - 1, j);
39
+ let y = 0;
40
+ for (let z = 0; z < 7; z++) {
41
+ y += MU1_H[z * 6 + j] * Math.pow(rhat - 1, z);
42
+ }
43
+ mu1sum += x * y;
44
+ }
45
+ const mu1 = Math.exp(rhat * mu1sum);
46
+ // μ₂ — critical enhancement
47
+ // Per IAPWS 2008, μ₂ is negligible except extremely close to the critical point
48
+ // (within ~1 K and ~1 MPa). The original reference library also omits it.
49
+ // Keeping μ₂ = 1 (no enhancement) for practical use.
50
+ const mu2 = 1;
51
+ return mu0 * mu1 * mu2 / 1e6; // Convert μPa·s to Pa·s
52
+ }
53
+ // ─── Thermal Conductivity (IAPWS 2011) ──────────────────────────────────────
54
+ const K0_L = [2.443221e-3, 1.323095e-2, 6.770357e-3, -3.454586e-3, 4.096266e-4];
55
+ const K1_L = [
56
+ 1.60397357, -0.646013523, 0.111443906, 0.102997357, -0.0504123634, 0.00609859258,
57
+ 2.33771842, -2.78843778, 1.53616167, -0.463045512, 0.0832827019, -0.00719201245,
58
+ 2.19650529, -4.54580785, 3.55777244, -1.40944978, 0.275418278, -0.0205938816,
59
+ -1.21051378, 1.60812989, -0.621178141, 0.0716373224, 0, 0,
60
+ -2.720337, 4.57586331, -3.18369245, 1.1168348, -0.19268305, 0.012913842,
61
+ ];
62
+ // Reference compressibility piecewise polynomial coefficients for λ₂ (IAPWS 2011)
63
+ const DRHO_REF_COEFFS = [
64
+ [0.310559006, [6.53786807199516, -5.61149954923348, 3.39624167361325, -2.27492629730878, 10.2631854662709, 1.97815050331519]],
65
+ [0.776397516, [6.52717759281799, -6.30816983387575, 8.08379285492595, -9.82240510197603, 12.1358413791395, -5.54349664571295]],
66
+ [1.242236025, [5.35500529896124, -3.96415689925446, 8.91990208918795, -12.0338729505790, 9.19494865194302, -2.16866274479712]],
67
+ [1.863354037, [1.55225959906681, 0.464621290821181, 8.93237374861479, -11.0321960061126, 6.16780999933360, -0.965458722086812]],
68
+ [Infinity, [1.11999926419994, 0.595748562571649, 9.88952565078920, -10.3255051147040, 4.66861294457414, -0.503243546373828]],
69
+ ];
70
+ /** Specific gas constant for water [kJ/(kg·K)] */
71
+ const R_WATER = 0.46151805;
72
+ /**
73
+ * Thermal conductivity of water/steam [W/(m·K)]
74
+ *
75
+ * When optional thermodynamic state parameters are provided, the full IAPWS 2011
76
+ * critical enhancement (λ₂) is computed. Otherwise λ₂ = 0 (backward compatible).
77
+ *
78
+ * @param T Temperature [K]
79
+ * @param rho Density [kg/m³]
80
+ * @param cp Isobaric heat capacity [kJ/(kg·K)] (optional)
81
+ * @param cv Isochoric heat capacity [kJ/(kg·K)] (optional)
82
+ * @param drhodP_T Isothermal density derivative ∂ρ/∂P|_T [kg/m³/MPa] (optional)
83
+ * @param mu Dynamic viscosity [Pa·s] (optional)
84
+ */
85
+ export function thermalConductivity(T, rho, cp, cv, drhodP_T, mu) {
86
+ const That = T / Tc;
87
+ const rhat = rho / RHOc;
88
+ // λ₀
89
+ let sum0 = 0;
90
+ for (let i = 0; i < 5; i++)
91
+ sum0 += K0_L[i] / Math.pow(That, i);
92
+ const k0 = Math.sqrt(That) / sum0;
93
+ // λ₁
94
+ let k1sum = 0;
95
+ for (let j = 0; j < 5; j++) {
96
+ const x = Math.pow(1 / That - 1, j);
97
+ let y = 0;
98
+ for (let z = 0; z < 6; z++)
99
+ y += K1_L[j * 6 + z] * Math.pow(rhat - 1, z);
100
+ k1sum += x * y;
101
+ }
102
+ const k1 = Math.exp(rhat * k1sum);
103
+ // λ₂ — critical enhancement (IAPWS 2011)
104
+ let k2 = 0;
105
+ if (cp !== undefined && cv !== undefined && drhodP_T !== undefined && mu !== undefined) {
106
+ k2 = computeK2(That, rhat, cp, cv, drhodP_T, mu);
107
+ }
108
+ return (k0 * k1 + k2) / 1000; // Convert mW/(m·K) to W/(m·K)
109
+ }
110
+ /**
111
+ * Compute the critical enhancement term λ₂ [mW/(m·K)] per IAPWS 2011.
112
+ */
113
+ function computeK2(That, rhat, cp, cv, drhodP_T, mu) {
114
+ // Reference compressibility from piecewise polynomial
115
+ let ai = DRHO_REF_COEFFS[DRHO_REF_COEFFS.length - 1][1];
116
+ for (const [threshold, coeffs] of DRHO_REF_COEFFS) {
117
+ if (rhat <= threshold) {
118
+ ai = coeffs;
119
+ break;
120
+ }
121
+ }
122
+ let tempD = 0;
123
+ for (let i = 0; i < 6; i++)
124
+ tempD += ai[i] * Math.pow(rhat, i);
125
+ const drho_ref = (1 / tempD) * (RHOc / Pc); // [kg/m³/MPa]
126
+ // Compressibility difference
127
+ let DeltaX = rhat * (Pc / RHOc * drhodP_T - Pc / RHOc * drho_ref * 1.5 / That);
128
+ if (DeltaX < 0)
129
+ DeltaX = 0;
130
+ // Correlation length ξ [nm]
131
+ const X = 0.13 * Math.pow(DeltaX / 0.06, 0.63 / 1.239);
132
+ // qD·ξ
133
+ const Y = X / 0.4;
134
+ let Z;
135
+ if (Y < 1.2e-7) {
136
+ Z = 0;
137
+ }
138
+ else {
139
+ const kappa = cp / cv;
140
+ Z = 2 / (Math.PI * Y) * (((1 - 1 / kappa) * Math.atan(Y) + Y / kappa)
141
+ - (1 - Math.exp(-1 / (1 / Y + Y * Y / (3 * rhat * rhat)))));
142
+ }
143
+ // Viscosity in μPa·s (mu is in Pa·s)
144
+ const mu_uPas = mu * 1e6;
145
+ // λ₂ in mW/(m·K)
146
+ return 177.8514 * rhat * (cp / R_WATER) * That / mu_uPas * Z;
147
+ }
148
+ // ─── Surface Tension (IAPWS 2014) ───────────────────────────────────────────
149
+ /**
150
+ * Surface tension of water [N/m]
151
+ * @param T Temperature [K], valid for 273.15 ≤ T ≤ 647.096
152
+ */
153
+ export function surfaceTension(T) {
154
+ const tau = 1 - T / Tc;
155
+ return 235.8e-3 * Math.pow(tau, 1.256) * (1 - 0.625 * tau);
156
+ }
157
+ // ─── Dielectric Constant (IAPWS 1997) ───────────────────────────────────────
158
+ const DC_Nh = [0.978224486826, -0.957771379375, 0.237511794148, 0.714692244396,
159
+ -0.298217036956, -0.108863472196, 0.0949327488264, -0.00980469816509,
160
+ 0.16516763497e-4, 0.937359795772e-4, -0.12317921872e-9];
161
+ const DC_Ih = [1, 1, 1, 2, 3, 3, 4, 5, 6, 7, 10];
162
+ const DC_Jh = [0.25, 1, 2.5, 1.5, 1.5, 2.5, 2, 2, 5, 0.5, 10];
163
+ /**
164
+ * Static dielectric constant [dimensionless]
165
+ * @param T Temperature [K]
166
+ * @param rho Density [kg/m³]
167
+ */
168
+ export function dielectricConstant(T, rho) {
169
+ const MW = 0.018015268;
170
+ const rhoM = rho / MW;
171
+ const rhoRc = rhoM / (RHOc / MW);
172
+ const alpha = 1.636e-40;
173
+ const Na = 6.0221367e23;
174
+ const mu = 6.138e-30;
175
+ const eps0 = 1 / (4e-7 * Math.PI * 299792458 ** 2);
176
+ const k = 1.380658e-23;
177
+ let g = 0;
178
+ for (let i = 0; i < 11; i++) {
179
+ g += DC_Nh[i] * Math.pow(rhoRc, DC_Ih[i]) * Math.pow(Tc / T, DC_Jh[i]);
180
+ }
181
+ g = 1 + g + 0.00196096504426 * rhoRc * Math.pow(T / 228 - 1, -1.2);
182
+ const A = Na * mu * mu * rhoM * g / (eps0 * k * T);
183
+ const B = Na * alpha * rhoM / (3 * eps0);
184
+ return (1 + A + 5 * B + Math.sqrt(9 + 2 * A + 18 * B + A * A + 10 * A * B + 9 * B * B)) / (4 - 4 * B);
185
+ }
186
+ // ─── Ionization Constant (IAPWS 2024) ───────────────────────────────────────
187
+ function log10(x) { return Math.log(x) / Math.LN10; }
188
+ /**
189
+ * Ionization constant pKw [dimensionless]
190
+ * @param T Temperature [K]
191
+ * @param rho Density [kg/m³]
192
+ */
193
+ export function ionizationConstant(T, rho) {
194
+ const density = rho / 1000;
195
+ const n = 6;
196
+ const molarMass = 18.015268;
197
+ const pKwG = 0.61415 + 48251.33 / T - 67707.93 / (T * T) + 10102100 / (T * T * T);
198
+ const Z = density * Math.exp(-0.702132
199
+ + 8681.05 / T
200
+ - 24145.1 * Math.pow(density, 2 / 3) / (T * T));
201
+ const beta = 0.813876 - 51.4471 / T - 0.469920 * density;
202
+ return -2 * n * (log10(1 + Z)
203
+ - Z / (Z + 1) * density * beta) + pKwG + 2 * log10(molarMass / 1000);
204
+ }
205
+ //# sourceMappingURL=properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"properties.js","sourceRoot":"","sources":["../../src/transport/properties.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * IAPWS-IF97 Core Types & Interfaces
3
+ *
4
+ * Type definitions for the IAPWS Industrial Formulation 1997
5
+ * for the Thermodynamic Properties of Water and Steam.
6
+ */
7
+ /** IAPWS-IF97 thermodynamic regions */
8
+ export declare enum Region {
9
+ /** Subcooled liquid (compressed water) */
10
+ Region1 = 1,
11
+ /** Superheated steam */
12
+ Region2 = 2,
13
+ /** Supercritical fluid */
14
+ Region3 = 3,
15
+ /** Two-phase (wet steam / saturation line) */
16
+ Region4 = 4,
17
+ /** High-temperature steam (T > 1073.15 K) */
18
+ Region5 = 5
19
+ }
20
+ /**
21
+ * Complete thermodynamic state of water/steam.
22
+ * All properties use SI-based units consistent with IAPWS-IF97.
23
+ */
24
+ export interface SteamState {
25
+ /** IAPWS-IF97 region (1–5) */
26
+ region: Region;
27
+ /** Pressure [MPa] */
28
+ pressure: number;
29
+ /** Temperature [K] */
30
+ temperature: number;
31
+ /** Specific volume [m³/kg] */
32
+ specificVolume: number;
33
+ /** Density [kg/m³] */
34
+ density: number;
35
+ /** Specific internal energy [kJ/kg] */
36
+ internalEnergy: number;
37
+ /** Specific entropy [kJ/(kg·K)] */
38
+ entropy: number;
39
+ /** Specific enthalpy [kJ/kg] */
40
+ enthalpy: number;
41
+ /** Isobaric heat capacity [kJ/(kg·K)] */
42
+ cp: number;
43
+ /** Isochoric heat capacity [kJ/(kg·K)] */
44
+ cv: number;
45
+ /** Speed of sound [m/s] */
46
+ speedOfSound: number;
47
+ /** Vapour quality (0–1), only defined in Region 4 */
48
+ quality: number | null;
49
+ /** Dynamic viscosity [Pa·s] */
50
+ viscosity: number;
51
+ /** Thermal conductivity [W/(m·K)] */
52
+ thermalConductivity: number;
53
+ /** Surface tension [N/m], only meaningful at saturation */
54
+ surfaceTension: number;
55
+ /** Static dielectric constant [dimensionless] */
56
+ dielectricConstant: number;
57
+ /** Ionization constant pKw [dimensionless] */
58
+ ionizationConstant: number;
59
+ /** Isobaric cubic expansion coefficient [1/K] */
60
+ isobaricExpansion: number;
61
+ /** Isothermal compressibility [1/MPa] */
62
+ isothermalCompressibility: number;
63
+ }
64
+ /**
65
+ * Core thermodynamic properties computed from a region's fundamental equation.
66
+ * Does not include transport properties (viscosity, conductivity, etc.)
67
+ */
68
+ export interface BasicProperties {
69
+ region: Region;
70
+ pressure: number;
71
+ temperature: number;
72
+ specificVolume: number;
73
+ internalEnergy: number;
74
+ entropy: number;
75
+ enthalpy: number;
76
+ cp: number;
77
+ cv: number;
78
+ speedOfSound: number;
79
+ quality: number | null;
80
+ isobaricExpansion: number;
81
+ isothermalCompressibility: number;
82
+ }
83
+ /** Supported thermodynamic input combinations */
84
+ export type InputMode = 'PT' | 'PH' | 'PS' | 'HS' | 'Px' | 'Tx';
85
+ /** Input for pressure-temperature calculation */
86
+ export interface PTInput {
87
+ mode: 'PT';
88
+ /** Pressure [MPa] */
89
+ p: number;
90
+ /** Temperature [K] */
91
+ T: number;
92
+ }
93
+ /** Input for pressure-enthalpy calculation */
94
+ export interface PHInput {
95
+ mode: 'PH';
96
+ /** Pressure [MPa] */
97
+ p: number;
98
+ /** Specific enthalpy [kJ/kg] */
99
+ h: number;
100
+ }
101
+ /** Input for pressure-entropy calculation */
102
+ export interface PSInput {
103
+ mode: 'PS';
104
+ /** Pressure [MPa] */
105
+ p: number;
106
+ /** Specific entropy [kJ/(kg·K)] */
107
+ s: number;
108
+ }
109
+ /** Input for enthalpy-entropy calculation */
110
+ export interface HSInput {
111
+ mode: 'HS';
112
+ /** Specific enthalpy [kJ/kg] */
113
+ h: number;
114
+ /** Specific entropy [kJ/(kg·K)] */
115
+ s: number;
116
+ }
117
+ /** Input for pressure-quality (saturation) calculation */
118
+ export interface PxInput {
119
+ mode: 'Px';
120
+ /** Pressure [MPa] */
121
+ p: number;
122
+ /** Vapour quality (0–1) */
123
+ x: number;
124
+ }
125
+ /** Input for temperature-quality (saturation) calculation */
126
+ export interface TxInput {
127
+ mode: 'Tx';
128
+ /** Temperature [K] */
129
+ T: number;
130
+ /** Vapour quality (0–1) */
131
+ x: number;
132
+ }
133
+ /** Union of all valid inputs */
134
+ export type SolveInput = PTInput | PHInput | PSInput | HSInput | PxInput | TxInput;
135
+ /**
136
+ * Typed coefficient table for IAPWS polynomial evaluations.
137
+ * Each entry is [I, J, N] where:
138
+ * - I = pressure exponent
139
+ * - J = temperature exponent
140
+ * - N = coefficient value
141
+ */
142
+ export type CoefficientTable = readonly (readonly [number, number, number])[];
143
+ /** Base error class for all IF97 calculation errors */
144
+ export declare class IF97Error extends Error {
145
+ constructor(message: string);
146
+ }
147
+ /** Thrown when input values are outside IAPWS-IF97 valid ranges */
148
+ export declare class OutOfRangeError extends IF97Error {
149
+ readonly parameter: string;
150
+ readonly value: number;
151
+ readonly min: number;
152
+ readonly max: number;
153
+ constructor(parameter: string, value: number, min: number, max: number);
154
+ }
155
+ /** Thrown when a numerical solver fails to converge */
156
+ export declare class ConvergenceError extends IF97Error {
157
+ readonly solver: string;
158
+ readonly iterations: number;
159
+ constructor(solver: string, iterations: number);
160
+ }
161
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,uCAAuC;AACvC,oBAAY,MAAM;IAChB,0CAA0C;IAC1C,OAAO,IAAI;IACX,wBAAwB;IACxB,OAAO,IAAI;IACX,0BAA0B;IAC1B,OAAO,IAAI;IACX,8CAA8C;IAC9C,OAAO,IAAI;IACX,6CAA6C;IAC7C,OAAO,IAAI;CACZ;AAID;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAIvB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,8CAA8C;IAC9C,kBAAkB,EAAE,MAAM,CAAC;IAI3B,iDAAiD;IACjD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yCAAyC;IACzC,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAID;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAID,iDAAiD;AACjD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhE,iDAAiD;AACjD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,qBAAqB;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,sBAAsB;IACtB,CAAC,EAAE,MAAM,CAAC;CACX;AAED,8CAA8C;AAC9C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,qBAAqB;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,gCAAgC;IAChC,CAAC,EAAE,MAAM,CAAC;CACX;AAED,6CAA6C;AAC7C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,qBAAqB;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,mCAAmC;IACnC,CAAC,EAAE,MAAM,CAAC;CACX;AAED,6CAA6C;AAC7C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,gCAAgC;IAChC,CAAC,EAAE,MAAM,CAAC;IACV,mCAAmC;IACnC,CAAC,EAAE,MAAM,CAAC;CACX;AAED,0DAA0D;AAC1D,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,qBAAqB;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,2BAA2B;IAC3B,CAAC,EAAE,MAAM,CAAC;CACX;AAED,6DAA6D;AAC7D,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,sBAAsB;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,2BAA2B;IAC3B,CAAC,EAAE,MAAM,CAAC;CACX;AAED,gCAAgC;AAChC,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAInF;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;AAI9E,uDAAuD;AACvD,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAI5B;AAED,mEAAmE;AACnE,qBAAa,eAAgB,SAAQ,SAAS;aAE1B,SAAS,EAAE,MAAM;aACjB,KAAK,EAAE,MAAM;aACb,GAAG,EAAE,MAAM;aACX,GAAG,EAAE,MAAM;gBAHX,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM;CAO9B;AAED,uDAAuD;AACvD,qBAAa,gBAAiB,SAAQ,SAAS;aAE3B,MAAM,EAAE,MAAM;aACd,UAAU,EAAE,MAAM;gBADlB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM;CAKrC"}
package/dist/types.js ADDED
@@ -0,0 +1,56 @@
1
+ /**
2
+ * IAPWS-IF97 Core Types & Interfaces
3
+ *
4
+ * Type definitions for the IAPWS Industrial Formulation 1997
5
+ * for the Thermodynamic Properties of Water and Steam.
6
+ */
7
+ // ─── Region Enum ────────────────────────────────────────────────────────────
8
+ /** IAPWS-IF97 thermodynamic regions */
9
+ export var Region;
10
+ (function (Region) {
11
+ /** Subcooled liquid (compressed water) */
12
+ Region[Region["Region1"] = 1] = "Region1";
13
+ /** Superheated steam */
14
+ Region[Region["Region2"] = 2] = "Region2";
15
+ /** Supercritical fluid */
16
+ Region[Region["Region3"] = 3] = "Region3";
17
+ /** Two-phase (wet steam / saturation line) */
18
+ Region[Region["Region4"] = 4] = "Region4";
19
+ /** High-temperature steam (T > 1073.15 K) */
20
+ Region[Region["Region5"] = 5] = "Region5";
21
+ })(Region || (Region = {}));
22
+ // ─── Errors ─────────────────────────────────────────────────────────────────
23
+ /** Base error class for all IF97 calculation errors */
24
+ export class IF97Error extends Error {
25
+ constructor(message) {
26
+ super(message);
27
+ this.name = 'IF97Error';
28
+ }
29
+ }
30
+ /** Thrown when input values are outside IAPWS-IF97 valid ranges */
31
+ export class OutOfRangeError extends IF97Error {
32
+ parameter;
33
+ value;
34
+ min;
35
+ max;
36
+ constructor(parameter, value, min, max) {
37
+ super(`${parameter} = ${value} is out of range [${min}, ${max}]`);
38
+ this.parameter = parameter;
39
+ this.value = value;
40
+ this.min = min;
41
+ this.max = max;
42
+ this.name = 'OutOfRangeError';
43
+ }
44
+ }
45
+ /** Thrown when a numerical solver fails to converge */
46
+ export class ConvergenceError extends IF97Error {
47
+ solver;
48
+ iterations;
49
+ constructor(solver, iterations) {
50
+ super(`${solver} failed to converge after ${iterations} iterations`);
51
+ this.solver = solver;
52
+ this.iterations = iterations;
53
+ this.name = 'ConvergenceError';
54
+ }
55
+ }
56
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAE/E,uCAAuC;AACvC,MAAM,CAAN,IAAY,MAWX;AAXD,WAAY,MAAM;IAChB,0CAA0C;IAC1C,yCAAW,CAAA;IACX,wBAAwB;IACxB,yCAAW,CAAA;IACX,0BAA0B;IAC1B,yCAAW,CAAA;IACX,8CAA8C;IAC9C,yCAAW,CAAA;IACX,6CAA6C;IAC7C,yCAAW,CAAA;AACb,CAAC,EAXW,MAAM,KAAN,MAAM,QAWjB;AAsJD,+EAA+E;AAE/E,uDAAuD;AACvD,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,mEAAmE;AACnE,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAE1B;IACA;IACA;IACA;IAJlB,YACkB,SAAiB,EACjB,KAAa,EACb,GAAW,EACX,GAAW;QAE3B,KAAK,CACH,GAAG,SAAS,MAAM,KAAK,qBAAqB,GAAG,KAAK,GAAG,GAAG,CAC3D,CAAC;QAPc,cAAS,GAAT,SAAS,CAAQ;QACjB,UAAK,GAAL,KAAK,CAAQ;QACb,QAAG,GAAH,GAAG,CAAQ;QACX,QAAG,GAAH,GAAG,CAAQ;QAK3B,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,uDAAuD;AACvD,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IAE3B;IACA;IAFlB,YACkB,MAAc,EACd,UAAkB;QAElC,KAAK,CAAC,GAAG,MAAM,6BAA6B,UAAU,aAAa,CAAC,CAAC;QAHrD,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAQ;QAGlC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "iapws-if97",
3
+ "version": "1.0.0",
4
+ "description": "TypeScript implementation of IAPWS-IF97 for water and steam properties, including forward/backward solvers, saturation states, and transport properties.",
5
+ "author": "jltonghui",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/jltonghui/iapws-if97.git"
9
+ },
10
+ "bugs": {
11
+ "url": "https://github.com/jltonghui/iapws-if97/issues"
12
+ },
13
+ "homepage": "https://github.com/jltonghui/iapws-if97#readme",
14
+ "type": "module",
15
+ "main": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "exports": {
18
+ ".": {
19
+ "import": "./dist/index.js",
20
+ "types": "./dist/index.d.ts"
21
+ },
22
+ "./package.json": "./package.json"
23
+ },
24
+ "files": [
25
+ "dist",
26
+ "LICENSE",
27
+ "README.md"
28
+ ],
29
+ "engines": {
30
+ "node": ">=18"
31
+ },
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "sideEffects": false,
36
+ "scripts": {
37
+ "build": "tsc",
38
+ "test": "vitest run",
39
+ "test:watch": "vitest",
40
+ "test:coverage": "vitest run --coverage",
41
+ "test:standards": "vitest run tests/standards-asme tests/standards-cn",
42
+ "test:standards:asme": "vitest run tests/standards-asme",
43
+ "test:standards:cn": "vitest run tests/standards-cn",
44
+ "prepack": "npm run build && npm test",
45
+ "prepublishOnly": "npm run build && npm test"
46
+ },
47
+ "devDependencies": {
48
+ "@vitest/coverage-v8": "^4.1.0",
49
+ "typescript": "^5.4.0",
50
+ "vitest": "^4.1.0"
51
+ },
52
+ "keywords": [
53
+ "iapws",
54
+ "if97",
55
+ "steam",
56
+ "water",
57
+ "thermodynamics",
58
+ "properties",
59
+ "engineering"
60
+ ],
61
+ "license": "MIT"
62
+ }