首页/文章/ 详情

重用脚本方法,快速入门和上手Fluent脚本自动化开发

7月前浏览14032

本文摘要(由AI生成):

本文介绍了Fluent脚本开发中的几种重要方法,包括使用Benchmark命令记录命令执行时间、查看当前RAM使用情况、递归和迭代函数方法以及最佳实践。通过使用这些方法,可以简化TUI日志脚本,提高脚本的智能化程度,并更好地管理和调试脚本执行过程。此外,文章还提醒读者注意TUI命令的版本兼容性和边界条件输入参数的变化,并介绍了未来ANSYS产品脚本计划的发展方向。最后,文章推荐了一些往期内容供读者参考。


Fluent具备非常强大的日志脚本功能,可以自动化任何仿真设置和操作。本篇文章会介绍如何生成可重用脚本的方法,以及其使用的最佳实践,让你快速入门和上手Fluent脚本自动化开发。

1、Fluent脚本概述

Fluent的GUI界面具有广泛的功能和强大的工具,我们可以实现:
  • 导入CAD模型,完成复杂的网格划分;
  • 定义求解器、边界条件等参数;
  • 解决CFD和多物理场仿真问题;
  • 高级的定量和定性后处理操作;
  • 设计优化和网格变形;
  • 和更多操作…..
同样,采用Fluent中的脚本(Scripting)或日志(Journaling)可捕获自动化包含上述任何方面的复杂仿真设置和操作。而且一些设置只能通过TUI激活,如附加模块、FMG初始化等。

2、Fluent脚本基础

Fluent提供文本用户命令(TUI命令)和界面用户命令(GUI命令),两者都是基于Scheme语言编写。对于大多数Fluent的GUI操作,都有一个相关的TUI命令对应,而有很多其他的操作只能通过TUI命令完成。下面我们来详细介绍下TUI命令。
2.1 TUI命令输入
在界面右下角处的控制台(Consle)窗口,按<Enter>键查看当前选项,然后通过输入完整的命令或者子菜单命令。输入”q”字符然后<Enter>可以返回TUI树上一级,如下所示。


tuiInputDemo.gif

2.2 TUI日志录制
Fluent支持TUI日志文件的录制,便于自动和批量重复仿真工作,具体操作如下。
①界面点击File > Write > Start Journal(或输入TUI命令:file start-journal ),设置日志文件存放位置和名称,扩展名为*.jou。
②通过GUI界面或者是输入TUI命令来进行仿真流程设置,Fluent后台会自动记录GUI操作和输入的TUI命令。
③录制完成后,界面点击 File WriteStop Journal(或输入TUI命令:file stop-journal ),停止日志文件录制。

录制文件内容会取决于是通过GUI操作还是TUI命令来完成设置。下面代码给出了采用两种不同方式进行网格读取操作记录的命令文本。

1.png

我们对比发现:显然,通过输入TUI命令录制的日志文件更容易阅读,也更简洁;同时,TUI命令不是上下文敏感的,这是GUI操作生成日志的一个缺点
注:这里的上下文敏感指的是,如果你在点击录制之前打开面板,然后修改面板,操作将被记录。如果在没有打开该面板的情况下重播日志,则日志可能无法运行,因为修改该面板的命令毫无意义。所以推荐大家采用输入TUI命令方式录制脚本
2.3 TUI命令帮助
Fluent帮助文档中有一个文本命令列表,用于帮助设置正确的TUI命令。

01.png


2.4 
自动补全
2019R1版本后支持TUI命令的自动补全,可以通过FilePreference打开设置窗口,勾选上Console auto-completer选项,然后确定后即可。通过自动补全明显提高开发效率。


autoFluent.gif

2.5 通配符

为了在Fluent中创建通用脚本,我们可以灵活地使用通配符进行更复杂的操作。通配符允许根据前缀、中缀或后缀选择多个边界或单元区域,如fluid*、*fluid*或*fluid。

  • * :表示会选择所有可能的实体;(*) :表示选择所有实体并结束列表;

  • (*fluid*):表示将选择所有包含“fluid”字符串的实体并结束列表。

使用通配符对于编写通用脚本非常有用,我们可以根据命名约定设置预处理或后处理边界。

逗号将接受TUI参数的默认值,并且空括号()可用于结束列表输入

下面我们来看一个案例:如报告所有前缀为car*的墙壁区域x方向的力,输入TUI命令的过程及参数如下:

02.png

对应完整TUI命令为

2.png

通过GUI操作:ResultsReportsForces,可以得到与完整TUI命令输入控制台一样结果。

03.png

可以使用2.2节中方法:File > Write > Start Journal,然后输入TUI命令来记录,任何错误稍后都可以通过编辑记录的TUI命令轻松地修改和删除掉。

2.6 Batch模式

要在Windows系统的以后台模式运行ANSYS Fluent,可以使用以下命令:

3.png

上述命令中:

  • fluent 是以交互方式运行的命令,需将<ansys_dir>\fluent\ntbin\win64添加到系统环境中。

  • 3ddp 表示3D双精度,其他选项为3d、2d和2ddp。

  • -tx 表示求解器以x核并行。

  • -meshing 表示启动到Fluent Meshing模式。

  • -tmy 表示网格划分以y核并行。

  • -g 表示要在任务栏中最小化地运行程序。

  • -i journal 表示读取指定的日志文件。

  • -wait 表示其他命令必须等待ANSYS Fluent完成后才能运行。

  • -hidden 表示运行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 Schemehttp://web.mit.edu/scheme_v9.2/doc/mit-scheme-ref/
Chez Schemehttps://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 数据统计功能
  • TUI窗口显示时间(可记录在Transcript文件中);

(display (format #f "~a" (format-time (local-time (time)) "\n%H:%M:%S %d/%m/%Y")))

  • Benchmark命令可用于包装任何TUI命令,并给出所花费的时间日志;

(benchmark '(ti-menu-load-string "/objects/create-new-mesh-object remesh (*) indiv"))

  • 当前RAM使用情况;

(proc-stats)

3.4 递归和迭代

Scheme提供递归和迭代的函数方法,可以快速批量执行重复性任务。对于Fluent中涉及批量重复性的操作过程,可以采用递归和迭代来简化TUI日志脚本,让脚本更加智能化,常用的函数方法为dofor-eachlet-loop,使用方法如下。

  • do循环

(do ((var init update)....) 

    (test result...) 

    (loop body)

    (........))

  • for-each循环

(for-each 

    <procedure> 

     list1 

     list2 ...)

  • let-loop递归

(let loop ((variable init) ...)

  expression

  expression ...)

下面我们给出上述方法的具体使用示例:批量创建x坐标为0.1、0.2、0.3、0.4的等值面,脚本代码如下,大家可以根据自己需要更改相应参数使用,可以去公 众号获取资料。

4.png

4、最佳实践


文章的最后,总结了Fluent脚本开发过程中的最佳实践,现分享给大家。


  • 使用NotePad++编辑记录的TUI日志文件,删除与GUI相关命令,并设置语言为Scheme,方便我们利用其语法高亮功能,编写Scheme命令扩展日志脚本文件,让日志脚本更加智能化。
  • 批处理模式下,推荐使用Transcript文件功能记录脚本执行过程,并寻找错误;可在文件中搜索“error”或“invalid”关键词,去定位那些执行错误的TUI命令。
  • 在交互模式下运行日志脚本文件,错误以红色文本的形式出现在命令窗口,更加容易识别。
  • 执行出现问题时,可以将日志脚本文件中的命令一行一行地复 制粘贴到控制台窗口中,然后按回车查看是哪一行出现问题。
  • 在行数较多的长日志中,如果特定行执行失败,复 制日志并删除问题行和之后的所有内容,然后运行短日志到问题行并手动键入该行以检查参数错误。
  • 请记住,TUI命令会随着版本变化而更改,Release Note中会列出相应更改。通过指定TUI命令版本(/file/set-tui-version “19.0”),可以获得更好的向前兼容性。
  • 请注意:边界条件的TUI命令输入参数经常会随着物理模型的不同而发生变化,所以当物理模型反生更改时,需要同时更新边界条件的TUI命令。
  • 最后,未来的ANSYS产品的脚本计划都是用IronPython实现,很期待Python一统ANSYS的一天


往期内容推荐
基于Python的Workbench开发指南+案例解析
Workbench开发指南:仿真流程集成
SCDM二次开发快速入门|应用+技巧
SCDM二次开发系列:创建命名组
Fluent代码&命令
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2019-11-22
最近编辑:7月前
小田老师
硕士 | 仿真工程师 欢迎关注ANSYS仿真与开发!
获赞 650粉丝 3787文章 62课程 4
点赞
收藏
作者推荐
未登录
3条评论
仿真秀0407062650
签名征集中
1年前
TUI命令
回复
仿真秀0704182205
签名征集中
3年前
TUI命令
回复
skinner
签名征集中
4年前
您好,老师,请问”**后台回复“TUI命令”,即可获取18.0~2019R3的TUI帮助文件“是指哪个**号?
回复 2条回复
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈