ODT
Loading...
Searching...
No Matches
domaincase_odt_coldPropaneJet.cc
Go to the documentation of this file.
1
7#include "domain.h"
8#include "dv.h"
9#include "dv_pos.h"
10#include "dv_posf.h"
11#include "dv_rho.h"
12#include "dv_dvisc.h"
13#include "dv_uvw.h"
14#include "dv_ygas_noRxn.h"
15#include "dv_mixf.h"
16#include "dv_chi.h"
17#include "dv_aDL.h"
18
19#include "interp_linear.h"
20
21#include <cmath>
22#include <string>
23
25
32
33 domn = p_domn;
34
35 vector<double> gammas(4,0.0);
36 gammas[0] = 1.0;
37 domn->strm->init(domn,gammas);
38
39 domn->v.push_back(new dv_pos( domn, "pos", false, true )); // last are: L_transported, L_output
40 domn->v.push_back(new dv_posf( domn, "posf", false, true ));
41 domn->v.push_back(new dv_rho( domn, "rho", false, true ));
42 domn->v.push_back(new dv_dvisc( domn, "dvisc", false, true ));
43 domn->v.push_back(new dv_uvw( domn, "uvel", true, true ));
44 domn->v.push_back(new dv_uvw( domn, "vvel", true, true ));
45 domn->v.push_back(new dv_uvw( domn, "wvel", true, true ));
46 domn->v.push_back(new dv_mixf( domn, "mixf", false, true ));
47 domn->v.push_back(new dv_chi( domn, "chi", false, true ));
48 domn->v.push_back(new dv_aDL( domn, "aDL", false, false ));
49 for(int k=0; k<domn->gas->nSpecies(); k++)
50 domn->v.push_back(new dv_ygas_noRxn(domn, "y_"+domn->gas->speciesName(k), true, true ));
51
52 int ii = 0;
53 domn->pos = domn->v.at(ii++);
54 domn->posf = domn->v.at(ii++);
55 domn->rho = domn->v.at(ii++);
56 domn->dvisc = domn->v.at(ii++);
57 domn->uvel = domn->v.at(ii++);
58 domn->vvel = domn->v.at(ii++);
59 domn->wvel = domn->v.at(ii++);
60 domn->mixf = domn->v.at(ii++);
61 domn->chi = domn->v.at(ii++);
62 domn->aDL = domn->v.at(ii++);
63 domn->ysp = domn->v.begin()+ii; // access as domn->ysp[k]->d[i], etc. where k is the species starting from 0.
64 ii += domn->gas->nSpecies();
65
66 //------------------- set variables used for mesh adaption
67
68 vector<dv*> phi;
69 phi.push_back(domn->uvel);
70 domn->mesher->init(domn, phi);
71
72 //------------------- set profiles
73
74 double djeti = domn->io->initParams["djeti"].as<double>();
75 double djeto = domn->io->initParams["djeto"].as<double>();
76
77 vector<double> xprof, uprof;
78 for(int i=0; i<domn->io->initParams["vprof"].size(); i++){
79 xprof.push_back(domn->io->initParams["vprof"][i][0].as<double>());
80 uprof.push_back(domn->io->initParams["vprof"][i][1].as<double>());
81 }
82
83 Linear_interp Linterp(xprof, uprof);
84 for(int i=0; i<domn->ngrd; i++)
85 domn->uvel->d.at(i) = Linterp.interp(domn->pos->d.at(i));
86
87 for(int i=0; i<domn->ngrd; i++)
88 domn->mixf->d.at(i) = (domn->pos->d.at(i) >= -djeti/2.0 && domn->posf->d.at(i) <= djeti/2.0) ? 1.0 : 0.0;
89
90 //--------------------
91
92 for(int i=0; i<domn->ngrd; i++)
93 for(int k=0; k<domn->gas->nSpecies(); k++)
94 domn->ysp[k]->d.at(i) = domn->mixf->d.at(i) * domn->strm->y1[k] + (1.0-domn->mixf->d.at(i))*domn->strm->y0[k];
95
97
98 domn->rho->setVar();
99 domn->dvisc->setVar();
100 domn->aDL->setVar();
101
102 //-------------------
103
104 if(domn->pram->Lsolver!="EXPLICIT") {
105 cout << "\nError Lsolver needs to be EXPLICIT for this case (no rxn sources)" << endl;
106 exit(0);
107 }
108
109}
110
112
118
119 int nsp = domn->gas->nSpecies();
120 vector<double> yi(nsp);
121 for(int k=0; k<nsp; k++)
122 yi.at(k) = domn->ysp[k]->d.at(ipt);
123 domn->gas->setState_TPY( domn->strm->T0, domn->pram->pres, &yi[0] );
124
125}
126
128
138
double interp(double x)
int ngrd
number of grid cells
Definition domain.h:42
IdealGasPhase * gas
pointer to cantera thermochemistry object (reaction rates, Cp, etc.)
Definition domain.h:69
dv * uvel
Definition domain.h:51
dv * posf
access as: posf->d[i], or posf->var_name, etc.
Definition domain.h:48
dv * vvel
Definition domain.h:52
dv * wvel
Definition domain.h:53
dv * aDL
Definition domain.h:62
dv * pos
pointers to gas properties
Definition domain.h:47
meshManager * mesher
pointer to mesh manager object
Definition domain.h:78
inputoutput * io
pointer to input/output object
Definition domain.h:72
dv * dvisc
Definition domain.h:50
dv * mixf
Definition domain.h:59
streams * strm
pointer to gas stream properties
Definition domain.h:71
vector< dv * > v
All domain variables are stored in here.
Definition domain.h:45
vector< dv * >::iterator ysp
access as: ysp=v.begin(), (*ysp)->d[i] or (*(ysp+k))->d[i], or ysp[k]->d[i].
Definition domain.h:63
dv * chi
Definition domain.h:60
param * pram
pointer to the parameters object
Definition domain.h:73
dv * rho
Definition domain.h:49
virtual void setGasStateAtPt(const int &ipt)
virtual void enforceMassFractions()
Definition domaincase.cc:12
domain * domn
pointer to domain object (parent)
Definition domaincase.h:28
vector< double > d
the data
Definition dv.h:30
virtual void setVar(const int ipt=-1)
Definition dv.h:44
YAML::Node initParams
yaml sub node
Definition inputoutput.h:42
void init(domain *p_domn, const vector< dv * > p_phi)
string Lsolver
EXPLICIT, SEMI-IMPLICIT, or STRANG.
Definition param.h:60
double pres
initial pressure (Pa)
Definition param.h:40
vector< double > y1
stream mixf=1 composition vector
Definition streams.h:39
void init(domain *p_domn, const vector< double > &gammas)
Definition streams.cc:18
double T0
stream mixf=0 temperature
Definition streams.h:34
vector< double > y0
stream mixf=0 composition vector
Definition streams.h:38
Header file for class domain.
Header file for class domaincase_odt_coldPropaneJet.
Header file for class dv.
Header file for class dv_aDL.
Header file for class dv_chi.
Header file for class dv_dvisc.
Header file for class dv_mixf.
Header file for class dv_pos.
Header file for class dv_posf.
Header file for class dv_rho.
Header file for class dv_uvw.
Header file for class dv_ygas_noRxn.