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#pragma once
2
16#include <string>
17
18#include "load_charge_material.h"
19
27 public:
48 const double specificHeatSolid, const double latentHeat, const double specificHeatLiquid,
49 const double meltingPoint, const double chargeFeedRate, const double waterContentCharged,
50 const double waterContentDischarged, const double initialTemperature,
51 const double dischargeTemperature, const double waterVaporDischargeTemperature,
52 const double chargeMelted, const double chargeReacted, const double reactionHeat,
53 const double additionalHeat)
54 : thermicReactionType(thermicReactionType), specificHeatSolid(specificHeatSolid), latentHeat(latentHeat),
55 specificHeatLiquid(specificHeatLiquid), meltingPoint(meltingPoint), chargeFeedRate(chargeFeedRate),
56 waterContentCharged(waterContentCharged / 100.0), waterContentDischarged(waterContentDischarged / 100.0),
57 initialTemperature(initialTemperature), dischargeTemperature(dischargeTemperature),
58 waterVaporDischargeTemperature(waterVaporDischargeTemperature), chargeMelted(chargeMelted / 100.0),
59 chargeReacted(chargeReacted / 100.0), reactionHeat(reactionHeat), additionalHeat(additionalHeat) {}
60
61 SolidLoadChargeMaterial() = default;
62
68
74 this->thermicReactionType = thermicReactionType;
75 }
76
81 double getSpecificHeatSolid() const { return specificHeatSolid; }
82
87 void setSpecificHeatSolid(const double specificHeatSolid) { this->specificHeatSolid = specificHeatSolid; }
88
93 double getLatentHeat() const { return latentHeat; }
94
99 void setLatentHeat(const double latentHeat) { this->latentHeat = latentHeat; }
100
105 double getSpecificHeatLiquid() const { return specificHeatLiquid; }
106
111 void setSpecificHeatLiquid(const double specificHeatLiquid) { this->specificHeatLiquid = specificHeatLiquid; }
112
117 double getMeltingPoint() const { return meltingPoint; }
118
123 int getID() const { return this->id; }
124
129 void setID(const int id) { this->id = id; }
130
135 void setMeltingPoint(const double meltingPoint) { this->meltingPoint = meltingPoint; }
136
141 double getChargeFeedRate() const { return chargeFeedRate; }
142
147 void setChargeFeedRate(const double chargeFeedRate) { this->chargeFeedRate = chargeFeedRate; }
148
153 double getWaterContentCharged() const { return waterContentCharged * 100.0; }
154
159 void setWaterContentCharged(const double waterContentCharged) {
160 this->waterContentCharged = waterContentCharged / 100.0;
161 }
162
167 double getWaterContentDischarged() const { return waterContentDischarged * 100.0; }
168
173 void setWaterContentDischarged(const double waterContentDischarged) {
174 this->waterContentDischarged = waterContentDischarged / 100.0;
175 }
176
181 double getInitialTemperature() const { return initialTemperature; }
182
187 void setInitialTemperature(const double initialTemperature) { this->initialTemperature = initialTemperature; }
188
193 double getDischargeTemperature() const { return dischargeTemperature; }
194
199 void setDischargeTemperature(const double dischargeTemperature) {
200 this->dischargeTemperature = dischargeTemperature;
201 }
202
207 double getWaterVaporDischargeTemperature() const { return waterVaporDischargeTemperature; }
208
213 void setWaterVaporDischargeTemperature(const double waterVaporDischargeTemperature) {
214 this->waterVaporDischargeTemperature = waterVaporDischargeTemperature;
215 }
216
221 double getChargeMelted() const { return chargeMelted * 100.0; }
222
227 void setChargeMelted(const double chargeMelted) { this->chargeMelted = chargeMelted / 100.0; }
228
233 double getChargedReacted() const { return chargeReacted * 100.0; }
234
239 void setChargedReacted(const double chargedReacted) { this->chargeReacted = chargedReacted / 100.0; }
240
245 double getReactionHeat() const { return reactionHeat; }
246
251 void setReactionHeat(const double reactionHeat) { this->reactionHeat = reactionHeat; }
252
257 double getAdditionalHeat() const { return additionalHeat; }
258
263 void setAdditionalHeat(const double additionalHeat) { this->additionalHeat = additionalHeat; }
264
269 std::string getSubstance() const { return substance; }
270
275 void setSubstance(std::string const& substance) { this->substance = substance; }
276
280 bool operator==(const SolidLoadChargeMaterial& rhs) const {
281 return specificHeatSolid == rhs.specificHeatSolid && latentHeat == rhs.latentHeat &&
282 specificHeatLiquid == rhs.specificHeatLiquid && meltingPoint == rhs.meltingPoint &&
283 substance == rhs.substance && id == rhs.id;
284 }
285
289 double getTotalHeat() {
290 double const waterBoilTemp = 212.0; // Heat required temperature is 212.0°F
291
292 // Heat required for removal of moisture
293 double hmv;
294 if (waterVaporDischargeTemperature < waterBoilTemp) {
295 // (H_mv )=m_st×(%w_i )×〖(t〗_wo-t_si)
296 hmv = chargeFeedRate * waterContentCharged * (waterVaporDischargeTemperature - initialTemperature);
297 }
298 else {
299 double const specificHeatWaterVapor = 0.481;
300 double const waterEvaporation = 970.0; // Latent heat of evaporation for water is 970 Btu/lb
301 // (H_mv )=m_st×(%w_i )×(212-t_si )+m_st×(%w_i-%w_o ) ×[970+0.481×〖(t〗_wo-212)]
302 hmv = (chargeFeedRate * waterContentCharged * (waterBoilTemp - initialTemperature)) +
303 chargeFeedRate * (waterContentCharged - waterContentDischarged) *
304 (waterEvaporation + specificHeatWaterVapor * (waterVaporDischargeTemperature - waterBoilTemp));
305 }
306 // (H_mr )=m_st×(%w_0 )×〖(t〗_wo-t_si)
307 double hmr = chargeFeedRate * waterContentDischarged * (waterVaporDischargeTemperature - waterBoilTemp);
308
309 // Heat required for solid
310 double hs;
311 if (dischargeTemperature < meltingPoint) {
312 // (H_s)=m_st×(1-%w_i )×C_ps×(t_so-t_si)
313 hs = chargeFeedRate * (1.0 - waterContentCharged) * specificHeatSolid *
314 (dischargeTemperature - initialTemperature);
315 }
316 else {
317 // (H_s )=m_st×(1-%w_i )×C_ps×(T_sm-t_si )+h_m+C_(pl ×) (t_so-T_sm)
318 hs = chargeFeedRate * (1.0 - waterContentCharged) *
319 (specificHeatSolid * (meltingPoint - initialTemperature) + (latentHeat * chargeMelted) +
320 specificHeatLiquid * (dischargeTemperature - meltingPoint) * (chargeMelted) +
321 (specificHeatSolid * (1 - chargeMelted) * (dischargeTemperature - meltingPoint)));
322 }
323
324 double heatReaction = 0.0;
325 if (thermicReactionType == LoadChargeMaterial::ThermicReactionType::ENDOTHERMIC) {
326 heatReaction = chargeFeedRate * (1.0 - waterContentCharged) * chargeReacted * reactionHeat;
327 }
328
329 // H_t=H_mv+H_mr+H_s±H_r
330 totalHeat = hmv + hmr + hs + heatReaction + additionalHeat;
331 return totalHeat;
332 }
333
334 private:
335 // In/Out values
336 std::string substance = "Unknown";
337 // In values
338 LoadChargeMaterial::ThermicReactionType thermicReactionType = LoadChargeMaterial::ThermicReactionType::NONE;
339 double specificHeatSolid = 0.0;
340 double latentHeat = 0.0;
341 double specificHeatLiquid = 0.0;
342 double meltingPoint = 0.0;
343 double chargeFeedRate = 0.0;
344 double waterContentCharged = 0.0;
345 double waterContentDischarged = 0.0;
346 double initialTemperature = 0.0;
347 double dischargeTemperature = 0.0;
348 double waterVaporDischargeTemperature = 0.0;
349 double chargeMelted = 0.0;
350 double chargeReacted = 0.0;
351 double reactionHeat = 0.0;
352 double additionalHeat = 0.0;
353 int id = 0;
354 // Out values
355 double totalHeat = 0.0;
356
357 friend class DefaultData;
358
367 SolidLoadChargeMaterial(std::string substance, double specificHeatSolid, double latentHeat,
368 double specificHeatLiquid, double meltingPoint)
369 : substance(std::move(substance)), specificHeatSolid(specificHeatSolid), latentHeat(latentHeat),
370 specificHeatLiquid(specificHeatLiquid), meltingPoint(meltingPoint) {}
371};
372
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.