多物理场仿真的算法和实现的最佳实践是什么?


16

多物理场模拟涉及通常以不同的空间和/或时间尺度耦合多个“物理场”。此外,单物理代码通常由不同的团队编写。最常用的耦合技术是一阶算子分裂,但这种方法的准确性和稳定性很差。如何确定对感兴趣的问题有效的算法,以及如何构造软件以使这些算法可用?

Answers:


5

我强烈建议使用完全耦合的组件,因为这样可以轻松复制操作员拆分版本。具体来说,可以将计算不同物理量的残差和雅可比矩阵的例程分开,但是该框架应该能够将它们组合起来,形成整个系统的统一残差。这就是PETSc的工作方式。

然后,操作员拆分解决方案可以用作全耦合系统的前提条件,也可以单独用作命令行的求解器。此外,某些联轴器可以保留,而其他联轴器可以取消。PETSc通过PC FieldSplit接口处理此问题。这允许复制混合方案,例如用于流体动力学的半隐式ICE。


5

由于这是一个非常活跃的研究领域,因此我不愿尝试对此做出回答,但是我对尝试做的事情有一些经验。

不要

  • 使用旧的应用程序代码A和旧的应用程序B,然后尝试将它们耦合在一起
  • 使用过时的代码(暗示事后无法使用),而不是构建新的应用程序
  • 需要一个巨大的框架(> 10个必需的依赖项)来开始贡献新用户
  • 假设数据布局(网格,矩阵,向量等)易于编写

  • 使用标准的编程实践,并希望使用好的设计模式
  • 阅读有关运算符拆分的文献,以了解准确性和稳定性的局限性
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.