Cantera 2.6.0

Nasa9PolyMultiTempRegion.h
Go to the documentation of this file.
1/**
2 * @file Nasa9PolyMultiTempRegion.h
3 * Header for a single-species standard state object derived
4 * from \link Cantera::SpeciesThermoInterpType
5 * SpeciesThermoInterpType\endlink based
6 * on the NASA 9 coefficient temperature polynomial form
7 * applied to multiple temperature regions
8 * (see \ref spthermo and class \link Cantera::Nasa9PolyMultiTempRegion Nasa9PolyMultiTempRegion\endlink).
9 *
10 * This parameterization has multiple NASA temperature regions.
11 */
12
13// This file is part of Cantera. See License.txt in the top-level directory or
14// at https://cantera.org/license.txt for license and copyright information.
15
16#ifndef CT_NASA9POLYMULTITEMPREGION_H
17#define CT_NASA9POLYMULTITEMPREGION_H
18
19#include "cantera/thermo/Nasa9Poly1.h"
20
21 namespace Cantera
22{
23//! The NASA 9 polynomial parameterization for a single species encompassing
24//! multiple temperature regions.
25/*!
26 * The parameterization used in each temperature range is described in the
27 * documentation for class Nasa9Poly1.
28 *
29 * These NASA representations may have multiple temperature regions through the
30 * use of this Nasa9PolyMultiTempRegion object, which uses multiple copies of
31 * the Nasa9Poly1 object to handle multiple temperature regions.
32 *
33 * @ingroup spthermo
34 * @see Nasa9Poly1
35 */
36 class Nasa9PolyMultiTempRegion : public SpeciesThermoInterpType
37{
38 public:
39 Nasa9PolyMultiTempRegion();
40
41 //! Constructor with all input data
42 /*!
43 * @param regionPts Vector of pointers to Nasa9Poly1 objects. These objects
44 * all refer to the temperature regions for the same species. The vector
45 * must be in increasing temperature region format. Together they
46 * represent the reference temperature parameterization for a single
47 * species.
48 *
49 * Note, after the constructor, we will own the underlying Nasa9Poly1
50 * objects and be responsible for owning them.
51 */
52 Nasa9PolyMultiTempRegion(std::vector<Nasa9Poly1*> &regionPts);
53
54 //! Constructor with all input data
55 /*!
56 * @param tlow Minimum temperature
57 * @param thigh Maximum temperature
58 * @param pref reference pressure (Pa).
59 * @param coeffs Vector of coefficients used to set the parameters for the
60 * standard state. The vector has 1 + 11*`nzones` elements
61 * in the following order:
62 * - `coeffs[0]`: Number of zones (`nzones`)
63 * - `coeffs[1 + 11*zone]`: minimum temperature within zone
64 * - `coeffs[2 + 11*zone]`: maximum temperature within zone
65 * - `coeffs[3:11 + 11*zone]`: 9 coefficient parameterization
66 * where `zone` runs from zero to `nzones`-1.
67 */
68 Nasa9PolyMultiTempRegion(double tlow, double thigh, double pref,
69 const double* coeffs);
70
71 //! Set the array of polynomial coefficients for each temperature region
72 /*!
73 * @param regions Map where each key is the minimum temperature for a
74 * region and each value is the array of 9 polynomial
75 * coefficients for that region.
76 */
77 void setParameters(const std::map<double, vector_fp>& regions);
78
79 virtual ~Nasa9PolyMultiTempRegion();
80
81 virtual int reportType() const;
82
83 virtual size_t temperaturePolySize() const { return 7; }
84 virtual void updateTemperaturePoly(double T, double* T_poly) const;
85
86 //! @copydoc Nasa9Poly1::updateProperties
87 virtual void updateProperties(const doublereal* tt,
88 doublereal* cp_R, doublereal* h_RT,
89 doublereal* s_R) const;
90
91 virtual void updatePropertiesTemp(const doublereal temp,
92 doublereal* cp_R, doublereal* h_RT,
93 doublereal* s_R) const;
94
95 virtual size_t nCoeffs() const;
96
97 //! This utility function reports back the type of parameterization and all
98 //! of the parameters for the species, index.
99 /*!
100 * All parameters are output variables
101 *
102 * @param n Species index
103 * @param type Integer type of the standard type
104 * @param tlow output - Minimum temperature
105 * @param thigh output - Maximum temperature
106 * @param pref output - reference pressure (Pa).
107 * @param coeffs Vector of coefficients used to set the parameters for
108 * the standard state. There are 1 + 11*nzones coefficients.
109 * coeffs[0] is equal to nTempZones.
110 * index = 1
111 * for each zone:
112 * coeffs[index] = minTempZone
113 * coeffs[index+1] = maxTempZone
114 * coeffs[index+2+i] from i =0,9 are the coefficients themselves
115 */
116 virtual void reportParameters(size_t& n, int& type,
117 doublereal& tlow, doublereal& thigh,
118 doublereal& pref,
119 doublereal* const coeffs) const;
120
121 virtual void getParameters(AnyMap& thermo) const;
122
123 protected:
124 //! Lower boundaries of each temperature regions
125 vector_fp m_lowerTempBounds;
126
127 //! Individual temperature region objects
128 std::vector<std::unique_ptr<Nasa9Poly1>> m_regionPts;
129
130 //! current region
131 mutable int m_currRegion;
132};
133
134}
135#endif
Nasa9Poly1.h
Header for a single-species standard state object derived from SpeciesThermoInterpType based on the N...
Cantera::AnyMap
A map of string keys to values whose type can vary at runtime.
Definition: AnyMap.h:399
Cantera::Nasa9PolyMultiTempRegion
The NASA 9 polynomial parameterization for a single species encompassing multiple temperature regions...
Definition: Nasa9PolyMultiTempRegion.h:37
Cantera::Nasa9PolyMultiTempRegion::reportType
virtual int reportType() const
Returns an integer representing the type of parameterization.
Definition: Nasa9PolyMultiTempRegion.cpp:112
Cantera::Nasa9PolyMultiTempRegion::m_lowerTempBounds
vector_fp m_lowerTempBounds
Lower boundaries of each temperature regions.
Definition: Nasa9PolyMultiTempRegion.h:125
Cantera::Nasa9PolyMultiTempRegion::setParameters
void setParameters(const std::map< double, vector_fp > &regions)
Set the array of polynomial coefficients for each temperature region.
Definition: Nasa9PolyMultiTempRegion.cpp:90
Cantera::Nasa9PolyMultiTempRegion::getParameters
virtual void getParameters(AnyMap &thermo) const
Store the parameters of the species thermo object such that an identical species thermo object could ...
Definition: Nasa9PolyMultiTempRegion.cpp:192
Cantera::Nasa9PolyMultiTempRegion::updatePropertiesTemp
virtual void updatePropertiesTemp(const doublereal temp, doublereal *cp_R, doublereal *h_RT, doublereal *s_R) const
Compute the reference-state property of one species.
Definition: Nasa9PolyMultiTempRegion.cpp:144
Cantera::Nasa9PolyMultiTempRegion::nCoeffs
virtual size_t nCoeffs() const
This utility function returns the number of coefficients for a given type of species parameterization...
Definition: Nasa9PolyMultiTempRegion.cpp:160
Cantera::Nasa9PolyMultiTempRegion::reportParameters
virtual void reportParameters(size_t &n, int &type, doublereal &tlow, doublereal &thigh, doublereal &pref, doublereal *const coeffs) const
This utility function reports back the type of parameterization and all of the parameters for the spe...
Definition: Nasa9PolyMultiTempRegion.cpp:165
Cantera::Nasa9PolyMultiTempRegion::m_regionPts
std::vector< std::unique_ptr< Nasa9Poly1 > > m_regionPts
Individual temperature region objects.
Definition: Nasa9PolyMultiTempRegion.h:128
Cantera::Nasa9PolyMultiTempRegion::m_currRegion
int m_currRegion
current region
Definition: Nasa9PolyMultiTempRegion.h:131
Cantera::Nasa9PolyMultiTempRegion::updateTemperaturePoly
virtual void updateTemperaturePoly(double T, double *T_poly) const
Given the temperature T, compute the terms of the temperature polynomial T_poly.
Definition: Nasa9PolyMultiTempRegion.cpp:117
Cantera::Nasa9PolyMultiTempRegion::updateProperties
virtual void updateProperties(const doublereal *tt, doublereal *cp_R, doublereal *h_RT, doublereal *s_R) const
Update the properties for this species, given a temperature polynomial.
Definition: Nasa9PolyMultiTempRegion.cpp:128
Cantera::Nasa9PolyMultiTempRegion::temperaturePolySize
virtual size_t temperaturePolySize() const
Number of terms in the temperature polynomial for this parameterization.
Definition: Nasa9PolyMultiTempRegion.h:83
Cantera::SpeciesThermoInterpType
Abstract Base class for the thermodynamic manager for an individual species' reference state.
Definition: SpeciesThermoInterpType.h:113
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