在 Fluent 中,Journaling 是一种记录用户在软件中执行的操作的功能,这些记录可以保存为文本文件,并且可以被用于自动化任务、批处理以及分享工作流程等目的。
PyFluent Journaling (日志)扩展了这个概念,其使用 PyFluent 库记录 Fluent 操作的过程,提供了在 Python 环境中对 Fluent 操作的记录和回放功能。
通过 PyFluent Journaling,用户可以在 Python 脚本中执行一系列操作,然后将这些操作记录保存为 Journal 文件。这个 Journal 文件可以随后被加载并重新执行,从而重复之前的操作,或者在其他环境中共享,使得他人能够重现相同的操作过程。
PyFluent Journaling 的主要优点包括:
- 自动化操作记录:在 Python 脚本中执行 Fluent 操作,并将这些操作自动记录为 Journal 文件,无需手动编写 Journal。
- 操作重放和共享:加载 Journal 文件并重新执行其中记录的操作,可以重复之前的操作步骤,或者与他人共享操作流程。
- 提高生产力:通过记录和重放操作,可以提高工作效率,尤其是对于需要重复执行相似操作的任务而言。
- 实验和参数化研究:可以使用 Journaling 功能轻松地进行参数化研究或实验设计,记录不同参数设置下的模拟过程。
- 错误调试:在调试出现问题的模型或仿真过程时,可以记录操作以便更轻松地排查问题所在。
使用 PyFluent Journaling 可以有效地管理和重用 Fluent 操作流程,特别是在复杂模拟和工程任务中。
同时该功能还可以在 Python 脚本中灵活地结合其他 PyFluent API,实现高度自动化的工作流程。
TUI命令转换
在''PyFluent入门之旅(2)基本操作''中提到过一些TUI 命令转PyFluent规则:
-
将TUI 路径中元素之间的每个正斜杠分隔符都转换为点。
-
路径元素中的某些字符需要删除或替换,因为它们在 Python 中是非法的。
例如:
1.路径元素中的每个连字符(-)都转换为下划线(_)
2.路径元素中的问号都需要删除。
-
在 Python 中,字符串类型的参数必须用引号引起来。
-
用引号括起来的目标 Fluent TUI 参数(如前面示例中的"Pa")必须用单引号括起来('"Pa"'),以便保留原始引号。
-
字符串参数的内容会被保留下来。
这是由于在该文撰写所使用的 Fluent 2022 R2 版本不支持Python journaling 功能,因此需要使用上述的转换规则手动转换 TUI 命令。
到了 Fluent 2023 R1 版本有所改善,存在settings API 的 TUI 命令在 Python journaling中记录为settings API命令,而其他 TUI 命令均以非 Pythonic 的方式记录,因此任然需要使用上述的转换规则手动转换这些 TUI 命令。
直到 2023 R2 版本开始,Fluent Python journaling 包含与 Fluent 中执行的 TUI 命令相对应的 Python 调用。 Python 日志记录会生成对相应设置 API 命令(如果存在)的调用。
PyFluent Journaling的创建
需要注意的是PyFluent Journaling功能自Fluent 2023 R1 起开始支持,Fluent 2022 R2 版本不支持Python journaling 功能。
Fluent meshing
启动Fluent选择好相应工作路径并打开meshing模式,在Fluent meshing的控制台键入:
python
(api-start-python-journal "your_journal_name.py")
如下图所示,本案例创建了名为"test_journal.py"的日志文件
运行命令后Fluent会在工作路径下创建PyFluent Journaling并开始记录后续的操作。
此时打开python日志文件可以看到其已经记录了一些初始化设置。
接下来就可以在GUI界面进行所需的文件读取及网格划分操作。
在GUI的每一步操作完成后,其日志文件都会实时更新,所以通过GUI调整不同的选项和参数并观察日志文件更新的代码不失为一种学习PyFlunet的好方法。
待所有操作完成后可以看到所有的操作都被记录了下来
此时如果不需要进行求解,输入(api-stop-python-journal)
或直接关闭Fluent即可。
如果需要继续进行求解设置并记录日志文件,可在命令行输入switch-to-solution-mode
切换至求解器模式。
Fluent solver
如果需要直接打开求解器模式并记录日志,同样按照前文所述在命令行键入:
python
(api-start-python-journal "your_journal_name.py")
如果是从Fluent meshing模式切换过来,继续进行操作即可
截至自Fluent 2024 R1 版本,PyFluent Journaling仍然不支持记录求解器模式下GUI的操作,因此想要使用PyFluent Journaling记录求解器模式下的操作,我们仍需使用在控制台使用TUI命令进行求解设置。
完成求解的设置后,输入(api-stop-python-journal)
或直接关闭Fluent即可。
PyFluent Journaling的使用
在完成网格或求解的设置后,在工作目录打开创建的PyFluent Journaling日志文件。
日志文件可分为图示的三个部分:
- 初始化部分
- meshing设置
- solver设置
注意,如在网格或求解设置时未开启记录PyFluent Journaling日志,则日志会缺少对应部分。
要在Python或Jupyter Notebook中使用PyFluent Journaling日志文件,首先需要将日志开头的初始化部分处替换为下面格式的代码,其中,处理器核心数等属性可进行修改。
python
import ansys.fluent.core as pyfluent
meshing_session = pyfluent.launch_fluent(precision="double",processor_count=2,mode="meshing",show_gui=True)
workflow = meshing_session.workflow
meshing = meshing_session.meshing
将meshing设置部分 的meshing.switch_to_solver()
修改为:
python
solver = meshing_session.switch_to_solver()
在日志文件末尾可添加关闭求解器命令:
python
solver.exit()
总结
通过上述的介绍可以看出,截至自Fluent 2024 R1及PyFluent 0.20.0版本,PyFluent Journaling功能可以很好地记录Fluent meshing的操作,但对求解器模式的支持仍十分有限,目前还存在以下问题:
- 需要在控制台使用命令开启日志记录功能。
- 不支持记录Fluent求解器模式下通过GUI进行的操作。
- 日志文件无法直接通过Python执行,需要进行一定程度的修改。
- 部分命令语句会报错,需要进行手动调试。