createFluidFields.H
Go to the documentation of this file.
1// Initialise fluid field pointer lists
2PtrList<rhoReactionThermo> thermoFluid(fluidRegions.size());
3PtrList<volScalarField> rhoFluid(fluidRegions.size());
4PtrList<volVectorField> UFluid(fluidRegions.size());
5PtrList<surfaceScalarField> phiFluid(fluidRegions.size());
6PtrList<uniformDimensionedScalarField> hRefFluid(fluidRegions.size());
7PtrList<volScalarField> ghFluid(fluidRegions.size());
8PtrList<surfaceScalarField> ghfFluid(fluidRegions.size());
9PtrList<compressible::turbulenceModel> turbulenceFluid(fluidRegions.size());
10PtrList<CombustionModel<rhoReactionThermo>> reactionFluid(fluidRegions.size());
11PtrList<volScalarField> p_rghFluid(fluidRegions.size());
12PtrList<radiation::radiationModel> radiation(fluidRegions.size());
13PtrList<volScalarField> KFluid(fluidRegions.size());
14PtrList<volScalarField> dpdtFluid(fluidRegions.size());
15PtrList<multivariateSurfaceInterpolationScheme<scalar>::fieldTable>
17PtrList<volScalarField> QdotFluid(fluidRegions.size());
18
19PtrList<fvVectorMatrix> UEqFluid(fluidRegions.size());
20
21List<scalar> initialMassFluid(fluidRegions.size());
22List<bool> frozenFlowFluid(fluidRegions.size(), false);
23
24PtrList<IOMRFZoneList> MRFfluid(fluidRegions.size());
25PtrList<fv::options> fluidFvOptions(fluidRegions.size());
26
27List<label> pRefCellFluid(fluidRegions.size());
28List<scalar> pRefValueFluid(fluidRegions.size());
29
30PtrList<dimensionedScalar> rhoMinFluid(fluidRegions.size());
31PtrList<dimensionedScalar> rhoMaxFluid(fluidRegions.size());
32
33PtrList<pressureControl> pressureControls(fluidRegions.size());
34
35const uniformDimensionedVectorField& g = meshObjects::gravity::New(runTime);
36
37// Populate fluid field pointer lists
39{
40 Info<< "*** Reading fluid mesh thermophysical properties for region "
41 << fluidRegions[i].name() << nl << endl;
42
43 Info<< " Adding to thermoFluid\n" << endl;
44 thermoFluid.set(i, rhoReactionThermo::New(fluidRegions[i]).ptr());
45
46 Info<< " Adding to rhoFluid\n" << endl;
47 rhoFluid.set
48 (
49 i,
50 new volScalarField
51 (
52 IOobject
53 (
54 "rho",
55 runTime.timeName(),
56 fluidRegions[i],
57 IOobject::NO_READ,
58 IOobject::AUTO_WRITE
59 ),
60 thermoFluid[i].rho()
61 )
62 );
63
64 Info<< " Adding to UFluid\n" << endl;
65 UFluid.set
66 (
67 i,
68 new volVectorField
69 (
70 IOobject
71 (
72 "U",
73 runTime.timeName(),
74 fluidRegions[i],
75 IOobject::MUST_READ,
76 IOobject::AUTO_WRITE
77 ),
79 )
80 );
81
82 Info<< " Adding to phiFluid\n" << endl;
83 phiFluid.set
84 (
85 i,
86 new surfaceScalarField
87 (
88 IOobject
89 (
90 "phi",
91 runTime.timeName(),
92 fluidRegions[i],
93 IOobject::READ_IF_PRESENT,
94 IOobject::AUTO_WRITE
95 ),
96 linearInterpolate(rhoFluid[i]*UFluid[i])
97 & fluidRegions[i].Sf()
98 )
99 );
100
101 Info<< " Adding to hRefFluid\n" << endl;
102 hRefFluid.set
103 (
104 i,
105 new uniformDimensionedScalarField
106 (
107 IOobject
108 (
109 "hRef",
110 runTime.constant(),
111 fluidRegions[i],
112 IOobject::READ_IF_PRESENT,
113 IOobject::NO_WRITE
114 ),
115 dimensionedScalar("hRef", dimLength, Zero) // uses name
116 )
117 );
118
119 dimensionedScalar ghRef
120 (
121 mag(g.value()) > SMALL
122 ? g & (cmptMag(g.value())/mag(g.value()))*hRefFluid[i]
123 : dimensionedScalar("ghRef", g.dimensions()*dimLength, 0)
124 );
125
126 Info<< " Adding to ghFluid\n" << endl;
127 ghFluid.set
128 (
129 i,
130 new volScalarField
131 (
132 "gh",
133 (g & fluidRegions[i].C()) - ghRef
134 )
135 );
136
137 Info<< " Adding to ghfFluid\n" << endl;
138 ghfFluid.set
139 (
140 i,
141 new surfaceScalarField
142 (
143 "ghf",
144 (g & fluidRegions[i].Cf()) - ghRef
145 )
146 );
147
148 Info<< " Adding to turbulenceFluid\n" << endl;
150 (
151 i,
152 compressible::turbulenceModel::New
153 (
154 rhoFluid[i],
155 UFluid[i],
156 phiFluid[i],
157 thermoFluid[i]
158 ).ptr()
159 );
160
161 Info<< " Adding to reactionFluid\n" << endl;
162 reactionFluid.set
163 (
164 i,
165 CombustionModel<rhoReactionThermo>::New
166 (
167 thermoFluid[i],
169 )
170 );
171
172 p_rghFluid.set
173 (
174 i,
175 new volScalarField
176 (
177 IOobject
178 (
179 "p_rgh",
180 runTime.timeName(),
181 fluidRegions[i],
182 IOobject::MUST_READ,
183 IOobject::AUTO_WRITE
184 ),
185 fluidRegions[i]
186 )
187 );
188
189 // Force p_rgh to be consistent with p
190 p_rghFluid[i] = thermoFluid[i].p() - rhoFluid[i]*ghFluid[i];
191
192 fluidRegions[i].setFluxRequired(p_rghFluid[i].name());
193
194 Info<< " Adding to radiationFluid\n" << endl;
195 radiation.set
196 (
197 i,
198 radiation::radiationModel::New(thermoFluid[i].T())
199 );
200
201 initialMassFluid[i] = fvc::domainIntegrate(rhoFluid[i]).value();
202
203 Info<< " Adding to KFluid\n" << endl;
204 KFluid.set
205 (
206 i,
207 new volScalarField
208 (
209 "K",
210 0.5*magSqr(UFluid[i])
211 )
212 );
213
214 Info<< " Adding to dpdtFluid\n" << endl;
215 dpdtFluid.set
216 (
217 i,
218 new volScalarField
219 (
220 IOobject
221 (
222 "dpdt",
223 runTime.timeName(),
224 fluidRegions[i]
225 ),
226 fluidRegions[i],
227 dimensionedScalar(thermoFluid[i].p().dimensions()/dimTime, Zero)
228 )
229 );
230
231 Info<< " Adding to fieldsFluid\n" << endl;
232 fieldsFluid.set
233 (
234 i,
235 new multivariateSurfaceInterpolationScheme<scalar>::fieldTable
236 );
238 {
239 fieldsFluid[i].add(thermoFluid[i].composition().Y()[j]);
240 }
241 fieldsFluid[i].add(thermoFluid[i].he());
242
243 Info<< " Adding to QdotFluid\n" << endl;
244 QdotFluid.set
245 (
246 i,
247 new volScalarField
248 (
249 IOobject
250 (
251 "Qdot",
252 runTime.timeName(),
253 fluidRegions[i],
254 IOobject::READ_IF_PRESENT,
255 IOobject::AUTO_WRITE
256 ),
257 fluidRegions[i],
258 dimensionedScalar(dimEnergy/dimVolume/dimTime, Zero)
259 )
260 );
261
262 const dictionary& pimpleDict =
263 fluidRegions[i].solutionDict().subDict("PIMPLE");
264 pimpleDict.readIfPresent("frozenFlow", frozenFlowFluid[i]);
265
266 rhoMaxFluid.set
267 (
268 i,
269 new dimensionedScalar("rhoMax", dimDensity, GREAT, pimpleDict)
270 );
271
272 rhoMinFluid.set
273 (
274 i,
275 new dimensionedScalar("rhoMin", dimDensity, Zero, pimpleDict)
276 );
277
279 (
280 i,
281 new pressureControl(thermoFluid[i].p(), rhoFluid[i], pimpleDict, false)
282 );
283
284 Info<< " Adding MRF\n" << endl;
285 MRFfluid.set
286 (
287 i,
288 new IOMRFZoneList(fluidRegions[i])
289 );
290
291 Info<< " Adding fvOptions\n" << endl;
293 (
294 i,
295 new fv::options(fluidRegions[i])
296 );
297
298 UEqFluid.set
299 (
300 i,
301 new fvVectorMatrix(UFluid[i], dimForce)
302 );
303
304 turbulenceFluid[i].validate();
305
306 pRefCellFluid[i] = -1;
307 pRefValueFluid[i] = 0.0;
308
309 if (p_rghFluid[i].needReference())
310 {
312 (
313 thermoFluid[i].p(),
314 p_rghFluid[i],
316 pRefCellFluid[i],
318 );
319 }
320
321}
static const Foam::dimensionedScalar C("", Foam::dimTemperature, 234.5)
volScalarField & he
Definition: YEEqn.H:52
const dictionary & pimpleDict
PtrList< volScalarField > ghFluid(fluidRegions.size())
const uniformDimensionedVectorField & g
PtrList< rhoThermo > thermoFluid(fluidRegions.size())
PtrList< IOMRFZoneList > MRFfluid(fluidRegions.size())
PtrList< fv::options > fluidFvOptions(fluidRegions.size())
PtrList< uniformDimensionedScalarField > hRefFluid(fluidRegions.size())
List< label > pRefCellFluid(fluidRegions.size(), -1)
PtrList< volVectorField > UFluid(fluidRegions.size())
PtrList< volScalarField > p_rghFluid(fluidRegions.size())
List< scalar > initialMassFluid(fluidRegions.size())
List< bool > frozenFlowFluid(fluidRegions.size(), false)
PtrList< volScalarField > rhoFluid(fluidRegions.size())
PtrList< surfaceScalarField > ghfFluid(fluidRegions.size())
PtrList< radiation::radiationModel > radiation(fluidRegions.size())
PtrList< fvVectorMatrix > UEqFluid(fluidRegions.size())
List< scalar > pRefValueFluid(fluidRegions.size(), Zero)
PtrList< surfaceScalarField > phiFluid(fluidRegions.size())
PtrList< fvMesh > fluidRegions(fluidNames.size())
PtrList< multivariateSurfaceInterpolationScheme< scalar >::fieldTable > fieldsFluid(fluidRegions.size())
basicSpecieMixture & composition
volScalarField & p
PtrList< volScalarField > & Y
const volScalarField & T
engineTime & runTime
PtrList< volScalarField > dpdtFluid(fluidRegions.size())
PtrList< compressible::turbulenceModel > turbulenceFluid(fluidRegions.size())
PtrList< CombustionModel< rhoReactionThermo > > reactionFluid(fluidRegions.size())
PtrList< pressureControl > pressureControls(fluidRegions.size())
PtrList< volScalarField > QdotFluid(fluidRegions.size())
PtrList< dimensionedScalar > rhoMinFluid(fluidRegions.size())
PtrList< volScalarField > KFluid(fluidRegions.size())
PtrList< dimensionedScalar > rhoMaxFluid(fluidRegions.size())
const pressureControl & pressureControl
setRefCell(p, pimple.dict(), pRefCell, pRefValue)
#define forAll(list, i)
Loop across all elements in list.
Definition: stdFoam.H:333