本文演示利用pyFluent导入几何模型,并采用watertight Geometry工作流生成计算网格的代码片段。
几何模型在SpaceClaim中创建。
需要提前做好边界命名。若需要在后面的网格生成过程中指定特定区域网格尺寸、边界类型、边界层网格等,则需要在几何中进行边界命名,否则到后面没法识别边界。
几何命名为TeePipe.scdoc
。
import ansys.fluent.core as pyfluent
# 启用meshing模式,采用双精度,24个处理器
session = pyfluent.launch_fluent(meshing_mode=True,precision='double',processor_count = 24)
这里设置meshing_mode=True
,则表示以Meshing模式运行。
输入下面的代码并运行。
geom_filename = 'TeePipe.scdoc'
session.meshing.workflow.InitializeWorkflow(WorkflowType='Watertight Geometry')
session.meshing.workflow.TaskObject['Import Geometry'].Arguments = dict(FileName = geom_filename,LengthUnit= 'mm')
session.meshing.workflow.TaskObject['Import Geometry'].Execute()
运行结果如下图所示,表示几何文件导入成功。
本案例涉及的几何尺寸分布比较均匀,不需要设置局部尺寸。采用下面的代码使用默认设置。
session.meshing.workflow.TaskObject['Add Local Sizing'].AddChildToTask()
session.meshing.workflow.TaskObject['Add Local Sizing'].Execute()
输出结果为True
。
采用下面的代码设置面网格尺寸,并划分面网格。
session.meshing.workflow.TaskObject['Generate the Surface Mesh'].Arguments={'CFDSurfaceMeshControls':{'MaxSize':1.0}}
session.meshing.workflow.TaskObject['Generate the Surface Mesh'].Execute()
输出结果如下图所示。
采用下面的代码进行几何描述。
session.meshing.workflow.TaskObject['Describe Geometry'].UpdateChildTasks(
SetupTypeChanged=False
)
session.meshing.workflow.TaskObject['Describe Geometry'].Arguments=dict(
SetupType='The geometry consists of only fluid regions with no voids'
)
session.meshing.workflow.TaskObject['Describe Geometry'].UpdateChildTasks(
SetupTypeChanged=True
)
session.meshing.workflow.TaskObject['Describe Geometry'].Execute()
输出结果如下图所示。
执行以下代码更新边界。
session.meshing.workflow.TaskObject['Update Boundaries'].Arguments={
'BoundaryLabelList':['inlet1'],
'BoundaryLabelTypeList':['velocity-inlet'],
'BoundaryLabelList':['inlet2'],
'BoundaryLabelTypeList':['velocity-inlet'],
'BoudaryLabelList':['outlet'],
'BoundaryLabelTypeList':['pressure-outlet']
}
session.meshing.workflow.TaskObject['Update Boundaries'].Execute()
运行结果如下所示。
本案例区域采用默认设置。
session.meshing.workflow.TaskObject['Update Regions'].Execute()
添加默认边界层参数。
session.meshing.workflow.TaskObject['Add Boundary Layers'].AddChildToTask()
session.meshing.workflow.TaskObject['Add Boundary Layers'].InsertCompoundChildTask()
session.meshing.workflow.TaskObject['smooth-transition_1'].Arguments={
'BLControlName' : 'smooth-transition_1',
}
session.meshing.workflow.TaskObject['Add Boundary Layers'].Arguments={}
session.meshing.workflow.TaskObject['smooth-transition_1'].Execute()
利用下面的代码指定体网格尺寸并生成体网格。
session.meshing.workflow.TaskObject['Generate the Volume Mesh'].Arguments={
'VolumFill': 'poly-hexcore',
'volumeFillControls':{
'HexMaxCellLength': 1.0,
},
}
session.meshing.workflow.TaskObject['Generate the Volume Mesh'].Execute()
输出结果如下图所示。
输入下面的命令可以检查网格。
session.meshing.tui.mesh.check_mesh()
检查结果如下图所示。
可以保存网格。
session.meshing.tui.file.write_mesh('teepipe.msh.h5')
输出结果如下图所示。
此时当前路径下有保存的网格文件。
可以选择用下面的程序关闭Fluent:
session.exit()
也可以使用下面的代码切换到solution模式,并执行后续的设置计算过程:
session.meshing.tui.switch_to_solution_mode("yes")
切记在事情干完后利用session.exit()
退出Fluent。
(本文结束)