Finch: Domain Specific Language and Code Generation for Finite Element and Finite Volume in Julia
Finch: Domain Specific Language and Code Generation for Finite Element and Finite Volume in Julia
复制标题
Finch:Julia 中有限元和有限体积的领域特定语言和代码生成
DOI:
10.1007/978-3-031-08751-6_9
复制
发表时间:
2022
影响因子:
4.4
通讯作者:
H. Sundar
中科院分区:
文献类型:
--
作者:
E. Heisler;Aadesh Deshmukh;H. Sundar
We introduceFinch, a Julia-based domain specific language (DSL) for solving partial differential equations in a discretization agnostic way, currently including finite element and finite volume methods. A key focus is code generation for various internal or external software targets. Internal targets use a modular set of tools in Julia providing a direct solution within the framework. In contrast, external code generation produces a set of code files to be compiled and run with external libraries or frameworks. Examples include amatlabtarget, for smaller problems or prototyping, orC++/MPIbased targets for larger problems needing scalability. This allows us to take advantage of their capabilities without needlessly duplicating them, and provides options tailored to the needs of the domain scientist. The modular design ofFinchallows ongoing development of these target modules resulting in a more extensible framework and a broader set of applications. The support for multiple discretizations, including finite element and finite volume methods, also contributes to this goal. Another focus of this project is complex systems containing a large set of coupled PDEs that could be challenging to efficiently code and optimize by hand, but that are relatively simple to specify using the DSL. In this paper we present the key features ofFinchthat set it apart from many other DSL options, and demonstrate the basic usage and current capabilities through examples.