PhasicFlow is an open-source code for DEM simulations developed in C++, licensed under GPL V-3.0 [www.github.com/PhasicFlow/phasicFlow]. It is parallelized based on shared-memory model and can be executed on multi-core CPUs or GPUs. The philosophy of its development is to provide an efficient, easy-to-use, and easy-to-extend tool for a wide range of hardware including cheap to high-end desktop computers. Here, the code structure, the most important features, its performance for simulating small to large problems (250,000 to 80,000,000 particles) on various hardware are presented. In all cases, the execution time varied linearly with number of particles that is ideal for DEM. The computation load per particle was almost constant for all problem sizes except for small simulations (higher). For CPU simulations, a good scaling was observed with number of cores, and scaling was closer to ideal state for larger simulations. The performance of PhasicFlow was compared with similar tools, wherever possible. It was shown that the performance of PhasicFlow is much higher than the similar tools in CPU execution mode and it is around 10–15% faster than similar tools in GPU execution mode. This new tool broadens the application of computer simulation to larger problems and allows researchers to perform DEM simulations on a wider range of hardware. Program summaryProgram title: PhasicFlowCPC Library link to program files:https://doi.org/10.17632/fs7w7jb8mr.1Developer's repository link:www.github.com/PhasicFlow/phasicFlowLicensing provisions: GNU General Public License 3Programming language: C++Nature of problem: The code covers the simulation of granular matter in powder, gas-solid and liquid-solid flows. The formulation is based on the soft-sphere discrete element method (DEM) which is a powerful tool for simulating solid powder flows. Solid particles are considered distinct bodies that may interact with solid surfaces, other particles and fluid around them.This method can be purely used for investigating various flow problems or can be coupled with proper fluid flow simulation code to be used in multiphase flow systems. The main goal here is to provide a powerful tool for researchers to perform large-scale powder and multiphase flows on cheaper and more accessible hardware.Solution method: The solution method is based on the high-order explicit integration of equations of motions for discrete particles over time to obtain their linear and rotational position and velocity. Triangulation is used for representing solid walls and various motion models are implemented, which cover a wide range of processing units in the real-life application. Particle-particle and particle-wall interactions are modeled using linear and non-linear models accompanied with friction models.The code is designed to be executed fast, to efficiently use computational resources, and to be easily understood, altered and extended for specific uses. It is multi-architecture and can be executed in parallel on both CPU and GPU, depending on the available hardware. It uses Kokkos as the backend code for managing memory resources and dispatching parallel work on computational resources. Accordingly, a single code can be compiled for various hardware types. The parallelization is performed on high-level and with negligible overhead costs, so the developers of the code are not facing hardware-specific programming models when parallelizing the computations workloads.Additional comments including restrictions and unusual features: The simulation setup in the code is based on human readable text-based files that are supplied by the user. To use the code, no knowledge of programming is required. The GitHub repository contains a wiki page that provides a full set of tutorials to show researchers how to simulate various granular flows. A step-by-step procedure for building the code is also provided in the repository that has been tested on various version of Ubuntu, including versions 18.04 LTS, 20.04 LTS and 22.04 LTS.
Read full abstract