MDI 文件

概述

在求解实际的物理问题时,往往会包含多个物理场的求解。每个物理场至少包含一个微分方程。在对每个物理场进行求解的时候,除了 FEtch 系统提供的代码库,用户可能还需要调用一些自定义的 Fortran 子程序或函数库。这里要介绍的 MDI 文件就是用来统筹管理每个物理场的信息的。它会从一种全局的视角对求解的问题进行说明。文件的主要内容包括:

MDI 文件名代表工程项目名,要与 GCN 文件名保持一致。各个物理场信息在 MDI 文件中的编写顺序也要与 GCN 文件中的编写顺序保持一致。

语法规则

坐标系声明

第一行给出坐标系名称,表示该问题采用什么样的坐标系,如二维直角坐标表示为

2dxy

系统全面支持最常用的 7 种坐标系,具体选项如下表。

标志符 坐标系
1dx 一维直角坐标
1dr 一维极坐标
2dxy 二维直角坐标
2drz 二维轴对称柱坐标
3dxyz 三维直角坐标
3droz 三维柱坐标
3drso 三维球坐标

物理场信息

从第二行开始,每个物理场都要给出一个信息段。该段信息的编写格式如下。

1)以 "#" 字符开头,然后按顺序给出场符、初始值个数、自由度个数、自由度名称(彼此之间用空格隔开)。如

#a 0 3 u v w

这表示 a 场没有初始值,总共 3 个自由度,自由度名称为 u、v 和 w。

2)随后给出本场所采用的 PDE 类型(包括 PDE 和 FBC)的文件, 每个 PDE 类型文件名占用一行,并在文件名的后面给出所采用的单元类型和数值积分方式(可以有多个)。如

pde disp t3g2 q4g2
fbc disp l2g2

这表示该场的控制方程由 disp.pde 和 disp.fbc 文件给出,体单元为 3 节点的三角形单元(t3)和 4 节点的四边形单元(q4),边界单元为 2 节点的线单元(l2),数值积分方式全部为 2 点高斯积分。

系统当前支持的单元类型如下表。

形状符 单元类型 节点数 英文名参考
s 点\弹簧单元 1 Point\Spring
l 线单元 2、3 Line
t 三角形单元 3、6 Triangle
q 四边形单元 4、8、9 Quadrangle
w 四面体单元 4、10 Wedge\Tetrahedron
p 三棱柱单元 6、15、18 Tri-Prism
c 六面体单元 8、20、27 Cube\Hexahedron

在此基础上,对于多物理场全耦合问题,系统还全面支持使用 Taylor-Hood 单元,即对不同的自由度采用不同阶次的插值方法。具体使用方法可参考相关的多场耦合算例。

关于数值积分,FEtch 系统提供了两种方案:节点积分高斯积分。单元类型符之后,如果留空,则表示使用节点积分;如果紧跟 g1、g2 或 g3,则表示采用 1 点、2 点或 3 点的高斯积分。

理论上,在相同节点数的条件下,节点积分的精度要低于高斯积分的精度,但不会改变整体的有限元逼近精度的阶次。使用节点积分的一个重要原因是,在生成单元质量矩阵和阻尼矩阵时可以得到对角矩阵,从而提高数值稳定性,并简化方程的求解。相关的更深入的内容,请参考有限元理论的专业文献。

:与其他单元相比,点单元是一种非常规的单元,主要用于施加点荷载和点约束。它只支持 FBC 类型文件,且不需要单元积分。详见 FBC 文件语法说明。

3)如果脚本中调用了自定义的 Fortran 源文件,应给出所使用文件的名称。为此,本系统提供了 f90、for、lib 和 mod 语句,用于声明项目用到的不同类型的源文件名。具体说明参见下表。

语句 对应文件
f90 f90 自由格式的源文件
for f77 固定格式的源文件
lib 已编译好的 lib 库文件
mod 已编译好的 mod 模块接口文件

也就是说,如果一行以 f90 开头,则应附上 f90 自由格式的源文件;以 for 开头,则应给出 f77 固定格式的源文件;以此类推。例如

f90 plasa stresa  
for plasb stresb
lib myplas
mod plasmod

:在整个 MDI 文件中,用户调用的 Fortran 源文件声明一次即可。也就是说,这些文件是所有物理场共享的。

综合案例

在此给出一个固体弹塑性力学问题的 MDI 文件,其中 a 场用来算位移,b 场用来算应力,文件具体内容如下:

mdi 文件 说明
2dxy
#a 0 2 u v
pde disp q4
fbc disp l2
fbc load s1
f90 plas stres
#b 0 3 sx sy sxy
pde stress q4
#
在二维直角坐标系下求解
a 场,无初始值,两个自由度,自由度名称为 u、v
调用 disp.pde,单元类型为 4 节点矩形单元,采用节点积分
调用 disp.fbc,单元类型为 2 节点线单元,采用节点积分
调用 load.fbc,单元类型为 1 节点点单元
调用 plas.f90 和 stres.f90 文件
b 场,无初值,三个自由度,自由度名称为 sx、sy、sxy
调用 stress.pde 来描述,单元类型为 4 节点矩形单元,采用节点积分
文件结束



打赏一个
取消

感谢您的支持,我们会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝或微信扫一扫,即可进行扫码打赏哦