| Cantera 3.0.0

Loading...
Searching...
No Matches
PDSS_ConstVol.cpp
Go to the documentation of this file.
1/**
2 * @file PDSS_ConstVol.cpp
3 * Implementation of a pressure dependent standard state
4 * virtual function.
5 */
6
7// This file is part of Cantera. See License.txt in the top-level directory or
8// at https://cantera.org/license.txt for license and copyright information.
9
10#include "cantera/thermo/PDSS_ConstVol.h"
11#include "cantera/thermo/VPStandardStateTP.h"
12#include "cantera/base/global.h"
13
14 namespace Cantera
15{
16
17 void PDSS_ConstVol::initThermo()
18{
19 PDSS::initThermo();
20 if (m_input.hasKey("density")) {
21 setMolarVolume(m_mw / m_input.convert("density", "kg/m^3"));
22 } else if (m_input.hasKey("molar-density")) {
23 setMolarVolume(1.0 / m_input.convert("molar-density", "kmol/m^3"));
24 } else if (m_input.hasKey("molar-volume")) {
25 setMolarVolume(m_input.convert("molar-volume", "m^3/kmol"));
26 }
27 m_minTemp = m_spthermo->minTemp();
28 m_maxTemp = m_spthermo->maxTemp();
29 m_p0 = m_spthermo->refPressure();
30 m_V0 = m_constMolarVolume;
31 m_Vss = m_constMolarVolume;
32}
33
34 void PDSS_ConstVol::getParameters(AnyMap &eosNode) const
35{
36 PDSS::getParameters(eosNode);
37 eosNode["model"] = "constant-volume";
38 // Output volume information in a form consistent with the input
39 if (m_input.hasKey("density")) {
40 eosNode["density"].setQuantity(m_mw / m_constMolarVolume, "kg/m^3");
41 } else if (m_input.hasKey("molar-density")) {
42 eosNode["molar-density"].setQuantity(1.0 / m_constMolarVolume, "kmol/m^3");
43 } else {
44 eosNode["molar-volume"].setQuantity(m_constMolarVolume, "m^3/kmol");
45 }
46}
47
48 double PDSS_ConstVol::intEnergy_mole() const
49{
50 double pV = (m_pres * m_Vss);
51 return m_h0_RT * GasConstant * m_temp - pV;
52}
53
54 double PDSS_ConstVol::cv_mole() const
55{
56 return (cp_mole() - m_V0);
57}
58
59 void PDSS_ConstVol::setPressure(double p)
60{
61 m_pres = p;
62 double del_pRT = (m_pres - m_p0) / (GasConstant * m_temp);
63 m_hss_RT = m_h0_RT + del_pRT * m_Vss;
64 m_gss_RT = m_hss_RT - m_sss_R;
65}
66
67 void PDSS_ConstVol::setTemperature(double temp)
68{
69 m_temp = temp;
70 m_spthermo->updatePropertiesTemp(temp, &m_cp0_R, &m_h0_RT, &m_s0_R);
71 m_g0_RT = m_h0_RT - m_s0_R;
72
73 double del_pRT = (m_pres - m_p0) / (GasConstant * m_temp);
74
75 m_hss_RT = m_h0_RT + del_pRT * m_Vss;
76 m_cpss_R = m_cp0_R;
77 m_sss_R = m_s0_R;
78 m_gss_RT = m_hss_RT - m_sss_R;
79}
80
81 void PDSS_ConstVol::setState_TP(double temp, double pres)
82{
83 setTemperature(temp);
84 setPressure(pres);
85}
86
87 void PDSS_ConstVol::setState_TR(double temp, double rho)
88{
89 warn_deprecated("PDSS_ConstVol::setState_TR", "To be removed after Cantera 3.0");
90 double rhoStored = m_mw / m_constMolarVolume;
91 if (fabs(rhoStored - rho) / (rhoStored + rho) > 1.0E-4) {
92 throw CanteraError("PDSS_ConstVol::setState_TR",
93 "Inconsistent supplied density.");
94 }
95 setTemperature(temp);
96}
97
98 double PDSS_ConstVol::satPressure(double t)
99{
100 return 1.0E-200;
101}
102
103}
PDSS_ConstVol.h
Declarations for the class PDSS_ConstVol (pressure dependent standard state) which handles calculatio...
VPStandardStateTP.h
Header file for a derived class of ThermoPhase that handles variable pressure standard state methods ...
Cantera::AnyMap
A map of string keys to values whose type can vary at runtime.
Definition AnyMap.h:427
Cantera::AnyMap::hasKey
bool hasKey(const string &key) const
Returns true if the map contains an item named key.
Definition AnyMap.cpp:1423
Cantera::AnyMap::convert
double convert(const string &key, const string &units) const
Convert the item stored by the given key to the units specified in units.
Definition AnyMap.cpp:1535
Cantera::CanteraError
Base class for exceptions thrown by Cantera classes.
Definition ctexceptions.h:66
Cantera::PDSS_ConstVol::setPressure
void setPressure(double pres) override
Sets the pressure in the object.
Definition PDSS_ConstVol.cpp:59
Cantera::PDSS_ConstVol::setTemperature
void setTemperature(double temp) override
Set the internal temperature.
Definition PDSS_ConstVol.cpp:67
Cantera::PDSS_ConstVol::initThermo
void initThermo() override
Initialization routine.
Definition PDSS_ConstVol.cpp:17
Cantera::PDSS_ConstVol::cv_mole
double cv_mole() const override
Return the molar const volume heat capacity in units of J kmol-1 K-1.
Definition PDSS_ConstVol.cpp:54
Cantera::PDSS_ConstVol::setMolarVolume
void setMolarVolume(double v)
Set the (constant) molar volume [m3/kmol] of the species.
Definition PDSS_ConstVol.h:54
Cantera::PDSS_ConstVol::setState_TR
void setState_TR(double temp, double rho) override
Set the internal temperature and density.
Definition PDSS_ConstVol.cpp:87
Cantera::PDSS_ConstVol::getParameters
void getParameters(AnyMap &eosNode) const override
Store the parameters needed to reconstruct a copy of this PDSS object.
Definition PDSS_ConstVol.cpp:34
Cantera::PDSS_ConstVol::intEnergy_mole
double intEnergy_mole() const override
Return the molar internal Energy in units of J kmol-1.
Definition PDSS_ConstVol.cpp:48
Cantera::PDSS_ConstVol::setState_TP
void setState_TP(double temp, double pres) override
Set the internal temperature and pressure.
Definition PDSS_ConstVol.cpp:81
Cantera::PDSS_ConstVol::m_constMolarVolume
double m_constMolarVolume
Value of the constant molar volume for the species.
Definition PDSS_ConstVol.h:65
Cantera::PDSS_ConstVol::satPressure
double satPressure(double t) override
saturation pressure
Definition PDSS_ConstVol.cpp:98
Cantera::PDSS_Nondimensional::m_sss_R
double m_sss_R
Standard state entropy divided by R.
Definition PDSS.h:516
Cantera::PDSS_Nondimensional::m_cpss_R
double m_cpss_R
Standard state heat capacity divided by R.
Definition PDSS.h:515
Cantera::PDSS_Nondimensional::m_h0_RT
double m_h0_RT
Reference state enthalpy divided by RT.
Definition PDSS.h:509
Cantera::PDSS_Nondimensional::m_g0_RT
double m_g0_RT
Reference state Gibbs free energy divided by RT.
Definition PDSS.h:512
Cantera::PDSS_Nondimensional::m_s0_R
double m_s0_R
Reference state entropy divided by R.
Definition PDSS.h:511
Cantera::PDSS_Nondimensional::m_gss_RT
double m_gss_RT
Standard state Gibbs free energy divided by RT.
Definition PDSS.h:517
Cantera::PDSS_Nondimensional::m_cp0_R
double m_cp0_R
Reference state heat capacity divided by R.
Definition PDSS.h:510
Cantera::PDSS_Nondimensional::cp_mole
double cp_mole() const override
Return the molar const pressure heat capacity in units of J kmol-1 K-1.
Definition PDSS.cpp:256
Cantera::PDSS_Nondimensional::m_Vss
double m_Vss
Standard State molar volume (m^3/kmol)
Definition PDSS.h:518
Cantera::PDSS_Nondimensional::m_hss_RT
double m_hss_RT
Standard state enthalpy divided by RT.
Definition PDSS.h:514
Cantera::PDSS_Nondimensional::m_V0
double m_V0
Reference state molar volume (m^3/kmol)
Definition PDSS.h:513
Cantera::PDSS::initThermo
virtual void initThermo()
Initialization routine.
Definition PDSS.h:418
Cantera::PDSS::m_p0
double m_p0
Reference state pressure of the species.
Definition PDSS.h:455
Cantera::PDSS::m_temp
double m_temp
Current temperature used by the PDSS object.
Definition PDSS.h:449
Cantera::PDSS::m_spthermo
shared_ptr< SpeciesThermoInterpType > m_spthermo
Pointer to the species thermodynamic property manager.
Definition PDSS.h:472
Cantera::PDSS::m_pres
double m_pres
State of the system - pressure.
Definition PDSS.h:452
Cantera::PDSS::m_maxTemp
double m_maxTemp
Maximum temperature.
Definition PDSS.h:461
Cantera::PDSS::m_minTemp
double m_minTemp
Minimum temperature.
Definition PDSS.h:458
Cantera::PDSS::m_mw
double m_mw
Molecular Weight of the species.
Definition PDSS.h:464
Cantera::PDSS::m_input
AnyMap m_input
Input data supplied via setParameters.
Definition PDSS.h:468
Cantera::PDSS::getParameters
virtual void getParameters(AnyMap &eosNode) const
Store the parameters needed to reconstruct a copy of this PDSS object.
Definition PDSS.h:427
global.h
This file contains definitions for utility functions and text for modules, inputfiles and logging,...
Cantera::GasConstant
const double GasConstant
Universal Gas Constant [J/kmol/K].
Definition ct_defs.h:120
Cantera
Namespace for the Cantera kernel.
Definition AnyMap.cpp:564
Cantera::warn_deprecated
void warn_deprecated(const string &source, const AnyBase &node, const string &message)
A deprecation warning for syntax in an input file.
Definition AnyMap.cpp:1926