使用Gmsh画非均匀网格

    xiaoxiao2021-03-26  93

    Gmsh简介

    Gmsh是一款开源的三维非结构有限元网格生成软件. 它内置了前后处理的模块以及高阶网格生成工具. Gmsh有图形和脚本两种模式,用户可以快速生成简单的有限元网格. Gmsh是高精度格式求解器最常用的前处理软件. 使用Gmsh时, 用户首先定义几何模型, 然后Gmsh将自动生成网格, 最后用户可以根据需要选择分区等后处理功能. Gmsh的几何生成和其他常用的CAD软件类似, 都是先由点生成线, 再到面, 最后生成体. 有了几何模型之后, 下一步是可以利用Gmsh的选项生成非结构的网格. 最后是后处理的阶段. 所有这些操作都是可以通过脚本实现. 下面以几个简单例子说明Gmsh脚本的编写

    例子

    均匀网格

    均匀网格是一个最简单的例子. 下面是一个区域为正方形均匀网格. 脚本代码如下: xmin = -0.5; xmax = 0.5; ymin = 0; ymax = 1; NX = 16; NY = 16; Point (1) = {xmin, ymin, 0};//设置点 Point (2) = {xmax, ymin, 0}; Point (3) = {xmax, ymax, 0}; Point (4) = {xmin, ymax, 0}; Line (1) = {1,2};//连线 Line (2) = {2,3}; Line (3) = {3,4}; Line (4) = {4,1}; Transfinite Line {1,-3} = NX+1;//在线上布置点 Transfinite Line {2,-4} = NY+1; Line Loop (1) = {1,2,3,4};//将封闭的线连成面 Plane Surface (1) = {1};//生成面 Transfinite Surface {1};//网格生成 Recombine Surface {1};//得到结构 Gmsh脚本语言的语言和C语言类似. 脚本的内容也是按照定义几何, 生成网格, 后处理等步骤编写的. 本例中, 区域是边长为1的正方形. 每个边上有16个点. 最终生成256个四边形网格.

    非均匀网格

    上边是最简单的Gmsh网格生成例子, 几何都是通过自己定义得到的. 这在几何比较简单的时候是可行的, 如果几何非常复杂, 使用这种方式将非常繁琐. Gmsh提供了Extrude的功能, 使编写脚本的效率提高.下面的代码的功能和上面的是一样的. N = 16; Point(1) = {-0.5, 0, 0, 0.1}; line[] = Extrude {1, 0, 0.} { Point{1}; Layers{N+1}; }; Physical Line(1) = {line[1]}; surface[] = Extrude {0, 1, 0} { Line{line[1]}; Layers{N+1}; Recombine; }; 现在的脚本,看起来比较简单. 下面一个例子是一个非均匀的例子, 比较复杂. N = 1; // INPUT N=p+1 lc = Pi/nl; Point(1) = {-0.5, 0, 0, lc}; ny = 16; r = 1.2^(N/2); h0 = 0.5*(1-r)/(1-r^(ny/2)); h=0.; For i In {0:(ny-2)/2} h += h0*r^i; y[i] = h; y[ny-i-2] = 1-h; EndFor y[ny/2-1] = 0.5; y[ny-1] = 1.; For i In {0:ny-1} layer[i] = 1; EndFor line[] = Extrude {1, 0, 0.} { Point{1}; Layers{ layer[], y[]}; }; Physical Line(1) = {line[1]}; surface[] = Extrude {0.0,1.0,0.0} { Line{line[1]}; Layers{ layer[], y[] };Recombine; };
    转载请注明原文地址: https://ju.6miu.com/read-660125.html

    最新回复(0)