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<uniformDimensionedVectorField> gFluid(fluidRegions.size());
7 PtrList<uniformDimensionedScalarField> hRefFluid(fluidRegions.size());
8 PtrList<volScalarField> ghFluid(fluidRegions.size());
9 PtrList<surfaceScalarField> ghfFluid(fluidRegions.size());
10 PtrList<compressible::turbulenceModel> turbulence(fluidRegions.size());
11 PtrList<volScalarField> p_rghFluid(fluidRegions.size());
12 PtrList<radiation::radiationModel> radiation(fluidRegions.size());
13 
14 List<scalar> initialMassFluid(fluidRegions.size());
15 List<label> pRefCellFluid(fluidRegions.size(), 0);
16 List<scalar> pRefValueFluid(fluidRegions.size(), 0.0);
17 List<bool> frozenFlowFluid(fluidRegions.size(), false);
18 List<bool> residualReachedFluid(fluidRegions.size(), true);
19 List<bool> residualControlUsedFluid(fluidRegions.size(), false);
20 
21 PtrList<dimensionedScalar> rhoMax(fluidRegions.size());
22 PtrList<dimensionedScalar> rhoMin(fluidRegions.size());
23 
24 PtrList<IOMRFZoneList> MRFfluid(fluidRegions.size());
25 PtrList<fv::options> fluidFvOptions(fluidRegions.size());
26 
27 // Populate fluid field pointer lists
29 {
30  Info<< "*** Reading fluid mesh thermophysical properties for region "
31  << fluidRegions[i].name() << nl << endl;
32 
33  Info<< " Adding to thermoFluid\n" << endl;
34 
35  thermoFluid.set
36  (
37  i,
39  );
40 
41  Info<< " Adding to rhoFluid\n" << endl;
42  rhoFluid.set
43  (
44  i,
45  new volScalarField
46  (
47  IOobject
48  (
49  "rho",
50  runTime.timeName(),
51  fluidRegions[i],
52  IOobject::NO_READ,
53  IOobject::AUTO_WRITE
54  ),
55  thermoFluid[i].rho()
56  )
57  );
58 
59  Info<< " Adding to UFluid\n" << endl;
60  UFluid.set
61  (
62  i,
63  new volVectorField
64  (
65  IOobject
66  (
67  "U",
68  runTime.timeName(),
69  fluidRegions[i],
70  IOobject::MUST_READ,
71  IOobject::AUTO_WRITE
72  ),
73  fluidRegions[i]
74  )
75  );
76 
77  Info<< " Adding to phiFluid\n" << endl;
78  phiFluid.set
79  (
80  i,
82  (
83  IOobject
84  (
85  "phi",
86  runTime.timeName(),
87  fluidRegions[i],
88  IOobject::READ_IF_PRESENT,
89  IOobject::AUTO_WRITE
90  ),
92  & fluidRegions[i].Sf()
93  )
94  );
95 
96  Info<< " Adding to gFluid\n" << endl;
97  gFluid.set
98  (
99  i,
101  (
102  IOobject
103  (
104  "g",
105  runTime.constant(),
106  fluidRegions[i],
107  IOobject::MUST_READ,
108  IOobject::NO_WRITE
109  )
110  )
111  );
112 
113  Info<< " Adding to hRefFluid\n" << endl;
114  hRefFluid.set
115  (
116  i,
118  (
119  IOobject
120  (
121  "hRef",
122  runTime.constant(),
123  fluidRegions[i],
124  IOobject::READ_IF_PRESENT,
125  IOobject::NO_WRITE
126  ),
127  dimensionedScalar("hRef", dimLength, 0)
128  )
129  );
130 
131  dimensionedScalar ghRef
132  (
133  mag(gFluid[i].value()) > SMALL
134  ? gFluid[i]
135  & (cmptMag(gFluid[i].value())/mag(gFluid[i].value()))*hRefFluid[i]
136  : dimensionedScalar("ghRef", gFluid[i].dimensions()*dimLength, 0)
137  );
138 
139  Info<< " Adding to ghFluid\n" << endl;
140  ghFluid.set
141  (
142  i,
143  new volScalarField
144  (
145  "gh",
146  (gFluid[i] & fluidRegions[i].C()) - ghRef
147  )
148  );
149 
150  Info<< " Adding to ghfFluid\n" << endl;
151  ghfFluid.set
152  (
153  i,
155  (
156  "ghf",
157  (gFluid[i] & fluidRegions[i].Cf()) - ghRef
158  )
159  );
160 
161  Info<< " Adding to turbulence\n" << endl;
162  turbulence.set
163  (
164  i,
166  (
167  rhoFluid[i],
168  UFluid[i],
169  phiFluid[i],
170  thermoFluid[i]
171  ).ptr()
172  );
173 
174  p_rghFluid.set
175  (
176  i,
177  new volScalarField
178  (
179  IOobject
180  (
181  "p_rgh",
182  runTime.timeName(),
183  fluidRegions[i],
184  IOobject::MUST_READ,
185  IOobject::AUTO_WRITE
186  ),
187  fluidRegions[i]
188  )
189  );
190 
191  // Force p_rgh to be consistent with p
192  p_rghFluid[i] = thermoFluid[i].p() - rhoFluid[i]*ghFluid[i];
193 
194  fluidRegions[i].setFluxRequired(p_rghFluid[i].name());
195 
196  radiation.set
197  (
198  i,
200  );
201 
203 
204  const dictionary& simpleDict =
205  fluidRegions[i].solutionDict().subDict("SIMPLE");
206 
207  setRefCell
208  (
209  thermoFluid[i].p(),
210  p_rghFluid[i],
211  simpleDict,
212  pRefCellFluid[i],
213  pRefValueFluid[i]
214  );
215 
216  simpleDict.readIfPresent("frozenFlow", frozenFlowFluid[i]);
217 
218  rhoMax.set
219  (
220  i,
222  (
223  dimensionedScalar::lookupOrDefault
224  (
225  "rhoMax",
226  simpleDict,
227  dimDensity,
228  GREAT
229  )
230  )
231  );
232 
233  rhoMin.set
234  (
235  i,
237  (
238  dimensionedScalar::lookupOrDefault
239  (
240  "rhoMin",
241  simpleDict,
242  dimDensity,
243  0
244  )
245  )
246  );
247 
248  Info<< " Adding MRF\n" << endl;
249  MRFfluid.set
250  (
251  i,
252  new IOMRFZoneList(fluidRegions[i])
253  );
254 
255  Info<< " Adding fvOptions\n" << endl;
256  fluidFvOptions.set
257  (
258  i,
259  new fv::options(fluidRegions[i])
260  );
261 
262  turbulence[i].validate();
263 }
PtrList< dimensionedScalar > rhoMax(fluidRegions.size())
UniformDimensionedField< vector > uniformDimensionedVectorField
tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > linearInterpolate(const GeometricField< Type, fvPatchField, volMesh > &vf)
Definition: linear.H:107
PtrList< dimensionedScalar > rhoMin(fluidRegions.size())
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:253
PtrList< IOMRFZoneList > MRFfluid(fluidRegions.size())
dimensioned< Type > domainIntegrate(const GeometricField< Type, fvPatchField, volMesh > &vf)
GeometricField< vector, fvPatchField, volMesh > volVectorField
Definition: volFieldsFwd.H:55
UniformDimensionedField< scalar > uniformDimensionedScalarField
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tdf1, const word &name, const dimensionSet &dimensions)
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:52
PtrList< compressible::turbulenceModel > turbulence(fluidRegions.size())
PtrList< volScalarField > rhoFluid(fluidRegions.size())
forAll(fluidRegions, i)
List< bool > frozenFlowFluid(fluidRegions.size(), false)
PtrList< radiation::radiationModel > radiation(fluidRegions.size())
PtrList< volScalarField > p_rghFluid(fluidRegions.size())
PtrList< volScalarField > ghFluid(fluidRegions.size())
PtrList< volVectorField > UFluid(fluidRegions.size())
PtrList< rhoThermo > thermoFluid(fluidRegions.size())
List< bool > residualControlUsedFluid(fluidRegions.size(), false)
void cmptMag(FieldField< Field, Type > &cf, const FieldField< Field, Type > &f)
static const char nl
Definition: Ostream.H:262
volScalarField & C
List< scalar > pRefValueFluid(fluidRegions.size(), 0.0)
const volScalarField & T
word name(const complex &)
Return a string representation of a complex.
Definition: complex.C:47
const dimensionSet dimDensity
PtrList< fv::options > fluidFvOptions(fluidRegions.size())
PtrList< uniformDimensionedVectorField > gFluid(fluidRegions.size())
PtrList< surfaceScalarField > ghfFluid(fluidRegions.size())
List< scalar > initialMassFluid(fluidRegions.size())
PtrList< surfaceScalarField > phiFluid(fluidRegions.size())
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
Definition: dimensionSets.H:50
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
PtrList< uniformDimensionedScalarField > hRefFluid(fluidRegions.size())
messageStream Info
dimensioned< scalar > mag(const dimensioned< Type > &)
PtrList< fvMesh > fluidRegions(fluidNames.size())
volScalarField & p
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
List< bool > residualReachedFluid(fluidRegions.size(), true)
List< label > pRefCellFluid(fluidRegions.size(), 0)
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:31