网站公告 | 本论坛只支持微信登录!暂时不支持手动注册会员!微信登录可以获取本站所有资源!

 青浦修电脑 青浦笔记本维修 青浦手机维修 青浦电器维修

找回密码
立即注册
搜索
热搜: 活动 交友 discuz
发新帖

5万

积分

0

好友

1万

主题
发表于 2022-9-11 21:05:04 | 查看: 1093| 回复: 0
使用Gmsh对现有的网格进行加密,导出后发现只有边界面上的单元,体单元全部未导出。使用gmsh -h查看使用帮助,发现加上–saveall能导出所有的单元。于是加上–saveall参数,体单元如愿都输出到网格文件中了。
6 \) x1 c5 i! u( h, Y8 A但是–saveall选项有一个坑。Gmsh的帮助中是这样描述–saveall选项的: Save all elements (discard physical group definitions)。无论是GUI界面操作,还是CLI命令行,都会看到备注的 “discard physical group definitions”。为什么说这是一个坑呢?假如你已经有一个.msh文件,边界的物理标记都已经设置好。通过Gmsh加密后,想要保存所有单元,就必须使用–saveall选项,那么网格中的边界标记都被丢弃了。没有边界标记的网格放到CFD程序里,是无法计算的。所以有人也很有疑惑,参见这个帖子。7 h& z7 A+ d; b
出现这个问题,是用户对Gmsh中的”physical entities”理解不够造成的。Gmsh的官方文档中,这句话很好解释了上述现象的原因:”if physical entities are defined, the output mesh only contains those elements that belong to physical entities”。 原网格文件中的体单元没有标记,所以加密后不会被输出到网格文件中;如果使用–saveall强制导出,Gmsh只好把边界的物理标记也一并丢弃。
/ M; H1 |  y( F  h6 u) r2 ~8 p" y一个可行的解决方案是:在用Gmsh处理前做一个预处理,给体单元分配一个特殊的物理标记,网格加密输出到文件后再还原标记。这样既让Gmsh能识别各个物理单元组,也避免使用–saveall参数而丢弃标记信息。/ w$ _. |# y! K( Y, v- \' ^
具体操作如下:找到原网格文件中的体单元标记,例如对于 “4 2 0 0″这样一组标记(一个典型的四面体),使用sed批量修改物理标记为9:! x( R5 Q1 s4 O$ N' y
sed -i 's/4 2 0 0/4 2 9 9/g' input.msh
9 R6 f* r: Z: |% ~( x, r接下来用Gmsh输出加密网格并还原物理标记:
- P6 c2 e  Y- U8 W1 pgmsh -refine -o refine.msh -format msh input.msh
! A5 |" _' ]+ K8 ~+ \2 W7 ased -i 's/4 2 9 9 /4 2 0 0/g' refine.msh" f- j! \, z, e' v' ]. Q4 U
通过上述的预处理后后处理动作,refine.msh文件中的网格标记就和input.msh中一样了。
! N, \' M1 |, A1 F1 z参考[ol]
  • http://gmsh.info/doc/texinfo/gmsh.html[/ol]AD:【加速器推荐】 搬瓦工官方代理服务Just My Socks,高速CN2 GIA线路流畅访问外网,被墙自动更换IP打赏赞(2)
  • 收藏回复 显示全部楼层 道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    QQ|Archiver|手机版|小黑屋|青浦海洋数码电脑城 ( 沪ICP备18024137号 )

    GMT+8, 2026-8-3 06:26 , Processed in 0.107784 second(s), 28 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表