33 bool LincludeRhsMix = (
domn->
pram->
Lsolver==
"SEMI-IMPLICIT") ?
true :
false;
90 cout <<
"\nError micromixer::setNominalStepSize: velMin = " << velMin <<
": neg or 0" << endl;
148 for(
int k=0; k<
domn->
v.size(); k++)
149 if(
domn->
v.at(k)->L_transported) {
151 domn->
v.at(k)->getRhsSrc();
154 for(
int k=0; k<
domn->
v.size(); k++)
155 if(
domn->
v.at(k)->L_transported)
157 domn->
v.at(k)->d.at(i) =
domn->
v.at(k)->d.at(i) +
dt*(
domn->
v.at(k)->rhsMix.at(i) +
domn->
v.at(k)->rhsSrc.at(i));
190 for(
int k=0; k<
domn->
v.size(); k++)
191 if(
domn->
v.at(k)->L_transported)
231 for(
int k=0; k<
domn->
v.size(); k++)
232 if(
domn->
v.at(k)->L_transported)
235 for(
int k=0; k<
domn->
v.size(); k++)
236 if(
domn->
v.at(k)->L_transported)
238 domn->
v.at(k)->d.at(i) =
domn->
v.at(k)->d.at(i) + 0.5*
dt*
domn->
v.at(k)->rhsMix.at(i);
251 for(
int k=0; k<
domn->
v.size(); k++)
252 if(
domn->
v.at(k)->L_transported)
253 domn->
v.at(k)->getRhsSrc();
268 for(
int k=0; k<
domn->
v.size(); k++)
269 if(
domn->
v.at(k)->L_transported)
272 for(
int k=0; k<
domn->
v.size(); k++)
273 if(
domn->
v.at(k)->L_transported)
275 domn->
v.at(k)->d.at(i) =
domn->
v.at(k)->d.at(i) + 0.5*
dt*
domn->
v.at(k)->rhsMix.at(i);
293 for (
int i=1, im=0; i<
domn->
ngrd; i++, im++)
294 gf.at(i) = 2.0 / (
dx.at(im) +
dx.at(i));
296 gf.at(0) = 2.0 /
dx.at(0);
323 cout <<
"\nError micromixer::updateGrid: vBClo is <= 0.0 for suction/blowing case." << endl;
333 for(
int k=0; k <
domn->
v.size(); k++)
404 if(doWhat ==
"init") {
414 else if(doWhat ==
"set DL_1") {
422 else if(doWhat ==
"set DL_2") {
433 else if(doWhat ==
"calc a") {
474 cout << setprecision(13);
475 cout << endl <<
"check: " << io <<
" " << mom;
void init(domain *p_domn, const bool p_LincludeRhsMix)
void integrateCell(int p_iC, double tres)
int ngrd
number of grid cells
domaincase * domc
domaincase class: set specific vars...
dv * posf
access as: posf->d[i], or posf->var_name, etc.
dv * pos
pointers to gas properties
int ngrdf
number of grid cell faces = ngrd+1
meshManager * mesher
pointer to mesh manager object
inputoutput * io
pointer to input/output object
vector< dv * > v
All domain variables are stored in here.
param * pram
pointer to the parameters object
vector< double > inlet_cell_dv_props
list of all dv properties for inserted inlet cell for channel suction/blowing case
virtual void setCaseSpecificVars()
vector< double > d
the data
virtual void setVar(const int ipt=-1)
void setGridDx(const domain *line, vector< double > &dx)
void setGridFromDxc(const vector< double > &dxc2)
void merge2cells(const int imrg, const bool LconstVolume=false)
void splitCell(const int isplt, const int nsplt, const vector< double > &cellFaces)
void setGridDxc(const domain *line, vector< double > &dxc, double C)
void adaptGrid(int iLower, int iUpper)
vector< double > xDL_2
for DL instability: = "new" cell center positions
virtual void advanceOdt(const double p_tstart, const double p_tend, const int iLevel=-1)
void advanceOdtSingleStep_SemiImplicit()
vector< double > uDL_2
for DL instability: new velocity
double dtStepNominal
nominal step size
vector< double > dx
abs(\Delta(x))
vector< double > xDL_1
for DL instability: = "old" cell center positions
void advanceOdtSingleStep_StrangSplit()
vector< double > gf
grid factor for derivatives: (df/dx) = gf * (f - f)
bool LforceSetNominalStepSize
used in updateGrid when splitting cells to indicate to reset timestep size later
void check_balance(int io)
virtual void setGridDxcDx()
sets the dxc array
vector< double > dxc
abs(\Delta(x^c))
void init(domain *p_domn)
vector< double > posDL_old
for DL instability: = "new" cell center positions
double dt
actual step size (shortened based on output or tend)
void updateGrid()
enforce the continuity condition: (e.g., rho*dx = const).
virtual bool adaptGridIfNeeded()
expansion or contraction --> adapt
int nsteps
total number of timesteps taken during simulation
vector< double > uDL_1
for DL instability: old velocity
domain * domn
pointer to domain object
cvodeDriver * cvode
pointer to cvode driver object for implicit ODE integration (stiff)
virtual void setGf()
sets the gf array
virtual void set_oldrho_or_rhov()
record old rho (or rho*u) for continuity
void advanceOdtSingleStep_Explicit()
void setStepSize()
set a local dt for interruptions (dump or tend)
void do_DL(string doWhat)
virtual void setNominalStepSize()
sets a nominal dt for the whole period
vector< double > oldrho_or_rhov
store the old density for continuity
int cCoord
1 = planar, 2 = cylindrical, 3 = spherical
double diffCFL
multiplies min diffusion timestep
double dxmin
min grid spacing: = dxmin / domain length
double vBChi
Dirichlet velocity boundary condition.
bool Lspatial
spatial formulation if true
double vBClo
Dirichlet velocity boundary condition.
string Lsolver
EXPLICIT, SEMI-IMPLICIT, or STRANG.
bool LdoDL
flag to do the DL energy from the DL instability
string bcType
OUTFLOW, PERIODIC, WALL, WALL_OUT.
Header file for class domain.
Header file for class micromixer.