首页/文章/ 详情

pyANSYS|利用PyPrimeMesh生成流体网格

精品
作者优秀平台推荐
详细信息
文章亮点
作者优秀
优秀教师/意见领袖/博士学历/特邀专家
平台推荐
内容稀缺
1年前浏览2240

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

1 PyPrimeMesh介绍

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

PyPrimeMesh可以实现的功能包括:

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

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

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

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

  • 进行网格质量检查

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

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

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

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

 

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之道
FluentANSYS
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-05-09
最近编辑:1年前
CFD之道
博士 | 教师 探讨CFD职场生活,闲谈CFD里外
获赞 2547粉丝 11098文章 717课程 27
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈