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
solid_load_charge_material.h
Go to the documentation of this file.
1
14#ifndef TOOLS_SUITE_SOLIDLOADCHARGEMATERIAL_H
15#define TOOLS_SUITE_SOLIDLOADCHARGEMATERIAL_H
16
17#include <string>
18
19#include "load_charge_material.h"
20
28 public:
49 const double specificHeatSolid, const double latentHeat, const double specificHeatLiquid,
50 const double meltingPoint, const double chargeFeedRate, const double waterContentCharged,
51 const double waterContentDischarged, const double initialTemperature,
52 const double dischargeTemperature, const double waterVaporDischargeTemperature,
53 const double chargeMelted, const double chargeReacted, const double reactionHeat,
54 const double additionalHeat)
55 : thermicReactionType(thermicReactionType), specificHeatSolid(specificHeatSolid), latentHeat(latentHeat),
56 specificHeatLiquid(specificHeatLiquid), meltingPoint(meltingPoint), chargeFeedRate(chargeFeedRate),
57 waterContentCharged(waterContentCharged / 100.0), waterContentDischarged(waterContentDischarged / 100.0),
58 initialTemperature(initialTemperature), dischargeTemperature(dischargeTemperature),
59 waterVaporDischargeTemperature(waterVaporDischargeTemperature), chargeMelted(chargeMelted / 100.0),
60 chargeReacted(chargeReacted / 100.0), reactionHeat(reactionHeat), additionalHeat(additionalHeat) {}
61
62 SolidLoadChargeMaterial() = default;
63
69
75 this->thermicReactionType = thermicReactionType;
76 }
77
82 double getSpecificHeatSolid() const { return specificHeatSolid; }
83
88 void setSpecificHeatSolid(const double specificHeatSolid) { this->specificHeatSolid = specificHeatSolid; }
89
94 double getLatentHeat() const { return latentHeat; }
95
100 void setLatentHeat(const double latentHeat) { this->latentHeat = latentHeat; }
101
106 double getSpecificHeatLiquid() const { return specificHeatLiquid; }
107
112 void setSpecificHeatLiquid(const double specificHeatLiquid) { this->specificHeatLiquid = specificHeatLiquid; }
113
118 double getMeltingPoint() const { return meltingPoint; }
119
124 int getID() const { return this->id; }
125
130 void setID(const int id) { this->id = id; }
131
136 void setMeltingPoint(const double meltingPoint) { this->meltingPoint = meltingPoint; }
137
142 double getChargeFeedRate() const { return chargeFeedRate; }
143
148 void setChargeFeedRate(const double chargeFeedRate) { this->chargeFeedRate = chargeFeedRate; }
149
154 double getWaterContentCharged() const { return waterContentCharged * 100.0; }
155
160 void setWaterContentCharged(const double waterContentCharged) {
161 this->waterContentCharged = waterContentCharged / 100.0;
162 }
163
168 double getWaterContentDischarged() const { return waterContentDischarged * 100.0; }
169
174 void setWaterContentDischarged(const double waterContentDischarged) {
175 this->waterContentDischarged = waterContentDischarged / 100.0;
176 }
177
182 double getInitialTemperature() const { return initialTemperature; }
183
188 void setInitialTemperature(const double initialTemperature) { this->initialTemperature = initialTemperature; }
189
194 double getDischargeTemperature() const { return dischargeTemperature; }
195
200 void setDischargeTemperature(const double dischargeTemperature) {
201 this->dischargeTemperature = dischargeTemperature;
202 }
203
208 double getWaterVaporDischargeTemperature() const { return waterVaporDischargeTemperature; }
209
214 void setWaterVaporDischargeTemperature(const double waterVaporDischargeTemperature) {
215 this->waterVaporDischargeTemperature = waterVaporDischargeTemperature;
216 }
217
222 double getChargeMelted() const { return chargeMelted * 100.0; }
223
228 void setChargeMelted(const double chargeMelted) { this->chargeMelted = chargeMelted / 100.0; }
229
234 double getChargedReacted() const { return chargeReacted * 100.0; }
235
240 void setChargedReacted(const double chargedReacted) { this->chargeReacted = chargedReacted / 100.0; }
241
246 double getReactionHeat() const { return reactionHeat; }
247
252 void setReactionHeat(const double reactionHeat) { this->reactionHeat = reactionHeat; }
253
258 double getAdditionalHeat() const { return additionalHeat; }
259
264 void setAdditionalHeat(const double additionalHeat) { this->additionalHeat = additionalHeat; }
265
270 std::string getSubstance() const { return substance; }
271
276 void setSubstance(std::string const& substance) { this->substance = substance; }
277
281 bool operator==(const SolidLoadChargeMaterial& rhs) const {
282 return specificHeatSolid == rhs.specificHeatSolid && latentHeat == rhs.latentHeat &&
283 specificHeatLiquid == rhs.specificHeatLiquid && meltingPoint == rhs.meltingPoint &&
284 substance == rhs.substance && id == rhs.id;
285 }
286
290 double getTotalHeat() {
291 double const waterBoilTemp = 212.0; // Heat required temperature is 212.0°F
292
293 // Heat required for removal of moisture
294 double hmv;
295 if (waterVaporDischargeTemperature < waterBoilTemp) {
296 // (H_mv )=m_st×(%w_i )×〖(t〗_wo-t_si)
297 hmv = chargeFeedRate * waterContentCharged * (waterVaporDischargeTemperature - initialTemperature);
298 }
299 else {
300 double const specificHeatWaterVapor = 0.481;
301 double const waterEvaporation = 970.0; // Latent heat of evaporation for water is 970 Btu/lb
302 // (H_mv )=m_st×(%w_i )×(212-t_si )+m_st×(%w_i-%w_o ) ×[970+0.481×〖(t〗_wo-212)]
303 hmv = (chargeFeedRate * waterContentCharged * (waterBoilTemp - initialTemperature)) +
304 chargeFeedRate * (waterContentCharged - waterContentDischarged) *
305 (waterEvaporation + specificHeatWaterVapor * (waterVaporDischargeTemperature - waterBoilTemp));
306 }
307 // (H_mr )=m_st×(%w_0 )×〖(t〗_wo-t_si)
308 double hmr = chargeFeedRate * waterContentDischarged * (waterVaporDischargeTemperature - waterBoilTemp);
309
310 // Heat required for solid
311 double hs;
312 if (dischargeTemperature < meltingPoint) {
313 // (H_s)=m_st×(1-%w_i )×C_ps×(t_so-t_si)
314 hs = chargeFeedRate * (1.0 - waterContentCharged) * specificHeatSolid *
315 (dischargeTemperature - initialTemperature);
316 }
317 else {
318 // (H_s )=m_st×(1-%w_i )×C_ps×(T_sm-t_si )+h_m+C_(pl ×) (t_so-T_sm)
319 hs = chargeFeedRate * (1.0 - waterContentCharged) *
320 (specificHeatSolid * (meltingPoint - initialTemperature) + (latentHeat * chargeMelted) +
321 specificHeatLiquid * (dischargeTemperature - meltingPoint) * (chargeMelted) +
322 (specificHeatSolid * (1 - chargeMelted) * (dischargeTemperature - meltingPoint)));
323 }
324
325 double heatReaction = 0.0;
326 if (thermicReactionType == LoadChargeMaterial::ThermicReactionType::ENDOTHERMIC) {
327 heatReaction = chargeFeedRate * (1.0 - waterContentCharged) * chargeReacted * reactionHeat;
328 }
329
330 // H_t=H_mv+H_mr+H_s±H_r
331 totalHeat = hmv + hmr + hs + heatReaction + additionalHeat;
332 return totalHeat;
333 }
334
335 private:
336 // In/Out values
337 std::string substance = "Unknown";
338 // In values
339 LoadChargeMaterial::ThermicReactionType thermicReactionType = LoadChargeMaterial::ThermicReactionType::NONE;
340 double specificHeatSolid = 0.0;
341 double latentHeat = 0.0;
342 double specificHeatLiquid = 0.0;
343 double meltingPoint = 0.0;
344 double chargeFeedRate = 0.0;
345 double waterContentCharged = 0.0;
346 double waterContentDischarged = 0.0;
347 double initialTemperature = 0.0;
348 double dischargeTemperature = 0.0;
349 double waterVaporDischargeTemperature = 0.0;
350 double chargeMelted = 0.0;
351 double chargeReacted = 0.0;
352 double reactionHeat = 0.0;
353 double additionalHeat = 0.0;
354 int id = 0;
355 // Out values
356 double totalHeat = 0.0;
357
358 friend class DefaultData;
359
368 SolidLoadChargeMaterial(std::string substance, double specificHeatSolid, double latentHeat,
369 double specificHeatLiquid, double meltingPoint)
370 : substance(std::move(substance)), specificHeatSolid(specificHeatSolid), latentHeat(latentHeat),
371 specificHeatLiquid(specificHeatLiquid), meltingPoint(meltingPoint) {}
372};
373
374#endif // TOOLS_SUITE_SOLIDLOADCHARGEMATERIAL_H
LoadChargeMaterial::ThermicReactionType getThermicReactionType() const
void setChargedReacted(const double chargedReacted)
void setWaterContentDischarged(const double waterContentDischarged)
void setMeltingPoint(const double meltingPoint)
void setAdditionalHeat(const double additionalHeat)
SolidLoadChargeMaterial(const LoadChargeMaterial::ThermicReactionType thermicReactionType, const double specificHeatSolid, const double latentHeat, const double specificHeatLiquid, const double meltingPoint, const double chargeFeedRate, const double waterContentCharged, const double waterContentDischarged, const double initialTemperature, const double dischargeTemperature, const double waterVaporDischargeTemperature, const double chargeMelted, const double chargeReacted, const double reactionHeat, const double additionalHeat)
void setSpecificHeatLiquid(const double specificHeatLiquid)
void setChargeMelted(const double chargeMelted)
void setReactionHeat(const double reactionHeat)
SolidLoadChargeMaterial(std::string substance, double specificHeatSolid, double latentHeat, double specificHeatLiquid, double meltingPoint)
bool operator==(const SolidLoadChargeMaterial &rhs) const
void setWaterContentCharged(const double waterContentCharged)
void setLatentHeat(const double latentHeat)
void setInitialTemperature(const double initialTemperature)
void setSpecificHeatSolid(const double specificHeatSolid)
void setChargeFeedRate(const double chargeFeedRate)
void setDischargeTemperature(const double dischargeTemperature)
void setThermicReactionType(LoadChargeMaterial::ThermicReactionType thermicReactionType)
void setSubstance(std::string const &substance)
void setWaterVaporDischargeTemperature(const double waterVaporDischargeTemperature)
ThermicReactionType
Classifications of thermic reaction type.