Skip to content
View PhasicFlow's full-sized avatar

Block or report PhasicFlow

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
PhasicFlow/README.md
PhasicFlow Logo

PhasicFlow: High-Performance Discrete Element Method Simulations

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:

  1. Serial Execution: Single-core CPU.
  2. Shared-Memory Parallelism: Multi-core CPU (OpenMP).
  3. GPU Acceleration: NVIDIA GPU (CUDA).
  4. Distributed-Memory Parallelism: MPI.
  5. Hybrid Parallelism: MPI + OpenMP.
  6. Multi-GPU Parallelism: MPI + CUDA.

Build and Installation

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.

Comprehensive Documentation

In-depth documentation, including code structure, features, and usage guidelines, is accessible via the online documentation portal.

Tutorials and Examples

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: Coupled CFD-DEM Simulations

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.

How to cite PhasicFlow?

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}
}

Dependencies

PhasicFlow relies on the following external libraries:

Popular repositories Loading

  1. phasicFlow phasicFlow Public

    Parallel, highly efficient code (CPU and GPU) for DEM and CFD-DEM simulations.

    C++ 60 29

  2. PhasicFlowPlus PhasicFlowPlus Public

    Fluid-particle coupling for multiphase flow based on PhasicFlow and OpenFOAM

    C++ 37 9