PyFluent入门之旅(3)网格划分

在通过前两期熟悉了PyFluent的基础操作后,本期介绍如何通过PyFluent在Fluent Meshing中使用密闭几何(watertight)工作流进行网格划分。

开门见山,我先开启PyFluent的gui显示功能展示一下最终效果。

在通过前两期熟悉了PyFluent的基础操作后,本期介绍如何通过PyFluent在Fluent Meshing中使用密闭几何(watertight)工作流进行网格划分。

开门见山,我先开启PyFluent的gui显示功能展示一下最终效果。

PyFluent网格划分

1 准备工作

首先需要准备用于网格划分的几何模型,这里使用经典的三通管轴对称模型进行演示。

该模型的边界划分如下图所示。

在这里插入图片描述
在这里插入图片描述

使用下述代码即可自动下载该模型文件

import ansys.fluent.core as pyfluent
from ansys.fluent.core import examples
import_filename = examples.download_file("mixing_elbow.pmdb", "pyfluent/mixing_elbow")

下载好的模型文件默认保存在下述路径

C:\Users\"你的用户名"\AppData\Local\ansys_fluent_core\ansys_fluent_core\examples

案例文件可能会因为网络问题而下载失败,如需该几何模型文件可以关注“基算仿真”公众号,在后台回复:"elbow"获取下载链接

2 选择工作流并读取几何模型

完成了几何模型的准备工作即可进行网格划分。首先以meshing模式启动fluent,核心数和是否开启gui可按照自己的需求来。

meshing = pyfluent.launch_fluent(precision="double", processor_count=4, mode="meshing")

按照使用Gui的操作顺序,我们下一步应该按照下图选择密闭几何工作流

选择工作流

在PyFluent中实现初始化工作流功能需要使用到下述代码

meshing.workflow.InitializeWorkflow(WorkflowType="Watertight Geometry")

接着就可以读取几何文件了,将几何文件保存在python工作目录。接着使用下述代码即可读取几何模型。

geom='mixing_elbow.pmdb'
meshing.workflow.TaskObject["Import Geometry"].Arguments = dict(
    FileName=geom, LengthUnit="in"
)
meshing.workflow.TaskObject["Import Geometry"].Execute()

3 添加局部尺寸与面网格划分

按照顺序,接下来需要进行局部尺寸的定义与面网格划分。

在这里插入图片描述

这里选择默认直接输出

meshing.workflow.TaskObject["Add Local Sizing"].AddChildToTask()
meshing.workflow.TaskObject["Add Local Sizing"].Execute()

使用以下代码调整最大尺寸并生成面网格

meshing.workflow.TaskObject["Generate the Surface Mesh"].Arguments = {
    "CFDSurfaceMeshControls": {"MaxSize": 0.3}
}
meshing.workflow.TaskObject["Generate the Surface Mesh"].Execute(

4 几何与边界处理

接下来的步骤为几何描述、边界条件定义与边界层的生成

在这里插入图片描述

几何描述,定义几何为没有空隙的流体域,其他保持默认

meshing.workflow.TaskObject["Describe Geometry"].UpdateChildTasks(
    SetupTypeChanged=False
)
meshing.workflow.TaskObject["Describe Geometry"].Arguments = dict(
    SetupType="The geometry consists of only fluid regions with no voids"
)
meshing.workflow.TaskObject["Describe Geometry"].UpdateChildTasks(SetupTypeChanged=True)
meshing.workflow.TaskObject["Describe Geometry"].Execute()

更新边界条件,这里FluentMeshing将wall-inlet识别为了速度入口,使用下述代码将其类型修改为壁面。

meshing.workflow.TaskObject["Update Boundaries"].Arguments = {
    "BoundaryLabelList": ["wall-inlet"],
    "BoundaryLabelTypeList": ["wall"],
    "OldBoundaryLabelList": ["wall-inlet"],
    "OldBoundaryLabelTypeList": ["velocity-inlet"],
}
meshing.workflow.TaskObject["Update Boundaries"].Execute()

接着更新计算域类型即可,保持默认的流体域直接更新即可

meshing.workflow.TaskObject["Update Regions"].Execute()

下面进行边界层的划分,保持默认设置

meshing.workflow.TaskObject["Add Boundary Layers"].AddChildToTask()
meshing.workflow.TaskObject["Add Boundary Layers"].InsertCompoundChildTask()
meshing.workflow.TaskObject["smooth-transition_1"].Arguments = {
    "BLControlName": "smooth-transition_1",
}
meshing.workflow.TaskObject["Add Boundary Layers"].Arguments = {}
meshing.workflow.TaskObject["smooth-transition_1"].Execute(

5 生成体网格并保存

最后一步便是生成体网格

在这里插入图片描述

这里选择生成多面体网格,最大单元尺寸设置为0.3

meshing.workflow.TaskObject["Generate the Volume Mesh"].Arguments = {
    "VolumeFill": "poly-hexcore",
    "VolumeFillControls": {
        "HexMaxCellLength": 0.3,
    },
}
meshing.workflow.TaskObject["Generate the Volume Mesh"].Execute()

使用下述代码进行网格质量检查,无误后便可以进行保存。

meshing.tui.mesh.check_mesh()#检查质量
meshing.tui.file.write_mesh("mixing_elbow.msh.h5")#保存
  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值