measur-tools-suite 1.0.14-beta.275 → 1.0.14-beta.284

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/bin/client.wasm CHANGED
Binary file
package/bin/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "measur-tools-suite",
3
- "version": "1.0.14-beta.275",
3
+ "version": "1.0.14-beta.284",
4
4
  "engines": {
5
5
  "node": "20.19.4",
6
6
  "npm": "10.8.2"
@@ -96,6 +96,7 @@ window.MathJax = {
96
96
  \DeclareSIUnit{\lbmol}{lbmol}
97
97
  \DeclareSIUnit{\year}{yr}
98
98
  \DeclareSIUnit{\ton}{ton}
99
+ \DeclareSIUnit{\squareInch}{in^2}
99
100
  \DeclareSIUnit{\inchMercury}{inHg}
100
101
  `);
101
102
  }
@@ -0,0 +1,211 @@
1
+ /**
2
+ * @defgroup flow_calculations_energy_use_calculator Flow Calculations Energy Use Calculator
3
+ * @ingroup process_heat_calculators
4
+ * @brief Calculates flow rate and heat input of a fuel-fired furnace using orifice flow measurement.
5
+ * @details This calculator estimates gas flow rate and energy consumption in fuel-fired furnaces by measuring pressure drop across an orifice. The calculation uses orifice geometry, gas properties, operating conditions, and discharge coefficients to determine volumetric flow and thermal input. The method is based on standard industrial practice for orifice flow measurement in combustion systems.
6
+ *
7
+ * The calculation follows a top-down approach:
8
+ * 1. **Orifice Area** - Calculate effective orifice cross-sectional area
9
+ * 2. **Adjusted Discharge Coefficient** - Correct discharge coefficient for diameter ratio effects
10
+ * 3. **Pressure Drop Term** - Calculate normalized pressure drop accounting for specific gravity
11
+ * 4. **Temperature Adjustment** - Correct flow for actual gas temperature vs. standard conditions
12
+ * 5. **Pressure Adjustment** - Correct flow for actual gas pressure vs. atmospheric
13
+ * 6. **Flow Rate** - Calculate volumetric flow rate at standard conditions
14
+ * 7. **Heat Input** - Calculate thermal input based on flow and heating value
15
+ * 8. **Total Flow** - Calculate total gas volume consumed over operating period
16
+ *
17
+ * Relevant formulas and symbol definitions are documented below.
18
+ *
19
+ * @heading{Orifice Area}
20
+ * @copydoc flow_calculations_orifice_area_formula
21
+ *
22
+ * @heading{Adjusted Discharge Coefficient}
23
+ * @copydoc flow_calculations_adjusted_discharge_coefficient_formula
24
+ *
25
+ * @heading{Pressure Drop Term}
26
+ * @copydoc flow_calculations_pressure_drop_formula
27
+ *
28
+ * @heading{Temperature Adjustment}
29
+ * @copydoc flow_calculations_temperature_adjustment_formula
30
+ *
31
+ * @heading{Pressure Adjustment}
32
+ * @copydoc flow_calculations_pressure_adjustment_formula
33
+ *
34
+ * @heading{Flow Rate}
35
+ * @copydoc flow_calculations_flow_rate_formula
36
+ *
37
+ * @heading{Heat Input}
38
+ * @copydoc flow_calculations_heat_input_formula
39
+ *
40
+ * @heading{Total Flow}
41
+ * @copydoc flow_calculations_total_flow_formula
42
+ *
43
+ * @heading{Gas Type Specific Gravity Values}
44
+ * The following table shows the default specific gravity values. Provided for reference.
45
+ *
46
+ * | Gas Type | Specific Gravity (unitless) |
47
+ * |----------|---------------------------|
48
+ * | Air | 1.0 |
49
+ * | Ammonia (Dissociated) | 0.3 |
50
+ * | Argon | 1.38 |
51
+ * | Butane | 2.02 |
52
+ * | Endothermic Ammonia | 0.59 |
53
+ * | Exothermic (Cracked Lean) | 1.0 |
54
+ * | Exothermic (Cracked Rich) | 0.85 |
55
+ * | Helium | 0.14 |
56
+ * | Hydrogen | 0.07 |
57
+ * | Natural Gas | 0.65 |
58
+ * | Nitrogen | 0.96 |
59
+ * | Oxygen | 1.11 |
60
+ * | Propane | 1.52 |
61
+ *
62
+ * @heading{Section Type Discharge Coefficients}
63
+ * The following table shows the default discharge coefficient values. Provided for reference.
64
+ *
65
+ * | Section Type | Discharge Coefficient (unitless) |
66
+ * |-------------|----------------------------------|
67
+ * | Square Edge | 0.5 |
68
+ * | Sharp Edge | 0.6 |
69
+ * | Venturi | 0.8 |
70
+ */
71
+
72
+ /**
73
+ * @defgroup flow_calculations_orifice_area_formula Orifice Area Formula
74
+ * @ingroup flow_calculations_energy_use_calculator
75
+ * @brief Effective cross-sectional area of the orifice.
76
+ * @details The orifice area is calculated using an empirical factor and the square of the orifice diameter. This factor accounts for the conversion from diameter in inches to effective area for volumetric flow calculations in standard cubic feet per hour.
77
+ *
78
+ * @formula{flow-calculations-orifice-area; A = k_{area} \cdot d_{orifice}^2}
79
+ *
80
+ * @subheading{Symbols}
81
+ * @symtable
82
+ * @symrow{A; Orifice area; \squareInch}
83
+ * @symrow{k_{area}; Orifice area factor (1300) - empirical constant for flow calculations, see @ref physics::us::kOrificeAreaFactor; \unitless}
84
+ * @symrow{d_{orifice}; Orifice diameter; \inch}
85
+ * @endsymtable
86
+ */
87
+
88
+ /**
89
+ * @defgroup flow_calculations_adjusted_discharge_coefficient_formula Adjusted Discharge Coefficient Formula
90
+ * @ingroup flow_calculations_energy_use_calculator
91
+ * @brief Discharge coefficient corrected for diameter ratio effects.
92
+ * @details When the orifice diameter is smaller than the pipe diameter, the discharge coefficient must be adjusted to account for the velocity of approach and contraction effects. If the diameters are equal, no adjustment is needed.
93
+ *
94
+ * @formula{flow-calculations-adjusted-discharge-coeff; C_{d,adj} = \begin{cases} \frac{C_d}{\sqrt{1 - \left(\frac{d_{orifice}}{d_{pipe}}\right)^4}} & \text{if } d_{orifice} < d_{pipe} \\ C_d & \text{otherwise} \end{cases}}
95
+ *
96
+ * @subheading{Symbols}
97
+ * @symtable
98
+ * @symrow{C_{d,adj}; Adjusted discharge coefficient; \unitless}
99
+ * @symrow{C_d; Discharge coefficient; \unitless}
100
+ * @symrow{d_{orifice}; Orifice diameter; \inch}
101
+ * @symrow{d_{pipe}; Inside pipe diameter; \inch}
102
+ * @endsymtable
103
+ */
104
+
105
+ /**
106
+ * @defgroup flow_calculations_pressure_drop_formula Pressure Drop Term Formula
107
+ * @ingroup flow_calculations_energy_use_calculator
108
+ * @brief Normalized pressure drop term accounting for gas specific gravity.
109
+ * @details The pressure drop term represents the driving force for flow through the orifice, normalized by the gas specific gravity. This accounts for the fact that lighter gases will flow faster for the same pressure drop.
110
+ *
111
+ * @formula{flow-calculations-pressure-drop; \Delta P_{norm} = \sqrt{\frac{\Delta P_{orifice}}{SG}}}
112
+ *
113
+ * @subheading{Symbols}
114
+ * @symtable
115
+ * @symrow{\Delta P_{norm}; Normalized pressure drop; \inchWaterColumn}
116
+ * @symrow{\Delta P_{orifice}; Orifice pressure drop; \inchWaterColumn}
117
+ * @symrow{SG; Gas specific gravity (relative to air); \unitless}
118
+ * @endsymtable
119
+ */
120
+
121
+ /**
122
+ * @defgroup flow_calculations_temperature_adjustment_formula Temperature Adjustment Formula
123
+ * @ingroup flow_calculations_energy_use_calculator
124
+ * @brief Temperature correction factor for flow to standard conditions.
125
+ * @details The temperature adjustment converts actual volumetric flow at operating temperature to standard conditions (60°F or 520°R). Gas volume is inversely proportional to the square root of absolute temperature.
126
+ *
127
+ * @formula{flow-calculations-convert-temperature; T_{gas} = T_{gas,F} + 459.67}
128
+ * @formula{flow-calculations-temperature-adj; f_T = \sqrt{\frac{T_{std}}{T_{gas}}}}
129
+ *
130
+ * @subheading{Symbols}
131
+ * @symtable
132
+ * @symrow{f_T; Temperature adjustment factor; \unitless}
133
+ * @symrow{T_{std}; Standard gas temperature (520) - see @ref physics::us::kStandardGasTemperatureR; \degreeRankine}
134
+ * @symrow{T_{gas}; Actual gas temperature in Rankine; \degreeRankine}
135
+ * @symrow{T_{gas,F}; Actual gas temperature in Fahrenheit; \degreeFahrenheit}
136
+ * @symrow{459.67; Fahrenheit to Rankine conversion factor - see @ref physics::conversions::fahrenheitToRankine; \degreeRankine}
137
+ * @endsymtable
138
+ */
139
+
140
+ /**
141
+ * @defgroup flow_calculations_pressure_adjustment_formula Pressure Adjustment Formula
142
+ * @ingroup flow_calculations_energy_use_calculator
143
+ * @brief Pressure correction factor for flow to standard conditions.
144
+ * @details The pressure adjustment converts actual volumetric flow at operating pressure (gauge) to standard atmospheric pressure. Gas volume is proportional to the square root of absolute pressure.
145
+ *
146
+ * @formula{flow-calculations-abs-gas-pressure; P_{gas,abs} = P_{gas,gauge} + P_{atm}}
147
+ * @formula{flow-calculations-pressure-adj; f_P = \sqrt{\frac{P_{gas,abs}}{P_{atm}}}}
148
+ *
149
+ * @subheading{Symbols}
150
+ * @symtable
151
+ * @symrow{f_P; Pressure adjustment factor; \unitless}
152
+ * @symrow{P_{gas,abs}; Absolute gas pressure; psia}
153
+ * @symrow{P_{gas,gauge}; Gauge gas pressure; psig}
154
+ * @symrow{P_{atm}; Atmospheric pressure (14.7) - see @ref physics::us::kAtmosphericPressurePsi; psia}
155
+ * @endsymtable
156
+ */
157
+
158
+ /**
159
+ * @defgroup flow_calculations_flow_rate_formula Flow Rate Formula
160
+ * @ingroup flow_calculations_energy_use_calculator
161
+ * @brief Volumetric flow rate at standard conditions.
162
+ * @details The flow rate is calculated by combining the orifice area, adjusted discharge coefficient, and all correction factors. This represents the gas flow rate at standard conditions (60°F, 1 atm).
163
+ *
164
+ * @formula{flow-calculations-flow-rate; \dot{V} = A \cdot C_{d,adj} \cdot \Delta P_{norm} \cdot f_T \cdot f_P}
165
+ *
166
+ * @subheading{Symbols}
167
+ * @symtable
168
+ * @symrow{\dot{V}; Volumetric flow rate; \scf\per\hour}
169
+ * @symrow{A; Orifice area; \squareInch}
170
+ * @symrow{C_{d,adj}; Adjusted discharge coefficient; \unitless}
171
+ * @symrow{\Delta P_{norm}; Normalized pressure drop; \inchWaterColumn}
172
+ * @symrow{f_T; Temperature adjustment factor; \unitless}
173
+ * @symrow{f_P; Pressure adjustment factor; \unitless}
174
+ * @endsymtable
175
+ */
176
+
177
+ /**
178
+ * @defgroup flow_calculations_heat_input_formula Heat Input Formula
179
+ * @ingroup flow_calculations_energy_use_calculator
180
+ * @brief Thermal energy input over operating period.
181
+ * @details The heat input is calculated by multiplying the volumetric flow rate by the heating value of the gas and the operating time. The result is converted from Btu to MMBtu. If the heating value is zero or negative, the heat input is zero.
182
+ *
183
+ * @formula{flow-calculations-heat-input; Q_{input} = \frac{\dot{V} \cdot HHV \cdot t_{op}}{CF_{MMBtu}}}
184
+ *
185
+ * @subheading{Symbols}
186
+ * @symtable
187
+ * @symrow{Q_{input}; Heat input over operating period; \MMBtu}
188
+ * @symrow{\dot{V}; Volumetric flow rate; \scf\per\hour}
189
+ * @symrow{HHV; Higher heating value of gas; \btu\per\scf}
190
+ * @symrow{t_{op}; Operating time; \hour}
191
+ * @symrow{CF_{MMBtu}; Conversion factor to convert from Btu to MMBtu (1,000,000 Btu/MMBtu) - see @ref physics::conversions::kMMBtuToBtu; \btu\per\MMBtu}
192
+ * @endsymtable
193
+ *
194
+ * @note If HHV ≤ 0, then @math{Q_{input}} = 0.
195
+ */
196
+
197
+ /**
198
+ * @defgroup flow_calculations_total_flow_formula Total Flow Formula
199
+ * @ingroup flow_calculations_energy_use_calculator
200
+ * @brief Total gas volume consumed over operating period.
201
+ * @details The total flow is calculated by multiplying the volumetric flow rate at standard conditions by the operating time. This represents the total volume of gas consumed during the operating period.
202
+ *
203
+ * @formula{flow-calculations-total-flow; V_{total} = \dot{V} \cdot t_{op}}
204
+ *
205
+ * @subheading{Symbols}
206
+ * @symtable
207
+ * @symrow{V_{total}; Total gas volume consumed; \scf}
208
+ * @symrow{\dot{V}; Volumetric flow rate; \scf\per\hour}
209
+ * @symrow{t_{op}; Operating time; \hour}
210
+ * @endsymtable
211
+ */
@@ -48,13 +48,8 @@
48
48
  /**
49
49
  * @defgroup o2_enrichment_excess_air_formula Excess Air Formula
50
50
  * @ingroup o2_enrichment_calculator
51
- * @brief Excess air calculated from oxygen concentration in flue gas.
52
- * @details The excess air is determined from the oxygen concentration in the flue gas using stoichiometric
53
- * relationships. This calculation uses the shared @ref process_heat::calculateExcessAir function from the
54
- * @ref process_heat namespace, which provides a consistent implementation across all process heat calculators.
55
51
  *
56
- * The formula uses empirical factors derived from combustion stoichiometry for typical fuels to account for
57
- * the fact that excess oxygen in flue gas indicates incomplete combustion air utilization.
52
+ * @copydoc process_heat_excess_air_formula_doc
58
53
  *
59
54
  * @par Implementation
60
55
  * See @ref process_heat_excess_air_formula for the complete formula, symbol definitions, and implementation details.
@@ -26,6 +26,15 @@
26
26
  * - O2 enrichment analysis (@ref o2_enrichment_calculator)
27
27
  * - Solid/liquid flue gas material calculations (@ref solid_liquid_flue_gas_material_calculator)
28
28
  *
29
+ * @copydoc process_heat_excess_air_formula_doc
30
+ *
31
+ * @note Input oxygen should be provided as a fraction (not percentage). For example, 3% O2 should be passed as 0.03.
32
+ */
33
+
34
+
35
+ /**
36
+ * @defgroup process_heat_excess_air_formula_doc
37
+ *
29
38
  * The formula provides a quick estimate of excess air based on measured flue gas oxygen content. For more
30
39
  * complex fuel compositions, iterative refinement may be applied (as in
31
40
  * @ref solid_liquid_flue_gas_material::calculateExcessAirFromFlueGasO2).
@@ -40,11 +49,4 @@
40
49
  * @symrow{k_2; Oxygen flue gas factor (9.52381); \unitless}
41
50
  * @endsymtable
42
51
  *
43
- * @subheading{Implementation}
44
- * The function is implemented in the @ref process_heat namespace:
45
- * @code{.cpp}
46
- * double excess_air = process_heat::calculateExcessAir(o2_flue_gas_fraction);
47
- * @endcode
48
- *
49
- * @note Input oxygen should be provided as a fraction (not percentage). For example, 3% O2 should be passed as 0.03.
50
- */
52
+ */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "measur-tools-suite",
3
- "version": "1.0.14-beta.275",
3
+ "version": "1.0.14-beta.284",
4
4
  "engines": {
5
5
  "node": "20.19.4",
6
6
  "npm": "10.8.2"