createFluidFields.H
Go to the documentation of this file.
1 // Initialise fluid field pointer lists
2 PtrList<twoPhaseSystem> phaseSystemFluid(fluidRegions.size());
3 
4 PtrList<volScalarField> ghFluid(fluidRegions.size());
5 PtrList<surfaceScalarField> ghfFluid(fluidRegions.size());
6 PtrList<uniformDimensionedScalarField> hRefFluid(fluidRegions.size());
7 
8 PtrList<volScalarField> p_rghFluid(fluidRegions.size());
9 
10 PtrList<multivariateSurfaceInterpolationScheme<scalar>::fieldTable>
11  fieldsFluid(fluidRegions.size());
12 
13 List<scalar> initialMassFluid(fluidRegions.size());
14 List<bool> frozenFlowFluid(fluidRegions.size(), false);
15 
16 List<label> pRefCellFluid(fluidRegions.size());
17 List<scalar> pRefValueFluid(fluidRegions.size());
18 PtrList<dimensionedScalar> pMinFluid(fluidRegions.size());
19 
21 
22 PtrList<pimpleControl> pimpleFluid(fluidRegions.size());
23 
24 
25 //Debug Fields
26 /*
27 PtrList<volScalarField> faceRegimesFluid(fluidRegions.size());
28 PtrList<volScalarField> qcFluid(fluidRegions.size());
29 PtrList<volScalarField> qFilmFluid(fluidRegions.size());
30 PtrList<volScalarField> htcFilmBoilingFluid(fluidRegions.size());
31 PtrList<volScalarField> qtbFluid(fluidRegions.size());
32 PtrList<volScalarField> qSubCoolFluid(fluidRegions.size());
33 PtrList<volScalarField> CHFtotalFluid(fluidRegions.size());
34 PtrList<volScalarField> TdnbFluid(fluidRegions.size());
35 PtrList<volScalarField> phiFluid(fluidRegions.size());
36 
37 forAll(fluidRegions, i)
38 {
39  faceRegimesFluid.set
40  (
41  i,
42  new volScalarField
43  (
44  IOobject
45  (
46  "faceRegimes",
47  runTime.timeName(),
48  fluidRegions[i],
49  IOobject::NO_READ,
50  IOobject::AUTO_WRITE
51  ),
52  fluidRegions[i],
53  dimensionedScalar(dimless, Zero)
54 
55  )
56  );
57  qcFluid.set
58  (
59  i,
60  new volScalarField
61  (
62  IOobject
63  (
64  "qc",
65  runTime.timeName(),
66  fluidRegions[i],
67  IOobject::NO_READ,
68  IOobject::AUTO_WRITE
69  ),
70  fluidRegions[i],
71  dimensionedScalar(dimless, Zero)
72  )
73  );
74  qFilmFluid.set
75  (
76  i,
77  new volScalarField
78  (
79  IOobject
80  (
81  "qFilm",
82  runTime.timeName(),
83  fluidRegions[i],
84  IOobject::NO_READ,
85  IOobject::AUTO_WRITE
86  ),
87  fluidRegions[i],
88  dimensionedScalar(dimless, Zero)
89  )
90  );
91  htcFilmBoilingFluid.set
92  (
93  i,
94  new volScalarField
95  (
96  IOobject
97  (
98  "htcFilmBoiling",
99  runTime.timeName(),
100  fluidRegions[i],
101  IOobject::NO_READ,
102  IOobject::AUTO_WRITE
103  ),
104  fluidRegions[i],
105  dimensionedScalar(dimless, Zero)
106  )
107  );
108  qtbFluid.set
109  (
110  i,
111  new volScalarField
112  (
113  IOobject
114  (
115  "qtb",
116  runTime.timeName(),
117  fluidRegions[i],
118  IOobject::NO_READ,
119  IOobject::AUTO_WRITE
120  ),
121  fluidRegions[i],
122  dimensionedScalar(dimless, Zero)
123  )
124  );
125  qSubCoolFluid.set
126  (
127  i,
128  new volScalarField
129  (
130  IOobject
131  (
132  "qSubCool",
133  runTime.timeName(),
134  fluidRegions[i],
135  IOobject::NO_READ,
136  IOobject::AUTO_WRITE
137  ),
138  fluidRegions[i],
139  dimensionedScalar(dimless, Zero)
140  )
141  );
142  CHFtotalFluid.set
143  (
144  i,
145  new volScalarField
146  (
147  IOobject
148  (
149  "CHFtotal",
150  runTime.timeName(),
151  fluidRegions[i],
152  IOobject::NO_READ,
153  IOobject::AUTO_WRITE
154  ),
155  fluidRegions[i],
156  dimensionedScalar(dimless, Zero)
157  )
158  );
159  TdnbFluid.set
160  (
161  i,
162  new volScalarField
163  (
164  IOobject
165  (
166  "Tdnb",
167  runTime.timeName(),
168  fluidRegions[i],
169  IOobject::NO_READ,
170  IOobject::AUTO_WRITE
171  ),
172  fluidRegions[i],
173  dimensionedScalar(dimless, Zero)
174  )
175  );
176  phiFluid.set
177  (
178  i,
179  new volScalarField
180  (
181  IOobject
182  (
183  "phiTb",
184  runTime.timeName(),
185  fluidRegions[i],
186  IOobject::NO_READ,
187  IOobject::AUTO_WRITE
188  ),
189  fluidRegions[i],
190  dimensionedScalar(dimless, Zero)
191  )
192  );
193 }
194 */
195 
197 {
198  Info<< "*** Reading fluid mesh thermophysical properties for region "
199  << fluidRegions[i].name() << nl << endl;
200 
201  pimpleFluid.set
202  (
203  i,
204  new pimpleControl(fluidRegions[i])
205  );
206 
207  Info<< " Adding to phaseSystemFluid\n" << endl;
209 
210  Info<< " Adding hRefFluid\n" << endl;
211  hRefFluid.set
212  (
213  i,
215  (
216  IOobject
217  (
218  "hRef",
219  runTime.constant(),
220  fluidRegions[i],
221  IOobject::READ_IF_PRESENT,
222  IOobject::NO_WRITE
223  ),
225  )
226  );
227 
228  Info<< " Adding ghRef\n" << endl;
229  dimensionedScalar ghRef
230  (
231  mag(g.value()) > SMALL
232  ? g & (cmptMag(g.value())/mag(g.value()))*hRefFluid[i]
233  : dimensionedScalar("ghRef", g.dimensions()*dimLength, 0)
234  );
235 
236  ghFluid.set
237  (
238  i,
239  new volScalarField
240  (
241  "gh",
242  (g & fluidRegions[i].C()) - ghRef
243  )
244  );
245 
246  ghfFluid.set
247  (
248  i,
250  (
251  "ghf",
252  (g & fluidRegions[i].Cf()) - ghRef
253  )
254  );
255 
256  Info<< " Adding p_rghFluid\n" << endl;
257  p_rghFluid.set
258  (
259  i,
260  new volScalarField
261  (
262  IOobject
263  (
264  "p_rgh",
265  runTime.timeName(),
266  fluidRegions[i],
267  IOobject::MUST_READ,
268  IOobject::AUTO_WRITE
269  ),
270  fluidRegions[i]
271  )
272  );
273 
274  Info<< " Correcting p_rghFluid\n" << endl;
275 
276  // Force p_rgh to be consistent with p
277  p_rghFluid[i] =
278  phaseSystemFluid[i].phase1().thermo().p()
279  - phaseSystemFluid[i].phase1().thermo().rho()*ghFluid[i];
280 
281  fluidRegions[i].setFluxRequired(p_rghFluid[i].name());
282 
283  Info<< " Correcting initialMassFluid\n" << endl;
284  initialMassFluid[i] =
286 
287  const dictionary& pimpleDict =
288  fluidRegions[i].solutionDict().subDict("PIMPLE");
289 
290  pimpleDict.readIfPresent("frozenFlow", frozenFlowFluid[i]);
291 
292  pRefCellFluid[i] = -1;
293  pRefValueFluid[i] = 0.0;
294 
295  Info<< " Setting reference\n" << endl;
296  if (p_rghFluid[i].needReference())
297  {
298  setRefCell
299  (
300  phaseSystemFluid[i].phase1().thermoRef().p(),
301  p_rghFluid[i],
302  pimpleDict,
303  pRefCellFluid[i],
304  pRefValueFluid[i]
305  );
306  }
307 
308  pMinFluid.set
309  (
310  i,
312  (
313  "pMin",
314  dimPressure,
316  )
317  );
318 }
runTime
engineTime & runTime
Definition: createEngineTime.H:13
Foam::dimPressure
const dimensionSet dimPressure
p
volScalarField & p
Definition: createFieldRefs.H:8
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::fvc::domainIntegrate
dimensioned< Type > domainIntegrate(const GeometricField< Type, fvPatchField, volMesh > &vf)
Definition: fvcVolumeIntegrate.C:88
p_rghFluid
PtrList< volScalarField > p_rghFluid(fluidRegions.size())
frozenFlowFluid
List< bool > frozenFlowFluid(fluidRegions.size(), false)
phaseSystemFluid
PtrList< twoPhaseSystem > phaseSystemFluid(fluidRegions.size())
fieldsFluid
PtrList< multivariateSurfaceInterpolationScheme< scalar >::fieldTable > fieldsFluid(fluidRegions.size())
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:369
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
Foam::Info
messageStream Info
Information stream (stdout output on master, null elsewhere)
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())
pRefCellFluid
List< label > pRefCellFluid(fluidRegions.size(), -1)
g
const uniformDimensionedVectorField & g
Definition: createFluidFields.H:26
ghFluid
PtrList< volScalarField > ghFluid(fluidRegions.size())
pRefValueFluid
List< scalar > pRefValueFluid(fluidRegions.size(), Zero)
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::nl
constexpr char nl
Definition: Ostream.H:404
pimpleDict
const dictionary & pimpleDict
Definition: createRegionControls.H:3
pimpleFluid
PtrList< pimpleControl > pimpleFluid(fluidRegions.size())
fluidRegions
PtrList< fvMesh > fluidRegions(fluidNames.size())
Foam::surfaceScalarField
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
Definition: surfaceFieldsFwd.H:54
Foam::mag
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
ghfFluid
PtrList< surfaceScalarField > ghfFluid(fluidRegions.size())
Foam::name
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
Definition: exprTraits.C:59
phase1
phaseModel & phase1
Definition: setRegionFluidFields.H:5
initialMassFluid
List< scalar > initialMassFluid(fluidRegions.size())
pMinFluid
PtrList< dimensionedScalar > pMinFluid(fluidRegions.size())