《Powder Technology》:GEMSS: A C++ library for multi-sphere modeling in DEM simulations
编辑推荐:
GEMSS是一个用C++编写的库,用于在离散元法(Discrete Element Method,DEM)模拟中从网格和体素网格生成多球体(multi-sphere)颗粒。GEMSS能够在DEM模拟循环内即时(on-the-fly)生成多球体模型。GEMSS比
GEMSS是一个用C++编写的库,用于在离散元法(Discrete Element Method,DEM)模拟中从网格和体素网格生成多球体(multi-sphere)颗粒。GEMSS能够在DEM模拟循环内即时(on-the-fly)生成多球体模型。GEMSS比Python实现的多球体形状(Multi-Sphere Shape,MSS)算法实现了显著的加速。
**GEMSS:DEM模拟中多球体建模的高效C++库——论文解读**
在颗粒系统的离散元法(Discrete Element Method,DEM)和分子动力学(Molecular Dynamics,MD)模拟中,颗粒形状的准确表示对于描述堆积结构、接触相互作用以及流动行为至关重要。多球体模型(multi-sphere model)通过将任意形状颗粒近似为多个球体的集合,在计算成本与形状保真度之间提供了良好折中,因此被广泛用于非球形颗粒的DEM模拟中。尽管已有多种多球体生成算法被提出,且部分已开源,但它们通常以独立的Python或Matlab脚本形式存在,无法在模拟运行过程中动态调用。这导致在模拟涉及颗粒形状变化的现象(如粉碎、磨料磨损和塑性变形)时,用户必须离线生成多球体表示、计算物理参数,再手动传递给DEM框架,形成割裂的工作流,限制了此类模拟的开展。为克服上述限制,研究人员开发了GEMSS(GEnerator of Multi-Sphere Shapes)——一个头文件式(header-only)C++17库,将多球体生成与物理性质计算整合为统一流程,并支持在活跃模拟循环中即时生成多球体颗粒。GEMSS可直接集成到MercuryDPM、YADE和LAMMPS等主流DEM框架中,为动态颗粒形状演化模拟提供了高效工具。该论文发表于《Powder Technology》。
研究人员开展了以下工作:GEMSS内部数据流经三个主要阶段——形状离散化、多球体模型生成和物理性质计算。输入可为二进制STL表面网格或体素网格(VoxelGrid)。在多球体生成阶段,采用MSS算法(Multi-Sphere Shape algorithm)进行贪婪式填充;通过用户定义的距离缩放因子k控制球心距与局部半径的平方根关系,从而量化并控制表面人工粗糙度(即“扇贝高度”,scallop height)。为处理高度不规则形状中可能出现的孤立小球簇问题,GEMSS提供可选的拓扑过滤步骤,用户可根据实际需求决定是否去除这些孤立簇。物理性质(质量、质心、惯性张量)通过对体素网格离散求和计算,用户可选择基于多球体模型本身或基于原始目标网格进行计算。基准测试使用了Sand Atlas中的150个汉堡沙粒样本,与已有的Python MSS实现进行对比,测试环境为AMD Ryzen 5 5600G处理器、12线程、GCC 11 -O3编译。结果验证了GEMSS的准确性、动态集成能力和计算效率。
**3.1 物理性质验证**
研究人员选取球体、立方体、圆柱、圆锥和半球等基本目标体,将生成的多球体模型的体积、主惯性矩和质心位置与精确值进行比较。结果表明,体积相对误差低于2%,主惯性矩最大相对误差低于3%,质心偏差(用欧氏距离除以体积立方根归一化)最大为0.59%。这验证了GEMSS生成的模型在物理性质上具有较高精度。
**3.2 模型描述精度**
采用Dice相似系数(Dice similarity coefficient)量化目标形状与多球体近似之间的重合体积。精度受距离缩放因子k和球体数量n共同影响。k值较小可获得更光滑表面但需更多球体,k值较大可用较少球体捕获形状整体轮廓和端部,但会增加人工粗糙度。Dice系数不一定能完全反映这种权衡,因此需结合应用需求选择k值。GEMSS还提供两种惯性张量计算方式:一种基于多球体模型自身,保证与模拟粒子一致但略有偏差;另一种基于原表面网格,惯性张量精确但可能与模拟粒子不完全一致。随着球体数增加,两种方式的结果趋于收敛。
**4. 影响**
GEMSS已集成到MercuryDPM中,可在模拟循环内通过单条命令原生生成多球体颗粒,实现动态形状更新。对150个沙粒的基准测试显示,GEMSS相比Python MSS实现显著降低了执行时间,尤其在高网格分辨率下加速效果更为明显;加速比随分辨率参数div(沿颗粒最小轴方向的体素数量)增大而提高。
**讨论与结论**
讨论部分指出,GEMSS实现了在DEM模拟循环中动态改变颗粒形状的功能,为粉碎、研磨、磨损等工程过程的模拟提供了支持。宿主DEM框架负责处理底层物理模型并提供更新后的目标形状,GEMSS则负责高效生成对应的多球体模型。作为开源库,GEMSS可直接集成到既有模拟框架中,减少了离线预处理带来的额外开销。
**结论翻译**:GEMSS是一个开源的、头文件式C++库,用于生成颗粒的多球体近似。通过同时支持体素数据和表面网格,该软件允许DEM和MD框架在模拟循环中直接加载形状,为离线的Python或MATLAB预处理脚本提供了一种更集成的替代方案。该库将多球体形状(Multi-Sphere Shape,MSS)算法与刚体动力学所需的体积、质心和主惯性矩计算相结合,为用户模拟复杂的、随时间演化的颗粒形状提供了高效工具。