Fluent具备非常强大的日志脚本功能,可以自动化任何仿真设置和操作。本篇文章会介绍如何生成可重用脚本的方法,以及其使用的最佳实践,让你快速入门和上手Fluent脚本自动化开发。
1、Fluent脚本概述Fluent的GUI界面具有广泛的功能和强大的工具,我们可以实现:
同样,采用Fluent中的脚本(Scripting)或日志(Journaling)可捕获和自动化包含上述任何方面的复杂仿真设置和操作。而且一些设置只能通过TUI激活,如附加模块、FMG初始化等。
2、Fluent脚本基础Fluent提供文本用户命令(TUI命令)和界面用户命令(GUI命令),两者都是基于Scheme语言编写。对于大多数Fluent的GUI操作,都有一个相关的TUI命令对应,而有很多其他的操作只能通过TUI命令完成。下面我们来详细介绍下TUI命令。2.1 TUI命令输入在界面右下角处的控制台(Consle)窗口,按<Enter>键查看当前选项,然后通过输入完整的命令或者子菜单命令。输入”q”字符然后<Enter>可以返回TUI树上一级,如下所示。
2.2 TUI日志录制Fluent支持TUI日志文件的录制,便于自动和批量重复仿真工作,具体操作如下。①界面点击File>Write>Start Journal(或输入TUI命令:file start-journal ),设置日志文件存放位置和名称,扩展名为*.jou。②通过GUI界面或者是输入TUI命令来进行仿真流程设置,Fluent后台会自动记录GUI操作和输入的TUI命令。③录制完成后,界面点击File>Write>Stop Journal(或输入TUI命令:file stop-journal ),停止日志文件录制。
录制文件内容会取决于是通过GUI操作还是TUI命令来完成设置。下面代码给出了采用两种不同方式进行网格读取操作记录的命令文本。
我们对比发现:显然,通过输入TUI命令录制的日志文件更容易阅读,也更简洁;同时,TUI命令不是上下文敏感的,这是GUI操作生成日志的一个缺点。★注:这里的上下文敏感指的是,如果你在点击录制之前打开面板,然后修改面板,操作将被记录。如果在没有打开该面板的情况下重播日志,则日志可能无法运行,因为修改该面板的命令毫无意义。所以推荐大家采用输入TUI命令方式录制脚本。2.3 TUI命令帮助Fluent帮助文档中有一个文本命令列表,用于帮助设置正确的TUI命令。微信后台回复“TUI命令”,即可获取18.0~2019R3的TUI帮助文件。
GIF
2.4自动补全2019R1版本后支持TUI命令的自动补全,可以通过File→Preference打开设置窗口,勾选上Console auto-completer选项,然后确定后即可。通过自动补全明显提高开发效率。
GIF
2.5通配符
为了在Fluent中创建通用脚本,我们可以灵活地使用通配符进行更复杂的操作。通配符允许根据前缀、中缀或后缀选择多个边界或单元区域,如fluid*、*fluid*或*fluid。
使用通配符对于编写通用脚本非常有用,我们可以根据命名约定设置预处理或后处理边界。
逗号将接受TUI参数的默认值,并且空括号()可用于结束列表输入。
下面我们来看一个案例:如报告所有前缀为car*的墙壁区域x方向的力,输入TUI命令的过程及参数如下:
对应的完整TUI命令为:
通过GUI操作:Results→Reports→Forces,可以得到与完整TUI命令输入控制台一样结果。
可以使用2.2节中方法:File>Write>Start Journal,然后输入TUI命令来记录,任何错误稍后都可以通过编辑记录的TUI命令轻松地修改和删除掉。
2.6 Batch模式
要在Windows系统的以后台模式运行ANSYS Fluent,可以使用以下命令:
上述命令中:
在后台运行Fluent时候,最好通过Transcript文件记录脚本运行状态,方便我们后续监控后台运行状态和捕获错误。日志文件必须在开头包含以下TUI命令,才能将脚本执行过程写入到记录文件:
; start transcript file
/file/start-transcript outputfile.trn
3、Scheme脚本编写Fluent中的GUI和TUI都是基于Scheme语言编写的,Scheme命令可以与日志记录的TUI命令混合使用,如下有一些非常简单而有效的方法可以使用Scheme命令来大大简化日志文件,并让脚本更加智能化。3.1定义参数如定义一个变量“iteration-number”值为100,对应的Scheme命令为:
(define iteration-number 100)
可以通过如下命令检查定义的Scheme变量值,此案例中会返回100。
(dislpay iteration-number)
一旦定义了Scheme变量,就可以在TUI命令中使用它,如下:
/solve/iterate iteration-number
如果你想设置一些变量为其他变量的函数,可以通过以下命令定义:
(define mylength 1)
(define double_mylength (* 2 mylength))
(define half_mylength (/ mylength 2))
(define theta 30)
(define x_vector (* 1 (cos theta)))
(define y_vector (* 1 (sin theta)))
Scheme是一个完整的脚本语言,有很多在线资源,如下:官网:https://schemers.org/MIT Scheme:http://web.mit.edu/scheme_v9.2/doc/mit-scheme-ref/Chez Scheme:https://www.scheme.com/tspl4/3.2 TUI命令调用
可以将TUI命令嵌入到Scheme脚本中,通过执行Scheme命令来调用TUI命令,示例如下:;(ti-menu-load-string "put-TUI-command-here")
(ti-menu-load-string "/mesh/check")3.3数据统计功能
(display (format #f "~a" (format-time (local-time (time)) "\n%H:%M:%S %d/%m/%Y")))
(benchmark '(ti-menu-load-string "/objects/create-new-mesh-object remesh (*) indiv"))
(proc-stats)
3.4递归和迭代
Scheme提供递归和迭代的函数方法,可以快速批量执行重复性任务。对于Fluent中涉及批量重复性的操作过程,可以采用递归和迭代来简化TUI日志脚本,让脚本更加智能化,常用的函数方法为do、for-each、let-loop,使用方法如下。
(do ((var init update)....)
(test result...)
(loop body)
(........))
(for-each
<procedure>
list1
list2 ...)
(let loop ((variable init) ...)
expression
expression ...)
下面我们给出上述方法的具体使用示例:批量创建x坐标为0.1、0.2、0.3、0.4的等值面,脚本代码如下,大家可以根据自己需要更改相应参数使用,可以去公众号获取资料。
4、最佳实践文章的最后,总结了Fluent脚本开发过程中的最佳实践,现分享给大家。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删