Parallel, highly efficient code (CPU and GPU) for DEM and CFD-DEM simulations.
Go to file
PhasicFlow 9e3bb1cfa1
Contribution-readme
Update README.md
2025-03-27 02:09:52 +03:30
.github/workflows Create static.yml 2023-03-25 22:04:16 +03:30
DEMSystems end of file corrections 2025-03-13 23:43:52 +03:30
benchmarks delete the unused comments 2025-03-07 02:53:49 +08:00
cmake end of file corrections 2025-03-13 23:43:52 +03:30
doc Update codingStyle.md 2025-03-24 17:21:50 +03:30
solvers edits 2025-02-14 20:39:37 +03:30
src fix the cuda build error with multiRotatingAxis 2025-03-20 00:55:46 +08:00
tutorials toteBlender for v-1.0 2025-03-11 17:20:42 +03:30
utilities reading particle position from file for partilclesPhasicFlow 2025-02-24 13:55:56 +03:30
.gitignore git ignore and CMAKE 2024-04-18 10:06:07 -07:00
CMakeLists.txt Donwloading kokkos and installing tbb is now automatic 2025-02-17 01:13:02 +03:30
LICENSE build system is added and is tested for serial execution 2022-09-02 12:30:54 +04:30
README.md Contribute README.md 2025-03-27 02:07:32 +03:30
phasicFlowConfig.H.in updated cmake for version-1.0 and including MPI 2023-09-27 11:28:39 +03:30

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.

Contributing to PhasicFlow

We welcome contributions to PhasicFlow! Whether you're a developer or a new user, there are many ways to get involved. Here's how you can help:

  1. Bug Reports
  2. Suggestions for better user experience
  3. Feature request and algorithm improvements
  4. Tutorials, Simulation Case Setups and documentation
  5. Direct Code Contributions

For more details on how you can contribute to PhasicFlow see this page.

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: