PyFluent提供了两种主要的API来与Ansys Fluent进行交互:
- Settings API
- TUI API
通过这两种接口方式,可以控制 Ansys Fluent 的各个方面,包括从网格生成到后处理的所有操作。
分类
Settings API
pyFluent
的 Settings API
类似于 Ansys Fluent 中的对象树,通过Settings API
可以配置和控制 Fluent 的设置,比如求解器设置、物理模型选择、材料属性定义、边界条件设置等,还可以在不直接操作 Fluent 用户界面的情况下,通过 Python 脚本预设各种参数,实现模型的快速设置和批量运行。
具体功能包括:
-
求解器设置:指定求解器类型(压力-速度耦合、时间步长、迭代次数等)。
-
物理模型配置:选择和配置所需的物理模型,如湍流模型、多相流模型等。
-
材料和流体属性:定义使用的流体或固体的物理和化学性质。
-
边界条件设置:为模型的入口、出口、壁面等边界指定适当的条件。
-
网格设置:控制网格的生成和适应性。
TUI API
pyFluent
的 TUI (Text User Interface) API
类似于 Ansys Fluent 控制台中使用的 TUI 命令
通过 TUI API,用户可以在 Python 环境中直接调用 Fluent 的命令,实现对 Fluent 操作的自动化和脚本化。
TUI API 的特点包括:
- 直接命令执行:可以直接执行 Fluent TUI 命令,如读取文件、初始化求解器、开始计算等。
- 宏和脚本运行:运行自定义的 Fluent TUI 脚本或宏,以自动化重复性任务或复杂操作。
- 交互式操作:即使在批处理模式下也能进行交互式操作,提供灵活的控制能力。
使用 Settings API
和 TUI API
,可以更加灵活和有效地在 Python 环境中控制 Fluent 的运行,实现复杂的 CFD 分析任务自动化。这对于需要运行多个案例或进行参数化研究的用户尤其有用。
常用功能对比
这里以一些常用功能为例对上述两种API进行对比
首先需要导入pyfluent并启动求解模式,读取网格或case文件
import ansys.fluent.core as pyfluent
from ansys.fluent.core.launcher.pyfluent_enums import UIMode
solver = pyfluent.launch_fluent(precision="double", processor_count=8, mode="solver",ui_mode= UIMode.GUI)
solver.file.read_mesh(file_name = "文件名")
修改单位
TUI
修改单位的TUI控制台命令为: /define/units 单位名 单位
例如修改长度单位为mm:/define/units length mm
TUI API命令为:
solver.tui.define.units("length", "mm")
Settings API
solver.setup.general.units.set_units(quantity = "length", units_name = "mm", scale_factor = 1., offset = 0.)
开启能量方程
TUI
solver.tui.define.models.energy("yes")
Settings API
solver.setup.models.energy.enabled = True
创建材料
以创建液态水为例
TUI
solver.tui.define.materials.copy("fluid", "water-liquid")
Settings API
solver.setup.materials.database.copy_by_name(type="fluid", name="water-liquid")
设置湍流模型
TUI
修改湍流模型的TUI控制台命令为: /definemodels/viscous/模型名 yes
例如:/definemodels/viscous/kw-sst? yes
solver.tui.define.models.viscous.kw_sst('yes')
Settings API
solver.setup.models.viscous.model = 'k-omega'
如果不确定模型的名称,可以使用allowed_values()
方法确认有哪些模型字符串值可以使用
>>>solver.setup.models.viscous.model.allowed_values()
['inviscid', 'laminar', 'k-epsilon-standard', 'k-omega-standard', 'mixing-length', 'spalart-allmaras', 'k-kl-w', 'transition-sst', 'reynolds-stress', 'scale-adaptive-simulation', 'detached-eddy-simulation', 'large-eddy-simulation']
可以使用 print_state
方法以简单文本格式打印当前状态。
例如:
>>> solver.setup.models.print_state()
multiphase :
models : none
number_of_phases : 0
energy :
enabled : False
viscous :
model : k-omega
k_omega_model : sst
k_omega_options :
kw_low_re_correction : False
near_wall_treatment :
wall_omega_treatment : correlation
transition_module : none
设置边界条件
设置边界条件需要提前确认各个边界的命名与类型
例如想要修改图示速度入口的速度为2m/s
TUI
修改边界条件的TUI控制台命令为:/define/boundary-conditions/set/
例如:/define/boundary-conditions/set/velocity-inlet velocity-inlet-2 velocity-inlet-2 () vmag no 2 quit
solver.tui.define.boundary_conditions.set.velocity_inlet("velocity-inlet-2", "velocity-inlet-2", (), "vmag", "no", 2, "quit")
Settings API
Settings API的层级与GUI一致
solver.setup.boundary_conditions.velocity_inlet['velocity-inlet-1'] = {"momentum" : {"velocity" : {"value" : 2.}}}
或
inlet1 = solver.setup.boundary_conditions.velocity_inlet['velocity-inlet-1']
inlet1.momentum.velocity.value = 2
初始化及计算
TUI
solver.tui.solve.initialize.hyb_initialization()
solver.tui.solve.iterate(100)
Settings API
solver.solution.initialization.hybrid_initialize()
solver.solution.run_calculation.iterate(iter_count=100)
注意事项
-
以上代码的测试环境基于Fluent 2024R1 与 ansys-fluent-core 0.20.dev9
-
如果使用本文使用的代码存在问题请检查自己的软件版本及使用环境。
-
pyFluent版本更新很快,dev版相较于stable版本很多属性及方法都有所差异,具体可查询相应版本的用户文档