-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathphaseModel.H
365 lines (286 loc) · 9.65 KB
/
phaseModel.H
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::phaseModel
SourceFiles
phaseModel.C
\*---------------------------------------------------------------------------*/
#ifndef phaseModel_H
#define phaseModel_H
#include "dictionary.H"
#include "dimensionedScalar.H"
#include "volFields.H"
#include "surfaceFields.H"
#include "transportModel.H"
#include "rhoThermo.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// Forward declarations
class twoPhaseSystem;
class diameterModel;
template<class Phase>
class PhaseCompressibleTurbulenceModel;
/*---------------------------------------------------------------------------*\
Class phaseModel Declaration
\*---------------------------------------------------------------------------*/
class phaseModel
:
public volScalarField,
public transportModel
{
// Private data
//- Reference to the twoPhaseSystem to which this phase belongs
const twoPhaseSystem& fluid_;
//- Name of phase
word name_;
dictionary phaseDict_;
//- Return the residual phase-fraction for given phase
// Used to stabilize the phase momentum as the phase-fraction -> 0
dimensionedScalar residualAlpha_;
//- Optional maximum phase-fraction (e.g. packing limit)
scalar alphaMax_;
//- Thermophysical properties
autoPtr<rhoThermo> thermo_;
//- Velocity
volVectorField U_;
//- Volumetric flux of the phase
surfaceScalarField alphaPhi_;
//- Mass flux of the phase
surfaceScalarField alphaRhoPhi_;
//- Volumetric flux of the phase
autoPtr<surfaceScalarField> phiPtr_;
//- Diameter model
autoPtr<diameterModel> dPtr_;
//- Turbulence model
autoPtr<PhaseCompressibleTurbulenceModel<phaseModel>> turbulence_;
public:
// Constructors
phaseModel
(
const twoPhaseSystem& fluid,
const dictionary& phaseProperties,
const word& phaseName
);
//- Destructor
virtual ~phaseModel();
// Member Functions
//- Return the name of this phase
const word& name() const
{
return name_;
}
//- Return the twoPhaseSystem to which this phase belongs
const twoPhaseSystem& fluid() const
{
return fluid_;
}
//- Return the other phase in this two-phase system
const phaseModel& otherPhase() const;
//- Return the residual phase-fraction for given phase
// Used to stabilize the phase momentum as the phase-fraction -> 0
const dimensionedScalar& residualAlpha() const
{
return residualAlpha_;
}
//- Optional maximum phase-fraction (e.g. packing limit)
// Defaults to 1
scalar alphaMax() const
{
return alphaMax_;
}
//- Return the Sauter-mean diameter
tmp<volScalarField> d() const;
//- Return the turbulence model
const PhaseCompressibleTurbulenceModel<phaseModel>&
turbulence() const;
//- Return non-const access to the turbulence model
// for correction
PhaseCompressibleTurbulenceModel<phaseModel>&
turbulence();
//- Return the thermophysical model
const rhoThermo& thermo() const
{
return thermo_();
}
//- Return non-const access to the thermophysical model
// for correction
rhoThermo& thermo()
{
return thermo_();
}
//- Return the laminar viscosity
tmp<volScalarField> nu() const
{
return thermo_->nu();
}
//- Return the laminar viscosity for patch
tmp<scalarField> nu(const label patchi) const
{
return thermo_->nu(patchi);
}
//- Return the laminar dynamic viscosity
tmp<volScalarField> mu() const
{
return thermo_->mu();
}
//- Return the laminar dynamic viscosity for patch
tmp<scalarField> mu(const label patchi) const
{
return thermo_->mu(patchi);
}
//- Thermal diffusivity for enthalpy of mixture [kg/m/s]
tmp<volScalarField> alpha() const
{
return thermo_->alpha();
}
//- Thermal diffusivity for enthalpy of mixture for patch [kg/m/s]
tmp<scalarField> alpha(const label patchi) const
{
return thermo_->alpha(patchi);
}
//- Thermal diffusivity for temperature of mixture [J/m/s/K]
tmp<scalarField> kappa(const label patchi) const
{
return thermo_->kappa(patchi);
}
//- Thermal diffusivity for temperature of mixture
// for patch [J/m/s/K]
tmp<volScalarField> kappa() const
{
return thermo_->kappa();
}
//- Thermal diffusivity for energy of mixture [kg/m/s]
tmp<volScalarField> alphahe() const
{
return thermo_->alphahe();
}
//- Thermal diffusivity for energy of mixture for patch [kg/m/s]
tmp<scalarField> alphahe(const label patchi) const
{
return thermo_->alphahe(patchi);
}
//- Effective thermal turbulent diffusivity for temperature
// of mixture [J/m/s/K]
tmp<volScalarField> kappaEff
(
const volScalarField& alphat
) const
{
return thermo_->kappaEff(alphat);
}
//- Effective thermal turbulent diffusivity for temperature
// of mixture for patch [J/m/s/K]
tmp<scalarField> kappaEff
(
const scalarField& alphat,
const label patchi
) const
{
return thermo_->kappaEff(alphat, patchi);
}
//- Effective thermal turbulent diffusivity of mixture [kg/m/s]
tmp<volScalarField> alphaEff
(
const volScalarField& alphat
) const
{
return thermo_->alphaEff(alphat);
}
//- Effective thermal turbulent diffusivity of mixture
// for patch [kg/m/s]
tmp<scalarField> alphaEff
(
const scalarField& alphat,
const label patchi
) const
{
return thermo_->alphaEff(alphat, patchi);
}
//- Return the specific heat capacity
tmp<volScalarField> Cp() const
{
return thermo_->Cp();
}
//- Return the density
const volScalarField& rho() const
{
return thermo_->rho();
}
//- Return the velocity
const volVectorField& U() const
{
return U_;
}
//- Return non-const access to the velocity
// Used in the momentum equation
volVectorField& U()
{
return U_;
}
//- Return the volumetric flux
const surfaceScalarField& phi() const
{
return phiPtr_();
}
//- Return non-const access to the volumetric flux
surfaceScalarField& phi()
{
return phiPtr_();
}
//- Return the volumetric flux of the phase
const surfaceScalarField& alphaPhi() const
{
return alphaPhi_;
}
//- Return non-const access to the volumetric flux of the phase
surfaceScalarField& alphaPhi()
{
return alphaPhi_;
}
//- Return the mass flux of the phase
const surfaceScalarField& alphaRhoPhi() const
{
return alphaRhoPhi_;
}
//- Return non-const access to the mass flux of the phase
surfaceScalarField& alphaRhoPhi()
{
return alphaRhoPhi_;
}
//- Ensure that the flux at inflow/outflow BCs is preserved
void correctInflowOutflow(surfaceScalarField& alphaPhi) const;
//- Correct the phase properties
// other than the thermodynamics and turbulence
// which have special treatment
void correct();
//- Read phaseProperties dictionary
virtual bool read(const dictionary& phaseProperties);
//- Dummy Read for transportModel
virtual bool read()
{
return true;
}
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //