吾生有涯 学海无涯
析模有界 知识无界

Fluent案例|Python Console控制仿真流程

内容纲要

在较新的Fluent版本中,通过开启Beta功能可以在TUI窗口利用Python替代原本的TUI命令,这样形成的脚本文件更加的容易理解与阅读,也可以更方便地进行流程封装及参数化。

本案例演示利用Python Console控制CAD几何导入、网格划分、求解参数设置、计算求解以及后处理等过程。

注:案例文件取自Fluent Beta文档。

1 生成网格

1.1 启动Fluent

  • Meshing模式启动Fluent,激活选项Show Beta Launcher Options
  • General Options下启用Python Console(Beta)选项,然后点击按钮Start启动Fluent Meshing。

打开Fluent后可以在控制台中利用Python对工作流程进行控制。

1.2 网格生成

  • Fluent Meshing启动后,在Console中输入下面的代码(注意>>>是输入提示符),初始化Watertight Geometry网格生成工作流程,并为长度、面积和体积设置默认全局单位

    >>> workflow.InitializeWorkflow(WorkflowType=r'Watertight Geometry')  
    >>> meshing.GlobalSettings.LengthUnit.set_state(r'mm')
    >>> meshing.GlobalSettings.AreaUnit.set_state(r'mm^2')
    >>> meshing.GlobalSettings.VolumeUnit.set_state(r'mm^3')

输入后如下图所示。

同时树形菜单中自动添加了watertight geomtry工作流相应的节点。

  • 导入CAD几何。在TUI窗口中输入下面的代码指定CAD几何文件的名称及位置(注意修改文件路径),然后更新任务:

    >>> workflow.TaskObject['Import Geometry'].Arguments.set_state({r'FileName': r'E:/exhaust_manifold/manifold.scdoc',})
    >>> workflow.TaskObject['Import Geometry'].Execute()

如下图所示。

导入的几何如下图所示。

几何文件下载链接:https://ansyshelp.ansys.com/Views/Secured/Doc_Assets/v232/Fluent/exhaust_manifold.zip

  • 添加局部尺寸。输入下面的命令,保持默认设置并更新任务。

    >>> workflow.TaskObject['Add Local Sizing'].AddChildAndUpdate()
  • 生成面网格。输入下面的命令,采用默认参数并更新任务,生成面网格。

    >>> workflow.TaskObject['Generate the Surface Mesh'].Execute()

执行完毕后生成的面网格如下图所示。

  • 描述几何。在此任务中,输入下面的代码描述CAD几何。

    >>> workflow.TaskObject['Describe Geometry'].UpdateChildTasks(SetupTypeChanged=False)
    >>> workflow.TaskObject['Describe Geometry'].Arguments.set_state({r'CappingRequired': r'No',r'SetupType': r'The geometry consists of only solid regions',})
    >>> workflow.TaskObject['Describe Geometry'].UpdateChildTasks(SetupTypeChanged=True)
    >>> workflow.TaskObject['Describe Geometry'].Execute()
  • 封闭流体区域。在此任务中,每个进口和出口开口都被封闭,以便可以提取内部体积。需要在提前在几何中进行命名。

    >>> workflow.TaskObject['Enclose Fluid Regions (Capping)'].Arguments.set_state({r'LabelSelectionList': [r'in1'],})
    >>> workflow.TaskObject['Enclose Fluid Regions (Capping)'].AddChildAndUpdate()
    >>> workflow.TaskObject['Enclose Fluid Regions (Capping)'].Arguments.set_state({r'LabelSelectionList':[r'in2'],})
    >>> workflow.TaskObject['Enclose Fluid Regions (Capping)'].AddChildAndUpdate()
    >>> workflow.TaskObject['Enclose Fluid Regions (Capping)'].Arguments.set_state({r'LabelSelectionList':[r'in3'],})
    >>> workflow.TaskObject['Enclose Fluid Regions (Capping)'].AddChildAndUpdate()
    >>> workflow.TaskObject['Enclose Fluid Regions (Capping)'].Arguments.set_state({r'LabelSelectionList':[r'out1'],r'ZoneType': r'pressure-outlet',})
    >>> workflow.TaskObject['Enclose Fluid Regions (Capping)'].AddChildAndUpdate()

封闭后的计算模型如图所示。

  • 创建区域。保持默认设置并更新任务:

    >>> workflow.TaskObject['Create Regions'].Execute()
  • 更新区域。保持默认设置并更新任务:

    >>> workflow.TaskObject['Update Regions'].Execute()
  • 添加边界层。保持默认设置并更新任务:

    >>> workflow.TaskObject['Add Boundary Layers'].AddChildAndUpdate()
  • 生成体网格。保持默认设置并更新任务:

    >>> workflow.TaskObject['Generate the Volume Mesh'].Execute()

生成体网格如图所示。

从网格生成模式切换到Fluent的求解器模式:

>>> solver = meshing.switch_to_solver()

2 计算求解

  1. 激活能量方程。启用计算中考虑温度:

    >>> solver.setup.models.energy.enabled = True
  2. 创建一个名为"water-liquid"的材料:

    >>> solver.setup.materials.database.copy_by_name(type="fluid", name="water-liquid")
  3. 设置单元区域。将流体单元区域的介质指定为水。

    >>> solver.setup.cell_zone_conditions.fluid["fluid1"].material = "water-liquid"
  4. 设置边界条件。将三个进口分别设置为不同的进口速度和温度:

    >>> solver.setup.boundary_conditions.velocity_inlet["velo-inlet_1"].vmag.value=4
    >>> solver.setup.boundary_conditions.velocity_inlet["velo-inlet_1"].t.value=293
    >>> solver.setup.boundary_conditions.velocity_inlet["velo-inlet_2"].vmag.value=2
    >>> solver.setup.boundary_conditions.velocity_inlet["velo-inlet_2"].t.value=300.25
    >>> solver.setup.boundary_conditions.velocity_inlet["velo-inlet_3"].vmag.value=5
    >>> solver.setup.boundary_conditions.velocity_inlet["velo-inlet_3"].t.value=313.5
  5. 使用混合初始化方法初始化流场。

    >>> solver.solution.initialization.hybrid_initialize()
  6. 计算100次迭代的解。

    >>> solver.solution.run_calculation.iter_count = 100
    >>> solver.solution.run_calculation.iterate()

3 计算结果

  • 创建速度矢量并按温度着色显示:

    >>> solver.results.graphics.vector["velocity_vectors"] = {}
    >>> solver.results.graphics.vector["velocity_vectors"].field = "temperature"
    >>> solver.results.graphics.vector["velocity_vectors"].surfaces_list = ["in*", "out*", "solid*"]
    >>> solver.results.graphics.vector["velocity_vectors"].scale.scale_f = 4
    >>> solver.results.graphics.vector["velocity_vectors"].style = "arrow"
    >>> solver.results.graphics.vector["velocity_vectors"].display()

图形显示如图所示。

  • 计算质量流率。

    >>> solver.solution.report_definitions.flux["mass_flow_rate"] = {}
    >>> solver.solution.report_definitions.flux["mass_flow_rate"].zone_names = ["velo*", "pres*"]
    >>> solver.solution.report_definitions.flux["mass_flow_rate"].print_state()
    >>> solver.solution.report_definitions.compute(report_defs=["mass_flow_rate"])

    输出结果为:

  • 可以输入下面的代码关闭Fluent

    >>> solver.exit()

(完)

本篇文章来源于微信公众号: CFD之道

赞(1) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《Fluent案例|Python Console控制仿真流程》
文章链接:https://www.topcfd.cn/35809/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册