readInitialConditions.H
Go to the documentation of this file.
1  const word constProp(initialConditions.lookup("constantProperty"));
2  if ((constProp != "pressure") && (constProp != "volume"))
3  {
4  FatalError << "in initialConditions, unknown constantProperty type "
5  << constProp << nl << " Valid types are: pressure volume."
6  << abort(FatalError);
7  }
8 
9  const word fractionBasis(initialConditions.lookup("fractionBasis"));
10  if ((fractionBasis != "mass") && (fractionBasis != "mole"))
11  {
12  FatalError << "in initialConditions, unknown fractionBasis type " << nl
13  << "Valid types are: mass or mole."
15  }
16 
17  const label nSpecie = Y.size();
18  const scalarList W(::W(thermo));
19 
20  scalarList Y0(nSpecie, 0.0);
21  scalarList X0(nSpecie, 0.0);
22 
23  dictionary fractions(initialConditions.subDict("fractions"));
24  if (fractionBasis == "mole")
25  {
26  forAll(Y, i)
27  {
28  const word& name = Y[i].name();
29  if (fractions.found(name))
30  {
31  X0[i] = readScalar(fractions.lookup(name));
32  }
33  }
34 
35  scalar mw = 0.0;
36  const scalar mTot = sum(X0);
37  forAll(Y, i)
38  {
39  X0[i] /= mTot;
40  mw += W[i]*X0[i];
41  }
42 
43  forAll(Y, i)
44  {
45  Y0[i] = X0[i]*W[i]/mw;
46  }
47  }
48  else // mass fraction
49  {
50  forAll(Y, i)
51  {
52  const word& name = Y[i].name();
53  if (fractions.found(name))
54  {
55  Y0[i] = readScalar(fractions.lookup(name));
56  }
57  }
58 
59  scalar invW = 0.0;
60  const scalar mTot = sum(Y0);
61  forAll(Y, i)
62  {
63  Y0[i] /= mTot;
64  invW += Y0[i]/W[i];
65  }
66  const scalar mw = 1.0/invW;
67 
68  forAll(Y, i)
69  {
70  X0[i] = Y0[i]*mw/W[i];
71  }
72  }
73 
74  const scalar h0 = ::h0(thermo, Y0, p[0], T0);
75 
76  forAll(Y, i)
77  {
78  Y[i] = Y0[i];
79  }
80 
81  thermo.he() = dimensionedScalar("h", dimEnergy/dimMass, h0);
82  thermo.correct();
83 
84  rho = thermo.rho();
85  scalar rho0 = rho[0];
86  scalar u0 = h0 - p0/rho0;
87  scalar R0 = p0/(rho0*T0);
88  Rspecific[0] = R0;
89 
90  scalar integratedHeat = 0.0;
91 
92  Info << constProp << " will be held constant." << nl
93  << " p = " << p[0] << " [Pa]" << nl
94  << " T = " << thermo.T()[0] << " [K] " << nl
95  << " rho = " << rho[0] << " [kg/m3]" << nl
96  << endl;
#define readScalar
Definition: doubleScalar.C:38
forAll(Y, i)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
const scalar mTot
error FatalError
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:256
scalar rho0
rhoReactionThermo & thermo
Definition: createFields.H:28
const scalar mw
dimensioned< Type > sum(const DimensionedField< Type, GeoMesh > &df)
scalarList Y0(nSpecie, 0.0)
scalarList X0(nSpecie, 0.0)
List< scalar > scalarList
A List of scalars.
Definition: scalarList.H:50
errorManip< error > abort(error &err)
Definition: errorManip.H:131
static const char nl
Definition: Ostream.H:265
const word constProp(initialConditions.lookup("constantProperty"))
word name(const complex &)
Return a string representation of a complex.
Definition: complex.C:47
const dimensionSet dimEnergy
const word fractionBasis(initialConditions.lookup("fractionBasis"))
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
const scalarList W(::W(thermo))
PtrList< volScalarField > & Y
scalar R0
messageStream Info
dictionary fractions(initialConditions.subDict("fractions"))
Rspecific[0]
const dimensionSet dimMass(1, 0, 0, 0, 0, 0, 0)
Definition: dimensionSets.H:49
volScalarField & p
const scalar h0