executed with foamRun for single region simulations of foamMultiRun for
multi-region simulations. Replaces interFoam and all the corresponding
tutorials have been updated and moved to tutorials/modules/incompressibleVoF.
Both incompressibleVoF and compressibleVoF solver modules are derived from the
common two-phase VoF base-class solvers::VoFSolver which handles the
complexities of VoF interface-compression, boundedness and conservation with
2nd-order schemes in space and time using the semi-implicit MULES limiter and
solution proceedure. This maximises code re-use, improves readability and
simplifies maintenance.
Class
Foam::solvers::incompressibleVoF
Description
Solver module for for 2 incompressible, isothermal immiscible fluids using a
VOF (volume of fluid) phase-fraction based interface capturing approach,
with optional mesh motion and mesh topology changes including adaptive
re-meshing.
The momentum and other fluid properties are of the "mixture" and a single
momentum equation is solved.
Either mixture or two-phase transport modelling may be selected. In the
mixture approach a single laminar, RAS or LES model is selected to model the
momentum stress. In the Euler-Euler two-phase approach separate laminar,
RAS or LES selected models are selected for each of the phases.
Uses the flexible PIMPLE (PISO-SIMPLE) solution for time-resolved and
pseudo-transient and steady simulations.
Optional fvModels and fvConstraints are provided to enhance the simulation
in many ways including adding various sources, Lagrangian
particles, surface film etc. and constraining or limiting the solution.
SourceFiles
incompressibleVoF.C
See also
Foam::solvers::VoFSolver
Foam::solvers::compressibleVoF
20 lines
373 B
C++
20 lines
373 B
C++
tmp<volScalarField> divU;
|
|
tmp<volScalarField::Internal> Su;
|
|
tmp<volScalarField::Internal> Sp;
|
|
|
|
if (divergent())
|
|
{
|
|
// Phase change alpha1 source
|
|
const fvScalarMatrix alphaSup(fvModels().source(alpha1));
|
|
|
|
Su = alphaSup.Su();
|
|
Sp = alphaSup.Sp();
|
|
|
|
divU =
|
|
(
|
|
mesh.moving()
|
|
? fvc::div(phiCN() + mesh.phi())
|
|
: fvc::div(phiCN())
|
|
);
|
|
}
|