【优秀作品展播】基于FastCAE平台的多物理场仿真软件开发分享

第二届开放原子大赛——开源工业软件算法集成大赛路演近期圆满收官。FastCAE特此推出【开源工业软件算法集成大赛优秀作品专栏】,聚焦第二届开放原子大赛路演成果。

大赛汇聚工业软件领域专业技术团队,通过组件化集成模式推动国产工业软件生态建设,现精选优秀作品进行集中展播。

本作品首先基于结构有限元库deal.II的线弹性求解器elasticity,依托FastCAE提供的网格生成引擎、几何操作界面、数据注册工厂等功能,开发了一个涵盖了网格生成、边界设置、材料配置、求解与后处理的结构有限元软件APPDealII。

其次,通过对FastCAE-Flow组件进行二次开发,集成新求解器,并结合APPDealII与preCICE,构建了一个能够实现流固耦合的仿真系统。

最后,借助FastCAE-Workbench,实现对上述仿真组件的统一管理,并支持在工作台中配置流固耦合仿真流程。

1 流固耦合系统集成背景

1.1流固耦合背景

流固耦合(Fluid-Structure Interaction, FSI)用于研究流体与固体间的相互作用,能够准确地反应真实的物理变化过程,广泛应用于汽车工业、航空航天、船舶工程等领域。但是目前进行流固耦合仿真主要采用商业软件,但是这些商业软件也存在着以下问题:

(1)数据格式不兼容:不同厂商之间的数据格式不兼容,导致跨平台或跨软件的流动性差,增加了数据转换和整合的工作量。

(2)授权费用昂贵:商业软件的授权费用昂贵,尤其对于中小型企业或个人开发者而言,成本成为使用的一个重要障碍。

(3)二次开发困难:商业软件通常提供的二次开发支持有限,无法灵活定制和扩展其功能,限制了特定需求的实现。

1.2系统介绍

针对商业流固耦合软件存在的问题,开发团队以开源多物理场数值模拟耦合库preCICE为基础,开发了一套灵活可拓展的流固耦合系统。该系统基于OpenFOAM流体计算平台和deal.II结构力学计算库,通过preCICE作为流固耦合的中间件,并开发适配器以实现求解器之间的数据交换和耦合。

图1 流固耦合系统组成

但是这些软件使用时需要通过命令行运行,流程缺乏自动化支持,并且需要切换其它软件完成前后处理交互流程。对于该问题,FastCAE软件通过采用开源底座加组件集群和学科套件的集成开发模式,将preCICE、OpenFOAM、deal.II集成为了三个软件:

AppPreCICE、AppOpenFOAM、AppDealII


AppPreCICE、AppOpenFOAM、AppDealII作为流固耦合组件,被整合到FastCAE-Workbench平台中。通过这种集成,用户将能够在UI界面中完成从前处理到求解再到后处理的流固耦合全过程,大幅提升使用效率并降低操作复杂度。

图2 FastCAE-Workbench平台

2 流固耦合系统技术实现

2.1分层架构

AppOpenFOAM、AppDealII组件负责流体与固体的求解参数设置、配置文件写出,AppPreCICE组件负责配置耦合参数、写出耦合配置文件、调用OpenFOAM与DealII求解器进行流固耦合计算。

三个组件都遵循 MVC 架构模式,每个组件都由三个模块构成:界面模块、操作器模块、以及Model模块(包含数据结构、参数文件IO模块和程序驱动模块)。

图3 架构示意图

三者中Model模块处于最底层,可以被界面与操作器访问与修改,操作器可以直接访问窗口,而窗口则可以通过访问操作器的基类抽象接口实现对操作器的控制,这样就做到了三者之间的彼此独立,且能够相互访问。不仅增强了代码的可维护性和扩展性,还提高了开发效率和系统的灵活性。

2.2流固耦合系统技术实现

流固耦合系统中各组件界面模块的实现,首先需要创建对应的组件工厂,在组件工厂中将FastCAE提供的GUI组件实例化为3D图形窗口、求解信息输出栏、窗口树。而每个软件中具体的参数窗口、操作窗口需要通过Qt控件来创建,并将其添加到窗口树中。

图4 界面模块实现

在操作器中,通过全局指针来访问组件工厂中对应的窗口树,操作器负责将树的子节点用节点对应的参数窗口进行实例化,从而在主界面中显示该窗口。

Model模块,负责数据的创建与修改、参数文件的读写和驱动程序。创建数据结构需要继承FastCAE提供的数据工厂基类,创建出每个组件对应的数据工厂,在数据工厂中添加具体的类用来存储如物理参数、网格集合参数、耦合参数。同时数据类也提供了访问、修改这些参数的方法。参数文件、字典文件写出类中,包含了一个Prm/Dict/XmlObject类,该类有一个数据容器Data用于存储各类型的参数,同时该类中包含了参数文件、字典文件字段添加的方法,还有将参数写出到文件的方法。

图5 数据结构与参数文件IO实现

在实际的字典文件写出过程中,用户在界面模块的输入窗口中输入了参数,这时会调用全局指针获取数据工厂的数据类,调用该数据类的修改方法将输入的参数同步到具体的数据对象中。而在写出时,同样通过全局指针来获取该数据对象,组件的参数写出类将调用字典写出函数将该数据写出到参数文件中。

图6 参数文件写出过程

驱动器如DealDriver等继承自FastCAE的第三方驱动程序工厂FITKProgramDriverFactory。在需要启动deal.II及OpenFOAM程序时,需要将启动命令写出为bash脚本,然后将脚本名传入到驱动器之中,就能以命令行的形式执行该脚本,启动仿真计算。

2.3流固耦合系统执行流程

基本的运行流程如下:

(1)流固耦合系统的搭建:通过操作FastCAE-Workbench,将AppDealII、OpenFOAM、AppPreCICE、CFDPost进行链接,其中AppDealII负责结构参数配置和求解,OpenFOAM负责流体参数配置和求解,AppPreCICE负责写出耦合配置文件管理参与者间的数据交换,CFDPost用于查看仿真结果。

(2)耦合参与者设置:通过在APPDealII以及FastCAE-Flow中进行界面交互,完成网格划分、边界设置、求解参数的设置,最后写出相关字典文件。

(3)耦合参数设置:配置耦合信息。其中包括流体耦合网格、数据信息,以及固体耦合网格、数据信息,并设置监测点。设置耦合方法,最终写出耦合信息。

(4)流固耦合求解:通过启动各参与者以及耦合模块进行耦合求解。

(5)启动后处理软件,查看后处理结果。

图7 流固耦合系统搭建

图8 流固耦合系统执行过程

3 功能介绍 

3.1前处理流程

GUI:通过采用FastCAE提供的VTK渲染组件、信息输出组件、界面组件等,在三个软件的代码中进行组件的注册,根据三个软件的需求分别进行了实例化,形成了三个软件对应的UI。UI中包含了用来显示几何与网格的3D窗口、用于输出操作信息和求解信息的信息输出栏、参数设置模块。三个软件的参数设置窗口设计简洁明,支持关键参数(如湍流模型、边界条件、求解器类型等)的直观设置,结合智能提示与参数预设值功能,降低用户操作复杂度与出错率。

字典文件读写:首先是通过FastCAE底座中的核心层代码,开发了三个软件对应的数据工厂模块,作为数据结构来存储流固耦合计算所需要的物理参数、网格几何参数、耦合参数等。然后开发了三个软件对应的字典文件写出组件,用于写出deal.II、OpenFOAM、preCICE对应的参数文件。在实际的读写过程中,需要从GUI中的参数窗口获取窗口的参数,将其写入到数据工厂中对应的数据,然后再提取出写入到字典文件中。

网格功能:采用FastCAE中集成的OpenCASCADE引擎,创建几何模型;调用FastCAE中集成的OpenFOAM的网格工具,分别生成内流场(deal.II结构网格)、外流场网格(OpenFOAM流体网格);结合边界条件高亮显示和标准视角切换工具,分别设置这些网格的边界条件。通过调用foamToVTK命令将内流场网格转换为VTK格式,以便deal.II程序读入。

图9 网格生成功能

3.2求解流程

可设置是否进行流固耦合,如果是,则必须参与流固耦合的求解器都必须进行所有必要的参数设置后,才能开始求解;若否,每个求解器将作为单一学科求解器独自运行。

求解计算本质是上生成脚本文件,通过操作器运行脚本文件,在终端中执行求解器的运行命令。

(1) 耦合工作台

通过FastCAE-Workbench进行流固耦合系统的搭建,选择FastCAE-Flow、AppDealII进行流体、结构的计算,AppPreCICE进行耦合通信,最后通过CFDPost呈现后处理结果。

图10 启动流固耦合工作台

(2) 流体求解参数设置

考虑到用户使用的仿真模拟场景不同,界面提供了三种不同类型的求解器,用户可根据需要选择(FastCAE-Flow进行流固耦合仿真目前仅支持pimpleFOAM求解器)。接着,用户可以根据模型树Setup子节点的顺序依次完成需要的参数配置操作(例如湍流模型、流体性质以及求解设置等)。

图11 启动FastCAE-Flow设置求解参数

(3) 耦合设置

流固耦合求解有别于普通的单独求解,需要用户启用耦合设置。

图12 FastCAE-Flow耦合信息设置

(4) 固体求解器设置

用户可在AppDealII中建立模型,进行网格划分。并且基于独特的仿真模拟场景对模型赋予相关的材料属性,并且对求解器相关参数进行设置。

图13 启动AppDealII设置求解参数

(5) 固体求解器耦合设置

用户同样需要在固体求解器中启动耦合设置,并且设置输出数据以及读取数据。

图14 AppDealII耦合信息设置

(6) 耦合组件设置

最后用户需要在AppPreCICE中设置相关的耦合信息,以及耦合方法。其中包括耦合网格、数据信息、设置监测点、映射方法、运算时间以及松弛因子。

图15 启动AppPreCICE设置耦合信息

3.3后处理分析

求解流程完成后,用户点击切换至CFDPost模式,自动打开后处理分析界面并自动加载结果文件,平台配备了云图、矢量图、流线、迹线,探针等可视化分析工具,为用户提供了强大且精细的数据分析能力。

图16 CFDPost展示后处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FastCAE2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值