multiphaseVoFSolver.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) 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::multiphaseVoFSolver
26 
27 Description
28  Base solver module for the solution of multiple immiscible fluids using a
29  VOF (volume of fluid) phase-fraction based interface capturing approach,
30  with optional mesh motion and mesh topology changes including adaptive
31  re-meshing.
32 
33  The momentum and other fluid properties are of the "mixture" and a single
34  momentum equation is solved.
35 
36  Uses the flexible PIMPLE (PISO-SIMPLE) solution for time-resolved and
37  pseudo-transient and steady simulations.
38 
39 SourceFiles
40  multiphaseVoFSolver.C
41 
42 See also
43  Foam::solvers::VoFSolver
44  Foam::solvers::incompressibleMultiphaseVoFSolver
45 
46 \*---------------------------------------------------------------------------*/
47 
48 #ifndef multiphaseVoFSolver_H
49 #define multiphaseVoFSolver_H
50 
51 #include "VoFSolver.H"
52 #include "multiphaseVoFMixture.H"
53 
54 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
55 
56 namespace Foam
57 {
58 namespace solvers
59 {
60 
61 /*---------------------------------------------------------------------------*\
62  Class multiphaseVoFSolver Declaration
63 \*---------------------------------------------------------------------------*/
64 
66 :
67  public VoFSolver
68 {
69 
70 protected:
71 
72  // Phase properties
73 
74  //- Reference to the multiphaseVoFMixture
76 
77  //- Reference to the phases
79 
80 
81 private:
82 
83  // Private Member Functions
84 
85  //- Correct the cached Courant numbers
86  void correctCoNum();
87 
88 
89 protected:
90 
91  // Protected Member Functions
92 
93  //- Adjust the rDeltaT in the vicinity of the interface
94  virtual void setInterfaceRDeltaT(volScalarField& rDeltaT);
95 
96  //- Solve for the phase-fractions
97  virtual void alphaPredictor() = 0;
98 
99  //- Correct the interface properties following mesh-change
100  // and phase-fraction update
101  virtual void correctInterface();
102 
103  //- Return the interface surface tension force for the momentum equation
105 
106 
107 public:
108 
109  //- Runtime type information
110  TypeName("multiphaseVoFSolver");
111 
112 
113  // Constructors
114 
115  //- Construct from region mesh
117 
118  //- Disallow default bitwise copy construction
119  multiphaseVoFSolver(const multiphaseVoFSolver&) = delete;
120 
121 
122  //- Destructor
123  virtual ~multiphaseVoFSolver();
124 
125 
126  // Member Functions
127 
128  //- Called at the start of the time-step, before the PIMPLE loop
129  virtual void preSolve();
130 
131  //- Called at the start of the PIMPLE loop
132  virtual void prePredictor();
133 
134 
135  // Member Operators
136 
137  //- Disallow default bitwise assignment
138  void operator=(const multiphaseVoFSolver&) = delete;
139 };
140 
141 
142 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
143 
144 } // End namespace solvers
145 } // End namespace Foam
146 
147 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
148 
149 #endif
150 
151 // ************************************************************************* //
Generic GeometricField class.
Template dictionary class which manages the storage associated with it.
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
Definition: autoPtr.H:51
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:99
Multiphase VoF mixture with support for interface properties.
const fvMesh & mesh
Region mesh.
Definition: solver.H:101
Base solver module base-class for the solution of immiscible fluids using a VOF (volume of fluid) pha...
Definition: VoFSolver.H:73
Base solver module for the solution of multiple immiscible fluids using a VOF (volume of fluid) phase...
PtrListDictionary< VoFphase > & phases
Reference to the phases.
virtual tmp< surfaceScalarField > surfaceTensionForce() const
Return the interface surface tension force for the momentum equation.
virtual void prePredictor()
Called at the start of the PIMPLE loop.
multiphaseVoFSolver(fvMesh &mesh, autoPtr< multiphaseVoFMixture >)
Construct from region mesh.
multiphaseVoFMixture & mixture
Reference to the multiphaseVoFMixture.
virtual void alphaPredictor()=0
Solve for the phase-fractions.
virtual void setInterfaceRDeltaT(volScalarField &rDeltaT)
Adjust the rDeltaT in the vicinity of the interface.
virtual void preSolve()
Called at the start of the time-step, before the PIMPLE loop.
virtual void correctInterface()
Correct the interface properties following mesh-change.
void operator=(const multiphaseVoFSolver &)=delete
Disallow default bitwise assignment.
TypeName("multiphaseVoFSolver")
Runtime type information.
A class for managing temporary objects.
Definition: tmp.H:55
Namespace for OpenFOAM.