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-2023 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 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()
160  }
161 
162  //- Return the mixture compressibility/density
163  // Used by CorrectPhi for compressible mixtures following mesh change
164  virtual tmp<volScalarField> psiByRho() const
165  {
166  return mixture.psiByRho();
167  }
168 
169  //- Calculate the alpha equation sources
170  virtual void alphaSuSp
171  (
174  );
175 
176  //- Return the momentum equation stress term
178 
179 public:
180 
181  // Access to the physical state
182 
183  //- The compressible two-phase mixture
185 
186 
187 public:
188 
189  //- Runtime type information
190  TypeName("compressibleVoF");
191 
192 
193  // Constructors
194 
195  //- Construct from region mesh
197 
198  //- Disallow default bitwise copy construction
199  compressibleVoF(const compressibleVoF&) = delete;
200 
201 
202  //- Destructor
203  virtual ~compressibleVoF();
204 
205 
206  // Member Functions
207 
208  //- Called at the start of the PIMPLE loop
209  virtual void prePredictor();
210 
211  //- Construct and optionally solve the momentum equation
212  virtual void momentumPredictor();
213 
214  //- Construct and solve the energy equation,
215  // convert to temperature
216  // and update thermophysical and transport properties
217  virtual void thermophysicalPredictor();
218 
219  //- Construct and solve the pressure equation in the PISO loop
220  virtual void pressureCorrector();
221 
222  //- Correct the momentum and thermophysical transport modelling
223  virtual void postCorrector();
224 
225 
226  // Member Operators
227 
228  //- Disallow default bitwise assignment
229  void operator=(const compressibleVoF&) = delete;
230 };
231 
232 
233 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
234 
235 } // End namespace solvers
236 } // End namespace Foam
237 
238 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
239 
240 #endif
241 
242 // ************************************************************************* //
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 rhoThermo-based phases.
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:101
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:85
const fvMesh & mesh
Region mesh.
Definition: solver.H:94
const volVectorField & U
Reference to the velocity field.
Definition: VoFSolver.H:209
Solver module for for 2 compressible, non-isothermal immiscible fluids using a VOF (volume of fluid) ...
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.
virtual void alphaSuSp(tmp< volScalarField::Internal > &Su, tmp< volScalarField::Internal > &Sp)
Calculate the alpha equation sources.
Definition: alphaSuSp.C:32
const compressibleTwoPhaseVoFMixture & mixture
The compressible two-phase mixture.
volScalarField K
Kinetic energy field.
volScalarField::Internal dgdt
Compressibility source.
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 ~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.
volScalarField & alpha1
Reference to the phase1-fraction.
Solver module base-class for for 2 immiscible fluids using a VOF (volume of fluid) phase-fraction bas...
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.