readInitialConditions.H
Go to the documentation of this file.
1 word constProp(initialConditions.get<word>("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 word fractionBasis(initialConditions.get<word>("fractionBasis"));
10 if (fractionBasis != "mass" && fractionBasis != "mole")
11 {
12 FatalError << "in initialConditions, unknown fractionBasis type " << nl
13 << "Valid types are: mass or mole."
14 << fractionBasis << abort(FatalError);
15 }
16
17 label nSpecie = Y.size();
18 PtrList<gasHThermoPhysics> specieData(Y.size());
20 {
21 specieData.set
22 (
23 i,
24 new gasHThermoPhysics
25 (
26 dynamic_cast<const reactingMixture<gasHThermoPhysics>&>
27 (thermo).speciesData()[i]
28 )
29 );
30 }
31
32 scalarList Y0(nSpecie, Zero);
33 scalarList X0(nSpecie, Zero);
34
35 dictionary fractions(initialConditions.subDict("fractions"));
36 if (fractionBasis == "mole")
37 {
38 forAll(Y, i)
39 {
40 fractions.readIfPresent(Y[i].name(), X0[i]);
41 }
42
43 scalar mw = 0.0;
44 const scalar mTot = sum(X0);
45 forAll(Y, i)
46 {
47 X0[i] /= mTot;
48 mw += specieData[i].W()*X0[i];
49 }
50
51 forAll(Y, i)
52 {
53 Y0[i] = X0[i]*specieData[i].W()/mw;
54 }
55 }
56 else // mass fraction
57 {
58 forAll(Y, i)
59 {
60 fractions.readIfPresent(Y[i].name(), Y0[i]);
61 }
62
63 scalar invW = 0.0;
64 const scalar mTot = sum(Y0);
66 {
67 Y0[i] /= mTot;
68 invW += Y0[i]/specieData[i].W();
69 }
70 const scalar mw = 1.0/invW;
71
72 forAll(Y, i)
73 {
74 X0[i] = Y0[i]*mw/specieData[i].W();
75 }
76 }
77
78 scalar h0 = 0.0;
79 forAll(Y, i)
80 {
81 Y[i] = Y0[i];
82 h0 += Y0[i]*specieData[i].Hs(p[0], T0);
83 }
84
85 thermo.he() = dimensionedScalar("h", dimEnergy/dimMass, h0);
86 thermo.correct();
87
88 rho = thermo.rho();
89 scalar rho0 = rho[0];
90 scalar u0 = h0 - p0/rho0;
91 scalar R0 = p0/(rho0*T0);
93
94 scalar integratedHeat = 0.0;
95
96 Info << constProp << " will be held constant." << nl
97 << " p = " << p[0] << " [Pa]" << nl
98 << " T = " << thermo.T()[0] << " [K] " << nl
99 << " rho = " << rho[0] << " [kg/m3]" << nl
100 << endl;
Basic thermodynamics type based on the use of fitting functions for cp, h, s obtained from the templa...
volScalarField & p
PtrList< volScalarField > & Y
const volScalarField & p0
Definition: EEqn.H:36
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
PtrList< gasHThermoPhysics > specieData(Y.size())
scalar rho0
dictionary fractions(initialConditions.subDict("fractions"))
Rspecific[0]
scalarList Y0(nSpecie, Zero)
word fractionBasis(initialConditions.get< word >("fractionBasis"))
scalar integratedHeat
const scalar mTot
scalarList X0(nSpecie, Zero)
const scalar mw
scalar h0
label nSpecie
scalar R0
scalar u0
word constProp(initialConditions.get< word >("constantProperty"))
scalar T0
Definition: createFields.H:22
#define forAll(list, i)
Loop across all elements in list.
Definition: stdFoam.H:333