measur-tools-suite 1.0.14-beta.268 → 1.0.14-beta.283

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.268",
3
+ "version": "1.0.14-beta.283",
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
+ */
@@ -272,15 +272,26 @@
272
272
  * estimates the fraction of excess air supplied to the combustion process. The calculation uses stoichiometric
273
273
  * relationships and mass balance.
274
274
  *
275
+ * The implementation uses the shared @ref process_heat::calculateExcessAir function from the @ref process_heat
276
+ * namespace as the initial estimate, then iteratively refines it based on the fuel composition and measured
277
+ * flue gas properties.
278
+ *
275
279
  * @subheading{Iterative Procedure}
276
- * The excess air is estimated by iterating on the relationship between O2 content and excess air until convergence.
277
- * See the source code implementation for the detailed iterative algorithm.
280
+ * 1. **Initial Estimate**: Uses @ref process_heat::calculateExcessAir to get a starting excess air value based
281
+ * on measured flue gas O2. See @ref process_heat_excess_air_formula for the formula.
282
+ * 2. **Iterative Refinement**: Calculates expected O2 using @ref solid_liquid_flue_gas_material::calculateFlueGasO2
283
+ * and adjusts excess air until convergence (error < 2%).
284
+ * 3. **Convergence**: Iteration continues until the calculated O2 matches the measured O2 within tolerance.
285
+ *
278
286
  *
279
287
  * @par Symbols
280
288
  * @symtable
281
289
  * @symrow{EA; Excess air fraction; \unitless}
282
290
  * @symrow{O_2; Measured flue gas oxygen percentage; \percent}
283
291
  * @endsymtable
292
+ *
293
+ * @see process_heat::calculateExcessAir for the initial excess air estimate formula
294
+ * @see solid_liquid_flue_gas_material::calculateFlueGasO2 for O2 calculation during iteration
284
295
  */
285
296
 
286
297
  /**
@@ -0,0 +1,206 @@
1
+ /**
2
+ * @defgroup o2_enrichment_calculator O2 Enrichment Calculator
3
+ * @ingroup process_heat_calculators
4
+ * @brief Calculates fuel consumption and savings from oxygen enrichment in fuel-fired furnaces.
5
+ * @details This calculator estimates the benefit of enriching combustion air with oxygen to improve combustion efficiency and reduce fuel consumption. The calculation uses combustion air properties, flue gas temperatures, oxygen concentrations, and fuel consumption data. The method is based on standard industrial practice for oxygen enrichment in process heating systems.
6
+ *
7
+ * The calculation follows a top-down approach:
8
+ * 1. **Excess Air** - Calculate excess air from oxygen concentration in flue gas
9
+ * 2. **Heat Input** - Determine heat input based on flue gas temperature
10
+ * 3. **Air Specific Heat** - Calculate specific heat of combustion air based on preheat temperature
11
+ * 4. **Air Correction** - Compute correction factor for excess air heat losses
12
+ * 5. **Combustion Air Correction** - Calculate correction factor for combustion air preheat
13
+ * 6. **Standard Available Heat** - Determine standard available heat from heat input and corrections
14
+ * 7. **Available Heat** - Calculate available heat accounting for oxygen enrichment effects
15
+ * 8. **Fuel Consumption with O2 Enrichment** - Compute fuel consumption with oxygen enrichment
16
+ * 9. **Fuel Savings with O2 Enrichment** - Determine fuel savings as a percentage
17
+ *
18
+ * Relevant formulas and symbol definitions are documented below.
19
+ *
20
+ * @heading{Excess Air}
21
+ * @copydoc o2_enrichment_excess_air_formula
22
+ *
23
+ * @heading{Heat Input}
24
+ * @copydoc o2_enrichment_heat_input_formula
25
+ *
26
+ * @heading{Air Specific Heat}
27
+ * @copydoc o2_enrichment_air_specific_heat_formula
28
+ *
29
+ * @heading{Air Correction}
30
+ * @copydoc o2_enrichment_air_correction_formula
31
+ *
32
+ * @heading{Combustion Air Correction}
33
+ * @copydoc o2_enrichment_combustion_air_correction_formula
34
+ *
35
+ * @heading{Standard Available Heat}
36
+ * @copydoc o2_enrichment_standard_available_heat_formula
37
+ *
38
+ * @heading{Available Heat}
39
+ * @copydoc o2_enrichment_available_heat_formula
40
+ *
41
+ * @heading{Fuel Consumption with O2 Enrichment}
42
+ * @copydoc o2_enrichment_fuel_consumption_formula
43
+ *
44
+ * @heading{Fuel Savings with O2 Enrichment}
45
+ * @copydoc o2_enrichment_fuel_savings_formula
46
+ */
47
+
48
+ /**
49
+ * @defgroup o2_enrichment_excess_air_formula Excess Air Formula
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
+ *
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.
58
+ *
59
+ * @par Implementation
60
+ * See @ref process_heat_excess_air_formula for the complete formula, symbol definitions, and implementation details.
61
+ *
62
+ */
63
+
64
+ /**
65
+ * @defgroup o2_enrichment_heat_input_formula Heat Input Formula
66
+ * @ingroup o2_enrichment_calculator
67
+ * @brief Heat input calculated based on flue gas temperature.
68
+ * @details The heat input is estimated from the flue gas temperature using an empirical linear relationship. Higher flue gas temperatures indicate greater heat losses, resulting in lower available heat for the process. The relationship is based on typical industrial furnace operating conditions.
69
+ *
70
+ * @formula{o2-enrichment-heat-input; Q_{in} = 95 - 0.025 \cdot T_{flue}}
71
+ *
72
+ * @subheading{Symbols}
73
+ * @symtable
74
+ * @symrow{Q_{in}; Heat input; \percent}
75
+ * @symrow{T_{flue}; Flue gas temperature; \degreeFahrenheit}
76
+ * @symrow{95; Heat input intercept constant; \percent}
77
+ * @symrow{0.025; Heat input slope constant; \percent\per\degreeFahrenheit}
78
+ * @endsymtable
79
+ */
80
+
81
+ /**
82
+ * @defgroup o2_enrichment_air_specific_heat_formula Air Specific Heat Formula
83
+ * @ingroup o2_enrichment_calculator
84
+ * @brief Specific heat of combustion air calculated based on preheat temperature.
85
+ * @details The specific heat of air varies with temperature according to an empirical linear relationship. This accounts for the temperature-dependent thermodynamic properties of air. The base specific heat and temperature coefficient are referenced from @ref physics::us::kSpecificHeatAirBase and @ref physics::us::kSpecificHeatAirCoeff.
86
+ *
87
+ * @formula{o2-enrichment-air-specific-heat; C_{p,air} = C_{p,base} + k_{temp} \cdot T_{air}}
88
+ *
89
+ * @subheading{Symbols}
90
+ * @symtable
91
+ * @symrow{C_{p,air}; Air specific heat; \btu\per\pound\per\degreeFahrenheit}
92
+ * @symrow{C_{p,base}; Base specific heat of air (0.017828518) - see @ref physics::us::kSpecificHeatAirBase; \btu\per\pound\per\degreeFahrenheit}
93
+ * @symrow{k_{temp}; Temperature coefficient (0.000002556) - see @ref physics::us::kSpecificHeatAirCoeff; \btu\per\pound\per\degreeFahrenheit\per\degreeFahrenheit}
94
+ * @symrow{T_{air}; Combustion air preheat temperature; \degreeFahrenheit}
95
+ * @endsymtable
96
+ */
97
+
98
+ /**
99
+ * @defgroup o2_enrichment_air_correction_formula Air Correction Formula
100
+ * @ingroup o2_enrichment_calculator
101
+ * @brief Correction factor for excess air heat losses.
102
+ * @details The air correction accounts for heat losses due to excess air being heated and discharged with the flue gas. The correction is proportional to the excess air fraction, flue gas temperature, and air specific heat. The base constant is referenced from @ref physics::us::kAirCorrectionBase.
103
+ *
104
+ * @formula{o2-enrichment-air-correction; AC = -(k_{base} + C_{p,air} \cdot T_{flue}) \cdot EA}
105
+ *
106
+ * @subheading{Symbols}
107
+ * @symtable
108
+ * @symrow{AC; Air correction; \percent}
109
+ * @symrow{k_{base}; Air correction base constant (-1.078913827) - see @ref physics::us::kAirCorrectionBase; \btu\per\pound}
110
+ * @symrow{C_{p,air}; Air specific heat; \btu\per\pound\per\degreeFahrenheit}
111
+ * @symrow{T_{flue}; Flue gas temperature; \degreeFahrenheit}
112
+ * @symrow{EA; Excess air; \unitless}
113
+ * @endsymtable
114
+ */
115
+
116
+ /**
117
+ * @defgroup o2_enrichment_combustion_air_correction_formula Combustion Air Correction Formula
118
+ * @ingroup o2_enrichment_calculator
119
+ * @brief Correction factor for combustion air preheat.
120
+ * @details The combustion air correction accounts for the heat credit from preheating combustion air. Higher preheat temperatures reduce fuel consumption by providing sensible heat to the combustion process. The correction is applied to both stoichiometric and excess air. The base constant is the same as the air correction base.
121
+ *
122
+ * @formula{o2-enrichment-combustion-air-correction; CAC = (k_{base} + C_{p,air} \cdot T_{air}) \cdot (1 + EA)}
123
+ *
124
+ * @subheading{Symbols}
125
+ * @symtable
126
+ * @symrow{CAC; Combustion air correction; \percent}
127
+ * @symrow{k_{base}; Combustion air correction base constant (-1.078913827); \btu\per\pound}
128
+ * @symrow{C_{p,air}; Air specific heat; \btu\per\pound\per\degreeFahrenheit}
129
+ * @symrow{T_{air}; Combustion air preheat temperature; \degreeFahrenheit}
130
+ * @symrow{EA; Excess air; \unitless}
131
+ * @endsymtable
132
+ */
133
+
134
+ /**
135
+ * @defgroup o2_enrichment_standard_available_heat_formula Standard Available Heat Formula
136
+ * @ingroup o2_enrichment_calculator
137
+ * @brief Standard available heat from heat input and correction factors.
138
+ * @details The standard available heat represents the net heat available for the process after accounting for flue gas losses and combustion air preheat. It is the sum of the heat input, air correction (negative for losses), and combustion air correction (positive for preheat credit).
139
+ *
140
+ * @formula{o2-enrichment-standard-available-heat; AH_{std} = Q_{in} + AC + CAC}
141
+ *
142
+ * @subheading{Symbols}
143
+ * @symtable
144
+ * @symrow{AH_{std}; Standard available heat; \percent}
145
+ * @symrow{Q_{in}; Heat input; \percent}
146
+ * @symrow{AC; Air correction; \percent}
147
+ * @symrow{CAC; Combustion air correction; \percent}
148
+ * @endsymtable
149
+ */
150
+
151
+ /**
152
+ * @defgroup o2_enrichment_available_heat_formula Available Heat Formula
153
+ * @ingroup o2_enrichment_calculator
154
+ * @brief Available heat accounting for oxygen enrichment effects.
155
+ * @details The available heat is adjusted from the standard available heat to account for the benefits of oxygen enrichment. Enriching the combustion air with oxygen reduces the nitrogen content, which decreases sensible heat losses in the flue gas. The correction is proportional to the oxygen enrichment level, flue gas temperature, and the difference from ambient conditions.
156
+ *
157
+ * @formula{o2-enrichment-available-heat; AH = AH_{std} + 100 \cdot k_O \cdot \frac{O_{2,air} - 0.21}{O_{2,air}} \cdot 0.02 \cdot \frac{T_{flue} - 60}{980}}
158
+ *
159
+ * @subheading{Symbols}
160
+ * @symtable
161
+ * @symrow{AH; Available heat with enrichment; \percent}
162
+ * @symrow{AH_{std}; Standard available heat; \percent}
163
+ * @symrow{k_O; Oxygen enrichment factor (9.38); \unitless}
164
+ * @symrow{O_{2,air}; Oxygen in combustion air; \unitless}
165
+ * @symrow{0.21; Reference oxygen fraction in air; \unitless}
166
+ * @symrow{0.02; Available heat fraction factor; \unitless}
167
+ * @symrow{T_{flue}; Flue gas temperature; \degreeFahrenheit}
168
+ * @symrow{60; Ambient reference temperature; \degreeFahrenheit}
169
+ * @symrow{980; Available heat temperature divisor; \degreeFahrenheit}
170
+ * @symrow{100; Conversion factor to percentage; \unitless}
171
+ * @endsymtable
172
+ */
173
+
174
+ /**
175
+ * @defgroup o2_enrichment_fuel_consumption_formula Fuel Consumption with O2 Enrichment Formula
176
+ * @ingroup o2_enrichment_calculator
177
+ * @brief Fuel consumption with oxygen enrichment.
178
+ * @details The fuel consumption with oxygen enrichment is calculated by adjusting the baseline fuel consumption based on the ratio of standard available heat to the available heat with enrichment. As the available heat increases with enrichment, less fuel is required to deliver the same process heat.
179
+ *
180
+ * @formula{o2-enrichment-fuel-consumption; FC_{enriched} = FC_{base} \cdot \frac{AH_{std}}{AH_{enriched}}}
181
+ *
182
+ * @subheading{Symbols}
183
+ * @symtable
184
+ * @symrow{FC_{enriched}; Fuel consumption with O2 enrichment; \mega\btu\per\hour}
185
+ * @symrow{FC_{base}; Baseline fuel consumption; \mega\btu\per\hour}
186
+ * @symrow{AH_{std}; Standard available heat (baseline); \percent}
187
+ * @symrow{AH_{enriched}; Available heat with O2 enrichment; \percent}
188
+ * @endsymtable
189
+ */
190
+
191
+ /**
192
+ * @defgroup o2_enrichment_fuel_savings_formula Fuel Savings with O2 Enrichment Formula
193
+ * @ingroup o2_enrichment_calculator
194
+ * @brief Fuel savings with oxygen enrichment as a percentage.
195
+ * @details The fuel savings represents the percentage reduction in fuel consumption achieved through oxygen enrichment. It is calculated as the difference between baseline and enriched fuel consumption divided by the baseline, expressed as a percentage.
196
+ *
197
+ * @formula{o2-enrichment-fuel-savings; FS = \frac{FC_{base} - FC_{enriched}}{FC_{base}} \cdot 100}
198
+ *
199
+ * @subheading{Symbols}
200
+ * @symtable
201
+ * @symrow{FS; Fuel savings with O2 enrichment; \percent}
202
+ * @symrow{FC_{base}; Baseline fuel consumption; \mega\btu\per\hour}
203
+ * @symrow{FC_{enriched}; Fuel consumption with O2 enrichment; \mega\btu\per\hour}
204
+ * @symrow{100; Conversion factor to percentage; \unitless}
205
+ * @endsymtable
206
+ */
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @defgroup process_heat Process Heat Utilities
3
+ * @ingroup process_heat_calculators
4
+ * @brief Common utility functions for process heating calculations.
5
+ * @details This module provides reusable functions and helpers for process heating calculations, such as excess air,
6
+ * available heat, and other shared logic. These functions are used across multiple process heat calculators to
7
+ * ensure consistent calculations and reduce code duplication.
8
+ *
9
+ * @heading{Excess Air Calculation}
10
+ * @copydoc process_heat_excess_air_formula
11
+ *
12
+ * @see o2_enrichment_calculator
13
+ * @see solid_liquid_flue_gas_material_calculator
14
+ */
15
+
16
+ /**
17
+ * @defgroup process_heat_excess_air_formula Excess Air from Flue Gas O2
18
+ * @ingroup process_heat
19
+ * @brief Calculate excess air from oxygen concentration in flue gas.
20
+ * @details The excess air is determined from the oxygen concentration in the flue gas using stoichiometric
21
+ * relationships. The calculation accounts for the fact that excess oxygen in flue gas indicates incomplete
22
+ * combustion air utilization. The formula uses empirical factors derived from combustion stoichiometry for
23
+ * typical fuels.
24
+ *
25
+ * This calculation is a fundamental component used throughout process heat calculations, including:
26
+ * - O2 enrichment analysis (@ref o2_enrichment_calculator)
27
+ * - Solid/liquid flue gas material calculations (@ref solid_liquid_flue_gas_material_calculator)
28
+ *
29
+ * The formula provides a quick estimate of excess air based on measured flue gas oxygen content. For more
30
+ * complex fuel compositions, iterative refinement may be applied (as in
31
+ * @ref solid_liquid_flue_gas_material::calculateExcessAirFromFlueGasO2).
32
+ *
33
+ * @formula{process-heat-excess-air; EA = \frac{k_1 \cdot O_{2,flue}}{2 - k_2 \cdot O_{2,flue}}}
34
+ *
35
+ * @subheading{Symbols}
36
+ * @symtable
37
+ * @symrow{EA; Excess air; \unitless}
38
+ * @symrow{O_{2,flue}; Oxygen in flue gas; \unitless}
39
+ * @symrow{k_1; Stoichiometric air factor (8.52381); \unitless}
40
+ * @symrow{k_2; Oxygen flue gas factor (9.52381); \unitless}
41
+ * @endsymtable
42
+ *
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
+ */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "measur-tools-suite",
3
- "version": "1.0.14-beta.268",
3
+ "version": "1.0.14-beta.283",
4
4
  "engines": {
5
5
  "node": "20.19.4",
6
6
  "npm": "10.8.2"