18#include "load_charge_material.h"
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) {}
74 this->thermicReactionType = thermicReactionType;
99 void setLatentHeat(
const double latentHeat) { this->latentHeat = latentHeat; }
123 int getID()
const {
return this->id; }
129 void setID(
const int id) { this->
id = id; }
135 void setMeltingPoint(
const double meltingPoint) { this->meltingPoint = meltingPoint; }
160 this->waterContentCharged = waterContentCharged / 100.0;
174 this->waterContentDischarged = waterContentDischarged / 100.0;
200 this->dischargeTemperature = dischargeTemperature;
214 this->waterVaporDischargeTemperature = waterVaporDischargeTemperature;
227 void setChargeMelted(
const double chargeMelted) { this->chargeMelted = chargeMelted / 100.0; }
239 void setChargedReacted(
const double chargedReacted) { this->chargeReacted = chargedReacted / 100.0; }
251 void setReactionHeat(
const double reactionHeat) { this->reactionHeat = reactionHeat; }
275 void setSubstance(std::string
const& substance) { this->substance = substance; }
281 return specificHeatSolid == rhs.specificHeatSolid && latentHeat == rhs.latentHeat &&
282 specificHeatLiquid == rhs.specificHeatLiquid && meltingPoint == rhs.meltingPoint &&
283 substance == rhs.substance &&
id == rhs.id;
290 double const waterBoilTemp = 212.0;
294 if (waterVaporDischargeTemperature < waterBoilTemp) {
296 hmv = chargeFeedRate * waterContentCharged * (waterVaporDischargeTemperature - initialTemperature);
299 double const specificHeatWaterVapor = 0.481;
300 double const waterEvaporation = 970.0;
302 hmv = (chargeFeedRate * waterContentCharged * (waterBoilTemp - initialTemperature)) +
303 chargeFeedRate * (waterContentCharged - waterContentDischarged) *
304 (waterEvaporation + specificHeatWaterVapor * (waterVaporDischargeTemperature - waterBoilTemp));
307 double hmr = chargeFeedRate * waterContentDischarged * (waterVaporDischargeTemperature - waterBoilTemp);
311 if (dischargeTemperature < meltingPoint) {
313 hs = chargeFeedRate * (1.0 - waterContentCharged) * specificHeatSolid *
314 (dischargeTemperature - initialTemperature);
318 hs = chargeFeedRate * (1.0 - waterContentCharged) *
319 (specificHeatSolid * (meltingPoint - initialTemperature) + (latentHeat * chargeMelted) +
320 specificHeatLiquid * (dischargeTemperature - meltingPoint) * (chargeMelted) +
321 (specificHeatSolid * (1 - chargeMelted) * (dischargeTemperature - meltingPoint)));
324 double heatReaction = 0.0;
325 if (thermicReactionType == LoadChargeMaterial::ThermicReactionType::ENDOTHERMIC) {
326 heatReaction = chargeFeedRate * (1.0 - waterContentCharged) * chargeReacted * reactionHeat;
330 totalHeat = hmv + hmr + hs + heatReaction + additionalHeat;
336 std::string substance =
"Unknown";
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;
355 double totalHeat = 0.0;
368 double specificHeatLiquid,
double meltingPoint)
369 : substance(std::move(substance)), specificHeatSolid(specificHeatSolid), latentHeat(latentHeat),
370 specificHeatLiquid(specificHeatLiquid), meltingPoint(meltingPoint) {}
double getAdditionalHeat() const
LoadChargeMaterial::ThermicReactionType getThermicReactionType() const
double getWaterVaporDischargeTemperature() const
double getWaterContentCharged() const
double getReactionHeat() const
void setChargedReacted(const double chargedReacted)
double getMeltingPoint() const
void setWaterContentDischarged(const double waterContentDischarged)
void setMeltingPoint(const double meltingPoint)
double getChargedReacted() const
void setAdditionalHeat(const double additionalHeat)
double getSpecificHeatLiquid() const
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)
double getChargeMelted() const
void setSpecificHeatSolid(const double specificHeatSolid)
void setChargeFeedRate(const double chargeFeedRate)
double getLatentHeat() const
std::string getSubstance() const
void setDischargeTemperature(const double dischargeTemperature)
void setThermicReactionType(LoadChargeMaterial::ThermicReactionType thermicReactionType)
double getInitialTemperature() const
void setSubstance(std::string const &substance)
double getWaterContentDischarged() const
double getChargeFeedRate() const
void setWaterVaporDischargeTemperature(const double waterVaporDischargeTemperature)
double getSpecificHeatSolid() const
double getDischargeTemperature() const
ThermicReactionType
Classifications of thermic reaction type.