PhasicFlow is a robust, open-source C++ framework designed for the efficient simulation of granular materials using the Discrete Element Method (DEM). Leveraging parallel computing paradigms, PhasicFlow is capable of executing simulations on shared-memory multi-core architectures, including CPUs and NVIDIA GPUs (CUDA-enabled). The core parallelization strategy focuses on loop-level parallelism, enabling significant performance gains on modern hardware. Users can seamlessly transition between serial execution on standard PCs, parallel execution on multi-core CPUs (OpenMP), and accelerated simulations on GPUs. Currently, PhasicFlow supports simulations involving up to 80 million particles on a single desktop workstation. Detailed performance benchmarks are available on the PhasicFlow Wiki.
Scalable Parallelism: MPI Integration
Ongoing development includes the integration of MPI-based parallelization with dynamic load balancing. This enhancement will extend PhasicFlow's capabilities to distributed memory environments, such as multi-GPU workstations and high-performance computing clusters. Upon completion, PhasicFlow will offer six distinct execution modes:
- Serial Execution: Single-core CPU.
- Shared-Memory Parallelism: Multi-core CPU (OpenMP).
- GPU Acceleration: NVIDIA GPU (CUDA).
- Distributed-Memory Parallelism: MPI.
- Hybrid Parallelism: MPI + OpenMP.
- Multi-GPU Parallelism: MPI + CUDA.
PhasicFlow can be compiled for both CPU and GPU execution.
- Current Development (v-1.0): Comprehensive build instructions are available here.
- Latest Release (v-0.1): Detailed build instructions are available here.
In-depth documentation, including code structure, features, and usage guidelines, is accessible via the online documentation portal.
Practical examples and simulation setups are provided in the tutorials directory. For detailed explanations and step-by-step guides, please refer to the tutorial section on the PhasicFlow Wiki.
PhasicFlowPlus is an extension of PhasicFlow that facilitates the simulation of particle-fluid systems using resolved and unresolved CFD-DEM methods. The repository for PhasicFlowPlus can be found here.
If you are using PhasicFlow in your research or industrial work, cite the following article:
@article
{
NOROUZI2023108821,
title = {PhasicFlow: A parallel, multi-architecture open-source code for DEM simulations},
journal = {Computer Physics Communications},
volume = {291},
pages = {108821},
year = {2023},
issn = {0010-4655},
doi = {https://doi.org/10.1016/j.cpc.2023.108821},
url = {https://www.sciencedirect.com/science/article/pii/S0010465523001662},
author = {H.R. Norouzi},
keywords = {Discrete element method, Parallel computing, CUDA, GPU, OpenMP, Granular flow}
}
PhasicFlow relies on the following external libraries:
- Kokkos: A performance portability ecosystem developed by National Technology & Engineering Solutions of Sandia, LLC (NTESS). (https://github.com/kokkos/kokkos)
- CLI11 1.8: A command-line interface parser developed by the University of Cincinnati. (https://github.com/CLIUtils/CLI11)