compressibleVoF.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2022-2024 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 Class
25  Foam::solvers::compressibleVoF
26 
27 Description
28  Solver module for 2 compressible, non-isothermal immiscible fluids
29  using a VOF (volume of fluid) phase-fraction based interface capturing
30  approach, with optional mesh motion and mesh topology changes including
31  adaptive re-meshing.
32 
33  The momentum and other fluid properties are of the "mixture" and a single
34  momentum equation is solved.
35 
36  Either mixture or two-phase transport modelling may be selected. In the
37  mixture approach a single laminar, RAS or LES model is selected to model the
38  momentum stress. In the Euler-Euler two-phase approach separate laminar,
39  RAS or LES selected models are selected for each of the phases.
40 
41  Uses the flexible PIMPLE (PISO-SIMPLE) solution for time-resolved and
42  pseudo-transient and steady simulations.
43 
44  Optional fvModels and fvConstraints are provided to enhance the simulation
45  in many ways including adding various sources, Lagrangian
46  particles, surface film etc. and constraining or limiting the solution.
47 
48 SourceFiles
49  compressibleVoF.C
50 
51 See also
52  Foam::solvers::VoFSolver
53  Foam::solvers::twoPhaseVoFSolver
54  Foam::solvers::incompressibleVoF
55 
56 \*---------------------------------------------------------------------------*/
57 
58 #ifndef compressibleVoF_H
59 #define compressibleVoF_H
60 
61 #include "twoPhaseVoFSolver.H"
65 
66 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
67 
68 namespace Foam
69 {
70 namespace solvers
71 {
72 
73 /*---------------------------------------------------------------------------*\
74  Class compressibleVoF Declaration
75 \*---------------------------------------------------------------------------*/
76 
77 class compressibleVoF
78 :
79  public twoPhaseVoFSolver
80 {
81 
82 protected:
83 
84  // Phase properties
85 
86  //- The compressible two-phase mixture
88 
89 
90  // Thermophysical properties
91 
92  //- Reference to the mixture static pressure field
94 
95  //- Compressibility source
97 
98 
99  // Pressure reference
100 
101  //- Pressure reference
103 
104 
105  // Kinematic properties
106 
107  // Phase-1 mass-flux
109 
110  // Phase-2 mass-flux
112 
113  //- Kinetic energy field
114  // Used in the energy equation
116 
117 
118  // Momentum transport
119 
120  //- Momentum transport model
122 
123 
124  // Thermophysical transport
125 
126  //- Thermophysical transport model
129 
130 
131  // Cached temporary fields
132 
133  //- Phase-1 continuity error
135 
136  //- Phase-2 continuity error
138 
139 
140  // Protected Member Functions
141 
142  //- Return the pressure reference
143  virtual const Foam::pressureReference& pressureReference() const
144  {
145  return pressureReference_;
146  }
147 
148  //- The fluid is incompressible if both phases are incompressible
149  virtual bool incompressible() const
150  {
151  return mixture.incompressible();
152  }
153 
154  //- Compressible flow is divergent
155  virtual bool divergent() const
156  {
157  return
158  !incompressible()
161  }
162 
163  //- Return the mixture compressibility/density
164  // Used by CorrectPhi for compressible mixtures following mesh change
165  virtual tmp<volScalarField> psiByRho() const
166  {
167  return mixture.psiByRho();
168  }
169 
170  //- Calculate the alpha equation sources
171  virtual void alphaSuSp
172  (
176  );
177 
178  //- Return the momentum equation stress term
180 
181 public:
182 
183  // Access to the physical state
184 
185  //- The compressible two-phase mixture
187 
188 
189 public:
190 
191  //- Runtime type information
192  TypeName("compressibleVoF");
193 
194 
195  // Constructors
196 
197  //- Construct from region mesh
199 
200  //- Disallow default bitwise copy construction
201  compressibleVoF(const compressibleVoF&) = delete;
202 
203 
204  //- Destructor
205  virtual ~compressibleVoF();
206 
207 
208  // Member Functions
209 
210  //- Called at the start of the PIMPLE loop
211  virtual void prePredictor();
212 
213  //- Construct and optionally solve the momentum equation
214  virtual void momentumPredictor();
215 
216  //- Construct and solve the energy equation,
217  // convert to temperature
218  // and update thermophysical and transport properties
219  virtual void thermophysicalPredictor();
220 
221  //- Construct and solve the pressure equation in the PISO loop
222  virtual void pressureCorrector();
223 
224  //- Correct the momentum and thermophysical transport modelling
225  virtual void postCorrector();
226 
227 
228  // Member Operators
229 
230  //- Disallow default bitwise assignment
231  void operator=(const compressibleVoF&) = delete;
232 };
233 
234 
235 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
236 
237 } // End namespace solvers
238 } // End namespace Foam
239 
240 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
241 
242 #endif
243 
244 // ************************************************************************* //
const dictionary & alphaControls
Definition: alphaControls.H:1
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Generic GeometricField class.
const word & name() const
Return name.
Definition: IOobject.H:310
Transport model selection class for the compressibleInterFoam family of solvers.
Class to represent a mixture of two rhoFluidThermo-based phases.
const volScalarField & rho1() const
Return the density of phase 1.
const volScalarField & rho2() const
Return the density of phase 2.
A list of keyword definitions, which are a keyword followed by any number of values (e....
Definition: dictionary.H:162
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:99
virtual bool addsSupToField(const word &fieldName) const
Return true if an fvModel adds a source term to the given.
Definition: fvModels.C:229
Provides controls for the pressure reference in closed-volume simulations.
Foam::fvModels & fvModels() const
Return the fvModels that are created on demand.
Definition: solver.C:96
const fvMesh & mesh
Region mesh.
Definition: solver.H:101
const volVectorField & U
Reference to the velocity field.
Definition: VoFSolver.H:209
Solver module for 2 compressible, non-isothermal immiscible fluids using a VOF (volume of fluid) phas...
virtual void thermophysicalPredictor()
Construct and solve the energy equation,.
virtual tmp< volScalarField > psiByRho() const
Return the mixture compressibility/density.
virtual const Foam::pressureReference & pressureReference() const
Return the pressure reference.
virtual void prePredictor()
Called at the start of the PIMPLE loop.
virtual bool incompressible() const
The fluid is incompressible if both phases are incompressible.
volScalarField & p
Reference to the mixture static pressure field.
virtual bool divergent() const
Compressible flow is divergent.
tmp< volScalarField::Internal > contErr2
Phase-2 continuity error.
volScalarField::Internal vDot
Compressibility source.
const compressibleTwoPhaseVoFMixture & mixture
The compressible two-phase mixture.
volScalarField K
Kinetic energy field.
virtual void pressureCorrector()
Construct and solve the pressure equation in the PISO loop.
virtual void postCorrector()
Correct the momentum and thermophysical transport modelling.
compressibleInterPhaseTransportModel momentumTransport
Momentum transport model.
virtual void momentumPredictor()
Construct and optionally solve the momentum equation.
compressibleTwoPhaseVoFMixture & mixture_
The compressible two-phase mixture.
compressibleVoF(fvMesh &mesh)
Construct from region mesh.
TypeName("compressibleVoF")
Runtime type information.
void operator=(const compressibleVoF &)=delete
Disallow default bitwise assignment.
virtual void alphaSuSp(tmp< volScalarField::Internal > &Su, tmp< volScalarField::Internal > &Sp, const dictionary &alphaControls)
Calculate the alpha equation sources.
Definition: alphaSuSp.C:32
virtual ~compressibleVoF()
Destructor.
tmp< volScalarField::Internal > contErr1
Phase-1 continuity error.
virtual tmp< fvVectorMatrix > divDevTau(volVectorField &U)
Return the momentum equation stress term.
compressibleInterPhaseThermophysicalTransportModel thermophysicalTransport
Thermophysical transport model.
Foam::pressureReference pressureReference_
Pressure reference.
Solver module base-class for 2 immiscible fluids using a VOF (volume of fluid) phase-fraction based i...
A class for managing temporary objects.
Definition: tmp.H:55
tmp< VolField< Type > > Su(const VolField< Type > &su, const VolField< Type > &vf)
Definition: fvcSup.C:44
tmp< VolField< Type > > Sp(const volScalarField &sp, const VolField< Type > &vf)
Definition: fvcSup.C:67
Namespace for OpenFOAM.