中文

Gridap的软件设计:一个基于Julia JIT编译器的有限元软件包

数学软件 2022-04-13 v1

摘要

我们介绍了Gridap的软件设计,这是一个完全用Julia编程语言编写的新型有限元库,正被全球多个研究团队用于模拟复杂的物理现象,如磁流体力学、光子学、天气建模、非线性固体力学和流固耦合问题。该库提供了功能丰富的离散化技术集合,用于对广泛的偏微分方程进行数值近似,包括线性、非线性、单场和多场方程。其富有表现力的API允许用户以接近数学符号的语法定义弱形式的偏微分方程。尽管这在以往的代码中也可实现,但Gridap的主要创新之处在于它无需引入领域特定语言(DSL)及变分形式编译器即可实现此API。相反,它利用Julia的即时编译器构建针对当前具体问题的高效专用代码。因此,不再需要为计算后端和用户前端使用不同的语言,从而消除了所谓的双语言问题。Gridap还提供了一个低级API,该API具有模块化和可扩展性,通过Julia的多重派生范式实现,并提供了对库主要构建块的便捷访问。本文的主要贡献是详细介绍了Gridap设计背后的新型软件抽象,该设计利用了Julia语言提供的全新软件可能性。文章的第二个主要贡献是与FEniCS的性能比较。我们测量了针对不同问题类型组装线性方程离散系统所需的CPU时间,并表明Gridap的性能与FEniCS相当,证明了新的软件设计并未牺牲性能。Gridap在Github上免费提供,并在MIT许可证下分发。

关键词

引用

@article{arxiv.2109.12818,
  title  = {The software design of Gridap: a Finite Element package based on the Julia JIT compiler},
  author = {Francesc Verdugo and Santiago Badia},
  journal= {arXiv preprint arXiv:2109.12818},
  year   = {2022}
}