Cantera  3.1.0a1
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 
12 #include "cantera/base/global.h"
13 
14 namespace Cantera
15 {
16 
18 {
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();
32 }
33 
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 
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 
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;
65 }
66 
68 {
69  m_temp = temp;
70  m_spthermo->updatePropertiesTemp(temp, &m_cp0_R, &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;
79 }
80 
81 void PDSS_ConstVol::setState_TP(double temp, double pres)
82 {
83  setTemperature(temp);
84  setPressure(pres);
85 }
86 
88 {
89  return 1.0E-200;
90 }
91 
92 }
Declarations for the class PDSS_ConstVol (pressure dependent standard state) which handles calculatio...
Header file for a derived class of ThermoPhase that handles variable pressure standard state methods ...
A map of string keys to values whose type can vary at runtime.
Definition: AnyMap.h:427
bool hasKey(const string &key) const
Returns true if the map contains an item named key.
Definition: AnyMap.cpp:1423
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
void setPressure(double pres) override
Sets the pressure in the object.
void setTemperature(double temp) override
Set the internal temperature.
void initThermo() override
Initialization routine.
double cv_mole() const override
Return the molar const volume heat capacity in units of J kmol-1 K-1.
void setMolarVolume(double v)
Set the (constant) molar volume [m3/kmol] of the species.
Definition: PDSS_ConstVol.h:53
void getParameters(AnyMap &eosNode) const override
Store the parameters needed to reconstruct a copy of this PDSS object.
double intEnergy_mole() const override
Return the molar internal Energy in units of J kmol-1.
void setState_TP(double temp, double pres) override
Set the internal temperature and pressure.
double m_constMolarVolume
Value of the constant molar volume for the species.
Definition: PDSS_ConstVol.h:64
double satPressure(double t) override
saturation pressure
double m_sss_R
Standard state entropy divided by R.
Definition: PDSS.h:465
double m_cpss_R
Standard state heat capacity divided by R.
Definition: PDSS.h:464
double m_h0_RT
Reference state enthalpy divided by RT.
Definition: PDSS.h:458
double m_g0_RT
Reference state Gibbs free energy divided by RT.
Definition: PDSS.h:461
double m_s0_R
Reference state entropy divided by R.
Definition: PDSS.h:460
double m_gss_RT
Standard state Gibbs free energy divided by RT.
Definition: PDSS.h:466
double m_cp0_R
Reference state heat capacity divided by R.
Definition: PDSS.h:459
double cp_mole() const override
Return the molar const pressure heat capacity in units of J kmol-1 K-1.
Definition: PDSS.cpp:215
double m_Vss
Standard State molar volume (m^3/kmol)
Definition: PDSS.h:467
double m_hss_RT
Standard state enthalpy divided by RT.
Definition: PDSS.h:463
double m_V0
Reference state molar volume (m^3/kmol)
Definition: PDSS.h:462
virtual void initThermo()
Initialization routine.
Definition: PDSS.h:383
double m_p0
Reference state pressure of the species.
Definition: PDSS.h:404
double m_temp
Current temperature used by the PDSS object.
Definition: PDSS.h:398
shared_ptr< SpeciesThermoInterpType > m_spthermo
Pointer to the species thermodynamic property manager.
Definition: PDSS.h:421
double m_pres
State of the system - pressure.
Definition: PDSS.h:401
double m_maxTemp
Maximum temperature.
Definition: PDSS.h:410
double m_minTemp
Minimum temperature.
Definition: PDSS.h:407
double m_mw
Molecular Weight of the species.
Definition: PDSS.h:413
AnyMap m_input
Input data supplied via setParameters.
Definition: PDSS.h:417
virtual void getParameters(AnyMap &eosNode) const
Store the parameters needed to reconstruct a copy of this PDSS object.
Definition: PDSS.h:392
This file contains definitions for utility functions and text for modules, inputfiles and logging,...
const double GasConstant
Universal Gas Constant [J/kmol/K].
Definition: ct_defs.h:120
Namespace for the Cantera kernel.
Definition: AnyMap.cpp:564