From 48110b812253975b6e2437fef07b84dd7382db9e Mon Sep 17 00:00:00 2001 From: SR Tamim Date: Thu, 7 Mar 2024 10:05:41 +0600 Subject: total heat needed & entropy change --- headers/allElements.cpp | 6 +-- headers/allElements.h | 4 +- headers/baseElement.h | 118 +++++++++++++++++++++++++++++++++++++++++++++++ headers/genericElement.h | 79 ------------------------------- 4 files changed, 123 insertions(+), 84 deletions(-) create mode 100644 headers/baseElement.h delete mode 100644 headers/genericElement.h (limited to 'headers') diff --git a/headers/allElements.cpp b/headers/allElements.cpp index 435f680..7c0e6a2 100644 --- a/headers/allElements.cpp +++ b/headers/allElements.cpp @@ -1,11 +1,11 @@ #include #include "../elements/water.h" -#include "genericElement.h" +#include "baseElement.h" -vector getAllElements() +vector getAllElements() { - vector elements; + vector elements; elements.push_back(new water()); return elements; } diff --git a/headers/allElements.h b/headers/allElements.h index 5bf3627..9db7188 100644 --- a/headers/allElements.h +++ b/headers/allElements.h @@ -5,8 +5,8 @@ #define ALL_ELEMENTS #include -#include "genericElement.h" +#include "baseElement.h" -std::vector getAllElements(); +std::vector getAllElements(); #endif diff --git a/headers/baseElement.h b/headers/baseElement.h new file mode 100644 index 0000000..fd77194 --- /dev/null +++ b/headers/baseElement.h @@ -0,0 +1,118 @@ +#ifndef BASEELEMENT_H_INCLUDED +#define BASEELEMENT_H_INCLUDED + + +#include +#include +using namespace std; + +class baseElement +{ +private: + string elementName; + double latentHeatOfFusion; + double latentHeatOfVaporization; + double specificHeatSolid; + double specificHeatLiquid; + double specificHeatGas; + double meltingPoint; + double boilingPoint; + +protected: + void setElementName(string value) { elementName = value; } + void setLatentHeatOfFusion(double value) { latentHeatOfFusion = value; } + void setLatentHeatOfVaporization(double value) { latentHeatOfVaporization = value; } + void setSpecificHeatSolid(double value) { specificHeatSolid = value; } + void setSpecificHeatLiquid(double value) { specificHeatLiquid = value; } + void setSpecificHeatGas(double value) { specificHeatGas = value; } + void setMeltingPoint(double value) { meltingPoint = value; } + void setBoilingPoint(double value) { boilingPoint = value; } + +public: + string getElementName() { return elementName; } + double getLatentHeatOfFusion() { return latentHeatOfFusion; } + double getLatentHeatOfVaporization() { return latentHeatOfVaporization; } + double getSpecificHeatSolid() { return specificHeatSolid; } + double getSpecificHeatLiquid() { return specificHeatLiquid; } + double getSpecificHeatGas() { return specificHeatGas; } + double getMeltingPoint() { return meltingPoint; } + double getBoilingPoint() { return boilingPoint; } + + double totalHeatNeeded(double mass, double fromTemp, double toTemp) + { + double totalHeat = 0; + if (fromTemp <= meltingPoint && toTemp <= meltingPoint) + { + totalHeat = mass * specificHeatSolid * (toTemp - fromTemp); + } + else if (fromTemp <= meltingPoint && toTemp >= meltingPoint && toTemp <= boilingPoint) + { + totalHeat = mass * specificHeatSolid * (meltingPoint - fromTemp); + totalHeat += mass * latentHeatOfFusion / meltingPoint; + totalHeat += mass * specificHeatLiquid * (toTemp - meltingPoint); + } + else if (fromTemp <= meltingPoint && toTemp >= boilingPoint) + { + totalHeat = mass * specificHeatSolid * (meltingPoint - fromTemp); + totalHeat += mass * latentHeatOfFusion; + totalHeat += mass * specificHeatLiquid * (boilingPoint - meltingPoint); + totalHeat += mass * latentHeatOfVaporization; + totalHeat += mass * specificHeatGas * (toTemp - boilingPoint); + } + else if (fromTemp >= meltingPoint && fromTemp <= boilingPoint && toTemp >= meltingPoint && toTemp <= boilingPoint) + { + totalHeat = mass * specificHeatLiquid * (toTemp - fromTemp); + } + else if (fromTemp >= meltingPoint && fromTemp <= boilingPoint && toTemp >= boilingPoint) + { + totalHeat = mass * specificHeatLiquid * (boilingPoint - fromTemp); + totalHeat += mass * latentHeatOfVaporization; + totalHeat += mass * specificHeatGas * (toTemp - boilingPoint); + } + else if (fromTemp >= boilingPoint && toTemp >= boilingPoint) + { + totalHeat = mass * specificHeatGas * (toTemp - fromTemp); + } + return totalHeat; + } + + double totalEntropyChange(double mass, double fromTemp, double toTemp) + { + double totalEntropy = 0; + if (fromTemp <= meltingPoint && toTemp <= meltingPoint) + { + totalEntropy = mass * specificHeatSolid * log(toTemp / fromTemp); + } + else if (fromTemp <= meltingPoint && toTemp >= meltingPoint && toTemp <= boilingPoint) + { + totalEntropy = mass * specificHeatSolid * log(meltingPoint / fromTemp); + totalEntropy += mass * latentHeatOfFusion / meltingPoint; + totalEntropy += mass * specificHeatLiquid * log(toTemp / meltingPoint); + } + else if (fromTemp <= meltingPoint && toTemp >= boilingPoint) + { + totalEntropy = mass * specificHeatSolid * log(meltingPoint / fromTemp); + totalEntropy += mass * latentHeatOfFusion; + totalEntropy += mass * specificHeatLiquid * log(boilingPoint / meltingPoint); + totalEntropy += mass * latentHeatOfVaporization; + totalEntropy += mass * specificHeatGas * log(toTemp / boilingPoint); + } + else if (fromTemp >= meltingPoint && fromTemp <= boilingPoint && toTemp >= meltingPoint && toTemp <= boilingPoint) + { + totalEntropy = mass * specificHeatLiquid * log(toTemp / fromTemp); + } + else if (fromTemp >= meltingPoint && fromTemp <= boilingPoint && toTemp >= boilingPoint) + { + totalEntropy = mass * specificHeatLiquid * log(boilingPoint / fromTemp); + totalEntropy += mass * latentHeatOfVaporization; + totalEntropy += mass * specificHeatGas * log(toTemp / boilingPoint); + } + else if (fromTemp >= boilingPoint && toTemp >= boilingPoint) + { + totalEntropy = mass * specificHeatGas * log(toTemp / fromTemp); + } + return totalEntropy; + } +}; + +#endif // BASEELEMENT_H_INCLUDED diff --git a/headers/genericElement.h b/headers/genericElement.h deleted file mode 100644 index 5e7044d..0000000 --- a/headers/genericElement.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef GENERICELEMENT_H_INCLUDED -#define GENERICELEMENT_H_INCLUDED - - -#include -using namespace std; - -class genericElement -{ -private: - string elementName; - double latentHeatOfFusion; - double latentHeatOfVaporization; - double specificHeatSolid; - double specificHeatLiquid; - double specificHeatGas; - double meltingPoint; - double boilingPoint; - -protected: - void setElementName(string value) { elementName = value; } - void setLatentHeatOfFusion(double value) { latentHeatOfFusion = value; } - void setLatentHeatOfVaporization(double value) { latentHeatOfVaporization = value; } - void setSpecificHeatSolid(double value) { specificHeatSolid = value; } - void setSpecificHeatLiquid(double value) { specificHeatLiquid = value; } - void setSpecificHeatGas(double value) { specificHeatGas = value; } - void setMeltingPoint(double value) { meltingPoint = value; } - void setBoilingPoint(double value) { boilingPoint = value; } - -public: - string getElementName() { return elementName; } - double getLatentHeatOfFusion() { return latentHeatOfFusion; } - double getLatentHeatOfVaporization() { return latentHeatOfVaporization; } - double getSpecificHeatSolid() { return specificHeatSolid; } - double getSpecificHeatLiquid() { return specificHeatLiquid; } - double getSpecificHeatGas() { return specificHeatGas; } - double getMeltingPoint() { return meltingPoint; } - double getBoilingPoint() { return boilingPoint; } - - double totalEntropyChange(double mass, double fromTemp, double toTemp) - { - double totalEntropy = 0; - if (fromTemp <= meltingPoint && toTemp <= meltingPoint) - { - totalEntropy = mass * specificHeatSolid * (toTemp - fromTemp); - } - else if (fromTemp <= meltingPoint && toTemp >= meltingPoint && toTemp <= boilingPoint) - { - totalEntropy = mass * specificHeatSolid * (meltingPoint - fromTemp); - totalEntropy += mass * latentHeatOfFusion / meltingPoint; - totalEntropy += mass * specificHeatLiquid * (toTemp - meltingPoint); - } - else if (fromTemp <= meltingPoint && toTemp >= boilingPoint) - { - totalEntropy = mass * specificHeatSolid * (meltingPoint - fromTemp); - totalEntropy += mass * latentHeatOfFusion; - totalEntropy += mass * specificHeatLiquid * (boilingPoint - meltingPoint); - totalEntropy += mass * latentHeatOfVaporization; - totalEntropy += mass * specificHeatGas * (toTemp - boilingPoint); - } - else if (fromTemp >= meltingPoint && fromTemp <= boilingPoint && toTemp >= meltingPoint && toTemp <= boilingPoint) - { - totalEntropy = mass * specificHeatLiquid * (toTemp - fromTemp); - } - else if (fromTemp >= meltingPoint && fromTemp <= boilingPoint && toTemp >= boilingPoint) - { - totalEntropy = mass * specificHeatLiquid * (boilingPoint - fromTemp); - totalEntropy += mass * latentHeatOfVaporization; - totalEntropy += mass * specificHeatGas * (toTemp - boilingPoint); - } - else if (fromTemp >= boilingPoint && toTemp >= boilingPoint) - { - totalEntropy = mass * specificHeatGas * (toTemp - fromTemp); - } - return totalEntropy; - } -}; - -#endif // GENERICELEMENT_H_INCLUDED -- cgit v1.2.3