从(5)式中可以发现,求解过程不仅需要知道基函数,还需要知道基函数的梯度,因此对基函数进行梯度运算,得到:
二阶插值基函数的梯度结果不再像一阶基函数梯度是一个系数,因此要得到具体的系数矩阵,就得使用积分公式计算或者查表获得,这里给出具体计算公式与常见结果的积分表:
同理,可以推导:
整合矩阵,得到:
上述过程详细展示了有限元离散方程中的两个重要的单元系数矩阵推导过程。
在组装系数矩阵之前,需要知道局部编号到全局编号的映射关系,为了方便起见,这里展示2*3网格剖分尺度的网格,如下三角形网格剖分与映射关系:
a.网格尺寸2*3的结果对比:
误差主要体现在5、8号点,二阶三角形的误差最小,一阶三角形的误差最大,四面体网格的误差居中。同等1阶情况下,四边形精度要好于三角形。
查看文献解释“四边形网格采用的基函数属于双线性插值函数”,我理解为三角形的基函数是纯粹的线性基函数,而四边形网格的基函数是由一维线性基函数的乘积组成,组成后就成了双线性插值,精度就更高一些。在公式中具体体现为:三角形线性基函数的梯度就等于对应方向的常系数,而四边形对应方向的梯度不是常系数。
一阶三角形网格计算结果:
二阶插值三角形网格计算结果:
对比结果,20*20网格的1阶三角形网格的精度范围与1阶四面体的精度范围是一致。二阶三角形精度远高于一阶,误差低至5e-5次方。
虽然二阶精度远远高于一阶,但是未知数增加到1861个,系数矩阵则是1861*1861,相对于一阶矩阵的441个增加了4倍多,计算量也增加非常明显。
a.三角形的二阶插值基函数的复杂度明显高于一阶基函数,尤为体现在单元系数矩阵的推导过程中;其次由于未知数落在了三角形的边中心点,因此还需要写算法得知全局三角形边的编号,也是一个比较麻烦的问题。
b.同等网格下二阶的计算精度明显是高于低阶的,这也符合有限元的基本规律;值得关注的是,双线性四边形的精度明显是高于线性插值的三角形基函数,这点对于我们选择三角形、四面体作为基本剖分单元的时候值得参考。