This repository contains the code for an all-Mach multiphase flow solver for liquid-gas flows using a geometric volume-of-fluid method within the block-structured adaptive mesh refinement framework of AMReX. The code requires the installation of two libraries - AMReX and IRL, both of which are provided in this repository. Hence, this repository is self-contained, and no external packages need to be installed.
Simulations are performed for water jet in supersonic air crossflow, water spray atomization with acoustic excitation, and collapse of water bubbles in supersonic air crossflow. The simulations below show the adaptively refined mesh and the boxes show the finest level of refienement which captures the interface regions. The simulations are also rendered in Blender which show the liquid-gas interface.
Scaling studies were performed on the Stampede2 supercomupter at Texas Advanced Supercomputing Center (TACC) Knights Landing (KNL) nodes. Images below
show the strong and weak scaling for single mesh cases, and the effect of adaptation and resource utilization.
git clone https://github.com/nataraj2/MultiphaseSolverAMReX.git
cd MultiphaseSolverAMReX
sh install.sh
vi amrex/Tools/GNUMake/Make.local
In the first 5 lines of Make.local
, change the path to IRLDIR
, and the compilers CXX
, CC
,
FC
, F90
. Make sure to use MPI compilers.
The following is to run the case of Zalesak's disk.
cd amrex/Tutorials/Amr/MultiphaseSolver_Zalesak_Elvira/Exec/Zalesak_Elvira
make -j
sh run_3d.sh
geometry.prob_lo
andgeometry.prob_hi
define the domainamr.max_level
is the number of refinement levels above the base level. It is set to 2. Hence there will be a total of 3 levels (including base level).amr.regrid_int
is the frequency of regridding. Has to be 1. Regridding has to be done at every step since we do not allow for the interface to cut across levels. The interface should always be enclosed by the finest level.amr.plot_int
andamr.chk_int
are the frequencies at which the output and checkpoint (restart) files are written.amr.blocking_factor
is the blocking factor. Defines the size of the blocks.
VisIt 2.13 is the minimum version needed for visualization. The earlier versions of VisIt cannot read the AMReX output files. In the running directory, do
sh run_output.sh
This script will create a text file movie.visit
(which contains a list of headers of the solution files - which has all
the flow variables). This also creates a directory ensight-3D
, in which all plic data is
written. A file plic.visit
is also written inside ensight-3D
. Both movie.visit
and plic.visit
can be loaded simultaneously into VisIt and visualized. The steps are as follows
sh run_output.sh
- File-> Open file -> movie.visit
- File-> Open file -> enisght-3D/plic.visit
- Active source -> movie.visit. Add->Mesh->mesh
- Active source -> plic.visit. Add->Mesh->mesh
- VisIt will ask if a correlation should be setup. Click Yes. This will allow the plic and the mesh to change simultaneously
- Active time slider -> Correlation01
- Click Draw
- Click the right arrow button below the Active time slider to animate