DROPS is a research-driven software package for the simulation of two-phase flows, mass and surfactant transport in two-phase systems developed at the Chair of Numerical Mathematics at RWTH Aachen University. The discretization is based on special finite element methods (XFEM/CutFEM, traceFEM).
Here you can find the models which were added by a research group at the University of Houston. Also there is a list of some related published papers in the end of this page.
For full animations check out our Youtube channel
CONTENTS
Scalar auxiliary variable method for CH equations
Navier-Stokes-Cahn-Hilliard model
Navier-Stokes model on evolving surfaces
The Cahn - Hilliard model implementation is located in the file /src/surfphasesep/surfphasesep.cpp
. Mathematical description and analysis of this model can be found in the journal paper [Yushutin-Quaini-Majd-Olshanskii, NMBE 2019]
Here is the animation of the Cahn-Hilliard model with 50%-50% mixture:
Implementation of the Scalar auxiliary variable method for Cahn - Hilliard model is located in the file /src/savch/savch.cpp
. Description and the analysis of the method can be found in the journal paper [Olshanskii-Palzhanov-Quaini, JSC 2023]
Alongside with the analysis, the performance of the method was compared to the method implemented in [Yushutin-Quaini-Majd-Olshanskii, NMBE 2019], the file /src/surfphasesep/surfphasesep.cpp
.
Comparison of two methods:
The Navier-Stokes model implementation is located in the file /src/surfphasesep/surfnavierstokes.cpp
.
KH instability animation generated using Navier-Stokes model:
Navier-Stokes-Cahn-Hilliard model implementation is located in the file /src/surfnsch/surfnsch.cpp
. Mathematical description and analysis of this model can be found in the journal paper [Palzhanov-Zhiliakov-Quaini-Olshanskii, CMAME 2021]
Mathematical description and analysis of this model can be found in the journal paper [Olshanskii-Reusken-Zhiliakov, MMMAS 2022]
Lateral flow on an oscilating sphere
You will need
- a C++11 compiler (e.g., gcc-5.2)
- CMake
- the Boost library, preferably version
1.58. From version 1.59 on, using C++-style comments in JSON files (which we use
as parameter files) is not possible anymore. You can strip comments from JSON
files by using
g++ -E -x c++ myparam.json > myparam-stripped.json
and removing the first lines starting with#
.
CMake is used to generate the build system based on Makefiles.
First, generate a build directory. Within this build directory, call
cmake /path/to/drops/src
. For example, the build directory could be a folder
bin
inside the drops
folder:
mkdir bin
cd bin
cmake ../src
This will populate a directory structure inside bin
with associated Makefiles.
These can be used to compile the different executables.
To build the MPI version of DROPS (to be used on a parallel computer),
the graph partitioner library ParMETIS is used. Download ParMETIS 4.0.2
and install it on your machine. After that, modify the path to ParMETIS and METIS
(which is part of ParMETIS) in the CMakeSettings.txt
in the src
directory.
Of course, an MPI library is needed, which is often chosen by using a corresponding
module load
command. The MPI library will then be automatically selected by
CMake in the following. As DROPS is able to use OpenMP within a parallel node
(i.e., hybrid parallelization), a thread-safe MPI library is the best choice.
As next step, you have to add the option -DMPI=1
to the cmake
command like this:
mkdir bin-par
cd bin-par
cmake -DMPI=1 ../src
Inside the build directory, go to the executable's directory and use make
to build the executable. E.g., to compile twophasedrops
:
cd levelset
make twophasedrops
Calling make all
in the build directory will build all DROPS executables.
Usually, you have to provide a parameter file in JSON format as a command line
option when calling the executable. Some example parameter files can be found
in the directory param
(on the same level as src
) and has the same structure
as the src
directory. If the code for some executable xyz
is located in
src/abc
, then the corresponding parameter files are stored in param/abc/xyz/
.
For example, if the executable twophasedrops
resides in the directory drops/bin/levelset
, from within that directory call
mkdir vtk # for VTK output
./twophasedrops ../../param/levelset/twophasedrops/risingbutanoldroplet.json
This is a set of instructions for reproducing the results from papers listed below. Note: These instructions are for Linux machines, however if you want to run it on Windows or MacOS, you can do so by installing proper dependencies.
- You will need the following third party libraries (TPLs): Trilinos, VTK, and Matlab.
1.1. Download or clone Trilinos from it is github repo, then you may use the following script (modify paths for your local machine):
cmake \
-DTPL_ENABLE_MPI=ON \
-DMPI_BASE_DIR=/usr/lib/x86_64-linux-gnu/openmpi \
-DCMAKE_INSTALL_PREFIX=~/trilinos/build \
-DBUILD_SHARED_LIBS=ON \
-DTrilinos_ENABLE_EXPLICIT_INSTANTIATION=ON \
-DTrilinos_ENABLE_Epetra=ON \
-DTrilinos_ENABLE_AztecOO=ON \
-DTrilinos_ENABLE_Ifpack=ON \
-DTrilinos_ENABLE_Ifpack2=ON \
-DTrilinos_ENABLE_Belos=ON \
-DTrilinos_ENABLE_Kokkos=ON \
~/trilinos/source
make -j2 install
1.2. Install MATLAB
1.3. Install VTK: (a) you can build your own copy of VTK by downloading from website (b) you can use the version that is included in your linux distribution
Note: These TPLs may have their own dependencies, please refer to the corresponding library webpage.
- After installing all the requirements, run
do-configure-XXX.sh
file to build the DROPS package. This file will create another scriptrunml
inside the desired model problem directory. Using this script simulation can be started. - Use JSON files located in the directory
/param
to set parameters for the corresponding simulation.
For UH compute nodes guide, check wiki.
- V. Yushutin, A. Quaini, S. Majd, M. Olshanskii, A computational study of lateral phase separation in biological membranes, International Journal for Numerical Methods in Biomedical Engineering, V. 35 (2019), e3182; doi: 10.1002/cnm.3181;
- M. Olshanskii, A. Reusken, A. Zhiliakov, Inf-sup stability of the trace P2-P1 Taylor-Hood elements for surface PDEs, Mathematics of Computation V. 90 (2021), p. 1527-1555; doi: 10.1090/mcom/3551;
- A. Zhiliakov, Y. Wang, A. Quaini, M. Olshanskii, S. Majd, Experimental validation of a phase-field model to predict coarsening dynamics of lipid domains in multicomponent membranes, BBA - Biomembranes, V. 1863 (2021), Article 183446; doi: 10.1016/j.bbamem.2020.183446;
- Y. Palzhanov, A. Zhiliakov, A. Quaini, M. Olshanskii, A decoupled, stable, and linear FEM for a phase-field model of variable density two-phase incompressible surface flow, Computer Methods in Applied Mechanics and Engineering, V. 387 (2021), Article 114167; doi: 10.1016/j.cma.2021.114167;
- M. Olshanskii, Y. Palzhanov, Q. Sun, A comparison of Cahn-Hilliard and Navier-Stokes-Cahn-Hilliard models on manifolds, Vietnam Journal of Mathematics, doi: 10.1007/s10013-022-00564-5;
- M. Olshanskii, A. Zhiliakov, Recycling augmented Lagrangian preconditioner in an incompressible fluid solver, Numerical Linear Algebra with Applications , V. 1864 (2022), Article 183898; doi: 10.1002/nla.2415;
- Y. Wang, Y. Palzhanov, A. Quaini, M. Olshanskii, S. Majd, Lipid domain coarsening and fluidity in multicomponent lipid vesicles: A continuum based model and its experimental validation, BBA - Biomembranes, V. 29 (2022), Article e2415; doi: 10.1016/j.bbamem.2022.183898;
- M. Olshanskii, A. Reusken, A. Zhilyakov, Tangential Navier-Stokes equations on evolving surfaces: Analysis and simulations, Mathematical Models and Methods in Applied Sciences V. 14 (2022), 2817-2852; doi: 10.1142/S0218202522500658;
- M. Olshanskii, Y. Palzhanov, A. Quaini, A scalar auxiliary variable unfitted FEM for the surface Cahn-Hilliard equation, Journal of Scientific Computing V. 97 (2023), Article 57; doi: 10.1007/s10915-023-02370-8;
- Y. Wang, Y. Palzhanov, D Dang, A. Quaini, M. Olshanskii, S. Majd, On fusogenicity of positively charged phased-separated lipid vesicles: experiments and computational simulations, Biomolecules V. 13 (2023), Article 1473; doi: 10.3390/biom13101473;