MEASUR-Tools-Suite v1.0.11
The MEASUR Tools Suite is a collection of industrial efficiency calculations written in C++ and with bindings for compilation to WebAssembly.
Loading...
Searching...
No Matches
liquid_load_charge_material.h
Go to the documentation of this file.
1
13#ifndef TOOLS_SUITE_LIQUIDLOADCHARGEMATERIAL_H
14#define TOOLS_SUITE_LIQUIDLOADCHARGEMATERIAL_H
15
16#include <string>
17
18#include "load_charge_material.h"
19
27
28 public:
47 const double specificHeatLiquid, const double vaporizingTemperature,
48 const double latentHeat, const double specificHeatVapor, const double chargeFeedRate,
49 const double initialTemperature, const double dischargeTemperature,
50 const double percentVaporized, const double percentReacted, const double reactionHeat,
51 const double additionalHeat)
52 : thermicReactionType(thermicReactionType), specificHeatLiquid(specificHeatLiquid),
53 vaporizingTemperature(vaporizingTemperature), latentHeat(latentHeat), specificHeatVapor(specificHeatVapor),
54 chargeFeedRate(chargeFeedRate), initialTemperature(initialTemperature),
55 dischargeTemperature(dischargeTemperature), percentVaporized(percentVaporized / 100.0),
56 percentReacted(percentReacted / 100.0), reactionHeat(reactionHeat), additionalHeat(additionalHeat) {}
57
58 LiquidLoadChargeMaterial() = default;
59
65
71 this->thermicReactionType = thermicReactionType;
72 }
73
78 double getSpecificHeatLiquid() const { return specificHeatLiquid; }
79
84 void setSpecificHeatLiquid(const double specificHeatLiquid) { this->specificHeatLiquid = specificHeatLiquid; }
85
90 double getVaporizingTemperature() const { return vaporizingTemperature; }
91
96 void setVaporizingTemperature(const double vaporizingTemperature) {
97 this->vaporizingTemperature = vaporizingTemperature;
98 }
99
104 double getLatentHeat() const { return latentHeat; }
105
110 void setLatentHeat(const double latentHeat) { this->latentHeat = latentHeat; }
111
116 double getSpecificHeatVapor() const { return specificHeatVapor; }
117
122 void setSpecificHeatVapor(const double specificHeatVapor) { this->specificHeatVapor = specificHeatVapor; }
123
128 double getChargeFeedRate() const { return chargeFeedRate; }
129
134 void setChargeFeedRate(const double chargeFeedRate) { this->chargeFeedRate = chargeFeedRate; }
135
140 double getInitialTemperature() const { return initialTemperature; }
141
146 void setInitialTemperature(const double initialTemperature) { this->initialTemperature = initialTemperature; }
147
152 double getDischargeTemperature() const { return dischargeTemperature; }
153
158 void setDischargeTemperature(const double dischargeTemperature) {
159 this->dischargeTemperature = dischargeTemperature;
160 }
161
166 double getPercentVaporized() const { return percentVaporized * 100.0; }
167
172 void setPercentVaporized(const double percentVaporized) { this->percentVaporized = percentVaporized / 100.0; }
173
178 double getPercentReacted() const { return percentReacted * 100.0; }
179
184 void setPercentReacted(const double percentReacted) { this->percentReacted = percentReacted / 100.0; }
185
190 double getReactionHeat() const { return reactionHeat; }
191
196 void setReactionHeat(const double reactionHeat) { this->reactionHeat = reactionHeat; }
197
202 double getAdditionalHeat() const { return additionalHeat; }
203
208 void setAdditionalHeat(const double additionalHeat) { this->additionalHeat = additionalHeat; }
209
214 std::string getSubstance() const { return substance; }
215
220 void setSubstance(std::string const& substance) { this->substance = substance; }
221
226 int getID() const { return id; }
227
232 void setID(int const id) { this->id = id; }
233
240 double getTotalHeat() {
241 double hliq;
242 if (dischargeTemperature < vaporizingTemperature) {
243 // H_liq=m_li×C_pl×(t_lo-t_li )
244 hliq = chargeFeedRate * specificHeatLiquid * (dischargeTemperature - initialTemperature);
245 }
246 else {
247 // H_liq=m_li×C_pl×(t_lv-t_li )+%lv×m_lt×[h_lv+C_pv (t_lo-T_lv )]+(1-%lv)×C_pl (t_lo-t_lv)
248 hliq =
249 chargeFeedRate *
250 (specificHeatLiquid * (vaporizingTemperature - initialTemperature) +
251 percentVaporized * (latentHeat + specificHeatVapor * (dischargeTemperature - vaporizingTemperature)) +
252 (1 - percentVaporized) * specificHeatLiquid * (dischargeTemperature - vaporizingTemperature));
253 }
254
255 double heatReacted = 0.0;
256 if (thermicReactionType == LoadChargeMaterial::ThermicReactionType::ENDOTHERMIC) {
257 heatReacted = chargeFeedRate * percentReacted * reactionHeat;
258 }
259 totalHeat = hliq + heatReacted + additionalHeat;
260 return totalHeat;
261 }
262
266 bool operator==(const LiquidLoadChargeMaterial& rhs) const {
267 return specificHeatLiquid == rhs.specificHeatLiquid && latentHeat == rhs.latentHeat &&
268 specificHeatVapor == rhs.specificHeatVapor && vaporizingTemperature == rhs.vaporizingTemperature &&
269 substance == rhs.substance && id == rhs.id;
270 }
271
276 bool operator!=(const LiquidLoadChargeMaterial& rhs) const { return !(*this == rhs); }
277
278 private:
279 // In values
280 LoadChargeMaterial::ThermicReactionType thermicReactionType = LoadChargeMaterial::ThermicReactionType::NONE;
281 double specificHeatLiquid = 0.0;
282 double vaporizingTemperature = 0.0;
283 double latentHeat = 0.0;
284 double specificHeatVapor = 0.0;
285 double chargeFeedRate = 0.0;
286 double initialTemperature = 0.0;
287 double dischargeTemperature = 0.0;
288 double percentVaporized = 0.0;
289 double percentReacted = 0.0;
290 double reactionHeat = 0.0;
291 double additionalHeat = 0.0;
292 std::string substance = "Unknown";
293 int id = 0;
294 // Out value
295 double totalHeat = 0.0;
296
297 friend class DefaultData;
298
306 LiquidLoadChargeMaterial(std::string substance, double specificHeatLiquid, double latentHeat,
307 double specificHeatVapor, double vaporizingTemperature)
308 : specificHeatLiquid(specificHeatLiquid), vaporizingTemperature(vaporizingTemperature), latentHeat(latentHeat),
309 specificHeatVapor(specificHeatVapor), substance(std::move(substance)) {}
310};
311#endif // TOOLS_SUITE_LIQUIDLOADCHARGEMATERIAL_H
void setLatentHeat(const double latentHeat)
void setDischargeTemperature(const double dischargeTemperature)
LoadChargeMaterial::ThermicReactionType getThermicReactionType() const
void setSpecificHeatLiquid(const double specificHeatLiquid)
void setChargeFeedRate(const double chargeFeedRate)
void setThermicReactionType(LoadChargeMaterial::ThermicReactionType thermicReactionType)
void setVaporizingTemperature(const double vaporizingTemperature)
void setAdditionalHeat(const double additionalHeat)
LiquidLoadChargeMaterial(std::string substance, double specificHeatLiquid, double latentHeat, double specificHeatVapor, double vaporizingTemperature)
void setReactionHeat(const double reactionHeat)
void setSubstance(std::string const &substance)
void setPercentReacted(const double percentReacted)
bool operator!=(const LiquidLoadChargeMaterial &rhs) const
void setPercentVaporized(const double percentVaporized)
LiquidLoadChargeMaterial(const LoadChargeMaterial::ThermicReactionType thermicReactionType, const double specificHeatLiquid, const double vaporizingTemperature, const double latentHeat, const double specificHeatVapor, const double chargeFeedRate, const double initialTemperature, const double dischargeTemperature, const double percentVaporized, const double percentReacted, const double reactionHeat, const double additionalHeat)
void setInitialTemperature(const double initialTemperature)
bool operator==(const LiquidLoadChargeMaterial &rhs) const
void setSpecificHeatVapor(const double specificHeatVapor)
ThermicReactionType
Classifications of thermic reaction type.