作者 | 小田老师 仿真秀年度优秀讲师
首发 | 仿真秀App
Ansys Fluent软件作为通用的流体仿真软件,功能模型虽然多而全,但是缺乏相应的行业专业性。同时仿真分析具有一定的技术门槛,既需要技术人员具备行业基础,也需要积累相关仿真经验,对软件操作要有较高的熟练度,所以对企业技术人员来说,学习周期长入门难度大。定制化的二次开发可以将技术、行业经验与仿真流程封装成仿真模板工具,用户仅需输入工况参数,后台自动执行仿真计算,便得到需要的仿真结果;既解决了行业性问题,也降低了仿真门槛,同时也是数字化资产的沉淀。Ansys IcePak软件大家都有听过吧,它是针对电子行业的散热分析软件,本身就是基于Fluent求解器进行二次开发,融合了电子行业规范、热分析流程等形成的专业工具。
Ansys IcePak基于Fluent求解器开发二、二次开发概述
1、二次开发方向
(1)添加新功能通过C语言进行UDF(用户自定义函数)开发,添加自定义物理模型、边界条件和材料属性等,后续可以通过ACT或者Scheme界面开发进行封装。
(2)仿真模板开发对成熟的仿真流程进行自动化脚本开发,然后通过界面开发及软件封装技术,将外部知识、其他仿真工具、仿真流程和标准规范进行集成,形成定制化仿真工具。
通常来说,Fluent中物理模型能满足绝大多数场景需要,所以实际开发多以仿真模板开发为主。
2、开发技术路线开发过程可以分为项目调研、软件设计、软件开发和软件测试四个阶段;其中最为核心的就是脚本开发、界面开发和软件封装的技术。
三、脚本开发技术
Fluent提供文本用户命令(TUI命令)和界面用户命令(GUI命令),两者都是基于Scheme语言编写。对于大多数Fluent的GUI操作,都有一个相关的TUI命令对应,而有很多其他的操作只能通过TUI命令完成。下面我们来详细介绍下TUI命令。
1、TUI命令输入在界面右下角处的控制台(Consle)窗口,按<Enter>键查看当前选项,然后通过输入完整的命令或者子菜单命令。输入”q”字符然后<Enter>可以返回TUI树上一级,如下所示。
2、TUI日志录制
Fluent支持TUI日志文件的录制,便于自动和批量重复仿真工作,具体操作如下:
录制文件内容会取决于我们是通过GUI操作还是TUI命令来完成。下面例子显示了不同方式进行网格读取操作记录的命令文本。显然,通过输入TUI命令录制的日志文件更容易阅读,也更简洁;同时,TUI命令不是上下文敏感的,这是GUI操作生成日志的一个缺点。
这里的上下文敏感指的是,如果你在点击记录之前打开面板,然后修改面板,操作将被记录。如果在没有打开该面板的情况下重播日志,则日志可能无法运行,因为修改该面板的命令毫无意义。所以推荐大家采用输入TUI命令方式录制脚本。
3、TUI命令帮助Fluent帮助文档中有一个文本命令列表,用于帮助设置正确的TUI命令。
4、自动补全
2019R1版本后支持TUI命令的自动补全,可以通过File→Preference打开设置窗口,勾选上Console auto-completer选项,然后确定后即可。通过自动补全明显提高开发效率。
5、通配符
为了在Fluent中创建通用脚本,我们可以灵活地使用通配符进行更复杂的操作。通配符允许根据前缀、中缀或后缀选择多个边界或单元区域,如Fluid*、* Fluid*或*Fluid。
使用通配符对于编写通用脚本非常有用,我们可以根据命名约定设置预处理或后处理边界;逗号“,”符号将接受TUI参数的默认值,并且“()”可用于结束列表输入。
我们来看一个案例:如报告所有前缀为car*的墙壁区域x方向的力,输入TUI命令的过程及参数如下:
6、Scheme脚本
只要了解TUI命令的结构,编写TUI日志是很简单的;但是,TUI日志具备明显的缺陷,就是TUI本质是基于Scheme封装的文本命令,是无法进行流程控制,而且代码复用性差。Scheme是一个完整的语言,具备数据结构、流程控制、函数编程的功能,通过将Scheme脚本与TUI命名相结合,可以让脚本更加智能化、复用性更好。(1)Scheme数据类型
其中最常用的是Boolean、Number、Strings和lists类型,不同类型有对应的函数方法,可以参见《MIT/GNU Scheme Reference Manual》,关注仿真秀公众号,后台回复“Fluent Scheme”获取;
(2)参数定义Scheme为动态数据类型,通过define函数声明和定义变量,通过set!函数可更改变量值。
7、Scheme与TUI
Fluent中提供ti-menu-load-string函数来调用TUI命令,这样就能将TUI命令嵌入到Scheme脚本中,去进行流程控制,方式如下:
8、format函数
在结合Scheme和TUI日志开发脚本代码时,format是使用最多的函数命令,通过格式化字符串转换,很方便去替换TUI文本中的参数值,已达到对TUI日志进行封装的效果。
我们可以使用format格式化替换以下字符:
9、脚本函数封装
使用Scheme脚本为我们提供函数封装的能力,可以将执行的一系列命令放入函数中,对外使用只需暴露函数的签名,更好得去梳理代码的结构。例如,我们使用如下命令,设置入口边界inlet的速度1.0m/s,温度为290K;
可以使用Scheme脚本对上面TUI命令进行函数封装,并对边界名称、速度大小和温度值进行参数提取,如下:
函数封装到了好处就是提升复用性,比如模型有多个入口边界,但是入口速度和温度不一样,都可以通过函数去调用设置,如入口边界inlet-hot速度为0.8m/s,温度为320k,直接调用函数命令(set-inlet-bc “inlet-hot” 0.8 320)去设置,是不是非常方便呢。
10、Fluent中Scheme API
Fluent脚本环境中封装了非常多Scheme方法,通过以下方法可以将the-environment环境中的函数名写入到fluent-env.txt文件中。
将写入文本进行换行处理,可以得到以下内容:记录着Fluent环境中预定义的Scheme函数名,但是并未给出函数调用的参数和类型,官方也是没有开发文档对其进行解释;这里说明下Scheme脚本Ansys官方是不提供任何技术支持的。
因为Scheme是底层脚本接口,是面向开发者而不是面向用户的,TUI日志可以满足用户的大多数需要,但是预定义Scheme API却能为开发者提供极大便利性和更强大功能。这里有一个比较笨的方法分享给大家,可以在Console中去尝试获取参数:可以先无参数调用方法,如果参数错误的都会有相应提示,然后根据提示补充相应参数再尝试。
在实施开发项目中,整理了部分Fluent中预定义Scheme API的说明和使用方法,计划在后续的文章或者课程中给大家分享和讲解。
四、界面开发技术
五、集成封装技术
(复制以下链接到浏览器打开,阅读完整全文)
https://www.fangzhenxiu.com/post/5048607/?inviteCode=z3cyn52KaDHYS
相关阅读推荐:
《Fluent 2022基础入门中文版教程105讲》(免费)
https://www.fangzhenxiu.com/course/3274911/?uri=500_bhL99pcM4VM