任何想要使用PyFluent的人都可以导入其Python模块,并开发Python代码来控制和监控ANSYS Fluent。
用户可以使用 launch_fluent()
方法启动作为后台服务器运行的 Fluent 实例。
from ansys.fluent.core import launch_fluent
solver = launch_fluent(mode="solver")
from ansys.fluent.core import launch_fluent
meshing = launch_fluent(mode="meshing")
PyFluent 允许创建和初始化多个独立的会话对象,每个对象都对其当前模式(Solution或Meshing)相关的 Fluent 组件具有完全访问权限。
Solution模式会话有一个活动的 solver
对象,其为求解器提供了两个不同的接口:
tui
对象root
对象求解器的 tui
对象是 Fluent 求解器 TUI(文本用户界面)的完整 Python 封装。该对象允许直接执行求解器命令和修改求解设置,对于现有 Fluent 用户来说,其使用方式很简单:
tui = solver.tui
tui.file.read_case("pipe.cas.h5")
tui.define.models.energy("yes")
求解器 root
对象不仅暴露了大部分 tui
对象所涵盖的求解器功能,还提供了一些通过 tui
对象无法实现的额外接口特性:
solver.file.read(file_type="case", file_name="pipe.cas.h5")
solver.setup.models.energy.enabled = True
energy_is_enabled = solver.setup.models.energy.enabled()
Meshing模式会话有一个活动的 meshing
对象,其为网格生成器提供了两个不同的接口:
tui
对象meshing
和 workflow
属性以及 PartManagement
和 PMFileManager
类组成网格化 tui
对象是 Fluent Meshing TUI(文本用户界面)的完整 Python 封装。该对象允许直接执行网格生成命令和修改网格设置,其使用方式如下:
tui = meshing_session.tui
tui.mesh.prepare_for_solve("yes")
tui.file.write_case("pipe.cas.h5")
meshing
对象包含 meshing
和 workflow
属性,它们共同提供了对 Fluent Meshing工作流程的访问。此接口与 Fluent Meshing直接暴露的 Python 网格化工作流程接口保持一致:
workflow = meshing_session.workflow
workflow.InitializeWorkflow(WorkflowType="Watertight Geometry")
import_geometry = workflow.TaskObject["Import Geometry"]
import_geometry.Arguments = {"FileName":"pipe.scdoc.pmdb"}
import_geometry.Execute()
meshing = meshing_session.meshing
meshing.GlobalSettings.LengthUnit.set_state("mm")
提供了一个全局搜索方法用于查找 Fluent 设置或命令:
>>> import ansys.fluent.core as pyfluent
>>> pyfluent.search("geometry")
<meshing_session>.tui.file.import_.cad_geometry (Command)
<meshing_session>.tui.display.update_scene.select_geometry (Command)
<meshing_session>.meshing.ImportGeometry (Command)
<meshing_session>.meshing.LoadCADGeometry (Command)
<solver_session>.tui.solve.initialize.compute_defaults.geometry (Command)
<solver_session>.tui.report.reference_values.compute.geometry (Command)
<solver_session>.tui.define.geometry (Command)
<solver_session>.tui.mesh.geometry (Object)
<solver_session>.setup.boundary_conditions.geometry["<name>"] (Object)
<solver_session>.setup.geometry (Object)
<solver_session>.solution.report_definitions.surface["<name>"].geometry (Parameter)
<solver_session>.solution.report_definitions.volume["<name>"].geometry (Parameter)
<solver_session>.results.graphics.mesh["<name>"].geometry (Parameter)
<solver_session>.results.graphics.contour["<name>"].geometry (Parameter)
在Solution或Meshing模式会话中,session
对象通过其 scheme_eval
属性提供更直接的交互方式:
unsteady = solver.scheme_eval.scheme_eval("(rp-unsteady?)")
scheme_eval
属性的参数是可以针对当前模式在 Fluent 中执行的任意 Scheme 代码的字符串。
表面物理场和网格数据服务仅在Solution模式下通过会话对象的 field_data
对象属性可用:
surface_data = solver.fields.field_data.get_fields()
任何会话的连接状态都可通过以下方式验证:
health = solver.health_check_service.status()
当且仅当连接正常时,返回 "SERVING"
。
默认情况下 Fluent transcript的流式传输会自动开启。用户可以手动停止和启动transcript的流式传输:
solver.transcript.stop()
solver.transcript.start()
可以通Solution模式会话的 events_manager
属性启用和禁用与各种求解器事件类型相关的事件流式传输:
solver.events_manager.start()
PyFluent 默认禁用了到文件的日志记录。可以通过以下方式启用日志记录:
import ansys.fluent.core as pyfluent
pyfluent.logging.enable()
最后一条命令等同于 pyfluent.logging.enable('DEBUG')
,其使用 PyFluent 的默认日志级别。
PyFluent 默认情况下会在当前工作目录下创建一个名为 pyfluent.log
的文件进行日志记录。要了解更多细节,可以参考 ansys.fluent.core.logging.enable()
方法的文档说明。
一旦启用了日志记录,还可以调整 PyFluent 的全局日志等级,操作方式如下:
pyfluent.logging.set_global_level('DEBUG')
这条命令等同于 pyfluent.logging.set_global_level(10)
,其中 'DEBUG'
和 10
都代表调试级别,是日志级别中最详细的,包含了最多的日志信息。
除了上述方法外,还可以参考以下函数以获取更多与日志管理相关的功能:
ansys.fluent.core.logging.enable()
:用于启用日志记录。ansys.fluent.core.logging.list_loggers()
:列出所有可用的日志记录器。ansys.fluent.core.logging.set_global_level(level)
:设置全局日志记录等级。PyFluent 的日志记录器采用了 Python 标准库中的日志模块,这意味着你可以利用标准库中所有的日志处理功能来自定义日志行为,比如日志的输出格式、处理程序(handler)以及过滤器(filter)等。更多关于 PyFluent 日志模块的详细信息,请查阅专门的 logging module documentation
(日志模块文档)。
可以通过环境变量 PYFLUENT_LOGGING
在 PyFluent 启动时自动启用全局日志记录,例如可将其设置为 DEBUG
或 10
。将 PYFLUENT_LOGGING
设置为 0
或 OFF
不会在启动时将初始化日志记录到文件,这与未设置此变量时的行为相同。
注:本文取自PyFluent UserGuide。
”
(完毕)