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

pyANSYS|利用PyPrimeMesh生成流体网格

内容纲要

本文简单介绍利用PyPrimeMesh生成计算网格的基本方法。

1 PyPrimeMesh介绍

PyPrimeMesh隶属于PyAnsys,其目的在于增强利用Python操纵Ansys系列模块的能力。PyPrimeMesh 由各种 Python 模块组成,可帮助用户获取几何体信息并为各求解器生成面网格及体网格。其核心模块为ansys-meshing-prime。

PyPrimeMesh可以实现的功能包括:

  • 生成四边形占优及三角形面网格

  • 使用各种网格尺寸生成面网格

  • 使用各种形状(如四面体、六面体、金字塔及棱柱等)的线性及二次单元体网格

  • 以串行或并行的方式生成体网格

  • 进行网格质量检查

  • 对模型中的自由边、多重边、自相交及重叠面进行网格诊断

  • 模块化的网格生成算法、组件及服务,可以在其他应用程序中重用

  • 公开的用于网格生成操作的微服务及API,以利于网格划分工作流设计

PyPrimeMesh将Ansys Prime服务的网格生成能力直接集成到客户端应用程序中。器提供了一个Python友好的接口,用于驱动管理低级Prime命令提交的软件,同时通过高性能gRPC接口交换数据。

  • PyPrimeMesh官方在线文档地址:https://prime.docs.pyansys.com/release/0.3/index.html
  • PyPrimeMesh官方案例地址:https://prime.docs.pyansys.com/release/0.3/examples/index.html

2 PyPrimeMesh应用

PyPrimeMesh隶属于pyansys,因此在安装pyansys后即可使用。

如果图省事儿的话,可以先安装Anaconda,然后直接利用pip命令进行安装:

pip install pyansys

之后即可使用PyPrimeMesh了。下面这个简单的例子来自PyPrimeMesh的官方帮助。

几何:https://github.com/pyansys/example-data/

几何模型如图所示。

可以利用下面的程序代码读取几何模型、生成面网格及体网格。

import os
import tempfile
from ansys.meshing import prime
from ansys.meshing.prime.graphics import Graphics

# 启动prime环境
prime_client = prime.launch_prime()
model = prime_client.model
mesh_util = prime.lucid.Mesh(model = model)

# 读入几何模型并创建边界zone
mesh_util.read(file_name='mixing_elbow.fmd')
mesh_util.create_zones_from_labels("inlet,outlet")

# 指定面网格尺寸
mesh_util.surface_mesh(min_size=1,max_size=10)

# 指定体网格参数。这里的VolueeFillType.POLY表示生成多面体网格
mesh_util.volume_mesh(
volume_fill_type=prime.VolumeFillType.POLY,
prism_surface_expression="* !inlet !outlet",
prism_layers=3,
)

运行完毕后生成体网格,利用下面的代码显示生成完毕后的网格。

display = Graphics(model=model)
display()

生成的网格如下图所示。

利用下面的代码查看网格信息。
# 得到网格部件
part = model.get_part_by_name("flow_volume")

# 统计网格信息
part_summary_res = part.get_summary(prime.PartSummaryParams(model=model))

# 统计网格单元的质量信息
search = prime.VolumeSearch(model=model)
params = prime.VolumeQualitySummaryParams(
model=model,
scope=prime.ScopeDefinition(model=model, part_expression="*"),
cell_quality_measures=[prime.CellQualityMeasure.SKEWNESS],
quality_limit=[0.95],
)
results = search.get_volume_quality_summary(params=params)

print(part_summary_res)
print("nMaximum skewness: ", results.quality_results_part[0].max_quality)

输出信息如图所示。

message :  
Part Name: flow_volume
Part ID: 2
13 Topo Edges
9 Topo Faces
1 Topo Volumes

0 Edge Zones
Edge Zone Name(s) : []
2 Face Zones
Face Zone Name(s) : [inlet, outlet]
1 Volume Zones
Volume Zone Name(s) : [volume]

2 Label(s)
Names: [inlet, outlet]

Bounding box (-203.2 -228.6 -50.8)
(203.2 203.2 50.8)

Mesh Summary:
87059 Nodes
5403 Poly Faces
0 Quad Faces
0 Tri Faces
5403 Faces
26073 Poly Cells
0 Hex Cells
0 Prism Cells
0 Pyramid Cells
0 Tet Cells
26073 Cells
0 out of 9 TopoFaces are unmeshed

n_topo_edges : 13
n_topo_faces : 9
n_topo_volumes : 1
n_edge_zonelets : 0
n_face_zonelets : 0
n_cell_zonelets : 0
n_edge_zones : 0
n_face_zones : 2
n_volume_zones : 1
n_labels : 2
n_nodes : 87059
n_faces : 5403
n_cells : 26073
n_tri_faces : 0
n_poly_faces : 5403
n_quad_faces : 0
n_tet_cells : 0
n_pyra_cells : 0
n_prism_cells : 0
n_poly_cells : 26073
n_hex_cells : 0
n_unmeshed_topo_faces : 0

Maximum skewness: 0.753242

可以利用下面的代码保存网格:

mesh_file = 'mixing_elbow.cas'
mesh_util.write(mesh_file)
assert os.path.exists(mesh_file)
print('nExported file:n',mesh_file)

在当前路径下输出网格文件mixing_elbow.cas。在Fluent中打开,如下图所示。

边界信息如图所示。

这里将两个入口都命名为inlet,边界命名通常是在几何创建时完成的。利用这种方法无法根据边界名称推测合适的边界类型,只能手工在Fluent中修改了。


(完)

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

赞(0) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《pyANSYS|利用PyPrimeMesh生成流体网格》
文章链接:https://www.topcfd.cn/34973/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

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

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

支付宝扫一扫

微信扫一扫

登录

找回密码

注册