扫一扫,微信登陆

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

搜索
查看: 1108|回复: 0

Gmsh网格文件格式说明 - 青浦海洋数码电脑城

[复制链接]

1万

主题

1万

帖子

5万

积分

论坛元老

Rank: 8Rank: 8

积分
56206
发表于 2022-9-11 21:05:03 | 显示全部楼层 |阅读模式
本文目录
  • 文件结构
  • 块格式本文中的网格文件指的是Gmsh的ASCII文本文件,内容主要参考Gmsh的官方文档:http://gmsh.info/doc/texinfo/gmsh.html#MSH-ASCII-file-format。; T" `5 y' |  j: r; d- X' i' B5 a
    文件结构返回目录Gmsh网格文件由一个或多个块(section)构成。块定义以$Name开始,$EndName结尾,例如$Nodes和$EndNodes共同定义一个块。$MeshFormat块是必须的(第一个出现的块),$Nodes, $Elements等块可选。如果定义了$Elements块,则必须给出$Node块。目前$Nodes和$Elements块在一个文件中只允许出现一次(未来版本可能会更改),其他块可重复多次。如果遇到了未定义的块,Gmsh将跳过该块。利用此特性可以为Gmsh网格文件增加注释,例如放在$Comment和$EndComment包裹的块中。
    . y' H2 P) R9 q 块格式返回目录以下对常见的各个块格式做说明。. ?- i# u& H/ q6 u0 D8 ^6 E
    MeshFormat$MeshFormat块给出三部分信息:
      J3 T' Z* q, J0 @7 G9 G[ol]
  • 文件格式版本号,目前是固定值2.2;
  • 文件类型,在ASCII文件中值为0;
  • 数据长度,即单精度浮点数所占字节数,通常为8。[/ol]一个典型的MeshFormat块:& M0 T* I. g1 K6 D- p) O
    $MeshFormat
    4 Z  V5 T' G  E3 p/ C2.2 0 8
    . Q$ y/ [- H" A) d; r* S$EndMeshFormat: m0 i" k4 r3 ]9 m6 q0 `7 Q: k
    NodesNodes块第一行为顶点总数,接下来每一行按照“顶点编号 X坐标 Y坐标 Z坐标”的格式定义一个顶点。Gmsh是三维网格生成器,二维顶点只需把Z坐标设置为常数即可。$ [6 i8 e% D- B. W3 {& u
    一个典型的Nodes块:
    / U* \. A6 `" t$ [8 F  x0 L$Nodes* U& G+ a/ g5 k5 r# e7 `+ e
    49 e1 _6 j4 v. P0 n' `/ H$ _3 U
    1 0.0 0.0 0.0
    $ {8 r8 u; b' I* H( j2 1.0 0.0 0.0% y+ G9 N1 p$ u5 q# H& o1 h3 x' ~
    3 1.0 1.0 0.07 f  W9 c3 Y9 s/ i# T2 m5 I
    4 0.0 1.0 0.0& a# Z  G8 o1 r" B
    $EndNodes$ g( A! V1 [1 C* O  G' x
    Elements注意:Gmsh默认Nodes块出现在Elements之前。
      b/ @% a% W7 \1 fElements块是网格中最关键的块,也是结构定义相对复杂的块。Elements块的结构如下:
    4 c. `7 ]' {0 C8 j4 a3 H8 s网格数
    1 B" Y" l- v, a0 K; v. M( x$ o/ L网格编号 网格类型 tag数量  tag列表   顶点列表
    9 t% u3 i# J8 g# t( F网格单元的顶点数由单元类型决定,因此定义行中未出现顶点数字段。
    . o* Z4 O, P+ \' J理论上,网格的顶点数和tag数可以是不小于0的任意整数,所以定义网格单元的行长度不固定,单元可能有不同数量的tag以及顶点。; {/ u8 P2 g  d% O
    Gmsh支持的主要网格类型编号如下:' ^/ N# O/ W! V$ _6 z6 @( Q, I1 p% v9 H
    1: 两个点组成的线段9 E/ n5 j2 E. P6 Z$ m: }1 F9 o' u
    2:三个点组成的三角形0 U, Z3 h% q; S: }, E/ q
    3:四个点组成的四边形0 y8 W1 z. d0 L/ o) ^
    4:四个点组成的立方体# q5 b* e. e/ ^, C
    5:八个点组成的六面体
    7 i, D  Y6 m9 p2 u7 C# r$ [6:六个点组成的棱柱
    ) n+ q8 i1 T8 c! ?6 F7:五个点组成的金字塔体: f  @) w0 Z5 L6 w/ f
    8:三个点组成的二阶线段 (2个起止顶点+1个边上顶点)$ S; k$ O: n. |7 L- u" z
    9:六个点组成的二阶三角形 (3个顶点+3个边上顶点)
    9 L" x' h1 x, \7 O3 ^( s10:9个点组成的二阶四边形 (4个顶点+4个边上顶点+1个面上顶点)
    8 u: W+ a- q: C# s& ?! @11:10个点组成的二阶立方体 (4个顶点+6个边上顶点)4 A  E# k% j0 a6 u
    12:27个点组成的二阶六面体 (8个顶点+12个边上顶点+6个面上顶点+1个体节点)
    1 E% E7 r( z. i( x# M( o13:18个顶点组成的二阶棱柱 (6个顶点+ 9个边上顶点+3个四边形面上顶点)
    9 ^$ Q6 y0 O9 G3 z2 V/ Q/ ~( w14:14个顶点组成的二阶金字塔 (5个顶点+8个边上节点+1个底面四边形的面上顶点)7 m' S8 h9 s0 T3 ^% W
    15:单个顶点
      e" G: l  R' ]2 W# ^16:8个顶点组成的二阶四边形 (4个顶点+4个边上顶点)& H  ~  R! \# ~1 x+ G8 f
    17:20个顶点组成的二阶六面体 (8个顶点+12个边上节点)
      V! R( T6 k9 r6 X- ]; h1 O18:15个顶点组成的二阶棱柱(6个顶点+9个边上节点): |( u9 y& |7 }0 Q$ \4 ?
    19:13个顶点组成的二阶金字塔 (5个顶点+8个边上节点).5 ~  w3 W( S8 w& b6 t( b3 g
    其他高阶网格定义请参考官方文档6 A. ?4 {4 z2 o( D# |& o. }3 J4 }
    常规情形下,每个网格单元都包含如下tag:一个指示网格所属的物理实体的tag,个个指示网格所归属的几何实体的tag,一个指示网格单元所在的分区编号的tag。Gmsh和大多数代码要求单元至少包含前两个tag。
    ! n2 a! _4 s9 g, P$ I顶点列表给出组成网格单元的顶点编号,其中编号是出现在$Nodes块中的顶点编号。对于高阶网格单元,Gmsh按照如下顺序对顶点进行编号:
    0 [0 m* j; H1 d; A; m3 D[ol]
  • 单元的基本顶点
  • 每个边上的顶点
  • 每个面上的顶点
  • 体顶点[/ol]总体原则即:高阶网格顶点出现在低阶网格顶点之后。不能处理高阶网格的程序,只需要读取低阶网格顶点即可。
    ! d' G8 c' S; h: g其他块的字段含义请参考官方文档。
    ; r6 `1 r+ d6 g效率提示Gmsh没有要求元素的编号是连续的。但出于效率考虑,请尽量使用连续、紧凑的编号。例如两个顶点的编号,不用0和1,而是1, 10000,会导致程序性能下降:Gmsh不得不使用map而非数组来存储和访问元素,后处理程序中会分配10000个单元(大部分是无用的空值)的数组,而这些代价都是可避免的。5 G, L9 \2 W; G6 Z5 c- F
    AD:【国外VPS推荐】 搬瓦工三网回程CN2 GIA VPS,季付46.87$打赏赞(2)
  • 回复

    使用道具 举报

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

    本版积分规则

    Copyright © 2001-2013 Comsenz Inc.Powered by Discuz!X3.4( 沪ICP备18024137号 )
    快速回复 返回顶部 返回列表