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

现在的 CLI 还有用吗?当然有。命令总是有它的好处,特别是当你处理操作系统的核心功能和配置时,比如设置防火墙、管理网络甚至 包管理 。你可能会有一个基于 GUI 的应用程序来完成同样的任务,但命令可以让你更精细地访问这些功能。在一些情况下,你会发现 GUI 应用程序也会用命令(在它们的代码中使用)与操作系统交互。许多流行的 GUI 应用程序往往是基于 CLI 工具的。以 Handbrake 为例。这是一个流行的开源媒体转换器,它底层使用的是 FFMPEG 命令行 工具。很明显,使用命令行工具没有图形工具那么简单。但是缺能够完成我们GUI中无法完成的工作,或者说更精细地完成GUI的工作。
(Text-based User Interface)
这是三者中最不常见的名词。TUI 基本上部分是 GUI,部分是 CLI。你已经知道,早期的计算机使用 CLI。在实际的 GUI 出现之前,基于文本的用户界面在终端中提供了一种非常基本的图形交互。你会有更多的视觉效果,也可以使用鼠标和键盘与应用程序进行交互TUI 是基于文本的用户界面或终端用户界面的缩写。“基于文本”这个说法主要是因为你在屏幕上有一堆文本,而“终端用户界面”的说法是因为它们只在终端中使用。
与GUI相比,TUI对系统资源要求更低,对相关软件依赖少,对终端的要求更低,程序体积较小,更加稳定。
与CLI相比,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
– ls 列出在工作目录下的文件
– rcd 读入case和data文件
– wcd 写入case和data文件
– rc/wc 读入/写入case文件
– rd/wd读入/写入data文件
– it 迭代
参考资料:
本质上 UDF 工具和其余3个工具是有差别的,其余3个工具都是为了仿真过程脚本化。当我们需要重复 很多相同的操作,但是我们不想使用GUI界面去手动重复配置cas、mesh,这时候我们就可以使用我们所 熟知的脚本工具: Journal、Scheme、PyFluent ,通过脚本工具我们就可以使得fluent软件自动地计算, 自动地后处理。
丰富求解器的内在功能,当我们需要增加新的物理模型的时候,就可以使用UDF增加我们需要的模 型,也就是说UDF可以改变核心求解器的物理功能。
在fluent的左下角的控制台,我们就可以使用 Journal 来实现对各类模型的脚本处理。但是 Journal 的过程过于单一,缺乏高级语言的特征。
本身是一种高级语言,但是难,资料少,生态弱。可以联合 Journal 写混合脚本。
生态强,python生态所具备的任何东西都可以使用,给予用户强大的创造力。可以实现脚本化,但是 实际比脚本化做的多得多。

参考资料:
PyFluent——CFD仿真助推器_哔哩哔哩_bilibili
Fluent提供了很多种不同的控制方式,不过最常见的无异于GUI和TUI两种。GUI适合于新手操作及单case使用,TUI适合参数化及批量计算。按理说应当能够满足需求了。我们可以通过很多TUI的命令去实现很多操作,读者可以根据1.3.3中的TUI相关命令使用fulent软件亲自测试一下各类命令。
Fluent 2022R2版本推出了pyFluent,是Fluent推出的新玩意儿。
使用PyFluent(通过Python对Fluent的开源访问)实现流程自动化、构建自定义工作流程、制作自定义解决方案等。
实际上是提供了一个利用python访问Fluent进程的工具,利用此工具可以实现利用python控制Fluent,可以实现在不启用Fluent GUI的情况下,完成参数设置、计算求解以及或数据结果输出的功能。
相比于Fluent提供的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代码。
例如在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"
)
宁外一个TUI代码:
/define/units pressure "Pa"
可以将其改成python代码:
tui.define.units("pressure",'"Pa"')
其中字符串"Pa"被包裹在单引号中,以保留TUI参数周围的双引号。
注意上述示例中隐含的以下规则:
一种脚本,但不止于传统的脚本。
注意树状列表是指 fluent软件左侧的列表。相比TUI的API,root的API更加清晰,且可读性高。


参考资料:
找到一篇关于如何使用两种API的具体教程:【Fluent】人生苦短,我用PyFluent-V2 (qq.com)
TUI也可以实现此功能,但是使用pyfluent的代码更加清晰,可维护性高。



PyFluent是PyAnsys生态系统的一部分,可让您在您选择的Python环境中与其他PyAnys库和外部Python库结合使用Fluent。
PyFluent 实现了客户端-服务器体系结构。它使用谷歌远程过程调用或gRPC接口来启动或连接正在运行的 Fluent 进程作为服务器。但是,您只需要与 Python 接口进行交互。
PyFluent 以编程方式创建、交互和控制 Fluent 会话,以创建您自己的自定义工作区。此外,您还可以使用PyFluent通过高度可配置的自定义脚本来提高工作效率。
PyFluent的主要模块ansys-fluent-core提供以下功能:
launching Fluent模块连接到已运行的Fluent会话Fluent Meshing功能脚本Fluent的所有TUI命令编写脚本Fluent会话Python库(如matplotlib)以numpy arryas的形式检索Fluent的物理场数据,以实现自定义后处理Fluent的求解器事件上注册回调函数,例如可以在读取case或data文件时,或者Fluent求解器完成迭代时实现一些特殊的功能MonitorsManager模块检索求解器监视器,例如残差参考资料:
ANSYS二次开发:Python解析ansys fluent结果文件
当您将 Python 几乎无限的可能性和灵活性与 Fluent 市场领先的准确性相结合时,您就开启了一种执行流体动力学模拟的新方法。借助 PyFluent,开发人员现在可以访问 Fluent 功能的全部广度和深度,从使用 Python 脚本的预处理到后处理。
后处理会用到numpy和matplotlib,怕麻烦的话可以先安装anaconda(网址https://www. anaconda .com/)。然后在开始菜单中打开Anaconda Prompt,在其中输入命令进行安装。若为Liunx系统,则确保系统中安装了pip或pip3。
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)
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
目前这方面的资料比较少,还没有仔细了解,看了看模块的一些源代码,发现好多函数都是tui命令的封装。待有时间把文档研究一波再聊。
可以使用下面的简单代码测试是否安装成功。
import ansys.fluent.core as pyfluent
session = pyfluent.launch_fluent()
session.check_health()
若第一行代码不报错则表示安装成功。
如下图所示,输出为SERVING则表示Fluent已经启动成功,后面就可以用session为所欲为了

参考资料:
csdn博客ANSYS二次开发:Python解析ansys fluent结果文件
通过一个具体的案例来实践一下PyFluent带来的方便。
参考资料:
GitHub - leigq/pyfluent: 基于pyfluent的全流程应用案例(以2D naca0012为例)
找到一篇关于如何使用两种 API 的具体教程:
流体大本营使用API教程: 【Fluent】人生苦短,我用PyFluent-V2 (qq.com)
官方文档:Parametric study workflow — PyFluent-Parametric (pyansys.com)
参考资料:
【实用软件】ANSYS 2022R2 安装教程 - 哔哩哔哩 (bilibili.com)
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删