tetgen手册 下载本文

内容发布更新时间 : 2024/5/4 1:29:38星期一 下面是文章的全部内容请认真阅读。

输入文件可以是不同的文件,这取决你用的参数选项。如果没有使用命令行参数的话,那么输入文件必

须要用后缀名为.node的文件格式,这类文件包含一个三维的顶点列表。结果是将产生这个点集的德洛内四面体剖分。

如果使用了命令函参数p,输入文件的后缀名必须为.poly, .smesh, .off, .stl, 或者是.mesh。这些文件描述的

是一个复合体(或者表面网格),运行后将会产生这类对象的边界约束德洛内四面体剖分。如果同时使用了pq参数,那么运行后会生成符合用户质量要求的四面体网格。

如果使用了参数r,那么程序会读入一个已经存在的四面体网格。这里你必须同时提供.node 和 .ele 文

件,它们共同描述了一个四面体网格,当然 .node与 .face 或者.node与 .vol 的文件组合都可以,此时的输入文件参数可以不带后缀名。

如果使用命令行参数q,这个网格将会依据这个新的网格质量和变量限制进行优化。 章节4描述了文件格式。

3.2 命令行选项

下面对每一个选项作了简单的描述。直接输入命令tetgen时将会显示这些信息。 -p Tetrahedralizes a piecewise linear complex (.poly or .smesh file). 四面体剖分一个PLC网格文件,文件后缀名须为.poly or .smesh

-q Quality mesh generation. A minimum radius-edge ratio may be specified (default 2.0). 网格质量控制参数,主要设置最小半径边缘比(默认为2) -a Applies a maximum tetrahedron volume constraint. 控制产生四面体的最大体积

-A Assigns attributes to identify tetrahedra in certain regions. 为产生的四面体分配属性用来辨别其所在区域

-r Reconstructs and Refines a previously generated mesh. 重构和优化之前产生的网格文件

-Y Suppresses boundary facet s/segments splitting. 控制边界面/段分割

-i Inserts a list of additional points into mesh. 插入一系列额外的点到网格中 -M Does not merge coplanar facets. 不用合并共面的facets

-T Set a tolerance for coplanar test (default 1e-8). 为共面测试设置极限值

-d Detect intersections of PLC facets. 检测PLC facets的交集

-z Numbers all output items starting from zero. 所有输出项的数字都是从0开始

-o2 Generates second-order subparametric elements. -f Outputs faces (including non-boundary faces) to .face file. 输出面(包含非边界面)到.face文件 -e Outputs subsegments to .edge file. 输出子段到.edge文件

-n Outputs tetrahedra neighbors to .neigh file. -g Outputs mesh to .mesh file for viewing by Medit. -G Outputs mesh to .msh file for viewing by Gid. -O Outputs mesh to .off file for viewing by Geomview. -J No jettison of unused vertices from output .node file. -B Suppresses output of boundary information. 控制边界信息的输出

-N Suppresses output of .node file. 控制.node文件的输出

-E Suppresses output of .ele file. 控制.ele文件的输出

-F Suppresses output of .face file. 控制.face文件的输出

-I Suppresses mesh iteration numbers. 控制网格迭代数目

-C Checks the consistency of the final mesh. 检查最终网格的一致性

-Q Quiet: No terminal output except errors.

-V Verbose: Detailed information, more terminal output. -v Prints the version information.

-h Help: A brief instruction for using TetGen.

Table 1: Overview of TetGen’s command line switches

3.2.1 –p 四面体剖分一个PLC

-p 选项表示读入文件中的PLC,文件后缀名可以为.poly or .smesh,并且产生这个PLC的约束德洛内四面

体剖分。

约束德洛内四面体剖分可能有一些特别的点被添加到这个PLC的输入边界。如果你不想有顶点被添加到

这个边界上,你可以使用选项-Y。

如果没有设置文件扩展名,tetgen将自动寻找扩展名为.poly or .smesh的文件,并且选择其中一个可以使

用的文件。例如,“tetgen -p xxx” 是打开名为xxx.poly的文件,如果这个文件不存在的话,就会打开名xxx.smesh的文件,也有可能打开xxx.node;在整个PLC中读数据,产生一个约束的德洛内四面体剖分并且把结果保存到xxx.1.node, xxx.1.ele, and xxx.1.face.三个文件中。

其他格式的的多边形文件也可以用来作为输入文件。Tetgen根据扩展名来辨认文件格式。Tetgen支持下

面的文件格式:.off, .ply, .stl, and .mesh.

Tetgen调用时如果同时使用了-q和-a,将会产生这个PLC的四面体网格质量。-p和-r不能同时使用。

3.2.2 -q 网格质量生成

选项-q是用shewchuk的德洛内优化算法来控制生成网格的质量。它添加顶点到约束的德洛内四面体剖分(和-p一起使用)或者是先前产生的四面体网格(和-r一起使用),以确保每个四面体的半径边缘比小于2.0。用户可以在-q后加上数值来设置最小半径边缘比。对于太小的比列,比如比1.0还小的话,tetgen可能不会终止。

如果PLC的输入角度或者是输入的二面角没有小于60度的,这个算法将保证终止,并且没有四面体的半径边缘会大于2.0。实际上,用户是能够观察到半径边缘比降至1.414或者更小时的成功终止。 下面是一些使用-q的例子。可以测试一下,然后和包含的例子文件比较一下: Tetgen -pq example tetgen tetgen

3.2.3 -a 强加有限元体积

-a 可以对所有的四面体强加一个最大的体积约束。在a后面跟一个数值,表示产生的四面体的体积都应

-rq1.414 example.1 -ra0.5

example.2

该小于这个数值。

如果没有设置最大体积,也没有使用选项r,tetgen将读入后缀名为.poly or .smesh的区域部分。.poly file

or .smesh file能够有选择地为每个有小平面限制的区域包含一个有限约束,从而用更多的设置方式来从控制PLC在四面体剖分时产生的四面体密度。

用户可以通过调用-a 两次来为一些区域强加一个固定的体积约束和一个变化的体积约束,一次带数值,

一次不带数值。每一个体积设置的数值可以包含小数点。

如果没有设置数值,也没有使用r选项,那么.vol 文件中可以为每一个四面体包含不同的体积约束。它对

基于后验误差估计的优化有限元和有限元网格是非常有用的。

3.2.4 –A 分配区域属性

-A 选项表示为每一个四面体分配额外的属性(一个整数),表明每一个四面体属于哪一个方面有界区域。分配给区域的属性是保存在.poly or .smesh 文件中,如果一个区域在两个文件中没有被明确地标识,那么这个区域中的四面体将被自动是分配为0属性。

如果你想tetgen自动给一个区域中的每个四面体分配属性,即使这个区域没有在.poly和.smesh文件中分

配属性,那么你可以使用选项 –A两次(比如-AA)。在你的网格输出中,同一个区域的所有四面体将获得非0值。默认值是一些1,2,3等数字。如果当前属性被使用,它将跳过并将使用下一个可以使用的属性。

3.2.5 -r 重构/优化网格

选项 –r 用来重构先前生成的网格。网格可以从.node and .ele file, .face file读入。如果.face文件存在,它将被读入并且使用网格中的约束表面,否则的话tetgen将会自动标识这些表面,内部表面也通过比较两个相邻的四面体属性来标识。字段将从其存在的表面自动标识。 重构的网格和原来的网格是通过不同的迭代数值来区别。

例如,“tetgen -r xxx.1”表示可能是从xxx.1.node,xxx.1.ele或者是xxx.1.face, xxx.1.edge文件中读入网格,当然前提是这些文件已存在;然后重构这个网格;然后再把结果输出到

xxx.2.node,xxx.2.ele,xxx.2.face文件中。现在xxx.2就能够作为上面命令的输入文件,其输出结果是另一个网格,并且保存在xxx.3.node 等文件中。网格迭代数量允许用户创建一系列质量越来越好的网格。

用户可以通过把使用 –r 和-q ,-a, -i选项结合起来来优化网格。下面是几种可能的方法: -A选项只有在-p使用并且-r不使用时才有效。

用户可以使用-q选项并且带一个较小的数值来实施更严格的质量约束,也可以使用-a选项并在其后面加上一个比之前优化网格时更小的有限元。

用户可以创建一个.vol文件,为每一个四面体设置最大有限元,并使用-a选项(后面不带数值)。每一个四面体的有限元约束都被应用到对应的四面体上。

用户可以创建一个.node文件。文件包含一个插入到网格中的额外顶点列表。可以使用-i去通知tetgen有一些额外的顶点需要插入。

-r 不能同 –p 和 –I 同时使用。

3.2.6 -i插入另外顶点

-i 选项表示插入一些另外的顶点到德洛内四面体剖分中(使用-p),或者是先前产生的网格中(使用-r)。这些

插入的顶点是从来源于xxx-a.node文件,xxx代表输入文件的文件名,当然其后缀名可以为.poly or .smesh, or .ele。这个选项在用用户定义的顶点优化有限元或者是有限元网格时是非常有用的。下面是几个你需要注意的要点:

位于网格域外面的顶点将被tetgen忽略

网格在插入一些点后可能不是约束德洛内型或不再遵守德洛内型。然而,通过与-q选项一起使用,tetgen将自动添加一些额外的点以确保网格的符合德洛内型的特性。

3.2.7 –T 设置公差

选项 –T 用来设置用户定义的公差,这个公差在tetgen多次计算都将用到,默认值是1e——8.

原则上,用来定义一个PLC的小平面的顶点集应该是恰好是共面的,但实际上由于在计算机用的中浮点

数格式不一致的原因导致它是非常困难的。

Tetgen可以接受顶点不是太确切但近于共面的小平面。只有这个v/l3的比列是小于给出的公差就可以认为

a,b,c,d是共面的。这里v和l分别四面体abcd的体积和平均边的长度。

3.2.8 -Y 边界上禁止施耐泰点

选项 –Y表示禁止在外部边界产生施耐泰点。内部施耐泰点仍然可以产生。

当要求网格边界必须保持一致能够与一些相邻的网格相符合时,这个选项就非常有用。 用户可以使用-YY以保护所有边界分裂,当然也包括内部边界。

为了提高网格质量,用户可以同时使用-Y和-q,tetgen可以这样使用,不过可能使产生的网格包含的四面体质量较差。然而,如果先前所有的边界划分很合理并且有非常紧凑的间隔补丁的话,它还是会产生较好想效果 3.2.9 其他选项

-I -I选项没有用到内部的迭代次数,它禁止输出.node文件,所有你的输入文件不会被覆盖。-r选项也不能用,因为那样会覆盖你的输入文件.ele。如果用户使用.node文件作为输入的话,像-q,-a,-s,or –t这些选项就不能使用,因为没有.node文件可以写,所有没有添加的施耐泰顶点的任何记录。

-z -z选项表示所有输出项目的数值都是从0开始。在从其他程序调用tetgen的情况下这个选项是非常有用。

-o2 如果使用了-o2这个选项的话,tetgen将使用二次元产生网格。二次元每个元素有10个节点,而不是4根据这些输入的顶点集选择一个合适的公差经常有助于减少这个插入点的数目和提高网格质量。