The benchmark suite provides four verification and validation studies of a numerical method for wetting.
[1] Asghar, M. H., Fricke, M., Bothe, D., & Maric, T. (2023). Numerical wetting benchmarks
In this verification study, we consider the advection of the interface using a divergence-free velocity field and report the accuracy of the interface advection near walls. It has been shown in Fricke et al. that the contact line advection problem is a well-posed initial value problem if the velocity field is sufficiently regular and tangential to the domain boundary. The interface's motion and the contact angle's evolution can be computed from the velocity field and the initial geometry. Moreover, Fricke et al. formulated an ODE system to describe the evolution of the contact angle
$\theta = \cos^{-1}(\langle - \textbf{n}{\Sigma}(t, \textbf{x}(t)), \textbf{n}{\partial\Omega}\rangle).$
The test case is carried out for a uniform and non-uniform graded 2D cartesian mesh.
For this case study, we have considered a droplet spreading on a flat surface (Dupont and Legendre , Fricke et. al) that allows for studying the effect of the static contact angle boundary condition and the Bond number,
In this study, a validation of droplet spreading dynamics studied by Lavi and Marmur is done. We have compared different velocity models and contact angle boundary conditions and also incorporated the so-called uncompensated Youngs-stress term in the Cox-Voinov dynamic contact angle boundary condition which shows a very good agreement with the experimental findings. We have also compared our results with the results obtained in study using the FS3D solver which employs the structured geometric VOF method and by Legendre and Dupont using the JADIM method.
In this study, we consider a droplet spreading over a spherical surface for a very small Bond number (
In this validation study, we consider the rising of a liquid column between two planar surfaces. We present the results of the mesh convergence study of a 2D capillary rise with no-slip and resolved partial slip boundary condition. We present the comparison of the plicRDF-isoAdvector method with other numerical methods, 1. the OpenFOAM solver interTrackFoam, an Arbitrary Lagrangian-Eulerian (ALE) method, 2. the Free Surface 3D (FS3D), an in-house two-phase flow solver implying the geometric Volume-of-Fluid (VOF) method, 3. the OpenFOAM-based algebraic VOF solver, interFoam, 4. the Bounded Support Spectral Solver (BoSSS) is based on the extended discontinuous Galerkin method. As discussed by Gründing et. al, the dynamics of capillary rise can be controlled by a non-dimensionless group,
Following instructions will get a copy of the benchmark suite up and running on a local/remote machine. The current study is based on the Volume-of-Fluid method based OpenFOAM's solver interFlow. The available Jupyter notebooks used for post-processing and visualization can be used by an OpenFOAM user and any other simulation software user, provided the files storing the secondary data (error norms) are organized as described in the README.md file.
Compiler: g++ (GCC) 9.2.0
Build system: CMake version 3.19.3
Meshing
- gmsh meshing software version 4.4.1, used for generating surface meshes.
- cfmesh, available as an OpenFOAM (git tag, OpenFOAM-v2312) sub-module, used for automatic generation of unstructured volume meshes.
OpenFOAM
To install OpenFOAM from the GitLab repository, follow the instructions
- Clone the OpenFOAM repository using git.
- Check out the git tag
?> git checkout OpenFOAM-v2312
- Compile OpenFOAM as instructed by its documentation.
TwoPhaseFlow Library
To link the TwoPhaseFlow library, follow the instructions in README.md of the library,
- Clone the TwoPhaseFlow library using git.
- Check out the git tag
?> git checkout of2312
- Compile the library as instructed by its documentation.
argo
To compute the volume fractions for initialization using the Surface-Mesh/Cell Approximation Algorithm, SMCA, using
exact implicit surfaces.
FreeCAD - version 0.18.4
To generate .stl
files as input domain geometry (not required to run case studies).
PyFoam - version 2021.6
To set up parametric studies for verification and validation of the numerical method.
We use OpenFOAM Function Objects to create the data in a *.csv |*.vtk | *.vtp
file format that is read by Jupyter notebooks for visualization and processing of test results.
Currently, each case study contains executable script and Python modules to setup and execute parametric studies and visualize the results in Jupyter notebooks.
Use the scripts reproduce_<test_case>.sh
with -h
to get further information about the script and the options required to run the case study.
Example
- Go to a test case folder, e.g.,
AdvectionTest/UniformMesh
:
?> cd AdvectionTest/UniformMesh
-
Run
reproduce_AdvectionTest_UniformMesh.sh
script that executes./create-study.py case case.paramter
to create the case directories of a parametric study./Allclean
to clean the case directories./Allrun
to create the mesh and initialize fields in each case directories- the solver (local/remote job submission) in each case directory
-
The data has been written to a
*.csv |*.vtk | *.vtp
file in thepostProcessing/
directory of each case directory. -
The Jupyter notebooks access
postProcessing/
files to visualize and process test results.
All the test cases within this benchmark suite are templated so that the parametric studies can be created from them. So, inside each case study directory following files and directories are present, e.g., AdvectionTest/UniformMesh
:
- the templated case, namely
case
, - a parameter file, namely
case.parameter
, - template files with extension
.template
.
The template files contain placeholders for the parameters, e.g., @!meshSize!@
for the mesh cell size. These placeholders are replaced by the values from the case.parameter
file during the parametric study creation (./create-study.py case case.paramter
).
Additionally, all test case directories contain variation_file
that contains the information of the variants and their parameter vectors obtained by executing the following:
?> pyFoamRunParamaterVariation.py --list-variations case case.paramter
With this information, the user can also identify the case parametric directory corresponding to a specific parameter vector.
./Allrun
script take care of mesh generation and field initialization. It
- generates mesh using OpenFOAM's
blockMesh
utility orcartesianMesh
from cfMesh. - initializes the fields, e.g., volume fraction using the
setAlphaFieldDict
or thevofInitDict
dictionary that used the SMCA initialization algorithm from argo. - decomposes the domain (if required)
The script reproduce_AdvectionTest_UniformMesh.sh
executes the solver in all the parametric case directories. If running all parameter cases is not required, the command to run all variations should be omitted prior to executing the script.
Each case study can be executed in parallel using mpirun
with -np
, providing the number of MPI processes.
The script, namely script.sh
in each case directory, supports the submission to the SLURM workload manager using the sbatch
command. This job submission command is also executed within reproduce_AdvectionTest_UniformMesh.sh
, so the user must choose the appropriate command before executing the reproduce_AdvectionTest_UniformMesh.sh
script.
Functions objects are used to write the data to a *.csv |*.vtk | *.vtp
file format in each case directory's postProcessing\
folder.
Run
?> ./Allwmake.sh
to compile the function objects.
The benchmark suite uses the following function objects:
FO | Description |
---|---|
wettedArea | Recovers the volume fraction value of the boundary face and returns the area of the domain boundary submerged in the transported fluid also referred as wetted area |
contactAngle2DEvaluation | Returns the contact angle field for a 2D geometry |
myVortex2D | Provides the prescribed velocity field 'vortex-in-a-box' |
contactAngleEvaluation | Returns the contact angle field and the contact radius for a 3D geometry |
FO | Cases | Data Files |
---|---|---|
wettedArea |
DropletSpreadingTest and SphericalSpreadingTest | wettedArea.csv |
contactAngle2DEvaluation |
AdvectionTest | contactAngleMax.csv , contactAngleMin.csv |
myVortex2D |
AdvectionTest | |
contactAngleEvaluation |
DropletSpreadingTest and SphericalSpreadingTest | contactAngleMax.csv , contactAngleMin.csv , rfMax.csv |
The following file formats are used in this benchmark suite:
File format | Description |
---|---|
*.csv format |
It contains the data from the function objects, e.g., the wettedArea function object provides a wettedArea.csv file. |
*.vtk format |
These are the surface files in ASCII format that contain the fields' information at every writeControl time (time of writing the output data) of your simulation setup. These files are read to calculate the height of the interface, e.g., droplet spreading case study. |
*.vtp format |
Used to visualize the Piecewise Linear Interface inside the cell. |
Example
For the AdvectionTest/UniformMesh
case study, the postProcessing/
directory has the following files and directories:
contactAngleMax.csv
(The maximum contact angle in the domain)contactAngleMin.csv
(The minimum contact angle in the domain)plic/
(It contains*.vtp
files at eachwriteControl
time of the simulation)surfaces/
(It contains*.vtk
files at eachwriteControl
time of the simulation)
Note for geometrical shape error,
the volume fraction
We will show the structure of the *.csv
files for every function object.
contactAngle2DEvaluation
Time (sec) | contact angle (degree) |
---|---|
0.01 | 57.1 |
0.02 | 58.2 |
wettedArea
Time (sec) | wetted area ( |
---|---|
0.001 | 4.31 |
0.002 | 6.23 |
contactAngleEvaluation
Time (sec) | contact radius (m) |
---|---|
0.01 | 0.0025 |
0.02 | 0.0027 |
The contact radius is the distance from the drop's center to the contact line.
The surface/
files are read by the Jupyter notebooks and provide the height of the interface in height.csv
file, whose structure is
Time (sec) | height (m) |
---|---|
0.01 | 0.0025 |
0.02 | 0.0027 |
The Jupyter notebooks read the above file formats and visualize the case results. The notebooks are generated generically so that any simulation software user can readily use these notebooks, provided he generates the data in the mentioned file format and structure.