123 cout << endl <<
"ERROR, probType UNKNOWN" << endl;
131 for(
int k=0; k<
v.size(); k++)
132 varMap[
v.at(k)->var_name] =
v.at(k);
135 for(
int k=0; k<
v.size(); k++)
136 if(
v.at(k)->L_transported)
169 v.push_back(
new dv_pos(
this,
"pos",
false,
true));
170 v.push_back(
new dv_posf(
this,
"posf",
false,
true));
171 v.push_back(
new dv_uvw(
this,
"uvel",
true,
true));
172 v.push_back(
new dv_uvw(
this,
"vvel",
true,
true));
173 v.push_back(
new dv_uvw(
this,
"wvel",
true,
true));
174 v.push_back(
new dv_rho(
this,
"rho",
false,
false));
175 v.push_back(
new dv_dvisc(
this,
"dvisc",
false,
false));
177 v.push_back(
new dv_aDL(
this,
"aDL",
false,
false));
212 for(
int k=0; k<
v.size(); k++)
213 v.at(k)->setDvFromRegion(i1,i2);
236 if(abs(position-
posf->
d.at(0)) < 1.0E-14)
238 if(abs(position-
posf->
d.at(
ngrd)) < 1.0E-14)
246 if(position < posf->d.at(0) || position >
posf->
d.at(
ngrd)) {
247 *
io->
ostrm <<
"\ndbg = " << dbg << endl;
249 *
io->
ostrm << setprecision(14);
250 *
io->
ostrm <<
"\n ERROR odt_grid::domainPositionToIndex position < posf->d.at(0) or > posf->d.at(ngrd) \n"
251 " and at processor's id---> " <<
proc.
myid
252 <<
" Value of position is---> "<<position <<
" and values of posf->d.at(0) and posf->d.at(ngrd) are "
253 <<
posf->
d.at(0)<<
" and "<<
posf->
d.at(
ngrd) <<
" respectively "<< endl;
261 if(
posf->
d.at(ipos+1) > position) {
262 for(i=ipos+1; i>=0; i--) {
263 if(
posf->
d.at(i) <= position) {
264 if(position ==
posf->
d.at(i)) {
277 for(i=ipos+1; i<=
ngrdf; i++) {
278 if(
posf->
d.at(i) >= position) {
279 if(position ==
posf->
d.at(i)) {
291 *
io->
ostrm <<
"\n\n******** ERROR IN odt_grid::domainPositionToIndex "
292 << position <<
'\t' <<
posf->
d.at(0) <<
'\t' <<
posf->
d.at(
ngrd) <<
'\t' << endl << endl;
306 double cycleDistance =
posf->
d.at(icycle+1)-
posf->
d.at(0);
308 for(
int k=0; k<
v.size(); k++) {
309 if (
v.at(k)->var_name==
"pos" ||
v.at(k)->var_name==
"posf")
311 v.at(k)->d.insert(
v.at(k)->d.end(),
v.at(k)->d.begin(),
v.at(k)->d.begin()+icycle+1);
312 v.at(k)->d.erase(
v.at(k)->d.begin(),
v.at(k)->d.begin()+icycle+1);
318 for(
int i=1; i<=icycle+1; i++)
325 return cycleDistance;
338 double xend =
posf->
d.at(
ngrd) - backCycleDistance;
343 vector<double> interPos(3);
344 if(abs(
posf->
d.at(icycle) - xend) > 1.0e-15) {
345 interPos.at(0) =
posf->
d.at(icycle);
346 interPos.at(1) = xend;
347 interPos.at(0) =
posf->
d.at(icycle+1);
354 int nmove =
ngrd-icycle+1;
356 for(
int k=0; k<
v.size(); k++) {
357 if (
v.at(k)->var_name==
"pos" ||
v.at(k)->var_name==
"posf")
359 v.at(k)->d.insert(
v.at(k)->d.begin(),
v.at(k)->d.begin()+icycle,
v.at(k)->d.end());
360 v.at(k)->d.erase(
v.at(k)->d.begin()+icycle+nmove,
v.at(k)->d.end() );
365 double xstart_orig =
posf->
d.at(0);
369 for(
int i=0; i<nmove; i++)
int ngrd
number of grid cells
domain * eddl
pointer to eddyline object
domaincase * domc
domaincase class: set specific vars...
IdealGasPhase * gas
pointer to cantera thermochemistry object (reaction rates, Cp, etc.)
int domainPositionToIndex(double position, const bool LowSide, int dbg)
int nTrans
number of transported variables on the domain.
void init(inputoutput *p_io, meshManager *p_mesher, streams *p_strm, IdealGasPhase *p_gas, Transport *p_tran, micromixer *p_mimx, eddy *p_ed, domain *p_eddl, solver *p_solv, randomGenerator *p_rand, bool LisEddyDomain=false)
Transport * tran
pointer to cantera transport object (viscosity, diffusivity, etc.)
dv * posf
access as: posf->d[i], or posf->var_name, etc.
domain(domain *p_domn, param *p_pram)
double cyclePeriodicDomain(const int icycle)
map< string, dv * > varMap
void setDomainFromRegion(const int i1, const int i2)
dv * pos
pointers to gas properties
int ngrdf
number of grid cell faces = ngrd+1
void backCyclePeriodicDomain(const double backCycleDistance)
meshManager * mesher
pointer to mesh manager object
inputoutput * io
pointer to input/output object
eddy * ed
pointer to object for eddy operations
micromixer * mimx
pointer to micromixer for diffusion, reaction, domain evolution.
streams * strm
pointer to gas stream properties
vector< dv * > v
All domain variables are stored in here.
solver * solv
pointer to solver object
domain * domn
(for one domain to point to another (eddl))
param * pram
pointer to the parameters object
Class implementing child domaincase_odt_channel of parent domaincase object.
virtual void init(domain *p_domn)
vector< double > d
the data
virtual void setVar(const int ipt=-1)
void init(domain *p_domn, domain *p_eddl)
void splitCell(const int isplt, const int nsplt, const vector< double > &cellFaces)
Class implementing micromixer object.
void init(domain *p_domn)
string probType
problem type: CHANNEL, CHANNEL_SCALAR, JETMIXL_RXN, COUETTE
double trst
restart time (from restart file), default is 0.0;
int ngrd0
initial grid points
bool Lrestart
true to restart from file, else false
bool LdoDL
flag to do the DL energy from the DL instability
void init(domain *p_domn)
virtual void init(domain *p_domn)
Header file for class domain.
Header file for class domaincase_odt_MFjetFlame.
Header file for class domaincase_odt_RT.
Header file for class domaincase_odt_channel.
Header file for class domaincase_odt_channelScalar.
Header file for class domaincase_odt_coldJet.
Header file for class domaincase_odt_coldPropaneJet.
Header file for class domaincase_odt_isothermalWall.
Header file for class domaincase_odt_jetFlame.
Header file for class domaincase_odt_jetMixlRxn.
Header file for class dv.
Header file for class dv_aDL.
Header file for class dv_dvisc.
Header file for class dv_pos.
Header file for class dv_posf.
Header file for class dv_rho.
Header file for class dv_sca.
Header file for class dv_uvw.
Header file for class processor.