关于Python_fluent

关于Python_fluent

简介

简介 本文先引出了关于 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 迭代

参考资料:

Fluent|TUI命令

Fluent TUI|01 简介

pyFluent|一点使用体验

二、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提供了很多种不同的控制方式,不过最常见的无异于GUITUI两种。GUI适合于新手操作及单case使用,TUI适合参数化及批量计算。按理说应当能够满足需求了。我们可以通过很多TUI的命令去实现很多操作,读者可以根据1.3.3中的TUI相关命令使用fulent软件亲自测试一下各类命令。

3.1 简介

Fluent 2022R2版本推出了pyFluent,是Fluent推出的新玩意儿。

使用PyFluent(通过PythonFluent的开源访问)实现流程自动化、构建自定义工作流程、制作自定义解决方案等。

实际上是提供了一个利用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软件左侧的列表。相比TUIAPI,rootAPI更加清晰,且可读性高。

![在这里插入图片描述](https://img-blog.csdnimg.cn/2d0664e6b9ba4a178536b503d6807bff.png#pic_center= 500x)

在这里插入图片描述

参考资料:

找到一篇关于如何使用两种API的具体教程【Fluent】人生苦短,我用PyFluent-V2 (qq.com)

3.3.2 场数据的获取

TUI也可以实现此功能,但是使用pyfluent的代码更加清晰,可维护性高。

在这里插入图片描述

3.3.3 参数化和Python的后处理

在这里插入图片描述

3.3.4 其他功能

在这里插入图片描述

3.4 PyFluent特性

PyFluentPyAnsys生态系统的一部分,可让您在您选择的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的求解器事件上注册回调函数,例如可以在读取casedata文件时,或者Fluent求解器完成迭代时实现一些特殊的功能
  • 能够使用MonitorsManager模块检索求解器监视器,例如残差

参考资料:

pyFluent|一点使用体验

ANSYS二次开发:Python解析ansys fluent结果文件

四、实践PyFluent

​ 当您将 Python 几乎无限的可能性和灵活性与 Fluent 市场领先的准确性相结合时,您就开启了一种执行流体动力学模拟的新方法。借助 PyFluent,开发人员现在可以访问 Fluent 功能的全部广度和深度,从使用 Python 脚本的预处理到后处理。

4.1 安装环境

后处理会用到numpymatplotlib,怕麻烦的话可以先安装anaconda(网址https://www.anaconda.com/)。然后在开始菜单中打开Anaconda Prompt,在其中输入命令进行安装。若为Liunx系统,则确保系统中安装了pippip3

  • 利用下面的命令安装pyfluent:
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)

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 资源

参考资料:

【实用软件】ANSYS 2022R2 安装教程 - 哔哩哔哩 (bilibili.com)

  • 15
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愿天堂没有C++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值