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

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

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

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

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

{υ(i)(i+3)(x,y,z)x=qibi+qi+1bi+1+qi+2bi+2+qi+3bi+3υ(i)(i+3)(x,y,z)y=qici+qi+1ci+1+qi+2ci+2+qi+3ci+3υ(i)(i+3)(x,y,z)z=qidi+qi+1di+1+qi+2di+2+qi+3di+3\begin{cases} \frac{\displaystyle \partial \upsilon_{(i)(i+3)}(x, y, z)}{\displaystyle \partial x} = 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}\\ \frac{\displaystyle \partial \upsilon_{(i)(i+3)}(x, y, z)}{\displaystyle \partial y} = 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}\\ \frac{\displaystyle \partial \upsilon_{(i)(i+3)}(x, y, z)}{\displaystyle \partial z} = 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} \end{cases}
(6.15)

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

тет[(υ(i)(i+3)x)2+(υ(i)(i+3)y)2+(υ(i)(i+3)z)2]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],\begin{aligned} &\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 =\\ &\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], \end{aligned}

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

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

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

Δ=xiyizi1xi+1yi+1zi+11xi+2yi+2zi+21xi+3yi+3zi+31.\begin{aligned}\Delta = \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}.\end{aligned}
(6.17)

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

тет(υ(i)(i+3))2dV=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)]\begin{gathered} \int_{\text{тет}} (\nabla \upsilon_{(i)(i+3)})^2 \,dV = 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] \end{gathered}

Коэффициенты 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.18)

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

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

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

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

Kтет=[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)].\begin{aligned}\mathbf{K}_{\text{тет}} = \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}.\end{aligned}
(6.20)

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