72 std::string substance;
84 double total_composition_weight;
86 double heating_value_volume;
87 double specific_gravity;
88 double stoichometric_air;
89 GasComposition(
const std::string substance,
double ch4_percent,
double c2h6_percent,
double n2_percent,
90 double h2_percent,
double c3h8_percent,
double c4h10_cnh2n_percent,
double h2o_percent,
91 double co_percent,
double co2_percent,
double so2_percent,
double o2_percent)
92 : substance(substance), ch4(specificHeatCH4, 0, 0, 0, 0, 0, 0, 0, 0, 0),
93 c2h6(specificHeatC2H6, 0, 0, 0, 0, 0, 0, 0, 0, 0), n2(specificHeatN2, 0, 0, 0, 0, 0, 0, 0, 0, 0),
94 h2(specificHeatH2, 0, 0, 0, 0, 0, 0, 0, 0, 0), c3h8(specificHeatC3H8, 0, 0, 0, 0, 0, 0, 0, 0, 0),
95 c4h10_cnh2n(specificHeatC4H10CnH2n, 0, 0, 0, 0, 0, 0, 0, 0, 0),
96 h2o(specificHeatH2O, 0, 0, 0, 0, 0, 0, 0, 0, 0), co(specificHeatCO, 0, 0, 0, 0, 0, 0, 0, 0, 0),
97 co2(specificHeatCO2, 0, 0, 0, 0, 0, 0, 0, 0, 0), so2(specificHeatSO2, 0, 0, 0, 0, 0, 0, 0, 0, 0),
98 o2(specificHeatO2, 0, 0, 0, 0, 0, 0, 0, 0, 0) {
99 double total_percent = ch4_percent + c2h6_percent + n2_percent + h2_percent + c3h8_percent +
100 c4h10_cnh2n_percent + h2o_percent + co_percent + co2_percent + so2_percent + o2_percent;
101 setCH4(ch4_percent, ch4_percent / total_percent);
102 setC2H6(c2h6_percent, c2h6_percent / total_percent);
103 setN2(n2_percent, n2_percent / total_percent);
104 setH2(h2_percent, h2_percent / total_percent);
105 setC3H8(c3h8_percent, c3h8_percent / total_percent);
106 setC4H10CnH2n(c4h10_cnh2n_percent, c4h10_cnh2n_percent / total_percent);
107 setH2O(h2o_percent, h2o_percent / total_percent);
108 setCO(co_percent, co_percent / total_percent);
109 setCO2(co2_percent, co2_percent / total_percent);
110 setSO2(so2_percent, so2_percent / total_percent);
111 setO2(o2_percent, o2_percent / total_percent);
112 setTotalCompositionWeight();
114 setHeatingValueVolume();
115 setSpecificGravity();
116 setStoichometricAir();
164 std::array<GasProperties*, 11> getConstituents() {
165 return {&ch4, &c2h6, &n2, &h2, &c3h8, &c4h10_cnh2n, &h2o, &co, &co2, &so2, &o2};
179 void setCH4(
double composition_percent,
double composition_by_volume) {
180 ch4 =
GasProperties(specificHeatCH4, kCh4MolecularWeight, kCh4SpecificWeight, composition_percent,
181 composition_by_volume, kCh4O2Generated, kCh4HeatingValue, kCh4HeatingValueVolume,
182 kCh4H2oGenerated, kCh4Co2Generated);
185 void setC2H6(
double composition_percent,
double composition_by_volume) {
186 c2h6 =
GasProperties(specificHeatC2H6, kC2h6MolecularWeight, kC2h6SpecificWeight, composition_percent,
187 composition_by_volume, kC2h6O2Generated, kC2h6HeatingValue, kC2h6HeatingValueVolume,
188 kC2h6H2oGenerated, kC2h6Co2Generated);
191 void setN2(
double composition_percent,
double composition_by_volume) {
192 n2 =
GasProperties(specificHeatN2, kN2MolecularWeight, kN2SpecificWeight, composition_percent,
193 composition_by_volume, 0, 0, 0, 0, 0);
196 void setH2(
double composition_percent,
double composition_by_volume) {
197 h2 =
GasProperties(specificHeatH2, kH2MolecularWeight, kH2SpecificWeight, composition_percent,
198 composition_by_volume, kH2O2Generated, kH2HeatingValue, kH2HeatingValueVolume,
202 void setC3H8(
double composition_percent,
double composition_by_volume) {
203 c3h8 =
GasProperties(specificHeatC3H8, kC3h8MolecularWeight, kC3h8SpecificWeight, composition_percent,
204 composition_by_volume, kC3h8O2Generated, kC3h8HeatingValue, kC3h8HeatingValueVolume,
205 kC3h8H2oGenerated, kC3h8Co2Generated);
208 void setC4H10CnH2n(
double composition_percent,
double composition_by_volume) {
209 c4h10_cnh2n =
GasProperties(specificHeatC4H10CnH2n, kC4h10Cnh2nMolecularWeight, kC4h10Cnh2nSpecificWeight,
210 composition_percent, composition_by_volume, kC4h10Cnh2nO2Generated,
211 kC4h10Cnh2nHeatingValue, kC4h10Cnh2nHeatingValueVolume,
212 kC4h10Cnh2nH2oGenerated, kC4h10Cnh2nCo2Generated);
215 void setH2O(
double composition_percent,
double composition_by_volume) {
216 h2o =
GasProperties(specificHeatH2O, kH2oMolecularWeight, kH2oSpecificWeight, composition_percent,
217 composition_by_volume, 0, 0, 0, kH2oH2oGenerated, 0);
220 void setCO(
double composition_percent,
double composition_by_volume) {
221 co =
GasProperties(specificHeatCO, kCoMolecularWeight, kCoSpecificWeight, composition_percent,
222 composition_by_volume, kCoO2Generated, kCoHeatingValue, kCoHeatingValueVolume, 0,
226 void setCO2(
double composition_percent,
double composition_by_volume) {
227 co2 =
GasProperties(specificHeatCO2, kCo2MolecularWeight, kCo2SpecificWeight, composition_percent,
228 composition_by_volume, 0, 0, 0, 0, kCo2Co2Generated);
231 void setSO2(
double composition_percent,
double composition_by_volume) {
232 so2 =
GasProperties(specificHeatSO2, kSo2MolecularWeight, kSo2SpecificWeight, composition_percent,
233 composition_by_volume, 0, 0, 0, 0, 0);
236 void setO2(
double composition_percent,
double composition_by_volume) {
237 o2 =
GasProperties(specificHeatO2, kO2MolecularWeight, kO2SpecificWeight, composition_percent,
238 composition_by_volume, kO2O2Generated, 0, 0, 0, 0);
241 void setTotalCompositionWeight();
242 void setHeatingValue();
243 void setHeatingValueVolume();
244 void setSpecificGravity();
245 void setStoichometricAir();
246 GasFlueGasComponents getMassFlueGasComponents(
double excess_air);