简介 本文先引出了关于 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 迭代
参考资料:
Fluent|TUI命令
Fluent TUI|01 简介
pyFluent|一点使用体验
本质上 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参数周围的双引号。
注意上述示例中隐含的以下规则:
TUI路径中元素之间的每个斜杠分隔符转换为Python点符号
路径元素中的某些字符要么被删除,要么被替换,因为它们在Python名称中是非法的:
关于字符串的一些规则:
一种脚本,但不止于传统的脚本。
注意树状列表是指 fluent
软件左侧的列表。相比TUI
的API,root
的API
更加清晰,且可读性高。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2d0664e6b9ba4a178536b503d6807bff.png#pic_center= 500x)
参考资料:
找到一篇关于如何使用两种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
模块检索求解器监视器,例如残差参考资料:
pyFluent|一点使用体验
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
启动anaconda prompt,利用cd
命令进入到pyfluent的doc
路径下,运行命令
make html
等其编译完毕后(编译时间很长,编译中还运行了几个算例,真是牛逼),即可在doc文件夹的_build/html
子文件夹下找到index.html文件进行打开。
这里除了可以编译成html格式外,还能够输出epub格式。其实sphinx本身是可以输出pdf格式的,没搞懂为什么不让输出pdf。
目前这方面的资料比较少,还没有仔细了解,看了看模块的一些源代码,发现好多函数都是tui命令的封装。待有时间把文档研究一波再聊。
可以使用下面的简单代码测试是否安装成功。
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为例)
找到一篇关于如何使用两种API的具体教程:
流体大本营使用API教程: 【Fluent】人生苦短,我用PyFluent-V2 (qq.com)
官方文档:Parametric study workflow — PyFluent-Parametric (pyansys.com)
参考资料:
【实用软件】ANSYS 2022R2 安装教程 - 哔哩哔哩 (bilibili.com)