ANSYS作为商业仿真的龙头,旗下多款产品开放了接口并支持通过Python进行调用、参数化等功能,这样就诞生了Python + Ansys = PyAnsys。
PyAnsys项目有以下产品支持:
- PyAEDT:AEDT 的Python接口 。
- PyDPF-Core:DPF(数据处理框架)的Python接口,用于构建更高级和自定义的工作流程 。
- PyDPF-Post:DPF后处理工具箱的python接口,用于操作和转换模拟数据。
- PyMAPDL:MAPDL 的Python接口 PyMAPDL Reader:用于读取旧版 MAPDL 结果文件(MAPDL 14.5 及更高版本)的Python接口 PyFluent:Ansys Fluent 的Python接口 。
- PyFluent-Parametric:Ansys Fluent参数化工作流的python接口。
- PyFluent-Visualization:使用 Python 可视化 Ansys Fluent 仿真的 Pythonic 界面 。
- PyPIM:与 PIM(产品实例管理)API 通信的 Pythonic 接口。
PyFluent介绍
由于Fluent是Ansys的主打产品,在CFD,传热等领域应用十分广泛,因此在其基础上发展的PyFluent十分值得我们去研究。
PyFluent目前支持的主要功能有:
- 使用python以串行或并行方式启动 Fluent 求解器并连接到已运行的 Fluent 会话。
- 编写脚本使用Fluent Meshing进行网格划分
- 支持在python中使用fluent的TUI命令,方便进行脚本编写。
- 异步运行多个 Fluent 算例
- 使用标准 Python 包(如 matplotlib)将 Fluent 字段数据检索为 numpy 数组以进行自定义后处理。
- 在Fluent求解器的事件上实现注册函数回调。
- 检索求解器监视器,例如残差。
安装
PyFluent的安装条件:
- Python版本在3.7以上。
- Fluent版本需在2022R2及以上。
使用pip进行安装,网络较慢的可以使用第二行的第三方源
pip install ansys-fluent-core
pip install --index-url https://pypi.tuna.tsinghua.edu.cn/simple/ ansys-fluent-core
同时还可以一起安装PyFluent-Parametric和PyFluent-Visualization
pip install ansys-fluent-parametric
pip install --index-url https://pypi.tuna.tsinghua.edu.cn/simple/ ansys-fluent-parametric
pip install ansys-fluent-visualization
pip install --index-url https://pypi.tuna.tsinghua.edu.cn/simple/ ansys-fluent-visualization
需要注意的是,在windows系统上,pyfluent通过环境变量AWP_ROOT来定位Fluent的安装路径并调用,因此需要保证该系统变量的配置。
AWP_ROOT后的‘222’代表Ansys版本为2022R2,由于目前仅支持2022R2,如果计算机上装有多个版本的Fluent,请只保留AWP_ROOT222这一个。
第一行代码
准备工作完成后我们可以简单尝试以下PyFluent的功能。
首先进行调用
import ansys.fluent.core as pyfluent
接着我们试着使用PyFluent打开Fluent的求解器界面
session = pyfluent.launch_fluent(precision="double", processor_count=4, show_gui=True, mode="solver")
这里使用到了launch_fluent函数,配置如下所示,由于我们需要打开Fluent的Gui界面,因此要保证show_gui为True。
launch_fluent(version: Optional[str] = None,
precision: Optional[str] = None,
processor_count: Optional[int] = None,
journal_filename: Optional[str] = None,
start_timeout: int = 100,
additional_arguments: str = "",
env: Optional[Dict[str, Any]] = None,
start_instance: Optional[bool] = None,
ip: Optional[str] = None,
port: Optional[int] = None,
cleanup_on_exit: bool = True,
start_transcript: bool = True,
show_gui: Optional[bool] = None,
case_filepath: Optional[str] = None,
meshing_mode: Optional[bool] = None,
mode: Union[LaunchModes, str, None] = None,
server_info_filepath: Optional[str] = None,
password: Optional[str] = None) -> Union[_BaseSession, Session]
运行效果如下: