ALPACA
ALPACA: Adaptive Level-set PArallel Code
Install / Use
/learn @tumaer/ALPACAREADME
ALPACA
Overview
ALPACA is an MPI-parallelized C++ code framework to simulate compressible multiphase flow physics. It allows for advanced high-resolution sharp-interface modeling empowered with efficient multiresolution compression. The modular code structure offers a broad flexibility to select among many most-recent numerical methods covering WENO/T-ENO, Riemann solvers (complete/incomplete), strong-stability preserving Runge-Kutta time integration schemes, level-set methods and many more.
Getting Started
Installation
Recursively cloning in the case of a fresh installation
git clone --recursive https://github.com/tumaer/ALPACA.git
or in the case of an existing download
git fetch && git submodule update --init --recursive
After which we first need to install ALPACA's dependencies, ALPACA depends on
- MPI
- HDF5
On clusters, the two are likely going to be available as module to load. Outside of such computing environment, we need to make sure that we have them available on our system.
<details> <summary>MPI Installation Instructions</summary>To install and setup MPI, we have the choice of using OpenMPI, and MPICH. This instruction here is for OpenMPI, but applies equally as much for MPICH. Creating the build directory:
mkdir mpi-build && export MPI_BUILD_DIR=$(PWD)/mpi-build
To then begin the installation of MPI, we first have to download the source:
wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.5.tar.gz
tar -xzf openmpi-4.1.5.tar.gz && cd openmpi-4.1.5
We then have to configure our installation, and compile the library:
./configure --prefix=$MPI_BUILD_DIR
make -j && make install
After which we are left to export the MPI directories:
export PATH=$MPI_BUILD_DIR/bin:$PATH
export LD_LIBRARY_PATH=$MPI_BUILD_DIR/lib:$LD_LIBRARY_PATH
</details> <details> <summary>HDF5 Installation Instructions</summary>If your cluster environment comes with its own MPI library, you should always prefer using the system MPI library over doing a source install.
To install HDF5, we roughly follow the same outlines as the ones for the MPI installation. Creating the build directory:
mkdir hdf5-build && export HDF5_BUILD_DIR=$(pwd)/hdf5-build
mkdir hdf5-install && export HDF5_INSTALL_DIR=$(pwd)/hdf5-install
To then begin the installation of HDF5, we have to get the source, and then unpack it:
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.23/src/hdf5-1.8.23.tar.gz
tar -xzf hdf5-1.8.23.tar.gz && cd hdf5-1.8.23
Set the compilers to be the MPI-compilers:
export CXX=mpic++
export CC=mpicc
After which we have to configure our installation, and then compile the library:
cmake -GNinja -B ../hdf5-build/ -S . \
-DCMAKE_INSTALL_DIR=$(pwd)/../hdf5-install \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=$(pwd)/../mpi-build/bin/mpicc \
-DCMAKE_CXX_COMPILER=$(pwd)/../mpi-build/bin/mpic++ \
-DHDF5_ENABLE_PARALLEL=On \
-DHDF5_BUILD_CPP_LIB=On \
-DALLOW_UNSUPPORTED=On
To then build and install from the build directory
cd $HDF5_BUILD_DIR
ninja && ninja install
</details>
Having MPI & HDF5, we can then install ALPACA with
cmake -GNinja -B ../alpaca-build/ -S . \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=mpicc \
-DCMAKE_CXX_COMPILER=mpicxx \
-DHDF5_DIR=$HDF5_INSTALL_DIR/cmake
to build, we then invoke CMake again
cmake --build ../alpaca-build/
We highly recommend using
ccachetogether with CMake. To do so, add the following flags to the configuration step of CMake:-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
Testing
To validate the installation, we recommend running unit-tests after the completed installation. To do so
ninja Paco -j 4
after which we can run single-, as well as two-core tests to verify the correctness of the installation.
mpiexec -n 1 ./Paco [1rank]
mpiexec -n 2 ./Paco [2rank]
For further instructions, first steps, and API documentation, please consult the ReadTheDocs.
Academic Usage
If you use ALPACA in an academic setting, please cite our papers.
Acknowledgments
ALPACA has received support from multiple funding bodies over the course of its inception:
- This project has received funding from the European Research Council (ERC) under the European Union’s Horizon 2020 research and innovation program: ERC Advanced Grant No. 667483, Prof. Dr. Nikolaus A. Adams, "NANOSHOCK - Manufacturing Shock Interactions for Innovative Nanoscale Processes"
- This project has received computing time on the GCS Supercomputer SuperMUC at Leibniz Supercomputing Centre (www.lrz.de) from the Gauss Centre for Supercomputing e.V. (www.gauss-centre.eu).
- This project has received funding from German Research Foundation (DFG).
- This project has received funding from the Bavarian State Ministry of Science and the Arts through the Competence Network for Scientific High Performance Computing in Bavaria (KONWIHR).
Related Skills
node-connect
347.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.9kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
