incompressibleMultiphaseVoF.C
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) 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 \*---------------------------------------------------------------------------*/
25 
27 #include "fvCorrectPhi.H"
28 #include "geometricZeroField.H"
30 
31 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
32 
33 namespace Foam
34 {
35 namespace solvers
36 {
39 }
40 }
41 
42 
43 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
44 
46 (
47  fvMesh& mesh
48 )
49 :
51  (
52  mesh,
54  (
56  )
57  ),
58 
59  mixture
60  (
62  (
64  )
65  ),
66 
67  phases(mixture.phases()),
68 
69  p
70  (
71  IOobject
72  (
73  "p",
74  runTime.name(),
75  mesh,
76  IOobject::NO_READ,
77  IOobject::AUTO_WRITE
78  ),
79  p_rgh + rho*buoyancy.gh
80  ),
81 
82  pressureReference_
83  (
84  p,
85  p_rgh,
86  pimple.dict(),
87  false
88  ),
89 
90  momentumTransport_
91  (
92  incompressible::momentumTransportModel::New
93  (
94  U,
95  phi,
96  mixture
97  )
98  ),
99 
100  momentumTransport(momentumTransport_())
101 {
102  // Read the controls
103  readControls();
104 
105  if (correctPhi || mesh.topoChanging())
106  {
107  rAU = new volScalarField
108  (
109  IOobject
110  (
111  "rAU",
112  runTime.name(),
113  mesh,
116  ),
117  mesh,
119  );
120  }
121 
122  if (!runTime.restart() || !divergent())
123  {
124  correctUphiBCs(U_, phi_, true);
125 
127  (
128  phi_,
129  U,
130  p_rgh,
131  rAU,
134  pimple
135  );
136  }
137 }
138 
139 
140 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
141 
143 {}
144 
145 
146 // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
147 
149 {
151 
152  if (pimple.predictTransport())
153  {
154  momentumTransport.predict();
155  }
156 }
157 
158 
160 {}
161 
162 
164 {
165  if (pimple.correctTransport())
166  {
167  momentumTransport.correct();
168  }
169 }
170 
171 
172 // ************************************************************************* //
Macros for easy insertion into run-time selection tables.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
Definition: IOobject.H:99
bool restart() const
Return true if the run is a restart, i.e. startTime != beginTime.
Definition: Time.H:428
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
Definition: autoPtr.H:51
const word & name() const
Return const reference to name.
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:101
bool topoChanging() const
Does the mesh topology change?
Definition: fvMesh.C:635
Incompressible multiphase mixture for interface-capturing simulations.
Abstract base class for turbulence models (RAS, LES and laminar).
Multiphase VoF mixture with support for interface properties.
Abstract base class for run-time selectable region solvers.
Definition: solver.H:55
pimpleNoLoopControl pimple
PIMPLE inner-loop controls.
Definition: solver.H:100
const Time & runTime
Time.
Definition: solver.H:97
const fvMesh & mesh
Region mesh.
Definition: solver.H:94
volScalarField & p_rgh
Reference to the buoyant pressure for buoyant cases.
Definition: VoFSolver.H:107
volVectorField U_
Velocity field.
Definition: VoFSolver.H:94
autoPtr< volScalarField > rAU
Inverse momentum equation diagonal.
Definition: VoFSolver.H:129
const volVectorField & U
Reference to the velocity field.
Definition: VoFSolver.H:209
surfaceScalarField phi_
Volumetric flux field.
Definition: VoFSolver.H:97
Buoyancy related data for the Foam::solvers::isothermalFluid solver module when solving buoyant cases...
Definition: buoyancy.H:70
bool correctPhi
Switch to correct the flux after mesh change.
Definition: fluidSolver.H:95
void readControls()
Read controls.
Definition: fluidSolver.C:45
Solver module for the solution of multiple incompressible, isothermal immiscible fluids using a VOF (...
virtual void thermophysicalPredictor()
Construct and solve the energy equation,.
virtual const Foam::pressureReference & pressureReference() const
Return the pressure reference.
virtual void prePredictor()
Called at the start of the PIMPLE loop.
virtual bool divergent() const
The flow is not incompressible and hence not divergent.
virtual void postCorrector()
Correct the momentum and thermophysical transport modelling.
incompressibleMultiphaseVoF(fvMesh &mesh)
Construct from region mesh.
Base solver module for the solution of multiple immiscible fluids using a VOF (volume of fluid) phase...
virtual void prePredictor()
Called at the start of the PIMPLE loop.
pimpleControl pimple(mesh)
Flux correction functions to ensure continuity.
U
Definition: pEqn.H:72
autoPtr< CompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const viscosity &viscosity)
void correctPhi(surfaceScalarField &phi, const volVectorField &U, const volScalarField &p, const autoPtr< volScalarField > &rAU, const autoPtr< volScalarField > &divU, const pressureReference &pressureReference, nonOrthogonalSolutionControl &pcorrControl)
Definition: fvCorrectPhi.C:32
addToRunTimeSelectionTable(solver, compressibleMultiphaseVoF, fvMesh)
defineTypeNameAndDebug(compressibleMultiphaseVoF, 0)
Namespace for OpenFOAM.
To & refCast(From &r)
Reference type cast template function.
Definition: typeInfo.H:111
const dimensionSet dimTime
const dimensionSet dimDensity
VolField< scalar > volScalarField
Definition: volFieldsFwd.H:61
void correctUphiBCs(volVectorField &U, surfaceScalarField &phi, const bool evaluateUBCs)
If the mesh is moving correct the velocity BCs on the moving walls to.
word name(const complex &)
Return a string representation of a complex.
Definition: complex.C:47
dictionary dict
volScalarField & p