当前位置: 首页 > article >正文

【应用介绍】FastCAE-PHengLEI流体仿真

1 风雷组件集成背景

1.1 风雷软件简介

风雷软件是中国空气动力研究与发展中心(CARDC)研发的面向流体工程的混合CFD平台。平台的建立遵循面向对象的设计理念,采用C++语言编程。自2010年开始,气动中心开始着力于工程化品牌CFD软件的开发;2020年7月,风雷软件面向“NNW项目”参研单位开源,行业内代码开源;2020年12月中旬,风雷软件正式面向全国用户开源发布,与其他开源CFD软件相比,风雷软件具有扩展能力强、开发难度低、计算效率高等特点。

风雷软件为了适应结构网格、非结构网格、混合网格、重叠网格等不同网格的计算,设计了具有良好通用性、可扩展性的体系结构和数据结构,实现了在同一个软件平台上,同时兼容结构求解器和非结构求解器。两种求解器可独立运行,也能耦合计算,即在流场中同时含有结构网格和非结构网格的情况下,在结构网格上调用结构求解器,在非结构网格上调用非结构求解器。特别地,风雷是目前全球唯一同时兼容结构/非结构的开源平台。

1.2 集成背景

但作为独立的求解器命令行程序,使用流程缺乏自动化支持,并且需要切换其它软件完成前后处理交互流程。为此,针对以上需求,FastCAE软件通过采用开源底座加组件集群和学科套件的集成开发模式,能够有效整合不同的CAE工具和流程,实现软件功能的高度自动化和一体化操作。风雷软件可以作为专业的CFD计算组件,被集成到FastCAE平台中。通过这种集成,风雷软件的用户将能够在界面中完成从前处理到求解再到后处理的全过程,大幅提升使用效率并降低操作复杂度。

2 风雷组件技术实现

2.1 分层架构

风雷求解器组件负责求解参数设置、配置文件写出以及调用风雷驱动exe程序三大关键环节,前后处理交互流程则通过下图中FastCAE提供的这些组件完成相应的功能。

风雷求解器组件按照软件架构MVC模式,将该组件主要分为三大模块,分别是PHengLEIWidget风雷界面模块、OperatorsPHengLEI操作器模块以及Model模块(包含FITKPHengLEIData数据结构、FITKPHengLEIParaWriter写参数文件IO模块和FITKPHengLEIDriver风雷程序驱动模块)。

风雷组件依赖关系

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

2.2 风雷求解器程序执行流程

在具体介绍风雷求解器界面以及业务流程技术实现之前,先对风雷的执行流程进行简要介绍,以便读者更容易理解2.3技术实现的框架结构。

风雷求解器执行流程包含网格前置处理(包括网格转换、网格合并等)、网格分区及流场计算等功能,运行时,必须读入总控参数文件key.hypara和默认参数文件cfd_para.hypara,它们位于该项目工作目录的子目录bin中且定义了该软件所执行功能及所读入的相应控制参数文件名。

风雷程序运行流程

基本的运行流程主要包括下面三个部分:

1. 网格转换:通过修改总控文件key.hypara和网格控制文件grid_para.hypara中的参数,运行风雷可执行程序完成其它格式网格文件到自定义fts格式的转换。

2. 网格分区:通过修改总控文件key.hypara和网格控制文件partition.hypara中的参数,运行风雷可执行程序完成网格分区。

3. 开始计算:通过修改总控文件key.hypara和解算器文件cfd_para_xxx.hypara中的参数,运行风雷可执行程序完成对算例的数值模拟。

2.3 风雷求解器组件技术实现

在风雷求解器参数界面中,为了实现配置参数界面控件自动生成,FastCAE框架平台提供了FITKEasyParam组件。FITKEasyParam组件FITKParameter类型提供了一系列的数据注册机制,可以用于创建Int、Double、Double、ComBox和Bool等参数类型。这些参数类型与界面生成的控件实现了一一绑定关系,具体绑定关系可见下图。通过该绑定关系,就可以轻松实现界面控件的自动生成,如LineEdit、Spin Box、CheckBox和Combo Box类型的控件。

界面控件生成对应关系

当用户在风雷求解器参数界面更新界面参数时,FITKEasyParam组件提供了统一的信号与槽机制,自动实现了界面的参数控件与对应的数据结构实现了关联,只要参数发生变动,数据结构也会发生变化,这大大减轻了开发者手动关联界面参数与相应数据结构的额外负担。

技术实现框架结构

用户在参数界面中设置完相关参数进行求解计算时,该组件会先执行写配置参数文件的业务流程,再执行调用风雷驱动程序的流程。写配置参数文件模块主要负责从风雷数据模型获取详细的配置参数,然后将其按照风雷软件规定的文件格式写入到指定的配置参数中。

该模块会提供了一个基类FITKPHengLEIAbsParaWriter,定义了执行参数文件写出的纯虚函数writeParamFile,该方法会由继承的类来实现该方法,用于生成不同任务类型的参数文件。派生类FITKPHengLEIParaWriterKey、FITKPHengLEIParaWriterGrid、FITKPHengLEIParaWriterPartion以及FITKPHengLEIWriteCFDXXXXX分别实现该writeParamFile用于写出不同任务类型的参数文件。参数文件对应关系如下:

写出文件

FITKPHengLEIParaWriterKey类

总控参数文件key.hypara

FITKPHengLEIParaWriterGrid类

网格转换参数文件grid_para.hypara

FITKPHengLEIParaWriterPartion类

网格分区参数文件partition.hypara

FITKPHengLEIWriteCFDHypersonsic类

cfd_para_hypersonic.hypara

FITKPHengLEIWriteCFDSubsonic类

cfd_para_subsonic.hypara

FITKPHengLEIWriteCFDSupersonic类

cfd_para_supersonic.hypara

FITKPHengLEIWriteCFDTransonic类

cfd_para_transonic.hypara

FITKPHengLEIWriteCFDIncompressible

cfd_para_incompressible.hypara

在写出相应任务的配置参数文件之后,会调用风雷可执行exe程序执行该任务。FastCAE底层框架平台中已经在windows和Linux系统上分别定义并设计了驱动程序模块的接口。目前风雷组件只在Windows系统进行了集成,只需要实现在Windows系统上的驱动程序接口FITKExecProgramDriver,并将其注册到第三方驱动程序工厂FITKProgramDriverFactory。在需要调用风雷驱动exe程序时,只需要从驱动程序工厂里通过程序名称获取对应的对象单例,就可以执行相应的驱动任务流程。

3 功能介绍

3.1 前处理流程

(1)导入网格文件

目前该软件支持对非结构网格类型CGNS格式的导入。导入完成后,可以通过软件提供的交互工具,对模型进行旋转、缩放以及移动等操作。

导入网格文件

(2)边界条件显示

当用户需要查看边界条件信息,可以在左侧模型树的Boundary节点下查看。用户选中其中的一个子节点,右侧的视图窗口会高亮该边界条件类型的边界面。

选择指定边界条件类型的边界面

如果用户需要聚焦于某个地方时,可以点击子节点左侧的图标,当图标切换为红色的“x”号时,此时右侧的边界面会同时隐藏。

切换显示和隐藏状态

3.2 求解流程

(1)求解参数设置

考虑到用户使用仿真模拟场景不同,界面根据计算速域提供了五种不同类型的求解器,用户可根据需要选择。接着,用户根据模型树Setup子节点的顺序依次完成需要完成的配置参数操作。

求解设置

(2)求解运行监控

在执行求解运行之前,用户可以根据场景需要,设置是否开启并行计算。求解运行时,界面下方信息输出台实时显示求解过程中迭代进度,并且自动显示残差曲线图像,用户能够实时观察求解过程中残差的变化。

求解运行监控

3.3 后处理分析

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

流场物理量结果显示

3.4 视频演示

采用风雷算例库中ThreeD_DLR-GK01对软件前后处理和求解流程进行功能使用演示。

视频演示

参考文档

[1] 风雷软件应用与开发指南(2406.v1217)


http://www.kler.cn/a/407012.html

相关文章:

  • Android蓝牙架构,源文件目录/编译方式学习
  • MyBatis Plus 项目的创建和使用
  • 微知-ib_write_bw的各种参数汇总(-d -q -s -R --run_infinitely)
  • mongodb多表查询,五个表查询
  • Android 网络通信(三)OkHttp实现登入
  • fastify 连接 mysql
  • NFC是什么?
  • Mybatis xml动态SQL 判断失效问题
  • 【数据结构】二叉树(2)
  • 云原生后端开发:引领现代应用的核心架构
  • 用邻接矩阵实现图的深度优先遍历
  • 淘宝商品评论爬虫:Java实现指南
  • Javaweb前端HTML css 整体布局
  • 006 单片机嵌入式中的C语言与代码风格规范——常识
  • JDK监控和故障处理工具
  • 深度学习实战人脸识别
  • C语言:函数指针精讲
  • 决策树 DecisionTreeClassifier() 模型参数介绍
  • 在使用PCA算法进行数据压缩降维时,如何确定最佳维度是一个关键问题?
  • 第二十二周机器学习笔记:动手深度学习之——线性代数
  • [RISCV]
  • 【【简单systyem verilog 语言学习使用三--- 新新adder加法器-覆盖率测试】】
  • av_image_get_buffer_size 和 av_image_fill_arrays
  • postsql 以二进制的数据导出sql内容
  • 矩阵的拼接
  • 已阻止加载“http://localhost:8086/xxx.js”的模块,它使用了不允许的 MIME 类型 (“text/plain”)。