Cantera  2.4.0
ConstDensityThermo.h
Go to the documentation of this file.
1 /**
2  * @file ConstDensityThermo.h
3  * Header for a Thermo manager for incompressible ThermoPhases
4  * (see \ref thermoprops and \link Cantera::ConstDensityThermo ConstDensityThermo\endlink).
5  */
6 
7 // This file is part of Cantera. See License.txt in the top-level directory or
8 // at http://www.cantera.org/license.txt for license and copyright information.
9 
10 #ifndef CT_CONSTRHOTHERMO_H
11 #define CT_CONSTRHOTHERMO_H
12 
13 #include "ThermoPhase.h"
14 #include "cantera/base/utilities.h"
15 
16 namespace Cantera
17 {
18 
19 //! Overloads the virtual methods of class ThermoPhase to implement the
20 //! incompressible equation of state.
21 /**
22  * ## Specification of Solution Thermodynamic Properties
23  *
24  * The density is assumed to be constant, no matter what the concentration of
25  * the solution.
26  *
27  * @ingroup thermoprops
28  */
30 {
31 public:
32  //! Constructor.
34 
35  virtual std::string type() const {
36  return "ConstDensity";
37  }
38 
39  virtual doublereal enthalpy_mole() const;
40  virtual doublereal entropy_mole() const;
41  virtual doublereal cp_mole() const;
42  virtual doublereal cv_mole() const;
43 
44  //! Return the thermodynamic pressure (Pa).
45  virtual doublereal pressure() const;
46 
47  //! Set the internally stored pressure (Pa) at constant temperature and
48  //! composition
49  /*!
50  * @param p input Pressure (Pa)
51  */
52  virtual void setPressure(doublereal p);
53 
54  virtual void getActivityConcentrations(doublereal* c) const;
55  virtual void getActivityCoefficients(doublereal* ac) const;
56 
57  virtual void getChemPotentials(doublereal* mu) const;
58  virtual void getStandardChemPotentials(doublereal* mu0) const;
59 
60  //! Returns the standard Concentration in units of m3 kmol-1.
61  //! @copydoc ThermoPhase::standardConcentration
62  virtual doublereal standardConcentration(size_t k=0) const;
63 
64  virtual void getPureGibbs(doublereal* gpure) const {
65  const vector_fp& gibbsrt = gibbs_RT();
66  scale(gibbsrt.begin(), gibbsrt.end(), gpure, RT());
67  }
68 
69  void getEnthalpy_RT(doublereal* hrt) const {
70  const vector_fp& _h = enthalpy_RT();
71  std::copy(_h.begin(), _h.end(), hrt);
72  }
73 
74  void getEntropy_R(doublereal* sr) const {
75  const vector_fp& _s = entropy_R();
76  std::copy(_s.begin(), _s.end(), sr);
77  }
78 
79  virtual void getGibbs_RT(doublereal* grt) const {
80  const vector_fp& gibbsrt = gibbs_RT();
81  std::copy(gibbsrt.begin(), gibbsrt.end(), grt);
82  }
83 
84  void getCp_R(doublereal* cpr) const {
85  const vector_fp& _cpr = cp_R();
86  std::copy(_cpr.begin(), _cpr.end(), cpr);
87  }
88 
89  //! Returns a reference to the vector of nondimensional enthalpies of the
90  //! reference state at the current temperature of the solution and the
91  //! reference pressure for the species.
92  const vector_fp& enthalpy_RT() const {
93  _updateThermo();
94  return m_h0_RT;
95  }
96 
97  //! Returns a reference to the vector of nondimensional Gibbs Free Energies
98  //! of the reference state at the current temperature of the solution and
99  //! the reference pressure for the species.
100  const vector_fp& gibbs_RT() const {
101  _updateThermo();
102  return m_g0_RT;
103  }
104 
105  //! Returns a reference to the vector of nondimensional entropies of the
106  //! reference state at the current temperature of the solution and the
107  //! reference pressure for each species.
108  const vector_fp& entropy_R() const {
109  _updateThermo();
110  return m_s0_R;
111  }
112 
113  //! Returns a reference to the vector of nondimensional constant pressure
114  //! heat capacities of the reference state at the current temperature of the
115  //! solution and reference pressure for each species.
116  const vector_fp& cp_R() const {
117  _updateThermo();
118  return m_cp0_R;
119  }
120 
121  virtual bool addSpecies(shared_ptr<Species> spec);
122 
123  virtual void setParameters(int n, doublereal* const c) {
124  setDensity(c[0]);
125  }
126 
127  virtual void getParameters(int& n, doublereal* const c) const {
128  double d = density();
129  c[0] = d;
130  n = 1;
131  }
132 
133  virtual void setParametersFromXML(const XML_Node& eosdata);
134 
135 protected:
136  //! Temporary storage for dimensionless reference state enthalpies
138 
139  //! Temporary storage for dimensionless reference state heat capacities
141 
142  //! Temporary storage for dimensionless reference state Gibbs energies
144 
145  //! Temporary storage for dimensionless reference state entropies
146  mutable vector_fp m_s0_R;
147 
148  //! Current pressure (Pa)
149  doublereal m_press;
150 
151 private:
152  //! Function to update the reference state thermo functions
153  void _updateThermo() const;
154 };
155 }
156 
157 #endif
virtual void getPureGibbs(doublereal *gpure) const
Get the Gibbs functions for the standard state of the species at the current T and P of the solution...
vector_fp m_s0_R
Temporary storage for dimensionless reference state entropies.
virtual void getActivityConcentrations(doublereal *c) const
This method returns an array of generalized concentrations.
virtual void getGibbs_RT(doublereal *grt) const
Get the nondimensional Gibbs functions for the species in their standard states at the current T and ...
Various templated functions that carry out common vector operations (see Templated Utility Functions)...
virtual void getActivityCoefficients(doublereal *ac) const
Get the array of non-dimensional molar-based activity coefficients at the current solution temperatur...
Class XML_Node is a tree-based representation of the contents of an XML file.
Definition: xml.h:97
vector_fp m_h0_RT
Temporary storage for dimensionless reference state enthalpies.
virtual doublereal density() const
Density (kg/m^3).
Definition: Phase.h:607
doublereal m_press
Current pressure (Pa)
doublereal RT() const
Return the Gas Constant multiplied by the current temperature.
Definition: ThermoPhase.h:748
Base class for a phase with thermodynamic properties.
Definition: ThermoPhase.h:93
const vector_fp & enthalpy_RT() const
Returns a reference to the vector of nondimensional enthalpies of the reference state at the current ...
virtual doublereal pressure() const
Return the thermodynamic pressure (Pa).
virtual void setPressure(doublereal p)
Set the internally stored pressure (Pa) at constant temperature and composition.
virtual doublereal entropy_mole() const
Molar entropy. Units: J/kmol/K.
virtual doublereal cp_mole() const
Molar heat capacity at constant pressure. Units: J/kmol/K.
const vector_fp & entropy_R() const
Returns a reference to the vector of nondimensional entropies of the reference state at the current t...
void getCp_R(doublereal *cpr) const
Get the nondimensional Heat Capacities at constant pressure for the species standard states at the cu...
Overloads the virtual methods of class ThermoPhase to implement the incompressible equation of state...
virtual void setParameters(int n, doublereal *const c)
Set the equation of state parameters.
virtual doublereal enthalpy_mole() const
Molar enthalpy. Units: J/kmol.
virtual bool addSpecies(shared_ptr< Species > spec)
virtual doublereal cv_mole() const
Molar heat capacity at constant volume. Units: J/kmol/K.
virtual void setParametersFromXML(const XML_Node &eosdata)
Set equation of state parameter values from XML entries.
const vector_fp & cp_R() const
Returns a reference to the vector of nondimensional constant pressure heat capacities of the referenc...
void getEntropy_R(doublereal *sr) const
Get the array of nondimensional Entropy functions for the standard state species at the current T and...
std::vector< double > vector_fp
Turn on the use of stl vectors for the basic array type within cantera Vector of doubles.
Definition: ct_defs.h:157
virtual void getParameters(int &n, doublereal *const c) const
Get the equation of state parameters in a vector.
void scale(InputIter begin, InputIter end, OutputIter out, S scale_factor)
Multiply elements of an array by a scale factor.
Definition: utilities.h:130
virtual void getChemPotentials(doublereal *mu) const
Get the species chemical potentials. Units: J/kmol.
virtual void getStandardChemPotentials(doublereal *mu0) const
Get the array of chemical potentials at unit activity for the species at their standard states at the...
virtual doublereal standardConcentration(size_t k=0) const
Returns the standard Concentration in units of m3 kmol-1.
vector_fp m_g0_RT
Temporary storage for dimensionless reference state Gibbs energies.
void getEnthalpy_RT(doublereal *hrt) const
Get the nondimensional Enthalpy functions for the species at their standard states at the current T a...
Namespace for the Cantera kernel.
Definition: AnyMap.cpp:8
vector_fp m_cp0_R
Temporary storage for dimensionless reference state heat capacities.
const vector_fp & gibbs_RT() const
Returns a reference to the vector of nondimensional Gibbs Free Energies of the reference state at the...
Header file for class ThermoPhase, the base class for phases with thermodynamic properties, and the text for the Module thermoprops (see Thermodynamic Properties and class ThermoPhase).
void _updateThermo() const
Function to update the reference state thermo functions.
virtual std::string type() const
String indicating the thermodynamic model implemented.
virtual void setDensity(const doublereal density_)
Set the internally stored density (kg/m^3) of the phase.
Definition: Phase.h:622