[Doc] Add C++ example showing initializaton of Kinetics and Transport
This commit is contained in:
parent
828cca3c42
commit
a2aade2419
3 changed files with 114 additions and 0 deletions
66
doc/sphinx/cxx-guide/demo1b.cpp
Normal file
66
doc/sphinx/cxx-guide/demo1b.cpp
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
#include "cantera/thermo/ThermoFactory.h"
|
||||
#include "cantera/kinetics/KineticsFactory.h"
|
||||
#include "cantera/transport/TransportFactory.h"
|
||||
|
||||
using namespace Cantera;
|
||||
|
||||
// The actual code is put into a function that can be called from the main
|
||||
// program.
|
||||
void simple_demo2()
|
||||
{
|
||||
// Create a new phase
|
||||
std::unique_ptr<ThermoPhase> gas(newPhase("gri30.cti", "gri30_mix"));
|
||||
|
||||
// List of phases participating in reactions (just one for homogeneous
|
||||
// kinetics)
|
||||
std::vector<ThermoPhase*> phases{gas.get()};
|
||||
|
||||
// Create the Kinetics object. Based on the phase definition used, this will
|
||||
// be a GasKinetics object.
|
||||
std::unique_ptr<Kinetics> kin(newKineticsMgr(gas->xml(), phases));
|
||||
|
||||
// Set an "interesting" mixture state where we will observe non-zero reacton
|
||||
// rates.
|
||||
gas->setState_TPX(500.0, 2.0*OneAtm, "CH4:1.0, O2:1.0, N2:3.76");
|
||||
gas->equilibrate("HP");
|
||||
gas->setState_TP(gas->temperature() - 100, gas->pressure());
|
||||
|
||||
// Get the net reaction rates
|
||||
vector_fp wdot(kin->nReactions());
|
||||
kin->getNetRatesOfProgress(wdot.data());
|
||||
|
||||
writelog("Net reaction rates for reactions involving CO2\n");
|
||||
size_t kCO2 = gas->speciesIndex("CO2");
|
||||
for (size_t i = 0; i < kin->nReactions(); i++) {
|
||||
if (kin->reactantStoichCoeff(kCO2, i)
|
||||
|| kin->productStoichCoeff(kCO2, i)) {
|
||||
writelog("{:3d} {:30s} {: .8e}\n",
|
||||
i, kin->reactionString(i), wdot[i]);
|
||||
}
|
||||
}
|
||||
writelog("\n");
|
||||
|
||||
// Create a Transport object. Based on the transport model specified in the
|
||||
// "gri30_mix" phase, this will be a MixGasTransport object.
|
||||
std::unique_ptr<Transport> trans(newDefaultTransportMgr(gas.get()));
|
||||
writelog("T viscosity thermal conductivity\n");
|
||||
writelog("------ ----------- --------------------\n");
|
||||
for (size_t n = 0; n < 5; n++) {
|
||||
double T = 300 + 100 * n;
|
||||
gas->setState_TP(T, gas->pressure());
|
||||
writelog("{:.1f} {:.4e} {:.4e}\n",
|
||||
T, trans->viscosity(), trans->thermalConductivity());
|
||||
}
|
||||
}
|
||||
|
||||
// the main program just calls function simple_demo2 within a 'try' block, and
|
||||
// catches exceptions that might be thrown
|
||||
int main()
|
||||
{
|
||||
try {
|
||||
simple_demo2();
|
||||
} catch (std::exception& err) {
|
||||
std::cout << err.what() << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
47
doc/sphinx/cxx-guide/factories.rst
Normal file
47
doc/sphinx/cxx-guide/factories.rst
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
Creating ThermoPhase, Kinetics, and Transport objects
|
||||
=====================================================
|
||||
|
||||
The following program demonstrates the general method for creating the following
|
||||
object types:
|
||||
|
||||
- `ThermoPhase` - represents the thermodynamic properties of mixtures containing
|
||||
one or more species)
|
||||
- `Kinetics` - represents a kinetic mechanism involving one or more phases)
|
||||
- `Transport` - computes transport properties for a `ThermoPhase`
|
||||
|
||||
This program uses "factory" functions to create derived objects objects of the
|
||||
appropriate type which are specified in the input file `gri30.cti`.
|
||||
|
||||
.. literalinclude:: demo1b.cpp
|
||||
:language: c++
|
||||
|
||||
This program produces the output below::
|
||||
|
||||
Net reaction rates for reactions involving CO2
|
||||
11 CO + O (+M) <=> CO2 (+M) 3.54150724e-08
|
||||
13 HCO + O <=> CO2 + H 1.95680014e-11
|
||||
29 CH2CO + O <=> CH2 + CO2 3.45366988e-17
|
||||
30 CO + O2 <=> CO2 + O 2.70102522e-13
|
||||
41 CO2 + 2 H <=> CO2 + H2 3.45305359e-08
|
||||
98 CO + OH <=> CO2 + H 6.46935907e-03
|
||||
119 CO + HO2 <=> CO2 + OH 1.86807529e-10
|
||||
131 CH + CO2 <=> CO + HCO 9.41365695e-14
|
||||
151 CH2(S) + CO2 <=> CH2 + CO2 3.11161382e-12
|
||||
152 CH2(S) + CO2 <=> CH2O + CO 2.85339329e-11
|
||||
225 NCO + O2 <=> CO2 + NO 3.74127282e-19
|
||||
228 NCO + NO <=> CO2 + N2 6.25672779e-14
|
||||
261 HNCO + O <=> CO2 + NH 6.84524890e-13
|
||||
267 HNCO + OH <=> CO2 + NH2 7.78871264e-10
|
||||
279 CO2 + NH <=> CO + HNO -3.30333658e-09
|
||||
281 NCO + NO2 <=> CO2 + N2O 2.14286686e-20
|
||||
282 CO2 + N <=> CO + NO 6.42658283e-10
|
||||
289 CH2 + O2 => CO2 + 2 H 1.51032319e-18
|
||||
304 CH2CHO + O => CH2 + CO2 + H 1.00331734e-19
|
||||
|
||||
T viscosity thermal conductivity
|
||||
------ ----------- --------------------
|
||||
300.0 1.6658e-05 4.2089e-02
|
||||
400.0 2.0861e-05 5.2537e-02
|
||||
500.0 2.4681e-05 6.2451e-02
|
||||
600.0 2.8218e-05 7.2157e-02
|
||||
700.0 3.1534e-05 8.1754e-02
|
||||
|
|
@ -11,3 +11,4 @@ C++ Interface User's Guide
|
|||
thermo
|
||||
simple-example
|
||||
equil-example
|
||||
factories
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue