3#include "cantera/base/Solution.h"
4#include "cantera/thermo.h"
5#include "cantera/kinetics.h"
6#include "cantera/transport.h"
8#include "rad_planck_mean.h"
12#include "sootHeaders.h"
14#include <highfive/highfive.hpp>
40 std::vector<std::vector<double> >
y;
41 std::vector<double>
T;
45 std::vector<std::vector<double> >
ystore;
57 std::vector<double>
x;
58 std::vector<double>
dx;
59 std::vector<double>
fl;
60 std::vector<double>
fr;
67 std::vector<double>
F0;
70 std::shared_ptr<Cantera::ThermoPhase>
gas;
71 std::shared_ptr<Cantera::Kinetics>
kin;
72 std::shared_ptr<Cantera::Transport>
trn;
74 std::shared_ptr<streams>
strm;
87 std::vector<std::vector<double> >
flux_y;
92 std::vector<double>
chi;
99 std::shared_ptr<linearInterp>
LI;
106 std::shared_ptr<soot::sootModel>
SM;
111 std::shared_ptr<HighFive::File>
fh5;
115 void setIC(
const std::string icType,
const std::string fname=
"");
120 void writeFileHdf5(
const std::string gname,
const std::string timeType);
123 void setChi(
const double _chi0);
124 void solveUnsteady(
const double nTauRun,
const int nsteps,
const bool doWriteTime=
true,
125 const double Tmin=0,
const double Tmax=0);
126 int Func(
const double *vars,
double *F);
127 int rhsf(
const double *vars,
double *dvarsdt);
129 void setQrad(std::vector<double> &Q);
130 void setTprof(
const std::vector<double> &_Tprof_h,
const std::vector<double> &_Tprof_T) {
136 const std::vector<double> &v,
137 std::vector<double> &d2vdx2);
139 const std::vector<double> &v,
140 std::vector<double> &dvdx);
142 size_t I(
size_t i,
size_t k) {
return i*
nsp + k; }
143 size_t Ia(
size_t i,
size_t k) {
return i*
nvar + k; }
147 ignis(
const bool _isPremixed,
const bool _doEnergyEqn,
const bool _isFlamelet,
const bool _doSoot,
148 const size_t _ngrd,
const double _L,
const double _P,
149 std::shared_ptr<Cantera::Solution> csol, std::string _radType,
150 const std::vector<double> &_yLbc,
const std::vector<double> &_yRbc,
151 const double _TLbc,
const double _TRbc,
152 std::shared_ptr<soot::sootModel> _SM,
153 std::shared_ptr<soot::state> _SMstate);
std::vector< double > dx
grid spacing (m), nonuniform is fine
std::vector< double > T
temperature (K)
size_t nsp
number of gas species
std::vector< double > F0
for homotopy approaches
std::vector< double > Tprof_T
temperature profile T values
bool doRadiation
radiation flag
std::vector< std::vector< double > > flux_soot
species fluxes: [I(igrid, ksoot)]
double hRbc
h boundary values: left and right (as needed)
void setTprof(const std::vector< double > &_Tprof_h, const std::vector< double > &_Tprof_T)
size_t ngrd
number of interior grid points
double TRbc
T boundary values: left and right (as needed)
double hscale
scaling value for enthalpy (for solvers)
std::vector< double > hspRbc
species enthalpies on right boundary
size_t Ia(size_t i, size_t k)
std::vector< double > awts_sur
awts for surroundings
std::shared_ptr< Cantera::Kinetics > kin
Cantera kinetics object.
std::vector< double > fl
fractions for interpolation
std::vector< double > Tprof_h
temperature profile position (h is height above burner (m))
double s
homotopy variable
std::shared_ptr< Cantera::ThermoPhase > gas
Cantera thermo object.
void writeFile(const std::string fname)
bool doLe1
true if doing unity Lewis numbers (default false)
std::vector< double > yRbc
y boundary values: left and right (as needed)
double cpRbc
cp boundary values: left and right (as needed)
bool isFlamelet
true for laminar flamelet (mixture fraction coordinate)
std::vector< double > sootScales
scaling value for soot variables (for solvers)
std::shared_ptr< streams > strm
streams object (mixture fraction, etc.)
std::vector< double > fr
fractions for interpolation
bool doEnergyEqn
for premixed flames: can solve energy equation or set T profile
double Tscale
scaling value for temperature (for solvers)
size_t nvar
number of transported variables at each grid point
void setDerivative2(const double vL, const double vR, const std::vector< double > &v, std::vector< double > &d2vdx2)
int rhsf_flamelet(const double *vars, double *dvarsdt)
std::vector< std::vector< double > > sootstore
stored soot variables
double dT
delta T increment for unsteady cases
void writeFileHdf5(const std::string gname, const std::string timeType)
std::vector< double > x
grid position values (m)
std::shared_ptr< HighFive::File > fh5
hdf5 file pointer
std::vector< std::vector< double > > flux_y
species fluxes: [I(igrid, ksp)] I(igrid,ksp) maps 2D onto 1D
int Func(const double *vars, double *F)
std::shared_ptr< Cantera::Transport > trn
Cantera transport object.
std::shared_ptr< soot::sootModel > SM
soot model
std::vector< double > hspLbc
species enthalpies on left boundary
std::vector< double > yLbc
size_t I(size_t i, size_t k)
double P
system pressure, uniform (Pa)
std::shared_ptr< linearInterp > LI
interpolator for specified temperature profiles
std::vector< std::vector< double > > y
mass fractions: y[igrid][isp]
std::vector< std::vector< double > > ystore
stored mass fractions
void setDerivative(const double vL, const double vR, const std::vector< double > &v, std::vector< double > &dvdx)
std::vector< double > kabs_sur
kabs for surroundings
std::shared_ptr< rad > radProps
radiation object
double Ttarget
for unsteady cases, run until this max T instead of for a given time
std::vector< double > flux_h
species fluxes: [igrid]
void setChi(const double _chi0)
double mflux
premixed flame mass flux (kg/m2*s)
std::shared_ptr< soot::state > SMstate
holds state variables (gas and soot) for soot model
std::vector< std::vector< double > > sootvars
soot moments or sections; sootvars[igrid][isoot]
int isave
file counter for save during unsteady cases
void setIC(const std::string icType, const std::string fname="")
void setQrad(std::vector< double > &Q)
std::vector< double > vars0
for homotopy approaches
std::vector< double > chi
dissipation rate profile
std::vector< double > Tstore
stored temperature
int rhsf(const double *vars, double *dvarsdt)
void solveUnsteady(const double nTauRun, const int nsteps, const bool doWriteTime=true, const double Tmin=0, const double Tmax=0)
bool isPremixed
true of the case is a premixed flame, (only left boundary condition, constant mass flux through domai...
size_t nsoot
number of soot variables
std::string radType
radiation model name
double Pstore
stored system pressure (for initializing from stored state)