不同的有限元问题会有不同的数据结构。为此,FEtch 系统推出了一套统一的有限元数据结构规范,可根据不同的有限元问题来自动生成不同的有限元数据结构格式,即面向 GiD 的前处理模板。为了保证数据文件的易读性和开放性,FEtch 系统将网格数据和材料参数数据分隔开来,使用 dat 和 mat 两种文件来进行记录。
-
dat 文件:全部的有限元网格数据的存储。
-
mat 文件:所有的单元所属材料参数的存储。
这里需要关注的是,第一类边界条件体现在节点约束上,会写入 GID 前处理产生的 dat 文件;第二类、第三类边界条件直接体现在方程的弱形式中,会写入 FBC 文件,因此相关的参数值由 mat 文件给出。
这两种文件都是纯文本文件,可方便地查看和修改。以下给两种文件格式的详细介绍。
DAT 文件格式
FEtch 通过配置 GiD 的模板文件(cnd 文件和 bas 文件)来控制前处理的数据输出结构,将全部有限元网格数据存储在单独的 dat 文件中。dat 文件具体格式主要包括以下 5 部分。
- 统计信息
- 节点坐标表格
- 指定节点规格数表格
- 节点初始值表格
- 单元节点信息表格
下面将针对有限元计算所涉及的有限元输入数据分别进行论述。表格的列数通常是变化的,为了表述简洁,以下用 "类型*n" 代表共有 n 列该类型的数。
统计信息
格式
节点总数(整型数) 最大单元数(整型数)
说明
该信息给出了问题的计算规模,在计算过程中决定了动态数组的大小。
节点坐标表格
格式
-1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
节点编号(整型数) 节点坐标值(实型数*3)
说明
这里的坐标值全部按三维直角坐标系来书写,计算时生成的程序会自动根据用户指定的坐标系进行变换。
指定节点规格数表格
格式
-2000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
节点编号(整型数) 节点自由度规格数((整型数+实型数)*n)
说明
这里 n 代表节点自由度数目。本系统用 1,0,-1 和大于 1 的整型数来表示节点规格数,它们的意义分别是:
- 1:节点上有自由度,但无约束
- 0:节点上无自由度
- -1:节点上有自由度,而且有约束
- > 1:具有相同整型数的自由度对应相同的方程号,即代数方程组的同一个未知量
未指定节点的默认自由度规格数为 1。无自由度的规定意味着不同节点可以具有不同数目的自由度,这对某些有限元问题,例如混合单元问题,是十分必要的。
节点初始值表格
格式
-3001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
节点编号(整型数) 节点初始值(实型数*n)
-3002 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
节点编号(整型数) 节点初始值(实型数*n)
-3003 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
节点编号(整型数) 节点初始值(实型数*n)
…
说明
该表格可以为空。 n 代表节点自由度数目。初始值通常出现于依赖时间的问题和非线性问题,具体数目随求解问题的不同而不同。例如求解瞬态温度场问题,要给出初始时刻温度值;用 Newmark 方法求解波动方程的问题,则要给出初始时刻位移值、初始时刻速度值和初始时刻加速度值。
单元节点信息表格
格式
-4000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
单元编号(整型数) 节点编号(整型数*n) 材料编号(整型数)
-n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
单元编号(整型数) 节点编号(整型数*n) 材料编号(整型数)
…
-5000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
说明
单元节点信息按体单元、面单元、线单元的顺序依次给出。这里 n 代表了该单元的节点数量,因此,这里会产出 n 列的节点编号数据。
最后一列的材料编号与 mat 文件中的材料标号一一对应,这样就建立起了网格的单元信息与材料信息的联系。
MAT 文件格式
mat 文件给出各个物理场单元的材料参数值。按体单元、面单元、线单元的顺序依次给出各种单元的材料信息。
格式
材料数量(整型数) 参数数量+1(整型数) 单元名称(字符串)
num 参数名称(字符串*n)
材料编号(整型数) 参数值(实型数*n) 材料编号(整型数) 参数值(实型数*n)
…
材料数量(整型数) 参数数量+1(整型数) 单元名称(字符串)
num 参数名称(字符串*n)
材料编号(整型数) 参数值(实型数*n) 材料编号(整型数) 参数值(实型数*n)
…
说明
这里 n 代表了单元所属材料参数的数量。参数名称和参数值都与 PDE 和 FBC 文件的 mate 行的信息相一致。或者说,mat 文件的默认内容全部是由 PDE 和 FBC 文件给出的,用户可自行查证。
材料编号从 1 开始逐渐增大,具体数量不受限制。因此,可以以此建立材料库,按需调用。使用时,仅需更新单元节点信息中关于材料编号的数据。
在程序成功生成后,用户修改最多的可能就是 mat 文件。为此,FEtch 系统客户端提供了专门的编辑功能,可方便地对 mat 文件进行读写操作。由于是纯文本格式,用户也可以使用自己的编辑器查看和编辑 mat 文件,但要保证符合上述的格式规定,以免出现莫名其妙的错误。
范例
下面给出一个简单例子。考虑三维的弹性静力学问题。取一个简单的正方体模型,底部完全约束,上部以面单元的形式施加竖向的均布荷载。对于上图中的四面体网格剖分,对应的 dat 文件内容如下:
9 11
-1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 -4.999245e-01 -4.999245e-01 0.000000e+00
2 4.999245e-01 -4.999245e-01 0.000000e+00
3 -4.999245e-01 4.999245e-01 0.000000e+00
4 -4.999245e-01 -4.999245e-01 1.000000e+00
5 2.166339e-01 2.166339e-01 5.068421e-01
6 4.999245e-01 4.999245e-01 0.000000e+00
7 -4.999245e-01 4.999245e-01 1.000000e+00
8 4.999245e-01 -4.999245e-01 1.000000e+00
9 4.999245e-01 4.999245e-01 1.000000e+00
-2000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 -1 0.0 -1 0.0 -1 0.0
2 -1 0.0 -1 0.0 -1 0.0
3 -1 0.0 -1 0.0 -1 0.0
6 -1 0.0 -1 0.0 -1 0.0
-4000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 3 1 2 8 1
2 2 6 3 5 1
3 2 6 5 9 1
4 6 5 9 7 1
5 5 9 7 8 1
6 5 9 8 2 1
7 6 3 5 7 1
8 8 5 2 3 1
9 3 5 7 8 1
10 7 8 4 3 1
11 3 4 1 8 1
-3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5 9 8 7 1
10 7 8 4 1
-5000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
mat 文件内容如下:
1 6 aew4g2
num pe pv fu fv fw
1 1.0e8 0.3 0 0
#
1 4 alt3g2
num fu fv fw
1 0 0 10.0
#