《SoftwareX》:openCFS: An open-source finite-element software for advanced multiphysics simulations
编辑推荐:
专业摘要翻译
软件openCFS(前身为“CFS++”)是一款开源有限元软件,专为耦合场仿真而设计,涵盖电磁学、声学、线性化流体流动、固体力学和热传导等领域。它将模块化的C++核心与声明式XML建模语言及Python自动化层(pyCFS)相结合。除标准公式外,
专业摘要翻译
软件openCFS(前身为“CFS++”)是一款开源有限元软件,专为耦合场仿真而设计,涵盖电磁学、声学、线性化流体流动、固体力学和热传导等领域。它将模块化的C++核心与声明式XML建模语言及Python自动化层(pyCFS)相结合。除标准公式外,openCFS还提供先进功能,例如色散多孔材料的时域等效流体建模、移动域上带Maxwell滑移边界条件的热粘性/粘性声学、电磁学中的先进矢量磁滞模型,以及对非协调和旋转界面的稳健处理,并辅以基于密度的和特征映射的拓扑优化。开发遵循现代软件工程实践,具备持续集成以及跨平台的600余项自动化测试。本文描述了该软件的架构、工作流程和关键特性,并在代表性应用上进行了演示。
论文解读文章
一、研究背景与问题
高保真多物理场仿真在众多研究与工程领域具有基础性地位,涵盖从电机、发电机、变压器等磁-机械器件,到大型设备(电机、变压器、声屏障)乃至微机电系统(MEMS)扬声器的声学设计,以及感应加热、暖通空调系统和透平机械中的气动声学与振动声学等广泛场景。然而,通用PDE组装器与商业多物理场代码之间存在明显的功能空白:前者需要用户自行编写变分公式,门槛极高;后者则往往封闭且难以扩展。openCFS正是针对这一空白而开发的。该软件由Manfred Kaltenbacher于2002年发起的CFS++项目演变而来,2020年以MIT许可证开源,如今已具备处理多种偏微分方程(PDE)、执行拓扑优化以及前后处理结果的能力。其突出特色包括谐波平衡、基于辅助微分方程的时域等效流体声学、带Maxwell滑移边界条件的热粘性流动、曲线完美匹配层、旋转非协调界面,以及集成参数识别的矢量磁滞模型,这些功能均可开箱即用,无需用户层面的变分公式编写。
二、研究内容与意义
研究人员开发并持续维护了openCFS这一研究驱动的有限元软件包,通过易用的XML输入、广泛的预处理工具(网格读取器、数据输入、pyCFS)和后处理工具(ParaView插件、pyCFS-data、MATLAB等)交付上述能力。所有功能均通过九个构建配置、跨平台的600余项测试用例持续验证。该软件在开放科学软件生态中具有独特地位:它既不像通用PDE组装器那样要求用户掌握变分公式,又比商业多物理场代码更具开放性和可扩展性,为学术界和工业界提供了一个可靠、可复现且可自动化的多物理场仿真平台。多个大学(维也纳技术大学、格拉茨技术大学、埃尔朗根-纽伦堡大学)已将其用于教学,涵盖从基础有限元分析到先进软件开发实践及拓扑优化等课程。
三、关键技术方法
研究人员采用了以下主要技术方法构建openCFS:(1)以C++编写模块化核心代码,通过CMake统一配置和构建内部文件及外部依赖库,编译为单一可执行文件;(2)采用模式验证的XML声明式建模语言,通过仿真文件和材料文件两个XML文件完全配置仿真流程;(3)开发Python自动化层pyCFS,支持全自动化和简化的工作流程,包括参数研究、代理优化以及前后处理任务;(4)基于GitLab的持续集成/持续交付(CI/CD)流水线,自动构建和测试多种配置组合;(5)提供内部及外部求解器(PARDISO、CHOLMOD、LIS、Ginkgo等),其中Ginkgo支持原生GPU加速;(6)支持非协调耦合(mortar和Nitsche型方法)以及旋转非协调界面处理。
四、研究结果
软件架构与工作流程。 通过架构图展示了openCFS的完整工作流程:外部生成的网格和经过模式验证的XML模型驱动模块化C++核心,该核心负责有限元组装、求解和结果写入,场结果以HDF5格式输出,可暴露给ParaView和pyCFS自动化层。核心代码按功能组织为多个目录,包括Domain(网格、边界条件、结果和PDE访问)、PDE(各物理场方程及耦合接口)、FeBasis(有限元空间与函数)、Forms(算子、双线性/线性形式及积分器)、OLAS(线性代数系统与求解器)、Optimization(拓扑与形状优化)以及Testsuite(600余个最小物理测试用例)。
仿真设置。 openCFS不包含原生通用网格生成器,而是依赖Gmsh和Cubit/Trelis等第三方前处理器,通过区域名称作为网格生成器与求解器之间的主要接口。仿真XML包含三个强制部分:fileFormats(声明网格输入、输出格式和材料数据库路径)、domain(通过regionList将每个命名网格区域映射到材料,实现几何描述与物理的解耦)以及一个或多个sequenceStep块(定义分析类型如静态、谐波、瞬态、特征频率、多谐波、2.5D等,以及pdeList枚举所有待求解的物理场)。多物理场耦合可通过在同一序列步骤中放置多个PDE或在序列步骤之间链接并交换场数据来实现。材料属性在独立的cfsMaterialDataBase文件中维护,支持常数、解析函数和查找表形式的非线性描述。场结果以HDF5格式写入results_hdf5目录,可通过ParaView专用读取器插件进行可视化,或通过pyCFS Python包进行脚本化定量分析。
微尺度声学建模。 openCFS通过求解线性化可压缩Navier–Stokes(LinFlow)方程并耦合热传导和声学来实现热粘性或粘性声学模型。为避免在微尺度器件中解析边界层所需的极细网格,实现了有效边界条件方法和Maxwell滑移边界条件,其应用已在MEMS声学器件研究中得到验证。
时域等效流体(EF)模型。 等效流体方法通过有效的(复/频率相关的)密度和体积模量来建模多孔吸声材料。为在时域中使用该方法,openCFS实现了辅助微分方程(ADEs),用额外的状态变量替代卷积记忆项——这是时域色散介质中的常用方法。相关有限元时域公式已在瞬态散射算例上得到验证。
自由辐射建模。 自由辐射边界条件对开放域波动仿真至关重要。openCFS提供吸收边界条件以及完美匹配层(PML)技术,最新实现扩展了具有自动层生成的曲线PML,使PML能够适应各种形状的光滑凸边界。此外,无限映射层将无限物理域重新映射到计算域周围的有限区域,已针对椭圆型物理场问题得到验证。
物理场耦合。 openCFS支持直接和迭代耦合策略下的多物理场仿真及其相互作用。线性化流动方程等物理场支持域运动,使得通过复杂耦合设置求解高度复杂的问题成为可能,例如MEMS扬声器仿真中涉及域运动的PDE与未变形域上求解的PDE之间的耦合方案。
求解器。 openCFS提供内部直接和迭代求解器(如LU、CG和GMRES),并内置多种外部求解器包,包括GPU加速支持。主要外部求解器包括PARDISO、CHOLMOD、LIS和Ginkgo(后者支持原生GPU)。预条件器方面提供Jacobi、不完全LU和多网格预条件器以及外部求解器类型预条件器。求解器、预条件器和容差的选择通过仿真XML暴露,无需重新编译即可调整生产工作流。
非协调和旋转界面。 非协调耦合(mortar和Nitsche型方法)允许用户在不重新网格化的情况下在界面处耦合不同网格,从而为每个子域选择最优网格。openCFS为声学和耦合多物理场仿真提供旋转非协调界面支持,特别适用于透平机械声学和电机领域。
空间和时间相关参数。 在输入XML的几乎所有部分(如边界条件、材料数据)中,均可使用空间和时间/频率相关的表达式。这些表达式可包含用户定义变量、常见数学函数以及自定义预定义函数,例如从CSV文件表格数据进行线性插值,或典型的时域函数如正弦脉冲。表达式解析由muparser库处理。
优化。 openCFS作为结构优化研究的平台,特别是基于密度的拓扑优化(SIMP),包括稳健滤波和多载荷工况,并包含自动二值投影等最新特性。利用高性能并行C++核心,可达百万级设计变量。
五、讨论与结论
讨论部分指出,openCFS在开放科学软件生态中产生了显著影响:其开源特性、模块化架构和完整文档体系使其成为学术界和工业界可依赖的仿真工具;多所大学将其用于教学,学生通过参与合并请求流程获得开源贡献实践经验;GitLab托管的基础设施支持自动测试和验证,确保无功能回归。结论部分强调,openCFS通过将先进的多物理场仿真能力、易用的XML输入、Python自动化层以及严格的软件工程实践(600余项自动化测试、CI/CD流水线、完整文档)相结合,成功填补了通用PDE组装器与商业多物理场代码之间的空白,为研究和工程工作流提供了可靠、可复现且可扩展的解决方案。