diff options
author | 2024-03-07 10:05:41 +0600 | |
---|---|---|
committer | 2024-03-07 10:05:41 +0600 | |
commit | 48110b812253975b6e2437fef07b84dd7382db9e (patch) | |
tree | 1ea043569604280ca8f10bb5811871a8f3c9dbbb /headers | |
parent | d9f58439b81b2505456c05dc2e64864b1cbcfde2 (diff) | |
download | entropy-calc-48110b812253975b6e2437fef07b84dd7382db9e.tar.gz entropy-calc-48110b812253975b6e2437fef07b84dd7382db9e.zip |
total heat needed & entropy change
Diffstat (limited to 'headers')
-rw-r--r-- | headers/allElements.cpp | 6 | ||||
-rw-r--r-- | headers/allElements.h | 4 | ||||
-rw-r--r-- | headers/baseElement.h | 118 | ||||
-rw-r--r-- | headers/genericElement.h | 79 |
4 files changed, 123 insertions, 84 deletions
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<vector> #include "../elements/water.h" -#include "genericElement.h" +#include "baseElement.h" -vector<genericElement*> getAllElements() +vector<baseElement*> getAllElements() { - vector<genericElement*> elements; + vector<baseElement*> 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<vector> -#include "genericElement.h" +#include "baseElement.h" -std::vector<genericElement*> getAllElements(); +std::vector<baseElement*> 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 <iostream> +#include <math.h> +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 <iostream> -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 |