two-point flame control c++ additions

This commit is contained in:
Christopher Neal 2023-09-15 18:14:16 -04:00 committed by Ray Speth
parent e092189740
commit 083ff451d9
6 changed files with 347 additions and 76 deletions

View File

@ -195,6 +195,16 @@ public:
//! Return location of the point where temperature is fixed
double fixedTemperatureLocation();
//! ------ One and Two-Point flame control methods
//! Set the left control point location. This is used for one or two
//! point flame control.
void setLeftControlPoint(double temperature);
//! Set the right control point location. This is used for one or two
//! point flame control.
void setRightControlPoint(double temperature);
//! -------------------
/**
* Set grid refinement criteria. If dom >= 0, then the settings
* apply only to the specified domain. If dom < 0, the settings

View File

@ -26,7 +26,8 @@ enum offset
, c_offset_V //! strain rate
, c_offset_T //! temperature
, c_offset_L //! (1/r)dP/dr
, c_offset_E //! electric field equation
, c_offset_E //! electric field
, c_offset_Uo //! oxidizer axial velocity
, c_offset_Y //! mass fractions
};
@ -254,6 +255,50 @@ public:
void fixTemperature(size_t j=npos);
//! ------- Two-Point control method
//! In this method there are control points that are designated in a domain, and
//! the value of the solution at these points is fixed. The values of the control
//! points are dictated and thus serve as a boundary condition that affects the
//! solution of the goerning equations in the 1D domain. The imposition of fixed
//! points in the domain means that the original set of governign equations' boundary
//! conditions would over-specify the problem. Thus, the boundary conditions are changed
//! to reflect the fact that the control points are serving as internal boundary conditions.
//! The current left control point temperature
double leftControlPointTemperature() const {
if (m_twoPointControl && (m_zLeft != Undef))
return m_tLeft;
}
//! Set the temperature of the left control point
void setLeftControlPointTemperature(double temperature) {
if (m_twoPointControl && (m_zLeft != Undef))
m_tLeft = temperature;
}
//! The current right control point temperature
double rightControlPointTemperature() const {
if (m_twoPointControl && (m_zRight != Undef))
return m_tRight;
}
//! Set the temperature of the right control point
void setRightControlPointTemperature(double temperature) {
if (m_twoPointControl && (m_zRight != Undef))
m_tRight = temperature;
}
//! Set the status of the two-point control
void enableTwoPointControl(bool twoPointControl) {
m_twoPointControl = twoPointControl;
}
//! get the status of the two-point control
bool twoPointControlEnabled() const {
return m_twoPointControl;
}
//! -------------------
bool doEnergy(size_t j) {
return m_do_energy[j];
}
@ -484,6 +529,25 @@ protected:
virtual void evalElectricField(double* x, double* rsd, int* diag,
double rdt, size_t jmin, size_t jmax);
/**
* Evaluate the oxidizer axial velocity equation residual.
*
* The function calculates the oxidizer axial velocity equation as
* @f[
* \frac{d\U_{o}}{dz} = 0
* @f]
*
* This equation serves as a dummy equation that is used only in the context
* of two-point flame control, and serves as the way for two interior control
* points to be specified while maintaining block tridiagonal structure. The
* default boundary condition is @f$ \U_o = 0 @f$
* at the right and zero flux at the left boundary.
*
* For argument explanation, see evalContinuity().
*/
virtual void evalUo(double* x, double* rsd, int* diag,
double rdt, size_t jmin, size_t jmax);
/**
* Update the thermodynamic properties from point j0 to point j1
* (inclusive), based on solution x.
@ -541,6 +605,10 @@ protected:
return x[index(c_offset_L, j)];
}
double Uo(const double* x, size_t j) const {
return x[index(c_offset_Uo, j)];
}
double Y(const double* x, size_t k, size_t j) const {
return x[index(c_offset_Y + k, j)];
}
@ -686,6 +754,9 @@ protected:
//! to `j1`, based on solution `x`.
virtual void updateTransport(double* x, size_t j0, size_t j1);
//! Flags for two-point flame control
bool m_twoPointControl = false;
public:
//! Location of the point where temperature is fixed
double m_zfixed = Undef;
@ -693,6 +764,22 @@ public:
//! Temperature at the point used to fix the flame location
double m_tfixed = -1.0;
//! --- One and two-point flame control values
//! Location of the left control point
double m_zLeft = Undef;
//! Temperature of the left control point
double m_tLeft = Undef;
//! Location of the right control point
double m_zRight = Undef;
//! Temperature of the right control point
double m_tRight = Undef;
//! -------------
private:
vector<double> m_ybar;
};

View File

@ -207,18 +207,20 @@ void Inlet1D::eval(size_t jg, double* xg, double* rg,
// if the flow is a freely-propagating flame, mdot is not specified.
// Set mdot equal to rho*u, and also set lambda to zero.
m_mdot = m_flow->density(0) * xb[c_offset_U];
rb[c_offset_L] = xb[c_offset_L];
} else if (m_flow->isStrained()) {
// The flow domain sets this to -rho*u. Add mdot to specify the mass
// flow rate
rb[c_offset_L] += m_mdot;
if (m_flow->twoPointControlEnabled()) {
m_mdot = m_flow->density(0)*xb[c_offset_U];
} else {
// The flow domain sets this to -rho*u. Add mdot to specify the mass
// flow rate
rb[c_offset_L] += m_mdot;
}
// spreading rate. The flow domain sets this to V(0),
// so for finite spreading rate subtract m_V0.
rb[c_offset_V] -= m_V0;
} else {
rb[c_offset_U] = m_flow->density(0) * xb[c_offset_U] - m_mdot;
rb[c_offset_L] = xb[c_offset_L];
}
// add the convective term to the species residual equations
@ -232,13 +234,25 @@ void Inlet1D::eval(size_t jg, double* xg, double* rg,
// right inlet (should only be used for counter-flow flames)
// Array elements corresponding to the last point in the flow domain
double* rb = rg + loc() - m_flow->nComponents();
double* xb = xg + loc() - m_flow->nComponents();
size_t last_index = m_flow->nPoints() - 1;
rb[c_offset_V] -= m_V0;
if (m_flow->doEnergy(m_flow->nPoints() - 1)) {
rb[c_offset_T] -= m_temp; // T
} else {
rb[c_offset_T] -= m_flow->T_fixed(m_flow->nPoints() - 1);
}
rb[c_offset_U] += m_mdot; // u
// For point control adjustments
if (m_flow->twoPointControlEnabled()) {
m_mdot = -(m_flow->density(last_index) * xb[c_offset_Uo]);
rb[c_offset_U] += m_mdot; // u
} else {
rb[c_offset_U] += m_mdot;
rb[c_offset_Uo] += m_mdot/m_flow->density(last_index);
}
for (size_t k = 0; k < m_nsp; k++) {
if (k != m_flow_left->rightExcessSpecies()) {
rb[c_offset_Y+k] += m_mdot * m_yin[k];

View File

@ -724,6 +724,80 @@ double Sim1D::fixedTemperatureLocation()
return z_fixed;
}
void Sim1D::setLeftControlPoint(double temperature)
{
double epsilon = 1e-3; // Precision threshold for being 'equal' to a temperature
for (size_t n = 0; n < nDomains(); n++) {
Domain1D& d = domain(n);
// Skip if the domain type doesn't match
if (d.domainType() != "axisymmetric-flow") {
continue;
}
StFlow* d_axis = dynamic_cast<StFlow*>(&domain(n));
size_t np = d_axis->nPoints();
// Skip if none of the control is enabled
if (!d_axis->twoPointControlEnabled()) {
continue;
}
for (size_t m = 0; m < np-1; m++) {
// Check if the absolute difference between the two temperatures is less than epsilon
if (std::abs(value(n,2,m) - temperature) < epsilon) {
d_axis->m_zLeft = d_axis->grid(m);
d_axis->m_tLeft = value(n,2,m);
return;
}
if ((value(n,2,m) - temperature) * (value(n,2,m+1) - temperature) < 0.0) {
d_axis->m_zLeft = d_axis->grid(m+1);
d_axis->m_tLeft = value(n,2,m+1);
return;
}
}
}
}
void Sim1D::setRightControlPoint(double temperature)
{
double epsilon = 1e-3; // Precision threshold for being 'equal' to a temperature
for (size_t n = 0; n < nDomains(); n++) {
Domain1D& d = domain(n);
// Skip if the domain type doesn't match
if (d.domainType() != "axisymmetric-flow") {
continue;
}
StFlow* d_axis = dynamic_cast<StFlow*>(&domain(n));
size_t np = d_axis->nPoints();
// Skip if two-point control is not enabled
if (!d_axis->twoPointControlEnabled()) {
continue;
}
for (size_t m = np-1; m > 0; m--) {
// Check if the absolute difference between the two temperatures is less than epsilon
if (std::abs(value(n,2,m) - temperature) < epsilon) {
d_axis->m_zRight = d_axis->grid(m);
d_axis->m_tRight = value(n,2,m);
return;
}
if ((value(n,2,m) - temperature) * (value(n,2,m-1) - temperature) < 0.0) {
d_axis->m_zRight = d_axis->grid(m-1);
d_axis->m_tRight = value(n,2,m-1);
return;
}
}
}
}
void Sim1D::setRefineCriteria(int dom, double ratio,
double slope, double curve, double prune)
{

View File

@ -61,11 +61,11 @@ StFlow::StFlow(ThermoPhase* ph, size_t nsp, size_t points) :
//-------------- default solution bounds --------------------
setBounds(c_offset_U, -1e20, 1e20); // no bounds on u
setBounds(c_offset_V, -1e20, 1e20); // V
setBounds(c_offset_V, -1e20, 1e20); // no bounds on V
setBounds(c_offset_T, 200.0, 2*m_thermo->maxTemp()); // temperature bounds
setBounds(c_offset_L, -1e20, 1e20); // lambda should be negative
setBounds(c_offset_E, -1e20, 1e20); // no bounds for inactive component
setBounds(c_offset_E, -1e20, 1e20); // no bounds on electric field
setBounds(c_offset_Uo, -1e20, 1e20); // no bounds on Uo
// mass fraction bounds
for (size_t k = 0; k < m_nsp; k++) {
setBounds(c_offset_Y+k, -1.0e-7, 1.0e5);
@ -76,6 +76,7 @@ StFlow::StFlow(ThermoPhase* ph, size_t nsp, size_t points) :
m_refiner->setActive(c_offset_V, false);
m_refiner->setActive(c_offset_T, false);
m_refiner->setActive(c_offset_L, false);
m_refiner->setActive(c_offset_Uo, false);
vector<double> gr;
for (size_t ng = 0; ng < m_points; ng++) {
@ -339,6 +340,7 @@ void StFlow::eval(size_t jGlobal, double* xGlobal, double* rsdGlobal,
evalEnergy(x, rsd, diag, rdt, jmin, jmax);
evalLambda(x, rsd, diag, rdt, jmin, jmax);
evalElectricField(x, rsd, diag, rdt, jmin, jmax);
evalUo(x, rsd, diag, rdt, jmin, jmax);
evalSpecies(x, rsd, diag, rdt, jmin, jmax);
}
@ -512,9 +514,13 @@ void StFlow::evalLambda(double* x, double* rsd, int* diag,
}
return;
}
if (jmin == 0) { // left boundary
rsd[index(c_offset_L, jmin)] = -rho_u(x, jmin);
if (m_twoPointControl) {
rsd[index(c_offset_L, jmin)] = lambda(x,1) - lambda(x,0);
} else {
rsd[index(c_offset_L, jmin)] = -rho_u(x, jmin);
}
}
if (jmax == m_points - 1) { // right boundary
@ -525,8 +531,19 @@ void StFlow::evalLambda(double* x, double* rsd, int* diag,
// j0 and j1 are constrained to only interior points
size_t j0 = std::max<size_t>(jmin, 1);
size_t j1 = std::min(jmax, m_points - 2);
double epsilon = 1e-5; // Precision threshold for being 'equal' to a coordinate
for (size_t j = j0; j <= j1; j++) { // interior points
rsd[index(c_offset_L, j)] = lambda(x, j) - lambda(x, j - 1);
if (m_twoPointControl) {
if (std::abs(grid(j) - m_zLeft) < epsilon ) {
rsd[index(c_offset_L, j)] = T(x,j) - m_tLeft;
} else if (grid(j) > m_zLeft) {
rsd[index(c_offset_L, j)] = lambda(x,j) - lambda(x,j-1);
} else if (grid(j) < m_zLeft) {
rsd[index(c_offset_L, j)] = lambda(x,j+1) - lambda(x,j);
}
} else {
rsd[index(c_offset_L, j)] = lambda(x,j) - lambda(x,j-1);
}
}
}
@ -568,6 +585,50 @@ void StFlow::evalEnergy(double* x, double* rsd, int* diag,
}
}
void StFlow::evalUo(double* x, double* rsd, int* diag,
double rdt, size_t jmin, size_t jmax)
{
if (!m_twoPointControl) { // disable this equation
for (size_t j = jmin; j <= jmax; j++) {
rsd[index(c_offset_Uo, j)] = Uo(x, j);
diag[index(c_offset_Uo, j)] = 0;
}
return;
}
if (jmin == 0) { // left boundary
rsd[index(c_offset_Uo,jmin)] = Uo(x,jmin+1) - Uo(x,jmin);
}
if (jmax == m_points - 1) { // right boundary
if(m_twoPointControl) {
rsd[index(c_offset_Uo, jmax)] = Uo(x,jmax) - Uo(x,jmax-1);
} else {
rsd[index(c_offset_Uo, jmax)] = Uo(x,jmax);
}
diag[index(c_offset_Uo, jmax)] = 0;
}
// j0 and j1 are constrained to only interior points
size_t j0 = std::max<size_t>(jmin, 1);
size_t j1 = std::min(jmax, m_points - 2);
double epsilon = 1e-5; // Precision threshold for being 'equal' to a coordinate
for (size_t j = j0; j <= j1; j++) { // interior points
if (m_twoPointControl) {
if (std::abs(grid(j) - m_zRight) < epsilon) {
rsd[index(c_offset_Uo, j)] = T(x,j) - m_tRight;
} else if (grid(j) > m_zRight) {
rsd[index(c_offset_Uo, j)] = Uo(x,j) - Uo(x,j-1);
} else if (grid(j) < m_zRight) {
rsd[index(c_offset_Uo, j)] = Uo(x,j+1) - Uo(x,j);
}
} else {
rsd[index(c_offset_Uo, j)] = Uo(x,j+1) - Uo(x,j);
}
diag[index(c_offset_Uo, j)] = 0;
}
}
void StFlow::evalSpecies(double* x, double* rsd, int* diag,
double rdt, size_t jmin, size_t jmax)
{
@ -740,6 +801,8 @@ string StFlow::componentName(size_t n) const
return "lambda";
case c_offset_E:
return "eField";
case c_offset_Uo:
return "Uo";
default:
if (n >= c_offset_Y && n < (c_offset_Y + m_nsp)) {
return m_thermo->speciesName(n - c_offset_Y);
@ -761,6 +824,8 @@ size_t StFlow::componentIndex(const string& name) const
return c_offset_L;
} else if (name == "eField") {
return c_offset_E;
} else if (name == "Uo") {
return c_offset_Uo;
} else {
for (size_t n=c_offset_Y; n<m_nsp+c_offset_Y; n++) {
if (componentName(n)==name) {
@ -834,6 +899,15 @@ AnyMap StFlow::getMeta() const
state["fixed-point"]["temperature"] = m_tfixed;
}
// // One and two-point control meta data
// if (m_twoPointControl) {
// state["point-control"]["type"] = "two-point";
// state["point-control"]["left-location"] = m_zLeft;
// state["point-control"]["right-location"] = m_zRight;
// state["point-control"]["left-temperature"] = m_tLeft;
// state["point-control"]["right-temperature"] = m_tRight;
// }
return state;
}
@ -960,6 +1034,18 @@ void StFlow::setMeta(const AnyMap& state)
m_zfixed = state["fixed-point"]["location"].asDouble();
m_tfixed = state["fixed-point"]["temperature"].asDouble();
}
/* // Two-point control meta data
if (state.hasKey("point-control")) {
const AnyMap& pc = state["point-control"].as<AnyMap>();
if (pc["type"] == "two-point") {
m_twoPointControl = true;
m_zLeft = pc["left-location"].asDouble();
m_zRight = pc["right-location"].asDouble();
m_tLeft = pc["left-temperature"].asDouble();
m_tRight = pc["right-temperature"].asDouble();
}
} */
}
void StFlow::solveEnergyEqn(size_t j)

View File

@ -27,114 +27,114 @@ phi = 0.9, Tad = 2133.7925650475245
0.1 2.139 0 2134 0 0
-------------------------------------------------------------------------------
z H2 H O O2 OH
z Uo H2 H O O2
-------------------------------------------------------------------------------
0 0 0 0 0.2213 0
0.02 0 0 0 0.2213 0
0.04 1.696e-05 1.065e-06 3.44e-05 0.1713 0.0004119
0.06 5.087e-05 3.194e-06 0.0001032 0.07133 0.001236
0.08 6.782e-05 4.259e-06 0.0001376 0.02135 0.001648
0.1 6.782e-05 4.259e-06 0.0001376 0.02135 0.001648
0 0 0 0 0 0.2213
0.02 0 0 0 0 0.2213
0.04 0 1.696e-05 1.065e-06 3.44e-05 0.1713
0.06 0 5.087e-05 3.194e-06 0.0001032 0.07133
0.08 0 6.782e-05 4.259e-06 0.0001376 0.02135
0.1 0 6.782e-05 4.259e-06 0.0001376 0.02135
-------------------------------------------------------------------------------
z H2O HO2 H2O2 C CH
z OH H2O HO2 H2O2 C
-------------------------------------------------------------------------------
0 0 0 0 0 0
0.02 0 0 0 0 0
0.04 0.02765 2.96e-07 2.011e-08 4.454e-20 4.963e-21
0.06 0.08296 8.88e-07 6.033e-08 1.336e-19 1.489e-20
0.08 0.1106 1.184e-06 8.044e-08 1.782e-19 1.985e-20
0.1 0.1106 1.184e-06 8.044e-08 1.782e-19 1.985e-20
0.04 0.0004119 0.02765 2.96e-07 2.011e-08 4.454e-20
0.06 0.001236 0.08296 8.88e-07 6.033e-08 1.336e-19
0.08 0.001648 0.1106 1.184e-06 8.044e-08 1.782e-19
0.1 0.001648 0.1106 1.184e-06 8.044e-08 1.782e-19
-------------------------------------------------------------------------------
z CH2 CH2(S) CH3 CH4 CO
z CH CH2 CH2(S) CH3 CH4
-------------------------------------------------------------------------------
0 0 0 0 0.04993 0
0.02 0 0 0 0.04993 0
0.04 1.299e-20 7.228e-22 7.945e-20 0.03744 0.000587
0.06 3.897e-20 2.168e-21 2.384e-19 0.01248 0.001761
0.08 5.196e-20 2.891e-21 3.178e-19 1.401e-19 0.002348
0.1 5.196e-20 2.891e-21 3.178e-19 1.401e-19 0.002348
0 0 0 0 0 0.04993
0.02 0 0 0 0 0.04993
0.04 4.963e-21 1.299e-20 7.228e-22 7.945e-20 0.03744
0.06 1.489e-20 3.897e-20 2.168e-21 2.384e-19 0.01248
0.08 1.985e-20 5.196e-20 2.891e-21 3.178e-19 1.401e-19
0.1 1.985e-20 5.196e-20 2.891e-21 3.178e-19 1.401e-19
-------------------------------------------------------------------------------
z CO2 HCO CH2O CH2OH CH3O
z CO CO2 HCO CH2O CH2OH
-------------------------------------------------------------------------------
0 0 0 0 0 0
0.02 0 0 0 0 0
0.04 0.03332 1.924e-11 2.395e-13 3.147e-19 4.683e-21
0.06 0.09995 5.772e-11 7.185e-13 9.441e-19 1.405e-20
0.08 0.1333 7.696e-11 9.58e-13 1.259e-18 1.873e-20
0.1 0.1333 7.696e-11 9.58e-13 1.259e-18 1.873e-20
0.04 0.000587 0.03332 1.924e-11 2.395e-13 3.147e-19
0.06 0.001761 0.09995 5.772e-11 7.185e-13 9.441e-19
0.08 0.002348 0.1333 7.696e-11 9.58e-13 1.259e-18
0.1 0.002348 0.1333 7.696e-11 9.58e-13 1.259e-18
-------------------------------------------------------------------------------
z CH3OH C2H C2H2 C2H3 C2H4
z CH3O CH3OH C2H C2H2 C2H3
-------------------------------------------------------------------------------
0 0 0 0 0 0
0.02 0 0 0 0 0
0.04 2.19e-20 1.096e-27 3.177e-25 1.094e-30 1.075e-30
0.06 6.569e-20 3.287e-27 9.531e-25 3.283e-30 3.224e-30
0.08 8.758e-20 4.383e-27 1.271e-24 4.377e-30 4.298e-30
0.1 8.758e-20 4.383e-27 1.271e-24 4.377e-30 4.298e-30
0.04 4.683e-21 2.19e-20 1.096e-27 3.177e-25 1.094e-30
0.06 1.405e-20 6.569e-20 3.287e-27 9.531e-25 3.283e-30
0.08 1.873e-20 8.758e-20 4.383e-27 1.271e-24 4.377e-30
0.1 1.873e-20 8.758e-20 4.383e-27 1.271e-24 4.377e-30
-------------------------------------------------------------------------------
z C2H5 C2H6 HCCO CH2CO HCCOH
z C2H4 C2H5 C2H6 HCCO CH2CO
-------------------------------------------------------------------------------
0 0 0 0 0 0
0.02 0 0 0 0 0
0.04 5.292e-36 3.24e-37 1.308e-22 1.521e-22 1.095e-25
0.06 1.588e-35 9.719e-37 3.923e-22 4.563e-22 3.285e-25
0.08 2.117e-35 1.296e-36 5.23e-22 6.084e-22 4.381e-25
0.1 2.117e-35 1.296e-36 5.23e-22 6.084e-22 4.381e-25
0.04 1.075e-30 5.292e-36 3.24e-37 1.308e-22 1.521e-22
0.06 3.224e-30 1.588e-35 9.719e-37 3.923e-22 4.563e-22
0.08 4.298e-30 2.117e-35 1.296e-36 5.23e-22 6.084e-22
0.1 4.298e-30 2.117e-35 1.296e-36 5.23e-22 6.084e-22
-------------------------------------------------------------------------------
z N NH NH2 NH3 NNH
z HCCOH N NH NH2 NH3
-------------------------------------------------------------------------------
0 0 0 0 0 0
0.02 0 0 0 0 0
0.04 5.944e-10 7.145e-11 2.291e-11 6.197e-11 5.73e-11
0.06 1.783e-09 2.144e-10 6.873e-11 1.859e-10 1.719e-10
0.08 2.378e-09 2.858e-10 9.164e-11 2.479e-10 2.292e-10
0.1 2.378e-09 2.858e-10 9.164e-11 2.479e-10 2.292e-10
0.04 1.095e-25 5.944e-10 7.145e-11 2.291e-11 6.197e-11
0.06 3.285e-25 1.783e-09 2.144e-10 6.873e-11 1.859e-10
0.08 4.381e-25 2.378e-09 2.858e-10 9.164e-11 2.479e-10
0.1 4.381e-25 2.378e-09 2.858e-10 9.164e-11 2.479e-10
-------------------------------------------------------------------------------
z NO NO2 N2O HNO CN
z NNH NO NO2 N2O HNO
-------------------------------------------------------------------------------
0 0 0 0 0 0
0.02 0 0 0 0 0
0.04 0.000833 5.323e-07 6.55e-08 7.525e-09 5.744e-16
0.06 0.002499 1.597e-06 1.965e-07 2.257e-08 1.723e-15
0.08 0.003332 2.129e-06 2.62e-07 3.01e-08 2.297e-15
0.1 0.003332 2.129e-06 2.62e-07 3.01e-08 2.297e-15
0.04 5.73e-11 0.000833 5.323e-07 6.55e-08 7.525e-09
0.06 1.719e-10 0.002499 1.597e-06 1.965e-07 2.257e-08
0.08 2.292e-10 0.003332 2.129e-06 2.62e-07 3.01e-08
0.1 2.292e-10 0.003332 2.129e-06 2.62e-07 3.01e-08
-------------------------------------------------------------------------------
z HCN H2CN HCNN HCNO HOCN
z CN HCN H2CN HCNN HCNO
-------------------------------------------------------------------------------
0 0 0 0 0 0
0.02 0 0 0 0 0
0.04 1.756e-13 2.02e-20 8.356e-24 2.661e-18 4.599e-14
0.06 5.268e-13 6.061e-20 2.507e-23 7.983e-18 1.38e-13
0.08 7.024e-13 8.082e-20 3.342e-23 1.064e-17 1.84e-13
0.1 7.024e-13 8.082e-20 3.342e-23 1.064e-17 1.84e-13
0.04 5.744e-16 1.756e-13 2.02e-20 8.356e-24 2.661e-18
0.06 1.723e-15 5.268e-13 6.061e-20 2.507e-23 7.983e-18
0.08 2.297e-15 7.024e-13 8.082e-20 3.342e-23 1.064e-17
0.1 2.297e-15 7.024e-13 8.082e-20 3.342e-23 1.064e-17
-------------------------------------------------------------------------------
z HNCO NCO N2 AR C3H7
z HOCN HNCO NCO N2 AR
-------------------------------------------------------------------------------
0 0 0 0.7288 0 0
0.02 0 0 0.7288 0 0
0.04 1.988e-11 8.476e-13 0.7284 0 9.35e-53
0.06 5.963e-11 2.543e-12 0.7276 0 2.805e-52
0.08 7.95e-11 3.391e-12 0.7272 0 3.74e-52
0.1 7.95e-11 3.391e-12 0.7272 0 3.74e-52
0 0 0 0 0.7288 0
0.02 0 0 0 0.7288 0
0.04 4.599e-14 1.988e-11 8.476e-13 0.7284 0
0.06 1.38e-13 5.963e-11 2.543e-12 0.7276 0
0.08 1.84e-13 7.95e-11 3.391e-12 0.7272 0
0.1 1.84e-13 7.95e-11 3.391e-12 0.7272 0
-------------------------------------------------------------------------------
z C3H8 CH2CHO CH3CHO
z C3H7 C3H8 CH2CHO CH3CHO
-------------------------------------------------------------------------------
0 0 0 0
0.02 0 0 0
0.04 5.365e-54 2.809e-28 4.525e-29
0.06 1.61e-53 8.426e-28 1.358e-28
0.08 2.146e-53 1.123e-27 1.81e-28
0.1 2.146e-53 1.123e-27 1.81e-28
0 0 0 0 0
0.02 0 0 0 0
0.04 9.35e-53 5.365e-54 2.809e-28 4.525e-29
0.06 2.805e-52 1.61e-53 8.426e-28 1.358e-28
0.08 3.74e-52 2.146e-53 1.123e-27 1.81e-28
0.1 3.74e-52 2.146e-53 1.123e-27 1.81e-28
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> outlet <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<