主要来自DualSPHysics官方文档介绍:https://github.com/DualSPHysics/DualSPHysics/wiki
本文进行翻译理解:
平滑粒子流体动力学 (SPH) 是一种拉格朗日无网格方法,已在计算流体动力学 (CFD) 领域得到广泛应用 [Gómez-Gesteira et al., 2010],其中粒子代表流动,与结构相互作用 ,并表现出带有移动边界的大变形。 SPH模型表明CFD已接近成熟阶段,并不断改进和修改,使模型的精度、稳定性和可靠性达到实际工程应用可接受的水平。
DualSPHysics代码源自SPHysics,它是由约翰·霍普金斯大学(美国)、维戈大学(西班牙)、曼彻斯特大学(英国)和罗马大学的研究人员开发的开源SPH模型 。 该软件可从 sphysics官网 免费下载。 FORTRAN 代码的完整指南可在 [Gómez-Gesteira et al., 2012a; 2012b]。
SPHysics FORTRAN 代码针对波浪破碎 [Dalrymple 和 Rogers, 2006]、溃坝行为 [Crespo 等人, 2008]、与沿海结构的相互作用 [Gómez-Gesteira 和 Dalrymple, 2004] 或与移动的相互作用等不同问题进行了验证。 防波堤 [Rogers et al., 2010]。
尽管SPHysics允许使用高分辨率和广泛的公式来模拟问题,但其应用于实际工程问题的主要问题是计算运行时间过长,这意味着SPHysics很少应用于大领域。 需要硬件加速和并行计算来使 SPHysics 在工程应用中更加有用和通用。
图形处理单元 (GPU) 起源于计算机游戏行业,现已成为科学计算和数值建模领域高性能计算 (HPC) 的廉价替代品。 GPU 旨在管理大量数据,近年来其计算能力的发展速度比传统中央处理单元 (CPU) 快得多。 统一计算设备架构 (CUDA) 是一种用于 GPU 计算的并行编程框架和语言,使用 C/C++ 语言的一些扩展。 不同领域的研究人员和工程师正在使用 CUDA 语言实现其代码的高速提升。 因此,GPU 的并行功率计算也可以应用于 SPH 方法,其中模拟过程中每个粒子的相同循环可以并行化。
DualSPHysics 采用 C++ 和 CUDA 语言实现,分别在 CPU 或 GPU 上进行数百万个粒子的模拟。 新的 CPU 代码具有一些优点,例如更优化地使用内存。 面向对象的编程范式提供了易于理解、维护和修改的代码,并且可以对可用的错误进行复杂的控制。 此外,还实现了更好的优化,例如对粒子进行重新排序以更快地访问内存,并实现创建邻居列表的最佳方法[Domínguez et al., 2011]。 CUDA 语言管理 GPU 上线程的并行执行。 最好的方法被认为是作为 C++ 代码的扩展来实现的,因此实现了 GPU 上并行粒子交互的最合适的优化 [Domínguez et al., 2013a; 2013b]。 [Crespo et al., 2011] 中提出了第一个严格的验证。 代码的 3.0 版完整记录在 [Crespo et al., 2015] 中。
个人理解的DualSPHysics的产生可以用下图来表示: