Abstract

ALPACA is a simulation environment for simulating hyperbolic and (incompletely) parabolic conservation laws with multiple distinct and immiscible phases. As prominent example, consider the compressible Navier-Stokes equations (NSE). Solutions to these equations give insight and understanding of many important engineering applications. Numerical simulations of nonlinear parabolic systems of equations are very challenging for their complex nonlinear dynamics including the propagations of discontinuities such as shocks and phase interfaces. Accurate predictions require high temporal and spatial resolutions for such multi-scale problems. We utilize low dissipation high-resolution methods to capture the dynamics inside the separate phases. Their interaction is modeled by a sharp-interface level-set method with conservative interface-interaction. This allows to accurately locate the interface position and to easily prescribe arbitrary coupling conditions. We tackle the resulting immense computational loads by using a block-based multiresolution (MR) algorithm and adaptive local time stepping. The level-set treatment is integrated into the MR algorithm with little overhead by employing a smart tagging system and adaptive storage of the fluid data in the MR nodes. We embed these methods in a C++20 object-oriented modular framework using state-of-the-art programming paradigms. Furthermore, our implementation is capable to exploit the multiple levels of parallelism in modern high-performance computing (HPC) systems efficiently. We demonstrate the capabilities of our framework by simulating a variety of compressible multi-phase flow problems. Problem-sizes are of O(1010) effective degree of freedom (DOFs). By the use of MR, we typically achieve memory and compute compressions of >90%. We demonstrate near-optimal parallel performance for scaling runs using O(104) cores, regardless of the employed numerical models. Program summaryProgram Title: ALPACA - Adaptive Level-set Parallel Code AlpacaCPC Library link to program files:https://doi.org/10.17632/5zr3sg83ct.1Developer's repository link:https://gitlab.lrz.de/nanoshock/ALPACALicensing provisions: GPLv3Programming language: C++20Supplementary material: Code: Copy of the git repository, Videos: Air-helium shock bubble interaction (front and back view), Air-R22 shock bubble interaction, Three bubble shock interface interaction.Nature of problem: Numerical simulation of conservation laws such as the compressible Navier-Stokes equation with several interacting gaseous and liquid phases remains challenging even today. These flows often involve singularities such as shocks and interfaces as well as instabilities driven by their interaction. The inherent highly nonlinear dynamics of those systems leads to a broad range of temporal and spatial scales that have to be resolved. There exists a variety of mutually exclusive numerical models that are able to tackle these challenges. Those, however, are computationally expensive and require computational power that is offered only by large-scale state-of-the-art distributed-memory machines.Solution method: We have developed a modular simulation environment for conservation laws allowing exchange of numerical methods without loss of parallel performance. Computational efficiency is enhanced by employing multi-resolution schemes with adaptive local-time stepping. Our block-based implementation of these schemes is parallelized using the Message Passing Interface and exploits vectorization capabilities of the compute hardware. To simulate distinct and immiscible phases inside the computational domain, we utilize a sharp-interface level-set method. The level-set method allows to accurately locate the interface position and to easily prescribe arbitrary coupling conditions. The narrow-band approach reduces the computational load of the level-set method. We extend this method by a smart tagging system that exploits the block-based nature of the algorithm and further reduces the computational load. The simulation framework is written in modern C++20 and provides a Python interface for integration in Machine Learning and Uncertainty Quantification toolchains. We use parallel HDF5 in combination with XDMF to output field quantities. CMake is used as build system. We have completely annotated the source code using doxygen-style comments, allowing automated documentation generation in different formats. The source code is equipped with CI/CD-automated unit tests and an exhaustive integration test suite.Additional comments including restrictions and unusual features: ALPACA relies on open-source third-party libraries for input and testing. These are packaged as git submodules and automatically integrated. ALPACA is tested on Linux and macOS.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call