首页/文章/ 详情

OpenCMP——开源多物理场高性能计算包

8月前浏览8626

 

OpenCMP:一个开源计算多物理包


摘要:


计算多物理为直接实验提供了一种安全、廉价、快速的替代方案,但其广泛使用仍存在障碍。

其中一个障碍是生成模拟域的保角网格,这是多物理模拟中使用的空间离散化的主要方法。这些网格的生成是耗时的、不确定的,并且通常需要手动用户干预。对于复杂的域几何,域一致网格单元、域内的单元和网格质量以及模拟稳定性之间也存在竞争。

第二个障碍是缺乏对基于有限元方法的计算多物理软件的简单访问,这使得高阶空间离散化成为可能,但代价是实现的复杂性。大多数计算多物理软件都是基于有限体积法,该方法固有地涉及低阶空间离散化。这需要相对高密度的网格单元以获得足够的数值精度,但实现起来相对简单。然而,较高的网格密度对应于较小的单元尺度,导致对流主导模拟的稳定性问题。确实存在基于有限元方法的计算多物理软件包,然而,这些软件包要么是封闭源代码的,要么需要在包括连续体力学、应用数学和计算科学在内的广泛领域拥有广泛的用户技能。

本文介绍了一个新的开源计算多物理包OpenCMP。OpenCMP实现了扩散界面方法,即使是复杂的几何形状也可以与不一致的结构化网格进行网格划分,从而提高了模拟的稳定性,有时甚至提高了速度。OpenCMP建立在流行的有限元库NGSolve上,为运行标准模型提供了简单的用户界面,也为有经验的用户提供了轻松添加新模型的能力。它已经在常见的基准问题上得到了验证,并用于将扩散界面方法扩展到具有移动域的模拟中。


 

图:用扩散界面法模拟二维刚体旋转的(a)速度和(b)压力的结果。


 

图:反应流的(a)组分a和(b)组分b的浓度的模拟结果。


 

图:二维Schafer-Turek基准的(a)速度和(b)压力的模拟结果。


开源地址:

[1] https://github.com/uw-comphys/opencmp

[2] https://opencmp.io/


OpenCMP的软件设计


OpenCMP开发的起点是有限元求解器库的选择。从头开始编写有限元方法的实现被认为是不可能的;这将是一个非常耗时的过程,并且最终结果将不如现有的库。另一方面,使用现有的库作为OpenCMP的后端,可以集中精力实现多物理模型,开发用户界面和通用仿真框架。现有的有限元求解器库也已经针对性能进行了优化,并针对效率和准确性进行了验证。因此,OpenCMP建立在开源的NGSolve有限元库之上。

NGSolve的一个主要优点是它的Python包装器和有限元弱形式的符号表示。显著提高了代码的可读性。具有可读代码也有助于有经验的用户修改OpenCMP模型或添加自己的模型。NGSolve可用于所有标准操作系统,并且具有最小的依赖性,允许OpenCMP具有相同的依赖性。它与Netgen网格划分软件和图形界面集成,未来可以允许OpenCMP添加网格生成和结果可视化功能。与其他有限元求解器库相比,NGSolve还提供了一些性能优势。它实现了一组广泛的有限元空间,包括流体动力学、结构力学、电磁学和声学,因此适用于真正的多物理模拟。NGSolve在现有的有限元库中对不连续伽辽金方法有最强的支持。它还提供各种最先进的解算器和预处理器,包括SciPy和PETSc解算器的接口。最后,NGSolve本质上是多线程运行的,如果使用MPI支持进行编译,则可以在多个节点上并行运行。

来源:STEM与计算机方法
通用python声学理论自动驾驶数字孪生人工智能
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-03-05
最近编辑:8月前
江野
博士 等春风得意,等时间嘉许。
获赞 47粉丝 47文章 308课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈