Матрица жёсткости 3D

Перейдём к вычислению матрицы жёсткости для трёхмерного случая. В трёхмерном пространстве градиент имеет вид υ\nabla \upsilon=(υx,υy,υz){} = \left( \frac{\displaystyle \partial \upsilon}{\displaystyle \partial x}, \frac{\displaystyle \partial \upsilon}{\displaystyle \partial y}, \frac{\displaystyle \partial \upsilon}{\displaystyle \partial z} \right), а скалярное произведение градиента с самим собой равно υυ\nabla \upsilon \cdot \nabla \upsilon=(υx)2{} = \left( \frac{\displaystyle \partial \upsilon}{\displaystyle \partial x} \right)^2+(υy)2{} + \left( \frac{\displaystyle \partial \upsilon}{\displaystyle \partial y} \right)^2+(υz)2{} + \left( \frac{\displaystyle \partial \upsilon}{\displaystyle \partial z} \right)^2. Учитывая, что трёхмерная расчётная область MM разбита на симплексы-тетраэдры, исследуемую часть функционала для одного тетраэдра с вершинами

(xi,yi,zi),\displaystyle (x_i, y_i, z_i),(xi+1,yi+1,zi+1),\displaystyle (x_{i+1}, y_{i+1}, z_{i+1}),(xi+2,yi+2,zi+2),\displaystyle (x_{i+2}, y_{i+2}, z_{i+2}),(xi+3,yi+3,zi+3)\displaystyle (x_{i+3}, y_{i+3}, z_{i+3})

можно записать как

тет[(υx)2+(υy)2+(υz)2]dV.\int_{\text{тет}} \left[ \left( \frac{\displaystyle \partial \upsilon}{\displaystyle \partial x} \right)^2 + \left( \frac{\displaystyle \partial \upsilon}{\displaystyle \partial y} \right)^2 + \left( \frac{\displaystyle \partial \upsilon}{\displaystyle \partial z} \right)^2 \right] \,dV.
(6.12)

Функция υ(x,y,z)\upsilon(x, y, z)=i=1Nυi(x,y,z){} = \sum_{i=1}^N \upsilon_i(x, y, z). Пробная функция на тетраэдре имеет вид υ(i)(i+3)(x,y,z)\upsilon_{(i)(i+3)}(x, y, z)=qiϕi(x,y,z){} = q_i \cdot \phi_i(x, y, z)+qi+1ϕi+1(x,y,z){} + q_{i+1} \cdot \phi_{i+1}(x, y, z)+qi+2ϕi+2(x,y,z){} + q_{i+2} \cdot \phi_{i+2}(x, y, z)+qi+3ϕi+3(x,y,z){} + q_{i+3} \cdot \phi_{i+3}(x, y, z). Аналогично двумерному случаю, функции «крышек» для тетраэдра имеют линейный вид

ϕi(x,y,z)\displaystyle \phi_i(x, y, z) =ai\displaystyle {} = a_i+bix\displaystyle {} + b_i \cdot x+ciy\displaystyle {} + c_i \cdot y+diz\displaystyle {} + d_i \cdot zϕi+1(x,y,z)\displaystyle \phi_{i+1}(x, y, z) =ai+1\displaystyle {} = a_{i+1}+bi+1x\displaystyle {} + b_{i+1} \cdot x+ci+1y\displaystyle {} + c_{i+1} \cdot y+di+1z\displaystyle {} + d_{i+1} \cdot zϕi+2(x,y,z)\displaystyle \phi_{i+2}(x, y, z) =ai+2\displaystyle {} = a_{i+2}+bi+2x\displaystyle {} + b_{i+2} \cdot x+ci+2y\displaystyle {} + c_{i+2} \cdot y+di+2z\displaystyle {} + d_{i+2} \cdot zϕi+3(x,y,z)\displaystyle \phi_{i+3}(x, y, z) =ai+3\displaystyle {} = a_{i+3}+bi+3x\displaystyle {} + b_{i+3} \cdot x+ci+3y\displaystyle {} + c_{i+3} \cdot y+di+3z\displaystyle {} + d_{i+3} \cdot z
(6.13)

Вычислим частные производные пробной функции

υ(i)(i+3)(x,y,z)x\displaystyle \frac{\displaystyle \partial \upsilon_{(i)(i+3)}(x, y, z)}{\displaystyle \partial x} =qibi\displaystyle {} = q_i \cdot b_i+qi+1bi+1\displaystyle {} + q_{i+1} \cdot b_{i+1}+qi+2bi+2\displaystyle {} + q_{i+2} \cdot b_{i+2}+qi+3bi+3\displaystyle {} + q_{i+3} \cdot b_{i+3}υ(i)(i+3)(x,y,z)y\displaystyle \frac{\displaystyle \partial \upsilon_{(i)(i+3)}(x, y, z)}{\displaystyle \partial y} =qici\displaystyle {} = q_i \cdot c_i+qi+1ci+1\displaystyle {} + q_{i+1} \cdot c_{i+1}+qi+2ci+2\displaystyle {} + q_{i+2} \cdot c_{i+2}+qi+3ci+3\displaystyle {} + q_{i+3} \cdot c_{i+3}υ(i)(i+3)(x,y,z)z\displaystyle \frac{\displaystyle \partial \upsilon_{(i)(i+3)}(x, y, z)}{\displaystyle \partial z} =qidi\displaystyle {} = q_i \cdot d_i+qi+1di+1\displaystyle {} + q_{i+1} \cdot d_{i+1}+qi+2di+2\displaystyle {} + q_{i+2} \cdot d_{i+2}+qi+3di+3\displaystyle {} + q_{i+3} \cdot d_{i+3}
(6.14)

Заметим, что производные не зависят от xx, yy и zz и являются константами на тетраэдре. Подставим (6.14) в (6.12)

тет[(υ(i)(i+3)x)2\displaystyle \int_{\text{тет}} \biggl[ \left( \frac{\displaystyle \partial \upsilon_{(i)(i+3)}}{\displaystyle \partial x} \right)^2+(υ(i)(i+3)y)2\displaystyle {} + \left( \frac{\displaystyle \partial \upsilon_{(i)(i+3)}}{\displaystyle \partial y} \right)^2+(υ(i)(i+3)z)2]dV\displaystyle {} + \left( \frac{\displaystyle \partial \upsilon_{(i)(i+3)}}{\displaystyle \partial z} \right)^2 \biggr] \,dV=Vтет\displaystyle {} = \quad V_{\text{тет}}[(qibi+qi+1bi+1+qi+2bi+2+qi+3bi+3)2+(qici+qi+1ci+1+qi+2ci+2+qi+3ci+3)2+(qidi+qi+1di+1+qi+2di+2+qi+3di+3)2],\displaystyle {} \cdot \Big[ (q_i \cdot b_i + q_{i+1} \cdot b_{i+1} + q_{i+2} \cdot b_{i+2} + q_{i+3} \cdot b_{i+3})^2 \quad + (q_i \cdot c_i + q_{i+1} \cdot c_{i+1} + q_{i+2} \cdot c_{i+2} + q_{i+3} \cdot c_{i+3})^2 \quad + (q_i \cdot d_i + q_{i+1} \cdot d_{i+1} + q_{i+2} \cdot d_{i+2} + q_{i+3} \cdot d_{i+3})^2 \Big],

где VтетV_{\text{тет}} — объём тетраэдра, который вычисляется по формуле

Vтет\displaystyle V_{\text{тет}} =Δ6,\displaystyle {} = \frac{\displaystyle |\Delta|}{\displaystyle 6},
(6.15)

где Δ\Delta — определитель матрицы

Δ\displaystyle \Delta =xiyizi1xi+1yi+1zi+11xi+2yi+2zi+21xi+3yi+3zi+31.\displaystyle {} = \begin{vmatrix} x_i & y_i & z_i & 1\\ x_{i+1} & y_{i+1} & z_{i+1} & 1\\ x_{i+2} & y_{i+2} & z_{i+2} & 1\\ x_{i+3} & y_{i+3} & z_{i+3} & 1 \end{vmatrix}.
(6.16)

Раскроем квадраты и перегруппируем члены

тет(υ(i)(i+3))2dV\displaystyle \int_{\text{тет}} (\nabla \upsilon_{(i)(i+3)})^2 \,dV =Vтет\displaystyle {} = V_{\text{тет}}[qi2[bi2+ci2+di2]+qi+12[bi+12+ci+12+di+12]+qi+22[bi+22+ci+22+di+22]+qi+32[bi+32+ci+32+di+32]+2qiqi+1(bibi+1+cici+1+didi+1)+2qiqi+2(bibi+2+cici+2+didi+2)+2qiqi+3(bibi+3+cici+3+didi+3)+2qi+1qi+2(bi+1bi+2+ci+1ci+2+di+1di+2)+2qi+1qi+3(bi+1bi+3+ci+1ci+3+di+1di+3)+2qi+2qi+3(bi+2bi+3+ci+2ci+3+di+2di+3)]\displaystyle {} \cdot \Big[ q_i^2 \cdot [b_i^2 + c_i^2 + d_i^2] + q_{i+1}^2 \cdot [b_{i+1}^2 + c_{i+1}^2 + d_{i+1}^2] + q_{i+2}^2 \cdot [b_{i+2}^2 + c_{i+2}^2 + d_{i+2}^2] + q_{i+3}^2 \cdot [b_{i+3}^2 + c_{i+3}^2 + d_{i+3}^2] + 2 \cdot q_i \cdot q_{i+1} \cdot (b_i \cdot b_{i+1} + c_i \cdot c_{i+1} + d_i \cdot d_{i+1}) + 2 \cdot q_i \cdot q_{i+2} \cdot (b_i \cdot b_{i+2} + c_i \cdot c_{i+2} + d_i \cdot d_{i+2}) + 2 \cdot q_i \cdot q_{i+3} \cdot (b_i \cdot b_{i+3} + c_i \cdot c_{i+3} + d_i \cdot d_{i+3}) + 2 \cdot q_{i+1} \cdot q_{i+2} \cdot (b_{i+1} \cdot b_{i+2} + c_{i+1} \cdot c_{i+2} + d_{i+1} \cdot d_{i+2}) + 2 \cdot q_{i+1} \cdot q_{i+3} \cdot (b_{i+1} \cdot b_{i+3} + c_{i+1} \cdot c_{i+3} + d_{i+1} \cdot d_{i+3}) + 2 \cdot q_{i+2} \cdot q_{i+3} \cdot (b_{i+2} \cdot b_{i+3} + c_{i+2} \cdot c_{i+3} + d_{i+2} \cdot d_{i+3}) \Big]

Коэффициенты bkb_k, ckc_k и dkd_k для каждой вершины kk тетраэдра вычисляются через миноры определителя Δ\Delta. Для вершины с индексом kk коэффициенты имеют вид

bk\displaystyle b_k =(1)k+1Δk(x)Δ\displaystyle {} = (-1)^{k+1} \cdot \frac{\displaystyle \Delta_k^{(x)}}{\displaystyle \Delta}ck\displaystyle c_k =(1)k+2Δk(y)Δ\displaystyle {} = (-1)^{k+2} \cdot \frac{\displaystyle \Delta_k^{(y)}}{\displaystyle \Delta}dk\displaystyle d_k =(1)k+3Δk(z)Δ\displaystyle {} = (-1)^{k+3} \cdot \frac{\displaystyle \Delta_k^{(z)}}{\displaystyle \Delta}
(6.17)

где Δk(x)\Delta_k^{(x)}, Δk(y)\Delta_k^{(y)} и Δk(z)\Delta_k^{(z)} — миноры, получаемые вычёркиванием kk-й строки и соответствующего столбца (xx, yy или zz) из матрицы (6.16).

Введём обозначения для элементов локальной матрицы жёсткости тетраэдра

kmn\displaystyle k_{mn} =Vтет\displaystyle {} = V_{\text{тет}}(bmbn+cmcn+dmdn),\displaystyle {} \cdot (b_m \cdot b_n + c_m \cdot c_n + d_m \cdot d_n),m,n\displaystyle m, n{i,i\displaystyle {} \in \{i, i+1,i\displaystyle {} +1, i+2,i\displaystyle {} +2, i+3}.\displaystyle {} +3\}.
(6.18)

Таким образом, локальная матрица жёсткости для тетраэдрального элемента имеет вид

Kтет\displaystyle \mathbf{K}_{\text{тет}} =[k(i)(i)k(i)(i+1)k(i)(i+2)k(i)(i+3)k(i+1)(i)k(i+1)(i+1)k(i+1)(i+2)k(i+1)(i+3)k(i+2)(i)k(i+2)(i+1)k(i+2)(i+2)k(i+2)(i+3)k(i+3)(i)k(i+3)(i+1)k(i+3)(i+2)k(i+3)(i+3)].\displaystyle {} = \begin{bmatrix} k_{(i)(i)} & k_{(i)(i+1)} & k_{(i)(i+2)} & k_{(i)(i+3)}\\ k_{(i+1)(i)} & k_{(i+1)(i+1)} & k_{(i+1)(i+2)} & k_{(i+1)(i+3)}\\ k_{(i+2)(i)} & k_{(i+2)(i+1)} & k_{(i+2)(i+2)} & k_{(i+2)(i+3)}\\ k_{(i+3)(i)} & k_{(i+3)(i+1)} & k_{(i+3)(i+2)} & k_{(i+3)(i+3)} \end{bmatrix}.
(6.19)

Локальная матрица жёсткости является симметричной, то есть kmnлокk_{mn}^{\text{лок}}=knmлок{} = k_{nm}^{\text{лок}}. Глобальная матрица жёсткости K\mathbf{K} получается путём суммирования вкладов от всех тетраэдральных элементов сетки методом сборки: элементы локальных матриц добавляются к соответствующим элементам глобальной матрицы согласно глобальной нумерации узлов. Размерность глобальной матрицы жёсткости равна N×NN \times N, где NN — общее количество узлов сетки.