PyFluent入门之旅(8) PyFluent API 分类与区别

PyFluent提供了两种主要的API来与Ansys Fluent进行交互:

  1. Settings API
  2. TUI API

通过这两种接口方式,可以控制 Ansys Fluent 的各个方面,包括从网格生成到后处理的所有操作。

分类

Settings API

pyFluentSettings API类似于 Ansys Fluent 中的对象树,通过Settings API可以配置和控制 Fluent 的设置,比如求解器设置、物理模型选择、材料属性定义、边界条件设置等,还可以在不直接操作 Fluent 用户界面的情况下,通过 Python 脚本预设各种参数,实现模型的快速设置和批量运行。

具体功能包括:

  • 求解器设置:指定求解器类型(压力-速度耦合、时间步长、迭代次数等)。

  • 物理模型配置:选择和配置所需的物理模型,如湍流模型、多相流模型等。

  • 材料和流体属性:定义使用的流体或固体的物理和化学性质。

  • 边界条件设置:为模型的入口、出口、壁面等边界指定适当的条件。

  • 网格设置:控制网格的生成和适应性。

TUI API

pyFluentTUI (Text User Interface) API 类似于 Ansys Fluent 控制台中使用的 TUI 命令

通过 TUI API,用户可以在 Python 环境中直接调用 Fluent 的命令,实现对 Fluent 操作的自动化和脚本化。

TUI API 的特点包括:

  • 直接命令执行:可以直接执行 Fluent TUI 命令,如读取文件、初始化求解器、开始计算等。
  • 宏和脚本运行:运行自定义的 Fluent TUI 脚本或宏,以自动化重复性任务或复杂操作。
  • 交互式操作:即使在批处理模式下也能进行交互式操作,提供灵活的控制能力。

使用 Settings APITUI 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版本很多属性及方法都有所差异,具体可查询相应版本的用户文档

  • 21
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值