createFluidFields.H
Go to the documentation of this file.
1// Initialise fluid field pointer lists
2PtrList<twoPhaseSystem> phaseSystemFluid(fluidRegions.size());
3
4PtrList<volScalarField> ghFluid(fluidRegions.size());
5PtrList<surfaceScalarField> ghfFluid(fluidRegions.size());
6PtrList<uniformDimensionedScalarField> hRefFluid(fluidRegions.size());
7
8PtrList<volScalarField> p_rghFluid(fluidRegions.size());
9
10PtrList<multivariateSurfaceInterpolationScheme<scalar>::fieldTable>
12
13List<scalar> initialMassFluid(fluidRegions.size());
14List<bool> frozenFlowFluid(fluidRegions.size(), false);
15
16List<label> pRefCellFluid(fluidRegions.size());
17List<scalar> pRefValueFluid(fluidRegions.size());
18PtrList<dimensionedScalar> pMinFluid(fluidRegions.size());
19
20const uniformDimensionedVectorField& g = meshObjects::gravity::New(runTime);
21
22PtrList<pimpleControl> pimpleFluid(fluidRegions.size());
23
24
25//Debug Fields
26/*
27PtrList<volScalarField> faceRegimesFluid(fluidRegions.size());
28PtrList<volScalarField> qcFluid(fluidRegions.size());
29PtrList<volScalarField> qFilmFluid(fluidRegions.size());
30PtrList<volScalarField> htcFilmBoilingFluid(fluidRegions.size());
31PtrList<volScalarField> qtbFluid(fluidRegions.size());
32PtrList<volScalarField> qSubCoolFluid(fluidRegions.size());
33PtrList<volScalarField> CHFtotalFluid(fluidRegions.size());
34PtrList<volScalarField> TdnbFluid(fluidRegions.size());
35PtrList<volScalarField> phiFluid(fluidRegions.size());
36
37forAll(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;
208 phaseSystemFluid.set(i, twoPhaseSystem::New(fluidRegions[i]).ptr());
209
210 Info<< " Adding hRefFluid\n" << endl;
211 hRefFluid.set
212 (
213 i,
214 new uniformDimensionedScalarField
215 (
216 IOobject
217 (
218 "hRef",
219 runTime.constant(),
220 fluidRegions[i],
221 IOobject::READ_IF_PRESENT,
222 IOobject::NO_WRITE
223 ),
224 dimensionedScalar("hRef", dimLength, Zero)
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,
249 new surfaceScalarField
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;
285 fvc::domainIntegrate(phaseSystemFluid[i].rho()).value();
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 {
299 (
300 phaseSystemFluid[i].phase1().thermoRef().p(),
301 p_rghFluid[i],
303 pRefCellFluid[i],
305 );
306 }
307
308 pMinFluid.set
309 (
310 i,
311 new dimensionedScalar
312 (
313 "pMin",
314 dimPressure,
316 )
317 );
318}
static const Foam::dimensionedScalar C("", Foam::dimTemperature, 234.5)
const dictionary & pimpleDict
PtrList< volScalarField > ghFluid(fluidRegions.size())
const uniformDimensionedVectorField & g
PtrList< uniformDimensionedScalarField > hRefFluid(fluidRegions.size())
List< label > pRefCellFluid(fluidRegions.size(), -1)
PtrList< volScalarField > p_rghFluid(fluidRegions.size())
List< scalar > initialMassFluid(fluidRegions.size())
List< bool > frozenFlowFluid(fluidRegions.size(), false)
PtrList< surfaceScalarField > ghfFluid(fluidRegions.size())
List< scalar > pRefValueFluid(fluidRegions.size(), Zero)
PtrList< fvMesh > fluidRegions(fluidNames.size())
PtrList< dimensionedScalar > pMinFluid(fluidRegions.size())
PtrList< pimpleControl > pimpleFluid(fluidRegions.size())
PtrList< twoPhaseSystem > phaseSystemFluid(fluidRegions.size())
PtrList< multivariateSurfaceInterpolationScheme< scalar >::fieldTable > fieldsFluid(fluidRegions.size())
phaseModel & phase1
volScalarField & p
engineTime & runTime
setRefCell(p, pimple.dict(), pRefCell, pRefValue)
#define forAll(list, i)
Loop across all elements in list.
Definition: stdFoam.H:333