关于Python_fluent
@[toc]
简介
简介 本文先引出了关于 GUI、CLI、TUI 的相关区别;其次介绍了 fluent 中几个用户容易混淆的脚本工具; 接着从功能、实例的角度详细介绍Python_fluent;最后出了实际操作的项目。
🎈如果读者想实际操作本项目,请直接第五章的开源项目
🎈本文收罗网上大量资料,每章节的最后部分列出了具体的资料来源,如果想详细阅读,点击链接即可
一、GUI、CLI、TUI
1.1 GUI-图形用户界面
(Graphical User Interface)
GUI 应用程序(或图形应用程序)基本上是指任何可以与你的鼠标、触摸板或触摸屏交互的东西。有了图标和其他视觉概念,你可以使用鼠标指针来访问功能。GUI 使普通用户的计算机使用变得更加容易,否则它将仍然是一个极客专用区。
1.2 CLI - 命令行界面
(Command Line Interface)
CLI 基本上是一个接受输入来执行某种功能的命令行程序。基本上,任何可以在终端中通过命令使用的应用程序都属于这一类。早期的电脑与操作系统交互没有鼠标,你必须使用命令与机器互动。比如Windows系统中的WindowPowerShell就是其中的一种。

现在的 CLI还有用吗?当然有。命令总是有它的好处,特别是当你处理操作系统的核心功能和配置时,比如设置防火墙、管理网络甚至 包管理 。你可能会有一个基于 GUI的应用程序来完成同样的任务,但命令可以让你更精细地访问这些功能。在一些情况下,你会发现 GUI应用程序也会用命令(在它们的代码中使用)与操作系统交互。许多流行的GUI 应用程序往往是基于 CLI工具的。以 Handbrake为例。这是一个流行的开源媒体转换器,它底层使用的是 FFMPEG命令行 工具。很明显,使用命令行工具没有图形工具那么简单。但是缺能够完成我们GUI中无法完成的工作,或者说更精细地完成GUI的工作。
1.3 TUI - 终端用户界面
(Text-based User Interface)
这是三者中最不常见的名词。TUI 基本上部分是GUI,部分是 CLI。你已经知道,早期的计算机使用 CLI。在实际的GUI 出现之前,基于文本的用户界面在终端中提供了一种非常基本的图形交互。你会有更多的视觉效果,也可以使用鼠标和键盘与应用程序进行交互TUI 是基于文本的用户界面或终端用户界面的缩写。“基于文本”这个说法主要是因为你在屏幕上有一堆文本,而“终端用户界面”的说法是因为它们只在终端中使用。
1.3.1 比较
与GUI相比,TUI对系统资源要求更低,对相关软件依赖少,对终端的要求更低,程序体积较小,更加稳定。
与CLI相比,TUI交互更加灵活,信息展示方式更符合人类直观感受,操作较为简单,学习曲线较平缓 。
1.3.2 Fluent中的TUI
Fluent除了提供GUI界面操作方式外,还同时包含了一套命令操作方式,该方式成为TUI。
Fluent文本菜单系统为软件的底层操作过程提供了一个具有层次性的接口:
- 用户可以使用任何基于文本的工具对操作命令进行处理:所有的命令输入可以保存在文本文件中,可以利用文本编辑器对其进行修改,可以利用
Fluent读入后执行 - 文本菜单系统与
Scheme扩展语言集成紧密,因此可以轻松地对其进行编程,以提供复杂的控制和定制功能(如Scheme界面定制或ACT功能定制)。
【注】Fluent控制台包含有命令自动完成特性。用户在命令窗口中输入命令时可以实现智能提示。命令智能提示功能可以在Preferences中开启或关闭。
TUI菜单系统结构类似于LINUX操作系统的目录树结构。当启动Fluent后,用户处于”根“节点,命令菜单提示符为一个插入符号(>)。若想要列出当前命令节点下的所有子命令,可以通过键入回车键(Enter键)来实现。Fluent Meshing模式与Solution模式的命令存在差异。
在TUI窗口中可以运行Scheme语句,如:
> (define a 1)
a
> (+ a 2 3 4)
10
1.3.3 Fulent 中 TUI命令简写
– ls 列出在工作目录下的文件
– rcd 读入case和data文件
– wcd 写入case和data文件
– rc/wc 读入/写入case文件
– rd/wd读入/写入data文件
– it 迭代
参考资料:
二、Journal、Scheme、UDF、PyFluent
本质上 UDF工具和其余3个工具是有差别的,其余3个工具都是为了仿真过程脚本化。当我们需要重复 很多相同的操作,但是我们不想使用GUI界面去手动重复配置cas、mesh,这时候我们就可以使用我们所 熟知的脚本工具: Journal、Scheme、PyFluent ,通过脚本工具我们就可以使得fluent软件自动地计算, 自动地后处理。
2.1 UDF
丰富求解器的内在功能,当我们需要增加新的物理模型的时候,就可以使用UDF增加我们需要的模 型,也就是说UDF可以改变核心求解器的物理功能。
2.2 Journal
在fluent的左下角的控制台,我们就可以使用Journal 来实现对各类模型的脚本处理。但是 Journal的过程过于单一,缺乏高级语言的特征。
2.3 Scheme
本身是一种高级语言,但是难,资料少,生态弱。可以联合Journal 写混合脚本。
2.4 PyFluent
生态强,python生态所具备的任何东西都可以使用,给予用户强大的创造力。可以实现脚本化,但是 实际比脚本化做的多得多。
2.5 综合比较

参考资料:
PyFluent——CFD仿真助推器_哔哩哔哩_bilibili
三、Python+Ansys Fluent=PyFluent
Fluent提供了很多种不同的控制方式,不过最常见的无异于GUI和TUI两种。GUI适合于新手操作及单case使用,TUI适合参数化及批量计算。按理说应当能够满足需求了。我们可以通过很多TUI的命令去实现很多操作,读者可以根据1.3.3中的TUI相关命令使用fulent软件亲自测试一下各类命令。
3.1 简介
Fluent 2022R2版本推出了pyFluent,是Fluent推出的新玩意儿。
使用PyFluent(通过Python对Fluent的开源访问)实现流程自动化、构建自定义工作流程、制作自定义解决方案等。
实际上是提供了一个利用python访问Fluent进程的工具,利用此工具可以实现利用python控制Fluent,可以实现在不启用Fluent GUI的情况下,完成参数设置、计算求解以及或数据结果输出的功能。
相比于Fluent提供的TUI推出的PyFluent具备更强劲的功能。
3.2 TUI 和 PyFluent 比较
首先PyFluent使用的脚本语言是Python,且可以通过远程访问的方式连接Fluent内核并对其进行操控,通过采用这种C-S结构访问Fluent,事实上已经将脚本编写与Fluent独立开来,灵活性上要远胜TUI,更远胜于GUI。
另外,Fluent TUI虽然写的也是脚本,不过并不具备完善的程序结构(比如常见的逻辑分支、循环等),当然TUI可以借用Scheme脚本来实现逻辑分支与循环处理,但无疑会使得脚本变得更加复杂及难懂。利用PyFluent就完全不用考虑这个问题了,其使用完整的Python作为程序控制语言,而Python是完善的计算机语言,其表达能力远胜TUI。
PyFluent TUI命令代表了一种全面自动化工作流的方法:Fluent TUI(其本身是一个全面的自动化界面)中的所有内容都在PyFluent中公开。PyFluent TUI命令是Fluent控制台中使用的那些命令的Pythonic版本。
Python目前是最为火热的计算机语言,其拥有大量的可供利用的功能包和模块,能够实现非常复杂的科学计算功能(如常用的numPy、scipy、sympy等),PyFluent既然基于Python,自然也是可以使用这些模块的。比如当前比较火热的人工智能机器学习什么的,也可以混着Fluent一起用了。看起来能耍的地方还挺多。当然最实用的还是利用PyFluent进行仿真参数化计算,简单方便且无需借助外部工具。
另外,PyFluent完全兼容TUI,因此如果对TUI比较熟悉的话,其实很容易将其转换为PyFluent代码,只要稍微有点儿Python基础,PyFluent的学习成本几乎为零。TUI命令的参数只是那些在与Fluent控制台直接交互时传递的参数,但PyFluent采用Pythonic风格。用户可以很容易地将TUI命令转换为PyFluent代码。
3.2.1 实例1
例如在Solution模式中,下面的TUI命令可以用来设置速度入口边界:
/define/boundary_conditions/set/velocity-inlet
上述命令的调用会在控制台中引发一系列输入提示,如果用户依次响应每个提示:
velocity-inlet-5
()
temperature
no
293.15
quit
其效果与直接在TUI命令中指定参数的方式相同:
/define/boundary-conditions/set/velocity-inlet velocity-inlet-5 () temperature no 293.15 quit
交互式TUI是构建包含完整参数序列的TUI调用的可靠方法。有了完整的TUI,下一步是将其转换为Python调用:
from ansys.fluent.core import launch_fluent
solver_session = launch_fluent()
tui = solver_session.solver.tui
tui.define.boundary_conditions.set.velocity_inlet(
"velocity-inlet-5", [], "temperature", "no", 293.15, "quit"
)
3.2.2 实例2
宁外一个TUI代码:
/define/units pressure "Pa"
可以将其改成python代码:
tui.define.units("pressure",'"Pa"')
其中字符串"Pa"被包裹在单引号中,以保留TUI参数周围的双引号。
注意上述示例中隐含的以下规则:
TUI路径中元素之间的每个斜杠分隔符转换为Python点符号
路径元素中的某些字符要么被删除,要么被替换,因为它们在Python名称中是非法的:
-
- 路径元素中的每个连字符都转换为下划线
- 路径元素中的每个问号都将被删除
关于字符串的一些规则:
-
- 必须在Python中引用字符串类型参数
- 注意需要引用目标Fluent TUI参数的特殊情况(例如上面的“Pa”)。必须通过在附加的单引号中包裹Python字符串来保留该引号
- 保留字符串参数的内容
3.3 PyFluent功能
一种脚本,但不止于传统的脚本。3.3.1 一般的脚本化
注意树状列表是指 fluent软件左侧的列表。相比TUI的API,root的API更加清晰,且可读性高。


参考资料:
找到一篇关于如何使用两种API的具体教程: 【Fluent】人生苦短,我用PyFluent-V2 (qq.com)### 3.3.2 场数据的获取
TUI也可以实现此功能,但是使用pyfluent的代码更加清晰,可维护性高。
### 3.3.3 参数化和Python的后处理
### 3.3.4 其他功能
## 3.4 PyFluent特性
PyFluent是
PyAnsys生态系统的一部分,可让您在您选择的
Python环境中与其他
PyAnys库和外部
Python库结合使用
Fluent。
PyFluent 实现了客户端-服务器体系结构。它使用谷歌远程过程调用或
gRPC接口来启动或连接正在运行的
Fluent进程作为服务器。但是,您只需要与
Python 接口进行交互。
PyFluent以编程方式创建、交互和控制
Fluent会话,以创建您自己的自定义工作区。此外,您还可以使用
PyFluent通过高度可配置的自定义脚本来提高工作效率。
PyFluent的主要模块
ansys-fluent-core提供以下功能:
- 能够以串行或并行方式启动Fluent求解器,并使用
launching Fluent模块连接到已运行的Fluent会话
- 能够编写
Fluent Meshing功能脚本
- 能够使用
Fluent的所有
TUI命令编写脚本
- 能够异步运行多个
Fluent会话
- 能够使用标准
Python库(如
matplotlib)以
numpy arryas的形式检索
Fluent的物理场数据,以实现自定义后处理
- 能够在
Fluent的求解器事件上注册回调函数,例如可以在读取
case或
data文件时,或者
Fluent求解器完成迭代时实现一些特殊的功能
- 能够使用
MonitorsManager模块检索求解器监视器,例如残差
参考资料:
pyFluent|一点使用体验
ANSYS二次开发:Python解析ansys fluent结果文件
# 四、实践PyFluent
当您将
Python 几乎无限的可能性和灵活性与
Fluent市场领先的准确性相结合时,您就开启了一种执行流体动力学模拟的新方法。借助
PyFluent,开发人员现在可以访问
Fluent功能的全部广度和深度,从使用
Python脚本的预处理到后处理。
## 4.1 安装环境
后处理会用到
numpy和
matplotlib,怕麻烦的话可以先安装
anaconda(网址
https://www.anaconda.com/)。然后在开始菜单中打开`Anaconda Prompt
,在其中输入命令进行安装。若为Liunx
系统,则确保系统中安装了pip
或pip3
。 - 利用下面的命令安装pyfluent: ```bash pip install ansys-fluent-core ``` 下载速度慢的话就多试几次。如果连接github速度比较快的话,也可以尝试使用下面的命令进行安装: ``` pip install git+https://github.com/pyansys/pyfluent.git ``` 可以在这里找到一些简单的使用信息。https://pypi.org/project/ansys-fluent-core/ 为方便使用,可以配套安装Fluent参数化模块及后处理模块。利用下面的命令安装: ``` pip install ansys-fluent-parametric pip install ansys-fluent-visualization ``` 安装后处理模块会涉及到pySide6
模块及vtk
模块的安装,这两货的个头都很大,建议切换到国内镜像源,否则速度慢吞吞会把人急死。 **参考资料:** [Getting started — PyFluent-Parametric (pyansys.com)](https://fluentparametric.docs.pyansys.com/getting_started/index.html) ## 4.2 编译 pyfluent资料比较少,最好的资料无异于源代码自带的文档。 - 从网站https://github.com/pyansys/pyfluent下载所有的源代码,放到一个英文路径下。 - 由于文档编译需要使用到sphinx
,所以需要提前安装。同时在编译的过程中还涉及到了一堆的外置模块,也需要预先安装。这里在经过若干次报错之后,搞清楚的需要安装模块如下所示。可以通过下面的命令进行安装。 ``` pip install Sphinx pip install sphinx-gallery pip install jupyter_sphinx pip install sphinx-notfound-page pip install ansys_sphinx_theme pip install sphinx-autodoc-typehints pip install sphinx-copybutton pip install sphinxemoji ``` - 启动anaconda prompt,利用cd
命令进入到pyfluent的doc
路径下,运行命令 - ``` make html ``` 等其编译完毕后(编译时间很长,编译中还运行了几个算例,真是牛逼),即可在doc文件夹的_build/html
子文件夹下找到index.html文件进行打开。 这里除了可以编译成html格式外,还能够输出epub格式。其实sphinx本身是可以输出pdf格式的,没搞懂为什么不让输出pdf。 ## 4.3 使用 目前这方面的资料比较少,还没有仔细了解,看了看模块的一些源代码,发现好多函数都是tui命令的封装。待有时间把文档研究一波再聊。 可以使用下面的简单代码测试是否安装成功。 - 进入python,输入下面的代码 ``` import ansys.fluent.core as pyfluent session = pyfluent.launch_fluent() session.check_health() ``` 若第一行代码不报错则表示安装成功。 如下图所示,输出为SERVING
则表示Fluent已经启动成功,后面就可以用session`为所欲为了
参考资料:
pyFluent:利用python控制Fluent
csdn博客 ANSYS二次开发:Python解析ansys fluent结果文件
# 五、实际项目
通过一个具体的案例来实践一下PyFluent带来的方便。
参考资料:
GitHub - leigq/pyfluent: 基于pyfluent的全流程应用案例(以2D naca0012为例)
六、如何编写Pyfluent脚本
找到一篇关于如何使用两种API的具体教程:
流体大本营使用API教程: 【Fluent】人生苦短,我用PyFluent-V2 (qq.com)
官方文档:Parametric study workflow — PyFluent-Parametric (pyansys.com)
七、fluent_2022_R2 资源
参考资料: