Cantera
Install
User Guide
Examples
Reference
Develop
Community
4.0.0a2
Toggle main menu visibility
Loading...
Searching...
No Matches
CastelaVibrationalRelaxationRate.cpp
Go to the documentation of this file.
1
//! @file CastelaVibrationalRelaxationRate.cpp
2
//! @since New in %Cantera 4.0
3
4
// This file is part of Cantera. See License.txt in the top-level directory or
5
// at https://cantera.org/license.txt for license and copyright information.
6
7
#include "
cantera/kinetics/CastelaVibrationalRelaxationRate.h
"
8
9
namespace
Cantera
10
{
11
12
namespace
13
{
14
15
const
string
WhereSetParameters =
16
"CastelaVibrationalRelaxationRate::setParameters"
;
17
18
}
// namespace
19
20
CastelaVibrationalRelaxationRate::
21
CastelaVibrationalRelaxationRate(
22
const
AnyMap
& node,
const
UnitStack
& rate_units)
23
{
24
setParameters
(node, rate_units);
25
}
26
27
CastelaVibrationalRelaxationRate::
28
CastelaVibrationalRelaxationRate(
double
a,
double
b,
29
double
referencePressure)
30
{
31
if
(referencePressure <= 0.0) {
32
throw
CanteraError(
33
"CastelaVibrationalRelaxationRate"
,
34
"Reference pressure must be positive."
);
35
}
36
37
m_A
=
GasConstant
/ referencePressure;
38
m_b
= 1.0;
39
m_C0
= 18.42 + a * b;
40
m_C13
= -a;
41
m_Cm
= 0.0;
42
m_m
= 2.0 / 3.0;
43
m_Cn
= 0.0;
44
m_n
= 1.0;
45
46
m_valid
=
true
;
47
m_castela_a
= a;
48
m_castela_b
= b;
49
m_referencePressure
= referencePressure;
50
}
51
52
void
CastelaVibrationalRelaxationRate::setParameters
(
53
const
AnyMap
& node,
const
UnitStack
& rate_units)
54
{
55
VibrationalRelaxationRate::setParameters
(node, rate_units);
56
57
const
auto
& rateMap = node[
"rate-constant"
].as<
AnyMap
>();
58
59
requireKeys(rateMap,
type
(), WhereSetParameters,{
"a"
,
"b"
});
60
61
forbidKeys(rateMap,
type
(), WhereSetParameters,
62
{
"A"
,
"n"
,
"C0"
,
"C13"
,
"C23"
,
"Cn"
,
63
"m"
,
"Cm"
,
"Ea"
});
64
65
m_castela_a
= rateMap[
"a"
].asDouble();
66
67
m_castela_b
= rateMap[
"b"
].asDouble();
68
69
if
(rateMap.hasKey(
"reference-pressure"
)) {
70
m_referencePressure
=
71
rateMap.convert(
72
"reference-pressure"
,
"Pa"
);
73
}
else
{
74
m_referencePressure
=
OneAtm
;
75
}
76
77
if
(
m_referencePressure
<= 0.0) {
78
throw
InputFileError
(
79
WhereSetParameters,
80
node,
81
"Castela reference-pressure must be positive."
);
82
}
83
84
// Castela relaxation time:
85
//
86
// tau_k = p0 / p_k
87
// * exp[a_k * (T^(-1/3) - b_k) - 18.42]
88
//
89
// Equivalent rate:
90
//
91
// k_k(T) = R T / p0
92
// * exp[18.42 + a_k b_k
93
// - a_k T^(-1/3)]
94
//
95
// Generic mapping:
96
//
97
// A = R / p0
98
// b = 1
99
// C0 = 18.42 + a_k b_k
100
// C13 = -a_k
101
// Cm = 0
102
// Cn = 0
103
104
m_A
=
GasConstant
/
m_referencePressure
;
105
106
m_b
= 1.0;
107
108
m_C0
= 18.42 +
m_castela_a
*
m_castela_b
;
109
110
m_C13
= -
m_castela_a
;
111
112
m_Cm
= 0.0;
113
m_m
= 2.0 / 3.0;
114
115
m_Cn
= 0.0;
116
m_n
= 1.0;
117
118
m_valid
=
true
;
119
}
120
121
void
CastelaVibrationalRelaxationRate::getRateParameters
(
AnyMap
& rateNode)
const
122
{
123
rateNode[
"a"
] =
m_castela_a
;
124
125
rateNode[
"b"
] =
m_castela_b
;
126
127
rateNode[
"reference-pressure"
].setQuantity(
128
m_referencePressure
,
"Pa"
);
129
}
130
131
}
// namespace Cantera
CastelaVibrationalRelaxationRate.h
Castela vibrational relaxation reaction rate.
Cantera::AnyMap
A map of string keys to values whose type can vary at runtime.
Definition
AnyMap.h:431
Cantera::CastelaVibrationalRelaxationRate::m_castela_b
double m_castela_b
Castela coefficient b.
Definition
CastelaVibrationalRelaxationRate.h:64
Cantera::CastelaVibrationalRelaxationRate::m_castela_a
double m_castela_a
Castela coefficient a.
Definition
CastelaVibrationalRelaxationRate.h:61
Cantera::CastelaVibrationalRelaxationRate::setParameters
void setParameters(const AnyMap &node, const UnitStack &rate_units) override
Set parameters.
Definition
CastelaVibrationalRelaxationRate.cpp:52
Cantera::CastelaVibrationalRelaxationRate::getRateParameters
void getRateParameters(AnyMap &rateNode) const override
Store the model-specific coefficients in the rate-constant node.
Definition
CastelaVibrationalRelaxationRate.cpp:121
Cantera::CastelaVibrationalRelaxationRate::type
const string type() const override
String identifying reaction rate specialization.
Definition
CastelaVibrationalRelaxationRate.h:54
Cantera::CastelaVibrationalRelaxationRate::m_referencePressure
double m_referencePressure
Reference pressure.
Definition
CastelaVibrationalRelaxationRate.h:67
Cantera::InputFileError
Error thrown for problems processing information contained in an AnyMap or AnyValue.
Definition
AnyMap.h:749
Cantera::ReactionRate::m_valid
bool m_valid
Flag indicating whether reaction rate is set up correctly.
Definition
ReactionRate.h:242
Cantera::VibrationalRelaxationRate::m_n
double m_n
Temperature exponent used by the Cn term.
Definition
VibrationalRelaxationRate.h:180
Cantera::VibrationalRelaxationRate::setParameters
void setParameters(const AnyMap &node, const UnitStack &rate_units) override
Set parameters.
Definition
VibrationalRelaxationRate.cpp:50
Cantera::VibrationalRelaxationRate::m_Cn
double m_Cn
Coefficient multiplying .
Definition
VibrationalRelaxationRate.h:177
Cantera::VibrationalRelaxationRate::m_Cm
double m_Cm
Coefficient multiplying .
Definition
VibrationalRelaxationRate.h:171
Cantera::VibrationalRelaxationRate::m_A
double m_A
Pre-exponential constant for the reaction rate.
Definition
VibrationalRelaxationRate.h:159
Cantera::VibrationalRelaxationRate::m_C13
double m_C13
Coefficient multiplying .
Definition
VibrationalRelaxationRate.h:168
Cantera::VibrationalRelaxationRate::m_b
double m_b
Temperature exponent for the reaction rate.
Definition
VibrationalRelaxationRate.h:162
Cantera::VibrationalRelaxationRate::m_m
double m_m
Temperature exponent used by the Cm term.
Definition
VibrationalRelaxationRate.h:174
Cantera::VibrationalRelaxationRate::m_C0
double m_C0
Dimensionless constant in the exponential.
Definition
VibrationalRelaxationRate.h:165
Cantera::OneAtm
const double OneAtm
One atmosphere [Pa].
Definition
ct_defs.h:99
Cantera::GasConstant
const double GasConstant
Universal Gas Constant [J/kmol/K].
Definition
ct_defs.h:123
Cantera
Namespace for the Cantera kernel.
Definition
AnyMap.cpp:595
Cantera::UnitStack
Unit aggregation utility.
Definition
Units.h:105
src
kinetics
CastelaVibrationalRelaxationRate.cpp
Generated by
1.17.0