14#ifndef TOOLS_SUITE_SOLIDLOADCHARGEMATERIAL_H
15#define TOOLS_SUITE_SOLIDLOADCHARGEMATERIAL_H
19#include "load_charge_material.h"
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) {}
75 this->thermicReactionType = thermicReactionType;
100 void setLatentHeat(
const double latentHeat) { this->latentHeat = latentHeat; }
124 int getID()
const {
return this->id; }
130 void setID(
const int id) { this->
id = id; }
136 void setMeltingPoint(
const double meltingPoint) { this->meltingPoint = meltingPoint; }
161 this->waterContentCharged = waterContentCharged / 100.0;
175 this->waterContentDischarged = waterContentDischarged / 100.0;
201 this->dischargeTemperature = dischargeTemperature;
215 this->waterVaporDischargeTemperature = waterVaporDischargeTemperature;
228 void setChargeMelted(
const double chargeMelted) { this->chargeMelted = chargeMelted / 100.0; }
240 void setChargedReacted(
const double chargedReacted) { this->chargeReacted = chargedReacted / 100.0; }
252 void setReactionHeat(
const double reactionHeat) { this->reactionHeat = reactionHeat; }
276 void setSubstance(std::string
const& substance) { this->substance = substance; }
282 return specificHeatSolid == rhs.specificHeatSolid && latentHeat == rhs.latentHeat &&
283 specificHeatLiquid == rhs.specificHeatLiquid && meltingPoint == rhs.meltingPoint &&
284 substance == rhs.substance &&
id == rhs.id;
291 double const waterBoilTemp = 212.0;
295 if (waterVaporDischargeTemperature < waterBoilTemp) {
297 hmv = chargeFeedRate * waterContentCharged * (waterVaporDischargeTemperature - initialTemperature);
300 double const specificHeatWaterVapor = 0.481;
301 double const waterEvaporation = 970.0;
303 hmv = (chargeFeedRate * waterContentCharged * (waterBoilTemp - initialTemperature)) +
304 chargeFeedRate * (waterContentCharged - waterContentDischarged) *
305 (waterEvaporation + specificHeatWaterVapor * (waterVaporDischargeTemperature - waterBoilTemp));
308 double hmr = chargeFeedRate * waterContentDischarged * (waterVaporDischargeTemperature - waterBoilTemp);
312 if (dischargeTemperature < meltingPoint) {
314 hs = chargeFeedRate * (1.0 - waterContentCharged) * specificHeatSolid *
315 (dischargeTemperature - initialTemperature);
319 hs = chargeFeedRate * (1.0 - waterContentCharged) *
320 (specificHeatSolid * (meltingPoint - initialTemperature) + (latentHeat * chargeMelted) +
321 specificHeatLiquid * (dischargeTemperature - meltingPoint) * (chargeMelted) +
322 (specificHeatSolid * (1 - chargeMelted) * (dischargeTemperature - meltingPoint)));
325 double heatReaction = 0.0;
326 if (thermicReactionType == LoadChargeMaterial::ThermicReactionType::ENDOTHERMIC) {
327 heatReaction = chargeFeedRate * (1.0 - waterContentCharged) * chargeReacted * reactionHeat;
331 totalHeat = hmv + hmr + hs + heatReaction + additionalHeat;
337 std::string substance =
"Unknown";
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;
356 double totalHeat = 0.0;
369 double specificHeatLiquid,
double meltingPoint)
370 : substance(std::move(substance)), specificHeatSolid(specificHeatSolid), latentHeat(latentHeat),
371 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.