Cantera 2.6.0

PDSS_IonsFromNeutral.h
Go to the documentation of this file.
1/**
2 * @file PDSS_IonsFromNeutral.h
3 * Declarations for the class PDSS_IonsFromNeutral (
4 * which handles calculations for a single ion in a fluid, whose properties
5 * are calculated from another neutral molecule.
6 * (see \ref pdssthermo and class \link Cantera::PDSS_IonsFromNeutral PDSS_IonsFromNeutral\endlink).
7 */
8
9// This file is part of Cantera. See License.txt in the top-level directory or
10// at https://cantera.org/license.txt for license and copyright information.
11
12#ifndef CT_PDSS_IONSFROMNEUTRAL_H
13#define CT_PDSS_IONSFROMNEUTRAL_H
14
15#include "PDSS.h"
16
17 namespace Cantera
18{
19 class ThermoPhase;
20
21//! Derived class for pressure dependent standard states of an ideal gas species
22/*!
23 * @attention This class currently does not have any test cases or examples. Its
24 * implementation may be incomplete, and future changes to Cantera may
25 * unexpectedly cause this class to stop working. If you use this class,
26 * please consider contributing examples or test cases. In the absence of
27 * new tests or examples, this class may be deprecated and removed in a
28 * future version of Cantera. See
29 * https://github.com/Cantera/cantera/issues/267 for additional information.
30 *
31 * This class is for a single Ideal Gas species.
32 *
33 * @ingroup pdssthermo
34 */
35 class PDSS_IonsFromNeutral : public PDSS_Nondimensional
36{
37 public:
38 //! Default constructor
39 PDSS_IonsFromNeutral();
40
41 //! @name Molar Thermodynamic Properties of the Species Standard State in the Solution
42 //! @{
43
44 // See PDSS.h for documentation of functions overridden from Class PDSS
45
46 virtual doublereal enthalpy_RT() const;
47 virtual doublereal intEnergy_mole() const;
48 virtual doublereal entropy_R() const;
49
50 /*!
51 * @copydoc PDSS::gibbs_RT()
52 *
53 * \f[
54 * \frac{\mu^o_k}{RT} = \sum_{m}{ \alpha_{m , k} \frac{\mu^o_{m}}{RT}} + ( 1 - \delta_{k,sp}) 2.0 \ln{2.0}
55 * \f]
56 *
57 * *m* is the neutral molecule species index. \f$ \alpha_{m , k} \f$ is the
58 * stoiciometric coefficient for the neutral molecule, *m*, that creates the
59 * thermodynamics for the ionic species *k*. A factor \f$ 2.0 \ln{2.0} \f$
60 * is added to all ions except for the species ionic species, which in this
61 * case is the single anion species, with species index *sp*.
62 */
63 virtual doublereal gibbs_RT() const;
64 virtual doublereal cp_R() const;
65 virtual doublereal molarVolume() const;
66 virtual doublereal density() const;
67
68 //! @}
69 //! @name Properties of the Reference State of the Species in the Solution
70 //! @{
71
72 virtual doublereal gibbs_RT_ref() const;
73 virtual doublereal enthalpy_RT_ref() const;
74 virtual doublereal entropy_R_ref() const;
75 virtual doublereal cp_R_ref() const;
76 virtual doublereal molarVolume_ref() const;
77
78 //! @}
79 //! @name Mechanical Equation of State Properties
80 //! @{
81
82 virtual void setState_TP(doublereal temp, doublereal pres);
83
84 //! @}
85 //! @name Initialization of the Object
86 //! @{
87
88 void setParent(VPStandardStateTP* phase, size_t k);
89
90 void setNeutralSpeciesMultiplier(const std::string& species, double mult);
91 void setSpecialSpecies(bool special=true);
92 void setParametersFromXML(const XML_Node& speciesNode);
93 virtual void getParameters(AnyMap& eosNode) const;
94 virtual void initThermo();
95 //! @}
96
97 protected:
98 //! Pointer to the Neutral Molecule ThermoPhase object
99 shared_ptr<ThermoPhase> neutralMoleculePhase_;
100
101 std::map<std::string, double> neutralSpeciesMultipliers_;
102
103 //! Number of neutral molecule species that make up the stoichiometric
104 //! vector for this species, in terms of calculating thermodynamic functions
105 size_t numMult_;
106
107 //! Vector of species indices in the neutral molecule ThermoPhase
108 std::vector<size_t> idNeutralMoleculeVec;
109
110 //! Stoichiometric coefficient for this species using the Neutral Molecule
111 //! Species in the vector idNeutralMoleculeVec
112 vector_fp factorVec;
113
114 //! Add 2RTln2 to the entropy and Gibbs free energies for this species
115 /*!
116 * This is true if this species is not the special species
117 */
118 bool add2RTln2_;
119
120 //! Vector of length equal to the number of species in the neutral molecule phase
121 mutable vector_fp tmpNM;
122};
123}
124
125#endif
PDSS.h
Declarations for the virtual base class PDSS (pressure dependent standard state) which handles calcul...
Cantera::AnyMap
A map of string keys to values whose type can vary at runtime.
Definition: AnyMap.h:399
Cantera::PDSS_IonsFromNeutral
Derived class for pressure dependent standard states of an ideal gas species.
Definition: PDSS_IonsFromNeutral.h:36
Cantera::PDSS_IonsFromNeutral::idNeutralMoleculeVec
std::vector< size_t > idNeutralMoleculeVec
Vector of species indices in the neutral molecule ThermoPhase.
Definition: PDSS_IonsFromNeutral.h:108
Cantera::PDSS_IonsFromNeutral::getParameters
virtual void getParameters(AnyMap &eosNode) const
Store the parameters needed to reconstruct a copy of this PDSS object.
Definition: PDSS_IonsFromNeutral.cpp:71
Cantera::PDSS_IonsFromNeutral::cp_R_ref
virtual doublereal cp_R_ref() const
Return the molar heat capacity divided by R at reference pressure.
Definition: PDSS_IonsFromNeutral.cpp:215
Cantera::PDSS_IonsFromNeutral::entropy_R
virtual doublereal entropy_R() const
Return the standard state entropy divided by RT.
Definition: PDSS_IonsFromNeutral.cpp:121
Cantera::PDSS_IonsFromNeutral::PDSS_IonsFromNeutral
PDSS_IonsFromNeutral()
Default constructor.
Definition: PDSS_IonsFromNeutral.cpp:20
Cantera::PDSS_IonsFromNeutral::factorVec
vector_fp factorVec
Stoichiometric coefficient for this species using the Neutral Molecule Species in the vector idNeutra...
Definition: PDSS_IonsFromNeutral.h:112
Cantera::PDSS_IonsFromNeutral::numMult_
size_t numMult_
Number of neutral molecule species that make up the stoichiometric vector for this species,...
Definition: PDSS_IonsFromNeutral.h:105
Cantera::PDSS_IonsFromNeutral::setState_TP
virtual void setState_TP(doublereal temp, doublereal pres)
Set the internal temperature and pressure.
Definition: PDSS_IonsFromNeutral.cpp:237
Cantera::PDSS_IonsFromNeutral::enthalpy_RT
virtual doublereal enthalpy_RT() const
Return the standard state molar enthalpy divided by RT.
Definition: PDSS_IonsFromNeutral.cpp:105
Cantera::PDSS_IonsFromNeutral::gibbs_RT
virtual doublereal gibbs_RT() const
Return the molar Gibbs free energy divided by RT.
Definition: PDSS_IonsFromNeutral.cpp:135
Cantera::PDSS_IonsFromNeutral::cp_R
virtual doublereal cp_R() const
Return the molar const pressure heat capacity divided by RT.
Definition: PDSS_IonsFromNeutral.cpp:149
Cantera::PDSS_IonsFromNeutral::molarVolume_ref
virtual doublereal molarVolume_ref() const
Return the molar volume at reference pressure.
Definition: PDSS_IonsFromNeutral.cpp:226
Cantera::PDSS_IonsFromNeutral::initThermo
virtual void initThermo()
Initialization routine.
Definition: PDSS_IonsFromNeutral.cpp:83
Cantera::PDSS_IonsFromNeutral::neutralMoleculePhase_
shared_ptr< ThermoPhase > neutralMoleculePhase_
Pointer to the Neutral Molecule ThermoPhase object.
Definition: PDSS_IonsFromNeutral.h:99
Cantera::PDSS_IonsFromNeutral::molarVolume
virtual doublereal molarVolume() const
Return the molar volume at standard state.
Definition: PDSS_IonsFromNeutral.cpp:160
Cantera::PDSS_IonsFromNeutral::setParametersFromXML
void setParametersFromXML(const XML_Node &speciesNode)
Initialization routine for the PDSS object based on the speciesNode.
Definition: PDSS_IonsFromNeutral.cpp:42
Cantera::PDSS_IonsFromNeutral::enthalpy_RT_ref
virtual doublereal enthalpy_RT_ref() const
Return the molar enthalpy divided by RT at reference pressure.
Definition: PDSS_IonsFromNeutral.cpp:190
Cantera::PDSS_IonsFromNeutral::setParent
void setParent(VPStandardStateTP *phase, size_t k)
Set the parent VPStandardStateTP object of this PDSS object.
Definition: PDSS_IonsFromNeutral.cpp:27
Cantera::PDSS_IonsFromNeutral::density
virtual doublereal density() const
Return the standard state density at standard state.
Definition: PDSS_IonsFromNeutral.cpp:171
Cantera::PDSS_IonsFromNeutral::tmpNM
vector_fp tmpNM
Vector of length equal to the number of species in the neutral molecule phase.
Definition: PDSS_IonsFromNeutral.h:121
Cantera::PDSS_IonsFromNeutral::entropy_R_ref
virtual doublereal entropy_R_ref() const
Return the molar entropy divided by R at reference pressure.
Definition: PDSS_IonsFromNeutral.cpp:201
Cantera::PDSS_IonsFromNeutral::gibbs_RT_ref
virtual doublereal gibbs_RT_ref() const
Return the molar Gibbs free energy divided by RT at reference pressure.
Definition: PDSS_IonsFromNeutral.cpp:176
Cantera::PDSS_IonsFromNeutral::add2RTln2_
bool add2RTln2_
Add 2RTln2 to the entropy and Gibbs free energies for this species.
Definition: PDSS_IonsFromNeutral.h:118
Cantera::PDSS_IonsFromNeutral::intEnergy_mole
virtual doublereal intEnergy_mole() const
Return the molar internal Energy in units of J kmol-1.
Definition: PDSS_IonsFromNeutral.cpp:116
Cantera::PDSS_Nondimensional
Base class for PDSS classes which compute nondimensional properties directly.
Definition: PDSS.h:493
Cantera::VPStandardStateTP
This is a filter class for ThermoPhase that implements some preparatory steps for efficiently handlin...
Definition: VPStandardStateTP.h:44
Cantera::XML_Node
Class XML_Node is a tree-based representation of the contents of an XML file.
Definition: xml.h:103
Cantera
Namespace for the Cantera kernel.
Definition: AnyMap.cpp:557
Cantera::vector_fp
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:184