createFluidFields.H
Go to the documentation of this file.
1 // Initialise fluid field pointer lists
2 PtrList<rhoThermo> thermoFluid(fluidRegions.size());
3 PtrList<volScalarField> rhoFluid(fluidRegions.size());
4 PtrList<volVectorField> UFluid(fluidRegions.size());
5 PtrList<surfaceScalarField> phiFluid(fluidRegions.size());
6 PtrList<uniformDimensionedScalarField> hRefFluid(fluidRegions.size());
7 PtrList<volScalarField> ghFluid(fluidRegions.size());
8 PtrList<surfaceScalarField> ghfFluid(fluidRegions.size());
9 PtrList<compressible::turbulenceModel> turbulence(fluidRegions.size());
10 PtrList<volScalarField> p_rghFluid(fluidRegions.size());
11 PtrList<radiation::radiationModel> radiation(fluidRegions.size());
12 
13 List<scalar> initialMassFluid(fluidRegions.size());
14 List<label> pRefCellFluid(fluidRegions.size(), -1);
15 List<scalar> pRefValueFluid(fluidRegions.size(), Zero);
16 List<bool> frozenFlowFluid(fluidRegions.size(), false);
17 
18 PtrList<dimensionedScalar> rhoMax(fluidRegions.size());
19 PtrList<dimensionedScalar> rhoMin(fluidRegions.size());
20 
21 PtrList<IOMRFZoneList> MRFfluid(fluidRegions.size());
22 PtrList<fv::options> fluidFvOptions(fluidRegions.size());
23 
24 PtrList<fvVectorMatrix> UEqFluid(fluidRegions.size());
25 
27 
28 // Populate fluid field pointer lists
30 {
31  Info<< "*** Reading fluid mesh thermophysical properties for region "
32  << fluidRegions[i].name() << nl << endl;
33 
34  Info<< " Adding to thermoFluid\n" << endl;
35 
36  thermoFluid.set
37  (
38  i,
40  );
41 
42  Info<< " Adding to rhoFluid\n" << endl;
43  rhoFluid.set
44  (
45  i,
46  new volScalarField
47  (
48  IOobject
49  (
50  "rho",
51  runTime.timeName(),
52  fluidRegions[i],
53  IOobject::NO_READ,
54  IOobject::AUTO_WRITE
55  ),
56  thermoFluid[i].rho()
57  )
58  );
59 
60  Info<< " Adding to UFluid\n" << endl;
61  UFluid.set
62  (
63  i,
64  new volVectorField
65  (
66  IOobject
67  (
68  "U",
69  runTime.timeName(),
70  fluidRegions[i],
71  IOobject::MUST_READ,
72  IOobject::AUTO_WRITE
73  ),
74  fluidRegions[i]
75  )
76  );
77 
78  Info<< " Adding to phiFluid\n" << endl;
79  phiFluid.set
80  (
81  i,
83  (
84  IOobject
85  (
86  "phi",
87  runTime.timeName(),
88  fluidRegions[i],
89  IOobject::READ_IF_PRESENT,
90  IOobject::AUTO_WRITE
91  ),
93  & fluidRegions[i].Sf()
94  )
95  );
96 
97  Info<< " Adding to hRefFluid\n" << endl;
98  hRefFluid.set
99  (
100  i,
102  (
103  IOobject
104  (
105  "hRef",
106  runTime.constant(),
107  fluidRegions[i],
108  IOobject::READ_IF_PRESENT,
109  IOobject::NO_WRITE
110  ),
111  dimensionedScalar("hRef", dimLength, Zero) // uses name
112  )
113  );
114 
115  dimensionedScalar ghRef
116  (
117  mag(g.value()) > SMALL
118  ? g & (cmptMag(g.value())/mag(g.value()))*hRefFluid[i]
119  : dimensionedScalar("ghRef", g.dimensions()*dimLength, 0)
120  );
121 
122  Info<< " Adding to ghFluid\n" << endl;
123  ghFluid.set
124  (
125  i,
126  new volScalarField
127  (
128  "gh",
129  (g & fluidRegions[i].C()) - ghRef
130  )
131  );
132 
133  Info<< " Adding to ghfFluid\n" << endl;
134  ghfFluid.set
135  (
136  i,
138  (
139  "ghf",
140  (g & fluidRegions[i].Cf()) - ghRef
141  )
142  );
143 
144  Info<< " Adding to turbulence\n" << endl;
145  turbulence.set
146  (
147  i,
149  (
150  rhoFluid[i],
151  UFluid[i],
152  phiFluid[i],
153  thermoFluid[i]
154  ).ptr()
155  );
156 
157  p_rghFluid.set
158  (
159  i,
160  new volScalarField
161  (
162  IOobject
163  (
164  "p_rgh",
165  runTime.timeName(),
166  fluidRegions[i],
167  IOobject::MUST_READ,
168  IOobject::AUTO_WRITE
169  ),
170  fluidRegions[i]
171  )
172  );
173 
174  // Force p_rgh to be consistent with p
175  p_rghFluid[i] = thermoFluid[i].p() - rhoFluid[i]*ghFluid[i];
176 
177  fluidRegions[i].setFluxRequired(p_rghFluid[i].name());
178 
179  radiation.set
180  (
181  i,
183  );
184 
186 
187  const dictionary& simpleDict =
188  fluidRegions[i].solutionDict().subDict("SIMPLE");
189 
190  setRefCell
191  (
192  thermoFluid[i].p(),
193  p_rghFluid[i],
194  simpleDict,
195  pRefCellFluid[i],
196  pRefValueFluid[i]
197  );
198 
199  simpleDict.readIfPresent("frozenFlow", frozenFlowFluid[i]);
200 
201  rhoMax.set
202  (
203  i,
204  new dimensionedScalar("rhoMax", dimDensity, GREAT, simpleDict)
205  );
206 
207  rhoMin.set
208  (
209  i,
210  new dimensionedScalar("rhoMin", dimDensity, Zero, simpleDict)
211  );
212 
213  Info<< " Adding MRF\n" << endl;
214  MRFfluid.set
215  (
216  i,
217  new IOMRFZoneList(fluidRegions[i])
218  );
219 
220  Info<< " Adding fvOptions\n" << endl;
221  fluidFvOptions.set
222  (
223  i,
224  new fv::options(fluidRegions[i])
225  );
226 
227  UEqFluid.set
228  (
229  i,
231  );
232 
233  turbulence[i].validate();
234 }
runTime
engineTime & runTime
Definition: createEngineTime.H:13
p
volScalarField & p
Definition: createFieldRefs.H:8
UEqFluid
PtrList< fvVectorMatrix > UEqFluid(fluidRegions.size())
Foam::dimLength
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
Definition: dimensionSets.H:52
Foam::Zero
static constexpr const zero Zero
Global zero (0)
Definition: zero.H:131
Foam::dimDensity
const dimensionSet dimDensity
Foam::fvc::domainIntegrate
dimensioned< Type > domainIntegrate(const GeometricField< Type, fvPatchField, volMesh > &vf)
Definition: fvcVolumeIntegrate.C:88
UFluid
PtrList< volVectorField > UFluid(fluidRegions.size())
p_rghFluid
PtrList< volScalarField > p_rghFluid(fluidRegions.size())
frozenFlowFluid
List< bool > frozenFlowFluid(fluidRegions.size(), false)
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:369
Foam::dimForce
const dimensionSet dimForce
radiation
PtrList< radiation::radiationModel > radiation(fluidRegions.size())
rho
rho
Definition: readInitialConditions.H:88
C
volScalarField & C
Definition: readThermalProperties.H:102
Foam::cmptMag
void cmptMag(FieldField< Field, Type > &cf, const FieldField< Field, Type > &f)
Definition: FieldFieldFunctions.C:400
rhoFluid
PtrList< volScalarField > rhoFluid(fluidRegions.size())
Foam::fvVectorMatrix
fvMatrix< vector > fvVectorMatrix
Definition: fvMatricesFwd.H:47
MRFfluid
PtrList< IOMRFZoneList > MRFfluid(fluidRegions.size())
Foam::Info
messageStream Info
Information stream (stdout output on master, null elsewhere)
fluidFvOptions
PtrList< fv::options > fluidFvOptions(fluidRegions.size())
Foam::uniformDimensionedVectorField
UniformDimensionedField< vector > uniformDimensionedVectorField
Definition: uniformDimensionedFields.H:50
Foam::uniformDimensionedScalarField
UniformDimensionedField< scalar > uniformDimensionedScalarField
Definition: uniformDimensionedFields.H:49
Foam::setRefCell
bool setRefCell(const volScalarField &field, const volScalarField &fieldRef, const dictionary &dict, label &refCelli, scalar &refValue, const bool forceReference=false)
If the field fieldRef needs referencing find the reference cell nearest.
Definition: findRefCell.C:34
Foam::dimensionedScalar
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Definition: dimensionedScalarFwd.H:42
Foam::volScalarField
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:57
hRefFluid
PtrList< uniformDimensionedScalarField > hRefFluid(fluidRegions.size())
phiFluid
PtrList< surfaceScalarField > phiFluid(fluidRegions.size())
pRefCellFluid
List< label > pRefCellFluid(fluidRegions.size(), -1)
g
const uniformDimensionedVectorField & g
Definition: createFluidFields.H:26
T
const volScalarField & T
Definition: createFieldRefs.H:2
ghFluid
PtrList< volScalarField > ghFluid(fluidRegions.size())
pRefValueFluid
List< scalar > pRefValueFluid(fluidRegions.size(), Zero)
Foam::volVectorField
GeometricField< vector, fvPatchField, volMesh > volVectorField
Definition: volFieldsFwd.H:62
Foam::New
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tdf1, const word &name, const dimensionSet &dimensions)
Global function forwards to reuseTmpDimensionedField::New.
Definition: DimensionedFieldReuseFunctions.H:105
forAll
forAll(fluidRegions, i)
Definition: createFluidFields.H:29
Foam::linearInterpolate
tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > linearInterpolate(const GeometricField< Type, fvPatchField, volMesh > &vf)
Definition: linear.H:112
Foam::nl
constexpr char nl
Definition: Ostream.H:404
fluidRegions
PtrList< fvMesh > fluidRegions(fluidNames.size())
Foam::surfaceScalarField
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
Definition: surfaceFieldsFwd.H:54
turbulence
PtrList< compressible::turbulenceModel > turbulence(fluidRegions.size())
Foam::mag
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
ghfFluid
PtrList< surfaceScalarField > ghfFluid(fluidRegions.size())
rhoMax
PtrList< dimensionedScalar > rhoMax(fluidRegions.size())
Foam::name
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
Definition: exprTraits.C:59
thermoFluid
PtrList< rhoThermo > thermoFluid(fluidRegions.size())
initialMassFluid
List< scalar > initialMassFluid(fluidRegions.size())
rhoMin
PtrList< dimensionedScalar > rhoMin(fluidRegions.size())