Матрица жёсткости 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),(xi+1,yi+1,zi+1),(xi+2,yi+2,zi+2),(xi+3,yi+3,zi+3)(x_i, y_i, z_i), \quad (x_{i+1}, y_{i+1}, z_{i+1}), \quad (x_{i+2}, y_{i+2}, z_{i+2}), \quad (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+(υ(i)(i+3)y)2+(υ(i)(i+3)z)2]dV\displaystyle \int_{\text{тет}} \left[ \left( \frac{\displaystyle \partial \upsilon_{(i)(i+3)}}{\displaystyle \partial x} \right)^2 + \left( \frac{\displaystyle \partial \upsilon_{(i)(i+3)}}{\displaystyle \partial y} \right)^2 + \left( \frac{\displaystyle \partial \upsilon_{(i)(i+3)}}{\displaystyle \partial z} \right)^2 \right] \,dV =Vтет[(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 = \quad V_{\text{тет}} \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тет[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 = V_{\text{тет}} \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=(1)k+1Δk(x)Δck=(1)k+2Δk(y)Δdk=(1)k+3Δk(z)Δ\begin{split} &b_k = (-1)^{k+1} \cdot \frac{\displaystyle \Delta_k^{(x)}}{\displaystyle \Delta}\\ &c_k = (-1)^{k+2} \cdot \frac{\displaystyle \Delta_k^{(y)}}{\displaystyle \Delta}\\ &d_k = (-1)^{k+3} \cdot \frac{\displaystyle \Delta_k^{(z)}}{\displaystyle \Delta} \end{split}
(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тет(bmbn+cmcn+dmdn),m,n\displaystyle = V_{\text{тет}} \cdot (b_m \cdot b_n + c_m \cdot c_n + d_m \cdot d_n), \quad 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 — общее количество узлов сетки.