例子 1

目录前一页后一页

/********************************************************************* 
 *
 *  Gmsh tutorial 1
 * 
 *  变量,基本实体,物理实体,背景网格
 *
 *********************************************************************/

// Gmsh 中所有几何体的描述使用是一种类似于 C 的语言。最简单的
// 构造这种语言的方法是 "affectation".

// 所有的命令都使用分号结尾。下面的行定义了一个叫做 'lc' 的变
// 量,并且设置其值为 0.007 :

lc = 0.007 ;

// 这个新创建的变量能够被用来定义一个 Gmsh 的基本实体:一个点
// 'Point'。一个点能够用四个数的表来表示,包括它的坐标 x, y, z
// 以及一个特征长度用来指定该点处产生出来的网格尺度:

Point(1) = {0,  0,  0, 9.e-1 * lc} ;

// 网格尺度指的是网格中线段的长度、三角形的外接圆的半径和四面
// 体的外接球的半径。实际上的网格尺度的分布是使用的预先指定的
// 点上的特征尺度通过插值得到的。指定特征长度还有其他方法:比
// 如 吸引子(参考 t7.geo)和背景网格(参考 bgmesh.pos)。

// 如同上面的这个定义,更加复杂的表达式也能够通过变量构造出来。
// 这里,上面的变量 'lc' 被乘上了常数 9.e-1 作为了上面定义这个
// 点的第四个参数。
//
// 下面的一般的语法规则能够应用到定义所有的几何实体上:
//
//      “如果一个数定义了一个新的实体,它就是放在一对小括号
//        中,如果一个数引用了一个以前定义的实体,那么它就是
//        放在一对花括号中。”
//
// 下面我们又定义了三个点:

Point(2) = {.1, 0,  0, lc} ;
Point(3) = {.1, .3, 0, lc} ;
Point(4) = {0,  .3, 0, lc} ;

// Gmsh 中的第二种基本几何实体是曲线。直线是曲线中最简单的一
// 种。一条直线可以用一串点定义出来,比如下面的 Line 1 是从
// 点 1 出发的,到点 2 截止:

Line(1) = {1,2} ;
Line(2) = {3,2} ;
Line(3) = {3,4} ;
Line(4) = {4,1} ;

// 第三种基本实体是曲面。为了使用上面的四条线定义一个简单的
// 矩形曲面,我们要先定义一个曲线闭环(line loop)。一个曲线闭
// 环是一串连接着的线,每条线上都带着一个符号,用来表示这条
// 线的方向。

Line Loop(5) = {4,1,-2,3} ;

// The surface is then defined as a list of line loops (only one
// here):
// 然后这个曲面就能够使用一系列的曲线闭环来定义了(这里只有
// 一个):

Plane Surface(6) = {5} ;

// 这时候,Gmsh 知道所有的关于怎么显示这个矩形曲面和布上网格
// 的信息。但是我们还需要提供对网格中不同的元素(包括点、线、
// 三角形)指定区域指标(region number)。这可以通过定义物理实体
// 的方法实现。物理实体能够将网格中的元素分成组,给定一个区
// 域指标,并指定其定向。
//
// 比如,下面我们就将点 1 和点 2 组合到物理实体 1 中了:

Physical Point(1) = {1,2} ;

// 从而,两个元素会被同时输出到输出文件中,并具有区域指标 1。
// 对于曲线和曲面,也能这样指定相应的区域指标:

Physical Line(10) = {1,2,4} ;
MySurface = 100;
Physical Surface(MySurface) = {6} ;

// 所有的在剖分曲线 1、2、4的时候产生的线元素都会被存储为区域
// 指标为 10,所有在剖分曲面 6 时产生的三角形都具有区域指标 100。
//
// 如果没有定义物理实体,网格中所有的元素都被直接存储为缺省的
// 定向,其区域指标为它们的基本区域指标。请参考 FORMATS 文件
// 了解网格和后处理的格式。

目录前一页后一页