本文主要介绍Lagrange型形状函数在三角形单元上基函数公式和节点坐标公式的推导,以及相应的面积坐标相关知识。
求解区域即偏微分方程所定义的区域,或者说几何形状。
一维元素多是线元即线段。相应元素节点可以取线段的两个端点,或者线段中点。
二维元素有三角形,矩形,四边形等。相应元素节点可以取多边形的顶点,或者边的中点,以及多边形的形心。
三维元素有四面体,五面体,三棱柱体,六面体等。
形状函数一般采用多项式,一是计算方便;二是易于证明其收敛性,并要求多项式的次数与元素(单元)自由度匹配得当。
一维 k k k 次多项式 p k ( x ) = ∑ i = 0 T k ( 1 ) a i x i p_k(x) = \sum_{i=0}^{T_k^{(1)}} a_ix^i pk(x)=i=0∑Tk(1)aixi
其中 T k ( 1 ) = k + 1 T_k^{(1)} = k + 1 Tk(1)=k+1 是 p k ( x ) p_k(x) pk(x) 的项数。
二维 k k k 次多项式 p k ( x , y ) = ∑ m = 1 T k ( 2 ) a m x i y j i + j ≤ k p_k(x, y) = \sum_{m=1}^{T_k^{(2)}} a_mx^iy^j \ \ \ \ \ \ i+j \leq k pk(x,y)=m=1∑Tk(2)amxiyj i+j≤k
它的独立项数 T k ( 2 ) = 1 2 ( k + 1 ) ( k + 2 ) T_k^{(2)} = \frac{1}{2}(k + 1)(k+2) Tk(2)=21(k+1)(k+2) 。
二维 k k k次完全多项式自由度可以用如下一个三角形排列表示:
三维 k k k 次完全多项式 p k ( x , y , z ) = ∑ l = 1 T k ( 3 ) a l x i y j z m i + j + m ≤ k p_k(x, y, z) = \sum_{l=1}^{T_k^{(3)}} a_lx^iy^jz^m \ \ \ \ \ \ i+j+m \leq k pk(x,y,z)=l=1∑Tk(3)alxiyjzm i+j+m≤k
其中独立项数 T k ( 3 ) = ( k + 1 ) ( k + 2 ) ( k + 3 ) / 6 T_k^{(3)} = (k + 1)(k+2)(k+3)/6 Tk(3)=(k+1)(k+2)(k+3)/6 。
三维 k k k次多项式自由度可以排列成如下四面体形式:
在二维问题中,三角形元素被广泛采用,除了它形状简单,随意性大,适应区域形状能力强的优点,当采用面积坐标后,三角形单元的形状函数生成简单,容易标准化。
设任意三角形三个顶点 A 1 A_1 A1 A 2 A_2 A2 A 3 A_3 A3 按逆时针排列,三角形的面积为 Δ \Delta Δ。 取三角形内任一点 P ( x , y ) P(x, y) P(x,y),由点 P P P向三个顶点分别引直线,将三角形分割成三个三角形 P A 2 A 3 PA_2A_3 PA2A3, P A 3 A 1 PA_3A_1 PA3A1, P A 1 A 2 PA_1A_2 PA1A2。分别记相应的面积为 Δ 1 \Delta_1 Δ1, Δ 2 \Delta_2 Δ2, Δ 3 \Delta_3 Δ3,令
λ 1 = Δ 1 / Δ , λ 2 = Δ 2 / Δ , λ 3 = Δ 3 / Δ , ( 1 ) \lambda_1 = \Delta_1/ \Delta, \ \ \ \lambda_2 = \Delta_2/ \Delta, \ \ \ \lambda_3 = \Delta_3/ \Delta,\ \ \ \ \ \ \ \ \ \ \ \ (1) λ1=Δ1/Δ, λ2=Δ2/Δ, λ3=Δ3/Δ, (1)
称 λ i ( i = 1 , 2 , 3 ) \lambda_ i(i = 1, 2, 3) λi(i=1,2,3)为 P P P点的面积坐标,显然有
0 ≤ λ i ≤ 1 , λ 1 + λ 2 + λ 3 = 1 ( 2 ) 0 \leq \lambda_i \leq 1, \ \ \ \lambda_1 + \lambda_2 + \lambda3 = 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (2) 0≤λi≤1, λ1+λ2+λ3=1 (2)
说明,三角形 A 1 A 2 A 3 A_1A_2A_3 A1A2A3内的任一点 P P P比对应一组数 λ i \lambda_i λi,它们满足(2)。反之,若给出三个数 λ i \lambda_i λi满足(2),则必能在三角形 A 1 A 2 A 3 A_1A_2A_3 A1A2A3内按(1)确定一个与之相应的 P P P点。
显然,三角形的三个顶点的面积坐标为 A 1 = ( 1 , 0 , 0 ) , A 2 = ( 0 , 1 , 1 ) , A 3 = ( 0 , 0 , 1 ) A_1 = (1, 0, 0), \ \ \ A_2 = (0, 1, 1), \ \ \ A_3 = (0, 0, 1) A1=(1,0,0), A2=(0,1,1), A3=(0,0,1)
若三角形三个顶点的直角坐标分别为 A 1 ( x 1 , y 1 ) , A 2 ( x 2 , y 2 ) , A 3 ( x 3 , y 3 ) A_1(x_1, y_1), A_2(x_2, y_2), A_3(x_3, y_3) A1(x1,y1),A2(x2,y2),A3(x3,y3),并记
a i = y i − y k , b i = − ( x j − x k ) c i = ∣ x j x k y j y k ∣ , i , j , k 按 1 , 2 , 3 轮 换 a_i = y_i-y_k, \ \ \ \ \ \ \ \ \ \ b_i = -(x_j-x_k) \\ c_i = \begin{vmatrix} x_j & x_k\\ y_j & y_k\end{vmatrix}, \ \ \ \ \ \ \ \ i, j, k 按1,2,3轮换 ai=yi−yk, bi=−(xj−xk)ci=∣∣∣∣xjyjxkyk∣∣∣∣, i,j,k按1,2,3轮换
记 D 0 = ∣ D ∣ D_0 = |D| D0=∣D∣, 其中 D = ∣ 1 1 1 x 1 x 2 x 3 y 1 y 2 y 3 ∣ = c 1 + c 2 + c 3 D = \begin{vmatrix} 1 & 1 & 1 \\ x_1 & x_2 & x_3\\ y_1 & y_2 & y_3 \end{vmatrix} = c_1 + c_2 + c_3 D=∣∣∣∣∣∣1x1y11x2y21x3y3∣∣∣∣∣∣=c1+c2+c3
那么面积坐标与直角坐标之间的关系为
λ i = ( a i x + b i y + c i ) / D 0 , i = 1 , 2 , 3. ( 3 ) \lambda_i = (a_ix + b_iy + c_i)/D_0, \ \ \ \ \ i = 1,2,3. \ \ \ \ \ \ \ \ \ (3) λi=(aix+biy+ci)/D0, i=1,2,3. (3)
或
{ x = ∑ i = 1 3 x i λ i y = ∑ i = 1 3 y i λ i λ 1 + λ 2 + λ + 3 = 1 ( 4 ) \left\{\begin{matrix} x = \sum_{i = 1}^3{x_i\lambda_i} \\ y = \sum_{i = 1}^3{y_i\lambda_i} \\ \lambda_1 + \lambda_2 + \lambda+3 = 1\\\end{matrix}\right. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (4) ⎩⎨⎧x=∑i=13xiλiy=∑i=13yiλiλ1+λ2+λ+3=1 (4)
这是从 ( x , y ) (x, y) (x,y)平面到 ( λ 1 , λ 2 ) (\lambda_1, \lambda_2) (λ1,λ2)平面之间的映射关系,它将 ( x , y ) (x, y) (x,y)平面上任一三角形 A 1 A 2 A 3 A_1A_2A_3 A1A2A3映射到 ( λ 1 , λ 2 ) (\lambda_1, \lambda_2) (λ1,λ2)平面三角形 A 1 ˉ A 2 ˉ A 3 ˉ \bar{A_1}\bar{A_2}\bar{A_3} A1ˉA2ˉA3ˉ如下图所示,称 A 1 ˉ A 2 ˉ A 3 ˉ \bar{A_1}\bar{A_2}\bar{A_3} A1ˉA2ˉA3ˉ为标准三角形。
由于 ( x , y ) (x, y) (x,y)是 ( λ 1 , λ 2 , λ 3 ) (\lambda_1, \lambda_2, \lambda_3) (λ1,λ2,λ3)的函数, ( λ 1 , λ 2 , λ 3 ) (\lambda_1, \lambda_2, \lambda_3) (λ1,λ2,λ3)也是 ( x , y ) (x, y) (x,y)的函数,则导数有如下关系
[ ∂ ∂ λ 1 ∂ ∂ λ 2 ] = J [ ∂ ∂ x ∂ ∂ y ] , [ ∂ ∂ x ∂ ∂ y ] = J − 1 [ ∂ ∂ λ 1 ∂ ∂ λ 2 ] \begin{bmatrix} \frac{\partial}{\partial{\lambda_1}} \\ \frac{\partial}{\partial{\lambda_2}} \\\end{bmatrix} = J\begin{bmatrix} \frac{\partial}{\partial{x}} \\ \frac{\partial}{\partial{y}} \\\end{bmatrix}, \ \ \ \begin{bmatrix} \frac{\partial}{\partial{x}} \\ \frac{\partial}{\partial{y}} \\\end{bmatrix} = J^{-1}\begin{bmatrix} \frac{\partial}{\partial{\lambda_1}} \\ \frac{\partial}{\partial{\lambda_2}} \\\end{bmatrix} [∂λ1∂∂λ2∂]=J[∂x∂∂y∂], [∂x∂∂y∂]=J−1[∂λ1∂∂λ2∂]
其中 J J J为从 ( x , y ) (x, y) (x,y)到 ( λ 1 , λ 2 ) (\lambda_1, \lambda_2) (λ1,λ2)坐标变换的 J a c o b i Jacobi Jacobi矩阵。
J = [ ∂ x ∂ λ 1 ∂ y ∂ λ 1 ∂ x ∂ λ 2 ∂ y ∂ λ 2 ] = [ x 1 − x 3 y 1 − y 3 x 2 − x 3 y 2 − y 3 ] J = \begin{bmatrix} \frac{\partial x}{\partial{\lambda_1}} & \frac{\partial y}{\partial{\lambda_1}} \\ \frac{\partial x}{\partial{\lambda_2}} & \frac{\partial y}{\partial{\lambda_2}} \\\end{bmatrix} = \begin{bmatrix} x_1 - x_3 & y_1 - y_3 \\ x_2 - x_3 & y_2 - y_3 \\\end{bmatrix} J=[∂λ1∂x∂λ2∂x∂λ1∂y∂λ2∂y]=[x1−x3x2−x3y1−y3y2−y3]
二元 n n n次多项式
P n ( x , y ) = ∑ i + j = 1 T n a i j x i y j ( 5 ) P_n(x,y) = \sum_{i+j=1}^{T_n}{a_{ij}x^iy^j} \ \ \ \ \ \ \ \ \ \ \ \ \ (5) Pn(x,y)=i+j=1∑Tnaijxiyj (5)
有 T n = 1 2 ( n + 1 ) ( n + 2 ) T_n = \frac{1}{2}(n+1)(n+2) Tn=21(n+1)(n+2)个自由度。若采用自然坐标即面积坐标 Λ = ( λ 1 , λ 2 , λ 3 ) \Lambda = (\lambda_1, \lambda_2, \lambda_3) Λ=(λ1,λ2,λ3)且 α = ( α 1 , α 2 , α 3 ) ∈ Z + 3 \alpha = (\alpha_1, \alpha_2, \alpha_3) \in Z_{+}^3 α=(α1,α2,α3)∈Z+3 那么
P n ( λ 1 , λ 2 , λ 3 ) = ∑ ∣ α ∣ = n A α λ 1 α 1 λ 2 α 2 λ 3 α 3 ( 6 ) P_n(\lambda_1, \lambda_2, \lambda_3) = \sum_{\left | \alpha \right | = n}A_{\alpha}\lambda_1^{\alpha_1}\lambda_2^{\alpha_2}\lambda_3^{\alpha_3} \ \ \ \ \ (6) Pn(λ1,λ2,λ3)=∣α∣=n∑Aαλ1α1λ2α2λ3α3 (6)
对于 L a g r a n g e Lagrange Lagrange 型形状函数,由于每个节点上只有一个自由度,所以 n n n 次形状函数有 T n T_n Tn 个节点与它对应。如果将 T n T_n Tn 个节点上的形状函数记为 ψ i ( Λ ) \psi_i(\Lambda) ψi(Λ),则
ψ i ( Λ j ) = δ i j = { 1 , i = j 0 , i ≠ j ( 7 ) \psi_i(\Lambda_j) = \delta_{ij} = \left\{\begin{matrix} 1, \ \ \ \ i = j \\ 0, \ \ \ i \neq j \\\end{matrix}\right. \ \ \ \ \ \ \ \ \ \ (7) ψi(Λj)=δij={1, i=j0, i=j (7)
其中 Λ j \Lambda_j Λj 为第 j j j点的面积坐标 ( λ 1 j , λ 2 j , λ 3 j ) (\lambda_{1j}, \lambda_{2j}, \lambda_{3j}) (λ1j,λ2j,λ3j)。由(7)的 T n T_n Tn个方程,可决定第 j j j 点相应的 n n n 次多项式的系数, 用此方法,在单元上可构成 T n T_n Tn 个 L a g r a n g e Lagrange Lagrange型的形状函数,而生成 ( T n , n , 0 ) (T_n, n, 0) (Tn,n,0)元素。
对于三角形的任意一条边,例如, 第一个顶点的对边 λ 1 = 0 \lambda_1 = 0 λ1=0,因此,在每一条边上的二元 n n n次多项式 P n P_n Pn变成一元 n n n次多项式,而由于它有 n + 1 n+1 n+1 个自由度,所以必须由该边上的 n + 1 n+1 n+1 个节点参数确定,这 n + 1 n+1 n+1 个节点取两个顶点和这边上的 n − 1 n-1 n−1个中间点。为简单,在 T n T_n Tn 个节点中,无论是 E n = 3 n E_n = 3n En=3n 个外节点,还是 T n − E n = ( n − 1 ) ( n − 2 ) / 2 T_n - E_n = (n-1)(n-2)/2 Tn−En=(n−1)(n−2)/2 个内节点,都均匀且对称地配置着,它们由下列直角坐标给出:
( ∑ l = 1 3 β l x l / n , ∑ l = 1 3 β l y l / n ) ( 8 ) (\sum_{l =1}^3 {\beta_l x_l/n}, \sum_{l =1}^3{\beta_ly_l/n}) \ \ \ \ \ \ \ \ \ (8) (l=1∑3βlxl/n,l=1∑3βlyl/n) (8)
其中 β = ( β 1 , β 2 , β 3 ) ∈ Z + 3 \beta = (\beta_1, \beta_2, \beta_3) \in Z_{+}^3 β=(β1,β2,β3)∈Z+3, 并满足
0 ≤ β l ≤ n , l = 1 , 2 , 3 ( 9 ) 0 \leq \beta_l \leq n, \ \ \ l = 1, 2, 3 \ \ \ \ \ \ \ \ \ (9) 0≤βl≤n, l=1,2,3 (9)
且不同的 ( β 1 , β 2 , β 3 ) (\beta_1, \beta_2, \beta_3) (β1,β2,β3) 对应不同的点。显然满足(9)的 β \beta β 恰恰有 T n T_n Tn个。将这样的 β \beta β的集合记为 B B B, 而 ( x l , y l ) ( l = 1 , 2 , 3 ) (x_l, y_l)(l = 1, 2, 3) (xl,yl)(l=1,2,3)是三角形三个顶点的直角坐标,则 T n T_n Tn 个节点的自然坐标即面积坐标 λ i ( i = 1 , 2 , 3 ) \lambda_i(i = 1, 2, 3) λi(i=1,2,3) 为
λ i σ = ∑ l = 1 3 β l λ i l / n , σ = 1 , 2 , . . . , T n ( 10 ) \lambda_{i\sigma} = \sum_{l = 1}^3{\beta_l \lambda_{il}/n}, \ \ \ \ \ \sigma = 1, 2, ..., T_n \ \ \ \ \ \ \ \ (10) λiσ=l=1∑3βlλil/n, σ=1,2,...,Tn (10)
由(8)可以推出,在 T n T_n Tn 个节点中一定包含三个顶点,其余的节点按平行与三条边连接成平行线,将原来的三角形分成 n 2 n^2 n2 个相等的三角形,这些小三角形的顶点作为单元的 T n T_n Tn 个节点, 如下图所示:
例如 n = 1 n = 1 n=1, 则 T n = 3 T_n = 3 Tn=3, 此时
B = { ( 1 , 0 , 0 ) , ( 0 , 1 , 0 ) , ( 0 , 0 , 1 ) } B = \{(1, 0, 0), (0, 1, 0), (0, 0, 1)\} B={(1,0,0),(0,1,0),(0,0,1)}
带入(10)得 3 个节点的面积坐标为
Λ 1 = ( λ 1 , λ 2 , λ 3 ) = ( 1 , 0 , 0 ) , Λ 2 = ( 0 , 1 , 0 ) , Λ 3 = ( 0 , 0 , 1 ) \Lambda_1 = (\lambda_1, \lambda_2, \lambda_3) = (1, 0, 0), \\ \Lambda_2 = (0, 1, 0), \ \ \ \ \ \ \Lambda_3 = (0, 0, 1) Λ1=(λ1,λ2,λ3)=(1,0,0),Λ2=(0,1,0), Λ3=(0,0,1)