Cantera
Install
User Guide
Examples
Reference
Develop
Community
4.0.0a2
Toggle main menu visibility
Loading...
Searching...
No Matches
ThermoFactory.h
Go to the documentation of this file.
1
/**
2
* @file ThermoFactory.h
3
* Headers for the factory class that can create known ThermoPhase objects
4
* (see @ref thermoprops and class @link Cantera::ThermoFactory ThermoFactory@endlink).
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
#ifndef THERMO_FACTORY_H
11
#define THERMO_FACTORY_H
12
13
#include "
ThermoPhase.h
"
14
#include "
cantera/base/FactoryBase.h
"
15
16
namespace
Cantera
17
{
18
19
/**
20
* @addtogroup thermoprops
21
*/
22
//! @{
23
24
25
//! Factory class for thermodynamic property managers.
26
/*!
27
* This class keeps a list of the known ThermoPhase classes, and is
28
* used to create new instances of these classes.
29
*/
30
class
ThermoFactory
:
public
Factory
<ThermoPhase>
31
{
32
public
:
33
//! Static function that creates a static instance of the factory.
34
static
ThermoFactory
*
factory
();
35
36
//! delete the static instance of this factory
37
void
deleteFactory
()
override
;
38
39
private
:
40
//! static member of a single instance
41
static
ThermoFactory
*
s_factory
;
42
43
//! Private constructors prevents usage
44
ThermoFactory
();
45
46
//! Decl for locking mutex for thermo factory singleton
47
static
std::mutex
thermo_mutex
;
48
};
49
50
//! Create a new ThermoPhase instance.
51
/*!
52
* @param model String to look up the model against
53
* @returns a shared pointer to a new ThermoPhase object of the type specified. Throws a
54
* CanteraError if the named model is not registered with ThermoFactory.
55
* @since New in %Cantera 3.0. Replaces newThermo
56
*/
57
shared_ptr<ThermoPhase>
newThermoModel
(
const
string
& model);
58
59
//! Create a new ThermoPhase object and initialize it
60
/*!
61
* @param phaseNode The node containing the phase definition (that is, thermo
62
* model, list of species, and initial state)
63
* @param rootNode The root node of the tree containing the phase definition,
64
* which will be used as the default location from which to read species
65
* definitions.
66
* @since New in %Cantera 3.0.
67
*/
68
shared_ptr<ThermoPhase>
newThermo
(
const
AnyMap
& phaseNode,
69
const
AnyMap
& rootNode=
AnyMap
());
70
71
//! Create and Initialize a ThermoPhase object from an input file.
72
/*!
73
* This function uses AnyMap::fromYamlFile() to read the input file, newThermo()
74
* to create an empty ThermoPhase of the appropriate type, and setupPhase() to
75
* initialize the phase.
76
*
77
* @param infile name of the input file
78
* @param id name (id) of the phase in the file.
79
* If this is blank, the first phase in the file is used.
80
* @returns an initialized ThermoPhase object.
81
* @since Changed in %Cantera 3.0. Prior to %Cantera 3.0, the function used a single
82
* argument specifying the thermo model, which is now deprecated.
83
*/
84
shared_ptr<ThermoPhase>
newThermo
(
const
string
& infile,
const
string
&
id
=
""
);
85
86
//! Initialize a ThermoPhase object
87
/*!
88
* @param phase The ThermoPhase object to be initialized
89
* @param phaseNode The node containing the phase definition (that is, thermo
90
* model, list of species, and initial state)
91
* @param rootNode The root node of the tree containing the phase definition,
92
* which will be used as the default location from which to read species
93
* definitions.
94
*/
95
void
setupPhase
(
ThermoPhase
& phase,
const
AnyMap
& phaseNode,
96
const
AnyMap
& rootNode=
AnyMap
());
97
98
//! @}
99
100
}
101
102
#endif
FactoryBase.h
File contains the FactoryBase class declarations.
ThermoPhase.h
Header file for class ThermoPhase, the base class for phases with thermodynamic properties,...
Cantera::AnyMap
A map of string keys to values whose type can vary at runtime.
Definition
AnyMap.h:431
Cantera::Factory
Factory class that supports registering functions to create objects.
Definition
FactoryBase.h:69
Cantera::ThermoFactory::deleteFactory
void deleteFactory() override
delete the static instance of this factory
Definition
ThermoFactory.cpp:106
Cantera::ThermoFactory::ThermoFactory
ThermoFactory()
Private constructors prevents usage.
Definition
ThermoFactory.cpp:47
Cantera::ThermoFactory::factory
static ThermoFactory * factory()
Static function that creates a static instance of the factory.
Definition
ThermoFactory.cpp:97
Cantera::ThermoFactory::thermo_mutex
static std::mutex thermo_mutex
Decl for locking mutex for thermo factory singleton.
Definition
ThermoFactory.h:47
Cantera::ThermoFactory::s_factory
static ThermoFactory * s_factory
static member of a single instance
Definition
ThermoFactory.h:41
Cantera::ThermoPhase
Base class for a phase with thermodynamic properties.
Definition
ThermoPhase.h:391
Cantera::newThermo
shared_ptr< ThermoPhase > newThermo(const AnyMap &phaseNode, const AnyMap &rootNode)
Create a new ThermoPhase object and initialize it.
Definition
ThermoFactory.cpp:119
Cantera::setupPhase
void setupPhase(ThermoPhase &thermo, const AnyMap &phaseNode, const AnyMap &rootNode)
Initialize a ThermoPhase object.
Definition
ThermoFactory.cpp:201
Cantera::newThermoModel
shared_ptr< ThermoPhase > newThermoModel(const string &model)
Create a new ThermoPhase instance.
Definition
ThermoFactory.cpp:113
Cantera
Namespace for the Cantera kernel.
Definition
AnyMap.cpp:595
include
cantera
thermo
ThermoFactory.h
Generated by
1.17.0