0% found this document useful (0 votes)
112 views

Guided Tutorials Split

This guided tutorial simulates a rising bubble using the volume of fluid (VOF) method. The tutorial case is located in $TM/multiphase/guided_tutorials/GT5/ and contains scripts to automatically run the case. The tutorial sets up the physical properties, boundary conditions, numerical methods, and initializes the fields before running the simulation to model the rising bubble.

Uploaded by

Rahul Krishna
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
112 views

Guided Tutorials Split

This guided tutorial simulates a rising bubble using the volume of fluid (VOF) method. The tutorial case is located in $TM/multiphase/guided_tutorials/GT5/ and contains scripts to automatically run the case. The tutorial sets up the physical properties, boundary conditions, numerical methods, and initializes the fields before running the simulation to model the rising bubble.

Uploaded by

Rahul Krishna
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 49

Guided tutorials

• Guided tutorial 4. Surface tension driven flow – Bubble in zero gravity. VOF
Small scale.
• This case is ready to run.
• The case is located in the directory:

$TM/multiphase/guided_tutorials/GT4/

• In the case directory, you will find a few scripts with the extension .sh, namely, run_all.sh, run_mesh.sh,
run_sampling.sh, run_solver.sh, and so on.
• These scripts can be used to run the case automatically by typing in the terminal, for example,
• $> sh run_solver
• These scripts are human-readable, and we highly recommend you open them, get familiar with the steps, and type the
commands in the terminal. In this way, you will get used with the command line interface and OpenFOAM commands.
• If you are already comfortable with OpenFOAM, run the cases automatically using these scripts.
• In the case directory, you will also find the README.FIRST file. In this file, you will find some additional comments.

GT-60
Guided tutorials
Guided tutorial 4

Surface tension driven flow or bubble in zero gravity – VOF

• According to you, what will happen to a perfect circular bubble, in perfect equilibrium, in zero
gravity, with no perturbations and with given surface tension?

GT-61
Guided tutorials
Guided tutorial 4

Surface tension driven flow or bubble in zero gravity – VOF

http://www.wolfdynamics.com/training/mphase/image36.gif

• In reality, nothing should happen but due to the mesh, numerical diffusion, and discretization
errors the bubble wobbles a little bit.

GT-62
Guided tutorials
Guided tutorial 4

Surface tension driven flow or bubble in zero gravity – VOF

• According to you, what will happen to this elliptical bubble in zero gravity, with no perturbations
and no surface tension?

GT-63
Guided tutorials
Guided tutorial 4

Surface tension driven flow or bubble in zero gravity – VOF

• According to you, what will happen to this elliptical bubble in zero gravity, with no perturbations
and with given surface tension?

GT-64
Guided tutorials
Guided tutorial 4

Surface tension driven flow or bubble in zero gravity – VOF

http://www.wolfdynamics.com/training/mphase/image37.gif

• In this guided tutorial we model an elliptical bubble in a zero-gravity field.


• The problem is transient in nature.
• The wobbling is due to surface tension.
• We will use the VOF approach to resolve the interface between the two phases.
• When dealing with surface tension driven flows, numerical accuracy is extremely important as the surface
tension forces depend on the curvature of the surface. GT-65
Guided tutorials
Guided tutorial 4

Surface tension driven flow or bubble in zero gravity – VOF

• We are going to use the following solver: interFoam


• Let us explore every dictionary in the case directory.
• The first step is to set the physical properties.
• Go to the directory constant and open the following dictionaries:
• g: in this dictionary we set the gravity.
• transportProperties: this dictionary contains the material properties for each
phase, separated into two blocks (one for water and the other for air).
• momentumTransport: in this dictionary we select the turbulence model to use.
• In this case we are not using turbulence model (laminar).
• If you want, you can use a turbulence model. Remember, you will need to set the boundary
conditions, initial conditions, discretization method and solution method for the new turbulent
variables.

GT-66
Guided tutorials
Guided tutorial 4

Surface tension driven flow or bubble in zero gravity – VOF

• The next step is to set the boundary and initial conditions.


• Go to the directory 0 (or 0_org) and open the following dictionaries:
• U: in this dictionary we set the boundary and initial conditions for the velocity vector
field.
• p_rgh: in this dictionary we set the boundary and initial conditions for the pressure
scalar field.
• alpha.phase1.org: in this dictionary we set the boundary and initial conditions for
the alpha scalar field (volume of fraction).

• In the dictionary constant/transportProperties we defined the phases phase1 and


phase2, hence in the directory 0 we define the dictionary alpha.phase1.org that will take
the values of the phase phase1.
• The other phase will take the remaining values.

GT-67
Guided tutorials
Guided tutorial 4

Surface tension driven flow or bubble in zero gravity – VOF

• We set the boundary and initial conditions for the alpha scalar field (volume of fraction) in the
dictionary alpha.water.
• The dictionary alpha.water.org is a backup of the original dictionary as it will be overwritten
when we initialize the fields.
• Remember, the name of the base type boundary condition (dictionary
constant/polyMesh/boundary) and the name of the numerical type boundary condition
(dictionaries located in the directory 0) need to be the same, if not, OpenFOAM will complain.
• Also, the base type and numerical type boundary conditions need to be consistent.

GT-68
Guided tutorials
Guided tutorial 4

Surface tension driven flow or bubble in zero gravity – VOF

• Finally, we set the run-time parameter, numerical method and linear solvers.
• Go to the directory system and open the following dictionaries:
• controlDict: in this dictionary we set general run-time parameters and function
objects.
• fvSchemes: in this dictionary we set the discretization method.
• fvSolution: in this dictionary we set the linear solvers and parameters specific of
the pressure-velocity coupling method.

• Do not worry, later on we are going to study in more details the dictionaries fvSchemes and
fvSolution.

GT-69
Guided tutorials
Guided tutorial 4

Surface tension driven flow or bubble in zero gravity – VOF

• Before proceeding to the simulation stage, we need to do a custom initialization of the fields.
• Go to the directory system and open the following dictionary:
• setFieldsDict.ellipse we use this dictionary for custom initialization of the
fields using a STL file

GT-70
Guided tutorials
Guided tutorial 4

Surface tension driven flow or bubble in zero gravity – VOF

• At this point, we are ready to run the simulation.


• To run the tutorial automatically, type in the terminal:

1. $> run_all.sh

• Feel free to open the file run_all.sh to see all the commands used.
• If you prefer to run the case manually, type the commands in the terminal window.

GT-71
Guided tutorials

• Guided tutorial 5. Rising bubble. VOF Small scale.


• This case is ready to run.
• The case is located in the directory:

$TM/multiphase/guided_tutorials/GT5/

• In the case directory, you will find a few scripts with the extension .sh, namely, run_all.sh, run_mesh.sh,
run_sampling.sh, run_solver.sh, and so on.
• These scripts can be used to run the case automatically by typing in the terminal, for example,
• $> sh run_solver
• These scripts are human-readable, and we highly recommend you open them, get familiar with the steps, and type the
commands in the terminal. In this way, you will get used with the command line interface and OpenFOAM commands.
• If you are already comfortable with OpenFOAM, run the cases automatically using these scripts.
• In the case directory, you will also find the README.FIRST file. In this file, you will find some additional comments.

GT-72
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• In this guided tutorial we model a rising


bubble.
• The problem is transient in nature.
• The bubble will rise due to buoyancy
forces.
• We will use the VOF approach to
resolve the interface between the two
phases.
• We will use this case to study the
numerics.

References:
• http://www.featflow.de/en/benchmarks/cfdbenchmarking/bubble.html
• Klostermann, J.; Schaake, K.; Schwarze, R.: Numerical simulation of a single rising bubble by VOF with
surface compression, International Journal for Numerical Methods in Fluids, DOI: 10.1002/fld.3692

GT-73
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• In this guided tutorial we model a rising


bubble.
• The problem is transient in nature.
• The bubble will rise due to buoyancy
forces.
• We will use the VOF approach to
resolve the interface between the two
phases.
• We will use this case to study the
numerics.

http://www.wolfdynamics.com/training/mphase/image38.gif

References:
• http://www.featflow.de/en/benchmarks/cfdbenchmarking/bubble.html
• Klostermann, J.; Schaake, K.; Schwarze, R.: Numerical simulation of a single rising bubble by VOF with
surface compression, International Journal for Numerical Methods in Fluids, DOI: 10.1002/fld.3692

GT-74
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

References:
• http://www.featflow.de/en/benchmarks/cfdbenchmarking/bubble.html
• Klostermann, J.; Schaake, K.; Schwarze, R.: Numerical simulation of a single rising bubble by VOF with surface compression,
International Journal for Numerical Methods in Fluids, DOI: 10.1002/fld.3692 GT-75
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• We are going to use the following solver: interFoam


• Let us explore the dictionaries in the system directory.
• Remember:
• The discretization method is set in the dictionary fvSchemes.
• The linear solvers and parameters specific of the pressure-velocity coupling method is set
in the dictionary fvSolution.
• Runtime parameters such as time-step, CFL number, saving frequency, and so on, are set
in the dictionary controlDict.

• In the folder system/default, you will find the case default setup.
• All the cases were run in parallel using 4 processors.

GT-76
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Let us study the dictionary fvSchemes.


• In this dictionary we set the discretization method for every term appearing in the governing
equations.
• Time discretization is set as follows:

ddtSchemes
{
default CrankNicolson 0;
}

• Currently the backward method is not supported for multiphase flows.


• The keyword default means that we use the same method for every requested term.
• Setting the blending factor to 0 is equivalent to the Euler method (first order accurate). Setting
the blending factor to 1 is equivalent to use the pure CrankNicolson method (second order
accurate).

GT-77
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Let us study the dictionary fvSchemes.


• In this dictionary we set the discretization method for every term appearing in the governing
equations.
• You can set the time discretization in a term-by-term basis as follows:

ddtSchemes
{
default none;
ddt(alpha) CrankNicolson 0.8;
ddt(rho,U) CrankNicolson 0.8;
ddt(U) CrankNicolson 0.8;
}

GT-78
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Let us study the dictionary fvSchemes.


• In this dictionary we set the discretization method for every term appearing in the governing
equations.
• Gradient discretization is set as follows:

gradSchemes
{
default Gauss linear;
}

GT-79
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Let us study the dictionary fvSchemes.


• In this dictionary we set the discretization method for every term appearing in the governing
equations.
• You can set the gradient discretization in a term-by-term basis as follows:

gradSchemes
{
default Gauss linear;
grad(U) cellMDLimited Gauss linear 0.5;
grad(alpha.phase1) cellLimited Gauss linear 1
grad(alpha.phase2) faceLimited Gauss linear 1
}

GT-80
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• If you set all the grad terms using the default option, you might get strange interface resolution.
• The difference in the results, is related to the term nHat (face unit interface normal), which should be
discretize with no slope limiters.

gradSchemes
{
default cellLimited Gauss linear 1;
}

gradSchemes
{
default cellLimited Gauss linear 1;
nHat Gauss linear;
}

GT-81
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• The difference in the results is related to the term nHat (face unit interface normal), which
should be discretize with no slope limiters if you want to get a smooth interface.

nHat Gauss linear; nHat cellLimited Gauss linear 1;


http://www.wolfdynamics.com/training/mphase/nhat1.gif http://www.wolfdynamics.com/training/mphase/nhat2.gif

GT-82
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Let us study the dictionary fvSchemes.


• In this dictionary we set the discretization method for every term appearing in the governing
equations.
• Convective terms discretization is set as follows:

divSchemes
{
div(rhoPhi,U) Gauss linearUpwind grad(U);
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}

GT-83
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Let us study the dictionary fvSchemes.


• In this dictionary we set the discretization method for every term appearing in the governing
equations.
• Laplacian terms discretization is set as follows:

laplacianSchemes
{
default Gauss linear limited 1;
}

• You can also set the discretization in a term-by-term basis.


• Remember, the choice of the blending factor is related to the quality of the mesh.
• The entry snGradSchemes should use the same method as in laplacianSchemes (limited 1 in
this case).

GT-84
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Comparison of different numerical schemes.

div(phirb,alpha) Gauss linear; div(phirb,alpha) Gauss vanLeer;

GT-85
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Comparison of different numerical schemes.

div(phirb,alpha) Gauss upwind; div(phirb,alpha) Gauss vanLeer;

GT-86
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Let us study the dictionary fvSolution.


• In this dictionary we set the linear solvers and parameters specific of the pressure-velocity
coupling method.
• The solution of the phasic volume of fraction is set as follows:

“alpha.phase1.*”
{
nAlphaCorr 2;
nAlphaSubCycles 1;
cAlpha 1;

MULESCorr yes;
nLimiterIter 3;

solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-8;
relTol 0;
}
GT-87
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Comparison of different solution methods for phasic phases.


Note: this parameter controls the
sharpness of the interface.

cAlpha 1; cAlpha 0; cAlpha 2;

GT-88
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Comparison of different solution methods for phasic phases.

cAlpha 1; cAlpha 1;
MULESCorr yes; (semi-implicit formulation) MULESCorr no; (explicit formulation)
Execution time = 75 seconds Execution time = 65 seconds
GT-89
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Let us study the dictionary fvSolution.


• In this dictionary we set the linear solvers and parameters specific of the pressure-velocity
coupling method.
• The solution of p_rghFinal is set as follows:

p_rghFinal
{
solver PCG;
preconditioner DIC;
tolerance 1e-08;
relTol 0.05;
}

• The entry p_rghFinal is related to the last iteration of p_rgh. Remember, is a good idea to put
more computational effort on this iteration, and advance fast the inner iterations.

GT-90
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Comparison of different tolerance criterion for p_rgh and p_rghFinal.


Note: not well converged linear
solvers can lead to unbounded
solutions.

unbounded bounded

div(phirb,alpha) Gauss vanLeer; div(phirb,alpha) Gauss vanLeer;


cAlpha 1; cAlpha 1;
MULESCorr yes; MULESCorr yes;
tolerance 1e-08; tolerance 1e-08;
relTol 0.5; (p_rgh) relTol 0.01; (p_rgh)
relTol 0.5; (p_rghFinal) relTol 0; (p_rghFinal)
Execution time = 46 seconds Execution time = 72 seconds GT-91
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Comparison of multigrid vs. Newton-Krylov solvers and preconditioners for p_rgh and p_rghFinal

solver PCG; (p_rgh and p_rghFinal) solver GAMG; (p_rgh and p_rghFinal)
preconditioner DIC; (p_rgh and p_rghFinal) Execution time = 73 seconds
Execution time = 72 seconds

GT-92
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Comparison of multigrid vs. Newton-Krylov solvers and preconditioners for p_rgh and p_rghFinal

solver PCG; (p_rgh and p_rghFinal) solver PCG; (p_rgh and p_rghFinal)
preconditioner DIC; (p_rgh and p_rghFinal) preconditioner GAMG; (p_rgh)
Execution time = 72 seconds preconditioner GAMG; (p_rghFinal)
Execution time = 75 seconds

GT-93
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Let us study some additional entries that appears in the dictionary files fvSolution,
fvSchemes and controlDict.
• We will see the influence of many other parameters, such as:
• momentumPredictor
• maxCo
• maxAlphaCo
• maxDeltaT
• writeControl
• adjustTimeStep
• deltaT

GT-94
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Parameter → momentumPredictor
• Dictionary file → fvSolution

momentumPredictor no; momentumPredictor yes;


Execution time = 61 seconds Execution time = 72 seconds

GT-95
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Parameter → maxCo, maxAlphaCo, maxDeltaT


• Dictionary file → controlDict Note: by increasing the CFL number
we get faster outcomes but at the
cost of losing accuracy.

maxCo 2; maxCo 0.1;


maxAlphaCo 2; maxAlphaCo 0.1;
maxDeltaT 0.1; maxDeltaT 0.1;
MULESCorr yes; MULESCorr yes;
Execution time = 31 seconds Execution time = 72 seconds
GT-96
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Parameter → writeControl
• Dictionary file → controlDict Note: this behavior is stronger at
CFL numbers larger than one.

maxCo 2; maxCo 2;
maxAlphaCo 2; maxAlphaCo 2;
maxDeltaT 0.1; maxDeltaT 0.1;
writeControl adjustableRunTime; writeControl runTime;
writeInterval 0.01; writeInterval 0.01;
MULESCorr yes; MULESCorr yes;
GT-97
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Parameter → writeControl
• Dictionary file → controlDict Note: for some reason, the left case
diverges but the main problem here
is the use of the explicit scheme.

DIVERGES
• Remember MULESCorr set to no
is equivalent to use an explicit
scheme.

• Explicit schemes are conditionally


stable.

maxCo 2; maxCo 2;
maxAlphaCo 2; maxAlphaCo 2;
maxDeltaT 0.1; maxDeltaT 0.1;
writeControl runTime; writeControl adjustableRunTime;
writeInterval 0.01; writeInterval 0.01;
MULESCorr no; MULESCorr no;
Execution time = 25 seconds Execution time = 25 seconds GT-98
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Parameter → MULESCorr
• Dictionary file → fvSolution

maxCo 2; maxCo 2;
maxAlphaCo 2; maxAlphaCo 2;
maxDeltaT 0.1; maxDeltaT 0.1;
MULESCorr yes; MULESCorr no;
Execution time = 31 seconds Execution time = 25 seconds
GT-99
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Parameter → maxCo, maxAlphaCo, maxDeltaT, writeControl


• Dictionary file → controlDict

maxCo 0.5; maxCo 0.5;


maxAlphaCo 0.5; maxAlphaCo 0.5;
maxDeltaT 0.1; maxDeltaT 0.1;
writeControl runTime; writeControl adjustableRunTime;
writeInterval 0.01; writeInterval 0.01;
MULESCorr no; MULESCorr no;
Execution time = 20 seconds Execution time = 30 seconds GT-100
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• Parameter → adjustTimeStep
• Dictionary file → controlDict

adjustTimeStep no; adjustTimeStep yes;


deltaT 0.001; deltaT 0.001;
Execution time = 50 seconds Execution time = 72 seconds

GT-101
Guided tutorials
Guided tutorial 5

Additional notes on the fvSchemes and fvSolution dictionaries

• The following modified convective equation (alpha) is used to track the interface between the
phases,

(phi, alpha) (phirb, alpha)

Use a TVD scheme with gradient limiters. (phirb, alpha)


Good choice is the vanLeer scheme. Use a high order scheme. The use of
interfaceCompression or linear interpolation
is fine for this term.

• Where a value of (cAlpha), is recommended to accurately resolve the sharp interface.

GT-102
Guided tutorials
Guided tutorial 5

Additional notes on the fvSchemes dictionary

• For interface capturing, OpenFOAM uses,


• The MULES algorithm (semi-implicit and second order in time) to ensure that the volume
fraction (alpha) remains between strict bounds of 0 and 1.
• The interface compression scheme, based on counter-gradient transport, to maintain
sharp interfaces during a simulation.
• At the following link, you can find the release notes related latest developments related to the
interface capturing in OpenFOAM 8,
• https://cfd.direct/openfoam/free-software/multiphase-interface-capturing/
• Among the latest improvements and developments, was the addition of the Piecewise-linear
interface calculation (PLIC) family of interpolation schemes.
• The PLIC and MPLIC methods are more precise than interface compression for meshes with
refinement patterns.
• These methods carry an additional computational cost.
• Regarding stability, still is a little bit early to give you our opinion

GT-103
Guided tutorials
Guided tutorial 5

Additional notes on the fvSchemes dictionary

• The new methods can be selected in the fvSchemes dictionary as follows,

div(phi,alpha) Gauss PLIC interfaceCompression vanLeer 1;

or

div(phi,alpha) Gauss MPLIC;

GT-104
Guided tutorials
Guided tutorial 5

Additional notes on the fvSolution dictionary

“alpha.*”
{
MULESCorr yes; Turn on/off semi-implicit MULES
nAlphaSubCycles 1; For semi-implicit MULES use 1. Use 2 or more for
explicit MULES.
nAlphaCorr 2; Number of corrections.
Use 2-3 for slowly varying flows.
Use 3 or more for highly transient, high Reynolds,
high CFL number flows.

nLimiterIter 3; Number of iterations to calculate the MULES


limiter. Use 3-5 if CFL number is less than 3. Use
5-10 if CFL number is more than 3.

alphaApplyPrevCorr yes; Use previous time corrector as initial estimate.


… Set to yes for slowly varying flows. Set to no for
highly transient flows.
}

• The semi-implicit MULES offers significant speed-up and stability over the explicit MULES GT-105
Guided tutorials
Guided tutorial 5

Additional notes on the fvSolution dictionary

NOTE:
If you are planning to use large time-steps (CFL number
larger than 1), it is recommended to do at least 2
nCorrector and 2 nOuterCorrectors correctors.
PIMPLE
{
momentumPredictor yes; Set to yes for high Reynolds flows, where
convection dominates

Recommended value is 1 if CFL < 1 (equivalent


nOuterCorrectors 1; to PISO). Increase to improve the stability of
second order time discretization schemes (LES
simulations). Increase for highly coupled
problems or large CFL.

Recommended to use at least 2 correctors.


nCorrector 2;
It improves accuracy and stability.

nNonOrthogonalCorrectors 1; Recommended to use at least 1 corrector.


Increase the value for meshes with high non-

orthogonality (mora than 70).
}
GT-106
Guided tutorials
Guided tutorial 5

Additional notes on the fvSolution dictionary

PIMPLE
{ For extra stability and robustness, it is
consistent yes; recommended to use the consistent formulation
… of the SIMPLE P-V.
}

relaxationFactors
{
fields • Add implicit (equations) and explicit (fields)
{ under-relaxation factors to get extra
".*" 0.9; stability.
} • Do not use too low values as you might
equations lose time accuracy.
{ • Instead of reducing the URF to values
".*" 0.9; below 0.5, it is better to reduce the time
} step.
}

GT-107
Guided tutorials
Guided tutorial 5

Rising bubble – VOF

• At this point, we are ready to run the simulation.


• To run the tutorial automatically, type in the terminal:

1. $> run_all.sh

• Feel free to open the file run_all.sh to see all the commands used.
• If you prefer to run the case manually, type the commands in the terminal window.

GT-108

You might also like