mosaic-group/openfpm
GitHub: mosaic-group/openfpm
OpenFPM 是一个用于在异构并行计算机上构建可扩展粒子及粒子-网格模拟代码的开源科学计算框架。
Stars: 119 | Forks: 28
## OpenFPM:一个用于在并行计算机上运行粒子及粒子-网格代码的可扩展开源框架

OpenFPM 是一个开源软件库,旨在帮助开发者在异构的共享内存和分布式内存并行计算机系统上,实现可扩展的粒子及混合粒子-网格模拟代码。
该库的功能特性包括:
* 适用于异构计算系统的可扩展串行和并行数据结构,支持现有的 CPU 和 GPU 加速硬件
* 用于粒子方法线性微分离散化的算子,例如 DC-PSE、SPH
* 粒子-网格和网格-粒子插值方案
* 用于高效粒子方法模拟的数据结构,例如 Cell-List、Verlet-List
* 支持 CPU 和 GPU 的稀疏网格
* 支持 [PETSc](https://petsc.org/)、[Eigen](https://eigen.tuxfamily.org/index.php) 线性代数后端
* 支持基于 [Boost.Numeric.Odeint](https://www.boost.org/doc/libs/1_82_0/libs/numeric/odeint/doc/html/index.html) 的 ODE 积分算子
* 通过 [Algoim](https://algoim.github.io) 实现 Level-set 公式
* GPU 执行后端包括 [CUDA](https://developer.nvidia.com/cuda-toolkit)、[HIP](https://rocm.docs.amd.com/projects/HIP/en/latest/)、[OpenMP](https://www.openmp.org/)、[alpaka](https://alpaka.readthedocs.io/en/latest/)
* ……以及其他许多功能
## 安装
我们支持 MacOS、Linux 以及 Windows 的 Linux 子系统 (Windows subsystem for Linux)。
如需安装,请参考网站上关于[如何从源码构建](http://openfpm.mpi-cbg.de/building/)的说明
## 示例与文档
示例和文档可在[网站](http://openfpm.mpi-cbg.de/news/)、[在线 Doxygen 文档](http://ppmcore.mpi-cbg.de/doxygen/openfpm/index.html)以及 `example` 文件夹中找到。
示例代码涵盖了基于离散项的代码(例如 Lennard-Jones 分子动力学)以及连续时间和/或空间模拟(例如反应-扩散-平流方程):
* SPH 公式下弱可压缩 Navier-Stokes 方程的溃坝模拟
* 使用稀疏网格 level-set 公式的扩散热传导
* 3D Active Fluid 模拟
* 3D Gray-Scott 反应系统
* 求解不可压缩 Navier-Stokes 方程的混合粒子-网格涡度法
* ……以及其他示例
标签:C++, Vectored Exception Handling, 安全工具测试, 并行计算, 数据擦除, 科学计算, 粒子模拟, 高性能计算