A container class for chemically-reacting solutions. More...
#include <Solution.h>
A container class for chemically-reacting solutions.
The Solution class collects all objects needed to describe a chemically-reacting solution. Instances can be created to represent any type of solution – a mixture of gases, a liquid solution, or a solid solution, for example.
Solution objects only define a small number of methods of their own, and are provided so that a single object can be used to access thermodynamic, kinetic, and transport properties of a solution:
The most common way to instantiate Solution objects is by using a phase definition, species and reactions defined in an input file:
Definition at line 43 of file Solution.h.
Public Member Functions | |
Solution (const Solution &)=delete | |
Solution & | operator= (const Solution &)=delete |
shared_ptr< Solution > | clone (const vector< shared_ptr< Solution > > &adjacent={}, bool withKinetics=true, bool withTransport=true) const |
Create a new Solution object with cloned ThermoPhase, Kinetics, and Transport objects that use the same species definitions, thermodynamic parameters, and reactions as this one. | |
string | name () const |
Return the name of this Solution object. | |
void | setName (const string &name) |
Set the name of this Solution object. | |
virtual void | setThermo (shared_ptr< ThermoPhase > thermo) |
Set the ThermoPhase object. | |
virtual void | setKinetics (shared_ptr< Kinetics > kinetics) |
Set the Kinetics object. | |
virtual void | setTransport (shared_ptr< Transport > transport) |
Set the Transport object directly. | |
string | transportModel () |
Retrieve transport model name. | |
void | setTransportModel (const string &model="default") |
Set the Transport object by name. | |
shared_ptr< ThermoPhase > | thermo () |
Accessor for the ThermoPhase pointer. | |
shared_ptr< Kinetics > | kinetics () |
Accessor for the Kinetics pointer. | |
shared_ptr< Transport > | transport () |
Accessor for the Transport pointer. | |
void | addAdjacent (shared_ptr< Solution > adjacent) |
Add a phase adjacent to this phase. | |
shared_ptr< Solution > | adjacent (size_t i) |
Get the Solution object for an adjacent phase by index. | |
shared_ptr< Solution > | adjacent (const string &name) |
Get the Solution object for an adjacent phase by name. | |
size_t | nAdjacent () const |
Get the number of adjacent phases. | |
string | adjacentName (size_t i) const |
Get the name of an adjacent phase by index. | |
AnyMap | parameters (bool withInput=false) const |
const AnyMap & | header () const |
Access input data associated with header definition. | |
AnyMap & | header () |
const string | source () const |
Retrieve source used for object creation; usually an input file name. | |
void | setSource (const string &source) |
Overwrite source (only required if object is not created using newSolution) | |
void | holdExternalHandle (const string &name, shared_ptr< ExternalHandle > handle) |
Store a handle to a wrapper for this Solution object from an external language interface (for example, a Python Solution object) | |
shared_ptr< ExternalHandle > | getExternalHandle (const string &name) const |
Get the handle for a wrapper for this Solution object from an external language interface. | |
void | registerChangedCallback (void *id, const function< void()> &callback) |
Register a function to be called if any of the Solution's thermo, kinetics, or transport objects is replaced. | |
void | removeChangedCallback (void *id) |
Remove the callback function associated with the specified object. | |
Static Public Member Functions | |
static shared_ptr< Solution > | create () |
Create an empty Solution object. | |
Protected Attributes | |
shared_ptr< ThermoPhase > | m_thermo |
ThermoPhase manager. | |
shared_ptr< Kinetics > | m_kinetics |
Kinetics manager. | |
shared_ptr< Transport > | m_transport |
Transport manager. | |
vector< shared_ptr< Solution > > | m_adjacent |
Adjacent phases, for access by index. | |
map< string, shared_ptr< Solution > > | m_adjacentByName |
Adjacent phases, for access by name. | |
AnyMap | m_header |
Additional input fields; usually from a YAML input file. | |
map< string, shared_ptr< ExternalHandle > > | m_externalHandles |
Wrappers for this Solution object in extension languages, for evaluation of user-defined reaction rates. | |
map< void *, function< void()> > | m_changeCallbacks |
Callback functions that are invoked when the therm, kinetics, or transport members of the Solution are replaced. | |
|
inlinestatic |
Create an empty Solution object.
Definition at line 54 of file Solution.h.
shared_ptr< Solution > clone | ( | const vector< shared_ptr< Solution > > & | adjacent = {} , |
bool | withKinetics = true , |
||
bool | withTransport = true |
||
) | const |
Create a new Solution object with cloned ThermoPhase, Kinetics, and Transport objects that use the same species definitions, thermodynamic parameters, and reactions as this one.
adjacent | For surface phases, an optional list of new adjacent phases to link to the InterfaceKinetics object. Any adjacent phases not provided will have their ThermoPhase model automatically cloned. |
withKinetics | Flag indicating whether to clone the Kinetics object associated with this phase. If false , the cloned Solution will not include a kinetics manager. |
withTransport | Flag indicating whether to clone the Transport object associated with this phase. If false , the cloned Solution will not include a transport property manager. |
Definition at line 25 of file Solution.cpp.
string name | ( | ) | const |
Return the name of this Solution object.
Definition at line 66 of file Solution.cpp.
void setName | ( | const string & | name | ) |
Set the name of this Solution object.
Definition at line 75 of file Solution.cpp.
|
virtual |
|
virtual |
|
virtual |
Set the Transport object directly.
Definition at line 114 of file Solution.cpp.
string transportModel | ( | ) |
void setTransportModel | ( | const string & | model = "default" | ) |
Set the Transport object by name.
model | name of transport model; if omitted, the default model is used |
Definition at line 124 of file Solution.cpp.
|
inline |
Accessor for the ThermoPhase pointer.
Definition at line 99 of file Solution.h.
|
inline |
Accessor for the Kinetics pointer.
Definition at line 104 of file Solution.h.
|
inline |
Accessor for the Transport pointer.
Definition at line 109 of file Solution.h.
void addAdjacent | ( | shared_ptr< Solution > | adjacent | ) |
Add a phase adjacent to this phase.
Usually this means a higher-dimensional phase that participates in reactions in this phase.
Definition at line 135 of file Solution.cpp.
|
inline |
Get the Solution object for an adjacent phase by index.
Definition at line 118 of file Solution.h.
shared_ptr< Solution > adjacent | ( | const string & | name | ) |
Get the Solution object for an adjacent phase by name.
Definition at line 154 of file Solution.cpp.
|
inline |
Get the number of adjacent phases.
Definition at line 126 of file Solution.h.
|
inline |
Get the name of an adjacent phase by index.
Definition at line 131 of file Solution.h.
AnyMap parameters | ( | bool | withInput = false | ) | const |
Definition at line 164 of file Solution.cpp.
const AnyMap & header | ( | ) | const |
Access input data associated with header definition.
Definition at line 197 of file Solution.cpp.
AnyMap & header | ( | ) |
Definition at line 202 of file Solution.cpp.
const string source | ( | ) | const |
Retrieve source used for object creation; usually an input file name.
Definition at line 207 of file Solution.cpp.
void setSource | ( | const string & | source | ) |
Overwrite source (only required if object is not created using newSolution)
Definition at line 212 of file Solution.cpp.
void holdExternalHandle | ( | const string & | name, |
shared_ptr< ExternalHandle > | handle | ||
) |
Store a handle to a wrapper for this Solution object from an external language interface (for example, a Python Solution object)
Definition at line 217 of file Solution.cpp.
shared_ptr< ExternalHandle > getExternalHandle | ( | const string & | name | ) | const |
Get the handle for a wrapper for this Solution object from an external language interface.
Returns a null pointer if the requested handle does not exist.
Definition at line 223 of file Solution.cpp.
void registerChangedCallback | ( | void * | id, |
const function< void()> & | callback | ||
) |
Register a function to be called if any of the Solution's thermo, kinetics, or transport objects is replaced.
id | A unique ID corresponding to the object affected by the callback. Typically, this is a pointer to an object that also holds a reference to the Solution object. |
callback | The callback function to be called after any component of the Solution is replaced. When the callback becomes invalid (for example, the corresponding object is being deleted, the removeChangedCallback() method must be invoked. |
Definition at line 232 of file Solution.cpp.
void removeChangedCallback | ( | void * | id | ) |
Remove the callback function associated with the specified object.
Definition at line 237 of file Solution.cpp.
|
protected |
ThermoPhase manager.
Definition at line 177 of file Solution.h.
|
protected |
Kinetics manager.
Definition at line 178 of file Solution.h.
|
protected |
Transport manager.
Definition at line 179 of file Solution.h.
|
protected |
Adjacent phases, for access by index.
Definition at line 182 of file Solution.h.
|
protected |
Adjacent phases, for access by name.
Definition at line 185 of file Solution.h.
|
protected |
Additional input fields; usually from a YAML input file.
Definition at line 187 of file Solution.h.
|
protected |
Wrappers for this Solution object in extension languages, for evaluation of user-defined reaction rates.
Definition at line 191 of file Solution.h.
|
protected |
Callback functions that are invoked when the therm, kinetics, or transport members of the Solution are replaced.
Definition at line 195 of file Solution.h.