measur-tools-suite 1.0.14-beta.268 → 1.0.14-beta.275
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 +0 -0
- package/bin/package.json +1 -1
- package/docs/dox-content/calculators/processHeat/losses/solid_liquid_flue_gas_calculator.dox +13 -2
- package/docs/dox-content/calculators/processHeat/o2_enrichment_calculator.dox +206 -0
- package/docs/dox-content/calculators/processHeat/process_heat_calculator.dox +50 -0
- package/package.json +1 -1
package/bin/client.wasm
CHANGED
|
Binary file
|
package/bin/package.json
CHANGED
package/docs/dox-content/calculators/processHeat/losses/solid_liquid_flue_gas_calculator.dox
CHANGED
|
@@ -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
|
-
*
|
|
277
|
-
*
|
|
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
|
+
*/
|