构造插值函数

位移的多项式表示

单元的位移函数可以用多项式表示:
U=a1+a2x+a3y+a4x2+a5y2+a6xy+...U=a_{1}+a_{2}x+a_{3}y+a_{4}x^{2}+a_{5}y^{2}+a_{6}xy+...
V=b1+b2x+b3y+b4x2+b5y2+b6xy+...V=b_{1}+b_{2}x+b_{3}y+b_{4}x^{2}+b_{5}y^{2}+b_{6}xy+...
多项式中项数越多,位移越接近实际值,但是具体取多少项是由单元的形式确定的。
例如三节点三角形单元,节点位移共有UiViUjVjUmVmU_{i},V_{i},U_{j},V_{j},U_{m},V_{m}六项,因此,最多能确定6个多项式系数。即:
U=a1+a2x+a3yU=a_{1}+a_{2}x+a_{3}y
V=b1+b2x+b3yV=b_{1}+b_{2}x+b_{3}y
构造插值函数
而对于六节点的三角形单元则有12个位移,可以确定12个多项式系数,即:
(1)U=a1+a2x+a3y+a4x2+a5y2+a6xy+...U=a_{1}+a_{2}x+a_{3}y+a_{4}x^{2}+a_{5}y^{2}+a_{6}xy+...\tag{1}
V=b1+b2x+b3y+b4x2+b5y2+b6xy+...V=b_{1}+b_{2}x+b_{3}y+b_{4}x^{2}+b_{5}y^{2}+b_{6}xy+...

求多项式系数

还是以三节点三角形单元推导多项式系数的求解方法:
(2){uiujum}=[1xiyi1xjyj1xmym]{α1α2α3}\left\{\begin{matrix} u_{i}\\ u_{j} \\ u_{m} \\ \end{matrix}\right\} = \left[ \begin{matrix} 1&x_{i}&y_{i}\\ 1&x_{j}&y_{j}\\ 1&x_{m}&y_{m} \\ \end{matrix} \right] * \left\{\begin{matrix} \alpha_{1}\\ \alpha_{2} \\ \alpha_{3} \\ \end{matrix}\right\}\tag{2}
令:
[T]=[1xiyi1xjyj1xmym] \left[ \begin{matrix} T \end{matrix} \right] = \left[ \begin{matrix} 1&x_{i}&y_{i}\\ 1&x_{j}&y_{j}\\ 1&x_{m}&y_{m} \\ \end{matrix} \right]
在JuliaFEM中称此矩阵为范德蒙矩阵,求解方法为首先已知一多项式为1+u+v,将单元的局部坐标系下的坐标分别替换多项式中的各项组成的矩阵即为范德蒙矩阵,见vandermonde.jl。
(3){α1α2α3}=[T]1{uiujum}\left\{ \begin{matrix} \alpha_{1}\\ \alpha_{2} \\ \alpha_{3} \\ \end{matrix} \right\}= \left[ \begin{matrix} T \end{matrix} \right] ^{-1} * \left\{\begin{matrix} u_{i}\\ u_{j} \\ u_{m} \\ \end{matrix}\right\} \tag{3}
将(3)式带入(1)式可得:
(4)u=[1uv][T]1{uiujum}u= \left[ \begin{matrix} 1&u&v \end{matrix} \right] * \left[ \begin{matrix} T \end{matrix} \right] ^{-1} * \left\{\begin{matrix} u_{i}\\ u_{j} \\ u_{m} \\ \end{matrix}\right\} \tag{4}
定义形函数:[N]=[1uv][T]1\left[ \begin{matrix} N \end{matrix} \right]=\left[ \begin{matrix} 1&u&v \end{matrix} \right] * \left[ \begin{matrix} T \end{matrix} \right] ^{-1}
这里的坐标为局部坐标,由[T][T]1=[E] \left[ \begin{matrix} T \end{matrix} \right]* \left[ \begin{matrix} T \end{matrix} \right] ^{-1} = \left[ \begin{matrix} E \end{matrix} \right]
那么 [T][X1]=[100]\left[ \begin{matrix} T \end{matrix} \right]*[X1]= \left[ \begin{matrix} 1\\ 0\\ 0 \end{matrix} \right]这里的X1为[T]^{-1}的第一列,同理 [T][X2]=[010]X2[T]1\left[ \begin{matrix} T \end{matrix} \right]*[X2]= \left[ \begin{matrix} 0\\ 1\\ 0 \end{matrix} \right]这里的X2为[T]^{-1}的第二列。
JuliaFEM中的实现过程详见create_basis.jl