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#pragma once
2
15#include <string>
16
17#include "load_charge_material.h"
18
26
27 public:
46 const double specificHeatLiquid, const double vaporizingTemperature,
47 const double latentHeat, const double specificHeatVapor, const double chargeFeedRate,
48 const double initialTemperature, const double dischargeTemperature,
49 const double percentVaporized, const double percentReacted, const double reactionHeat,
50 const double additionalHeat)
51 : thermicReactionType(thermicReactionType), specificHeatLiquid(specificHeatLiquid),
52 vaporizingTemperature(vaporizingTemperature), latentHeat(latentHeat), specificHeatVapor(specificHeatVapor),
53 chargeFeedRate(chargeFeedRate), initialTemperature(initialTemperature),
54 dischargeTemperature(dischargeTemperature), percentVaporized(percentVaporized / 100.0),
55 percentReacted(percentReacted / 100.0), reactionHeat(reactionHeat), additionalHeat(additionalHeat) {}
56
57 LiquidLoadChargeMaterial() = default;
58
64
70 this->thermicReactionType = thermicReactionType;
71 }
72
77 double getSpecificHeatLiquid() const { return specificHeatLiquid; }
78
83 void setSpecificHeatLiquid(const double specificHeatLiquid) { this->specificHeatLiquid = specificHeatLiquid; }
84
89 double getVaporizingTemperature() const { return vaporizingTemperature; }
90
95 void setVaporizingTemperature(const double vaporizingTemperature) {
96 this->vaporizingTemperature = vaporizingTemperature;
97 }
98
103 double getLatentHeat() const { return latentHeat; }
104
109 void setLatentHeat(const double latentHeat) { this->latentHeat = latentHeat; }
110
115 double getSpecificHeatVapor() const { return specificHeatVapor; }
116
121 void setSpecificHeatVapor(const double specificHeatVapor) { this->specificHeatVapor = specificHeatVapor; }
122
127 double getChargeFeedRate() const { return chargeFeedRate; }
128
133 void setChargeFeedRate(const double chargeFeedRate) { this->chargeFeedRate = chargeFeedRate; }
134
139 double getInitialTemperature() const { return initialTemperature; }
140
145 void setInitialTemperature(const double initialTemperature) { this->initialTemperature = initialTemperature; }
146
151 double getDischargeTemperature() const { return dischargeTemperature; }
152
157 void setDischargeTemperature(const double dischargeTemperature) {
158 this->dischargeTemperature = dischargeTemperature;
159 }
160
165 double getPercentVaporized() const { return percentVaporized * 100.0; }
166
171 void setPercentVaporized(const double percentVaporized) { this->percentVaporized = percentVaporized / 100.0; }
172
177 double getPercentReacted() const { return percentReacted * 100.0; }
178
183 void setPercentReacted(const double percentReacted) { this->percentReacted = percentReacted / 100.0; }
184
189 double getReactionHeat() const { return reactionHeat; }
190
195 void setReactionHeat(const double reactionHeat) { this->reactionHeat = reactionHeat; }
196
201 double getAdditionalHeat() const { return additionalHeat; }
202
207 void setAdditionalHeat(const double additionalHeat) { this->additionalHeat = additionalHeat; }
208
213 std::string getSubstance() const { return substance; }
214
219 void setSubstance(std::string const& substance) { this->substance = substance; }
220
225 int getID() const { return id; }
226
231 void setID(int const id) { this->id = id; }
232
239 double getTotalHeat() {
240 double hliq;
241 if (dischargeTemperature < vaporizingTemperature) {
242 // H_liq=m_li×C_pl×(t_lo-t_li )
243 hliq = chargeFeedRate * specificHeatLiquid * (dischargeTemperature - initialTemperature);
244 }
245 else {
246 // 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)
247 hliq =
248 chargeFeedRate *
249 (specificHeatLiquid * (vaporizingTemperature - initialTemperature) +
250 percentVaporized * (latentHeat + specificHeatVapor * (dischargeTemperature - vaporizingTemperature)) +
251 (1 - percentVaporized) * specificHeatLiquid * (dischargeTemperature - vaporizingTemperature));
252 }
253
254 double heatReacted = 0.0;
255 if (thermicReactionType == LoadChargeMaterial::ThermicReactionType::ENDOTHERMIC) {
256 heatReacted = chargeFeedRate * percentReacted * reactionHeat;
257 }
258 totalHeat = hliq + heatReacted + additionalHeat;
259 return totalHeat;
260 }
261
265 bool operator==(const LiquidLoadChargeMaterial& rhs) const {
266 return specificHeatLiquid == rhs.specificHeatLiquid && latentHeat == rhs.latentHeat &&
267 specificHeatVapor == rhs.specificHeatVapor && vaporizingTemperature == rhs.vaporizingTemperature &&
268 substance == rhs.substance && id == rhs.id;
269 }
270
275 bool operator!=(const LiquidLoadChargeMaterial& rhs) const { return !(*this == rhs); }
276
277 private:
278 // In values
279 LoadChargeMaterial::ThermicReactionType thermicReactionType = LoadChargeMaterial::ThermicReactionType::NONE;
280 double specificHeatLiquid = 0.0;
281 double vaporizingTemperature = 0.0;
282 double latentHeat = 0.0;
283 double specificHeatVapor = 0.0;
284 double chargeFeedRate = 0.0;
285 double initialTemperature = 0.0;
286 double dischargeTemperature = 0.0;
287 double percentVaporized = 0.0;
288 double percentReacted = 0.0;
289 double reactionHeat = 0.0;
290 double additionalHeat = 0.0;
291 std::string substance = "Unknown";
292 int id = 0;
293 // Out value
294 double totalHeat = 0.0;
295
296 friend class DefaultData;
297
305 LiquidLoadChargeMaterial(std::string substance, double specificHeatLiquid, double latentHeat,
306 double specificHeatVapor, double vaporizingTemperature)
307 : specificHeatLiquid(specificHeatLiquid), vaporizingTemperature(vaporizingTemperature), latentHeat(latentHeat),
308 specificHeatVapor(specificHeatVapor), substance(std::move(substance)) {}
309};
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.