基于FM工作流的快速网格自动化
在Fluent2019R1版本后,提供WTM和FTM两种导向式工作流程,大大降低划分高质量CFD网格的难度,并且网格划分设置过程支持脚本录制和重用,今天小田老师就和大家分享基于FM工作流的快速网格自动化方法。以如下所示混合器(Mixer)为例,在导入Fluent Meshing之前需要在SCDM中对边界进行命名;进出口处的固体面分布以前缀in和out命名,BOI影响体区域与固体域放在不同的元件中,案例下载见文末。以Meshing模式启动Fluent,然后依次点击File --> Write --> Start Journal…,选择脚本保存名称和文件夹。
然后选择Watertight Geometry工作流,按照如下流程和参数设置去完成网格划分。
- 创建drum-holes尺寸控制,指定Label:drum-holes,选择Face Size控制类型,尺寸为2mm。
- 创建boi尺寸控制,指定Label:BOI-Solid,选择Body of Influence,尺寸为15mm。
- 设置最小尺寸:5mm,最大尺寸:50mm,尺寸函数为Curvature&Proximity方法,设置Cell Per Gap为2。
3)几何描述 – Describe Geometry
- 只包含固体域、需要封闭和抽取流体域、设置流体交界面为internal、共享拓扑。
- 分布选择Label中in1、in2、out1创建边界inlet1、inlet2和outlet,对应类型为速度入口和压力出口。
- 设置3层边界层,作用在所有壁面处;选择poly-hexcore网格填充体网格。
按照以上流程参数完成网格划分,成功生成体网格后,就可以关闭脚本录制,通过File --> Write --> Stop Journal…使用NotePad++打开录制的文件,语言选择Scheme,部分录制脚本代码如下:��以看到记录操作的脚本主要包含%py-exec过程函数和其他以cx开头的GUI操作;这里面与GUI操作相关脚本代码,也就是以cx开头的代码我们都需要删除。
简化后的代码就是FM工作流操作过程记录的脚本,可以通过分号(;)对代码进行注释,对代码进行缩进调整,如下:
上述脚本中%py-exec过程函数,其实是Fluent提供的Scheme执行Python代码的入口,对应Python3.7.3版本,比如说执行Python代码打印Hello World!本质上FM工作流程界面基于Qt WebEngine开发,网格划分API部分基于底层C++代码封装了Python的接口,(对应FMPyExtensionModule.pyd文件)。目前Fluent尚未提供Python脚本执行的相关API和直接入口,希望在之后的版本能逐渐去支持,毕竟相比Scheme来说,Python更方便上手入门。脚本参数化:录制完的脚本需要对其进行参数化,我们可以在脚本开头定义网格参数,然后通过Scheme中format过程函数对脚本进行格式化替换,语法如下:
如下所示,通过define定义了cad-file、drum-size、boi-size、min-size、max-size参数,通过format替换输入的网格控制参数。
完成变量定义和参数化后,FM工作流划分的脚本开发就结束了;如果需要批处理调用时,需要为脚本添加网格输出代码。
开发脚本适用于边界和主体命名都相同的几何模型,将脚本代码复制到Console控制台,或者通过File→read→journal…读取脚本文件(*.jou),可以自动化重复FM网格划分工作流程。后记:FM工作流提供了快速网格自动化的方法,但同时也存在局限性,部分如下:- 工作流脚本不支持Fluent中的Batch模式,只能以Hidden模式批处理调用。
- 只适用于边界和主体命名完全一致的几何,通用性差;例如混合器新增一个入口后,就无法重用上述脚本。
为了解决上述局限性,就需要使用基于传统结构树的划分流程,使用预置的TUI命令和Scheme脚本去实现;这样配合SCDM脚本建模,使用Fluent Meshing可以开发通用性强、功能强的网格划分脚本。文件案例获取方式:微信后台回复关键字“FM脚本”即可获得几何模型和脚本文件。以上就是本期的所有内容,朋友快下载文件案例练习吧;在后续的文章更新中,小田再给大家分享更多关于Fluent Meshing中Scheme自动化脚本开发的知识。