MATLAB上的有限元网格自动生成
2019-01-21谭建国
刘 瑶,谭建国
(国防科技大学,湖南 长沙 410073)
0 引 言
一般地,可以将有限元分析[1]划分为:建立模型(前处理)、计算求解、结果处理和评定(后处理)。其中,各阶段所用的时间占比分别为:40%~60%、5%~10%、30%~50%。在数值分析过程中,网格划分[2]是极其关键的一步,可以说直接决定了最终结果的准确性、有效性。MATLAB[3]具有简洁的语言、丰富的基础库函数、强大的数据处理和可视化能力等突出特点,利用MATLAB进行有限元前处理是值得研究的问题。
DistMesh[4]是基于MATLAB的有限元网格自动生成程序,由加州大学伯克利分校的Per-Olof Persson和麻省理工学院数学系的Gilbert Strang开发,相较于MATLAB自带的PDE工具箱仅能求解比较简单的二维模型的缺陷,它可以生成三角形或四面体的网格,对一般的二维和三维的建模都能进行良好的处理,具有程序简短明晰、网格质量高、可移植性好等突出优点,在MATLAB有限元前处理方面应用广泛。
但是由于DistMesh用来筛选和优化节点的距离函数是解析表达式,对简单的模型来说可以得到良好的应用,用户却无法实现对复杂模型的构造,这限制了DistMesh的工程应用和推广。目前比较通用的三维建模方式[5]有网格建模、多边形建模、面片建模、非均匀有理B样条(NURBS)[6]建模等,而因为良好的数学特性和强大的建模功能,NURBS能够比传统的建模方式更好地控制物体表面的曲线度,从而创建出更逼真、生动的造型,成为CAD中几何定义的标准技术。通用的三维CAD软件也都采用NURBS建模方法。
文中基于MATLAB的NURBS工具箱[7],对DistMesh进行改进,提出一种利用NUBRS曲线和曲面的方向来判断节点与曲线、曲面位置关系的方法,以完成对节点的筛选;……
