内容摘自官方文档https://jsdokken.com/dolfinx-tutorial/fem.html
原文:The latest version of the FEniCS project, FEniCSx, consists of several building blocks, namely DOLFINx, UFL, FFCx, and Basix. We will now go through the main objectives of each of these building blocks. DOLFINx is the high performance C++ backend of FEniCSx, where structures such as meshes, function spaces and functions are implemented. Additionally, DOLFINx also contains compute intensive functions such as finite element assembly and mesh refinement algorithms. It also provides an interface to linear algebra solvers and data-structures, such as PETSc. UFL is a high-level form language for describing variational formulations with a high-level mathematical syntax. FFCx is the form compiler of FEniCSx; given variational formulations written with UFL, it generates efficient C code. Basix is the finite element backend of FEniCSx, responsible for generating finite element basis functions.
FEniCS是一个用于求解偏微分方程(PDEs)的数学工具或者说软件,其中包括 DOLFINx, UFL, FFCx, 和 Basix4个模块。
1.DOLFINx
核心模块。DOLFINx是FEniCSx的高性能C++后端,实现了网格、函数空间和函数等结构。此外,DOLFINx还包含计算密集型函数,如有限元组装和网格细化算法。它还提供了一个到线性代数求解器和数据结构(如PETSc)的接口。
2.UFL
数学语言模块。UFL是一种高级形式语言,用于用高级数学语法描述变分公式。
3.FFCx
数学语言到C语言的翻译模块。FFCx是FEniCSx的形式编译器;给定用UFL编写的变分公式,它生成有效的C代码
4.Badix
有限元模块。Basix是FEniCSx的有限元后端,负责生成有限元基函数。