Вектор нагрузки 3D

Теперь вычислим вектор нагрузки для трёхмерного случая. Вектор нагрузки связан с интегралом произведения функции источника на пробную функцию. Рассмотрим интеграл для одного тетраэдра с вершинами

(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})
тетf(x,y,z)υdV.\int_{\text{тет}} f(x, y, z) \cdot \upsilon \,dV.
(6.48)

Пробная функция на тетраэдре имеет вид υ(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). Для вычисления интеграла необходимо интерполировать функцию источника f(x,y,z)f(x, y, z) на тетраэдре линейной функцией. Представим f(x,y,z)f(x, y, z) в виде f~(x,y,z)=e1+e2x+e3y+e4z\widetilde{f}(x, y, z) = e_1 + e_2 \cdot x + e_3 \cdot y + e_4 \cdot z. Коэффициенты e1,e2,e3,e4e_1, e_2, e_3, e_4 определяются из условий интерполяции в узлах

{e1+e2xi+e3yi+e4zi=fie1+e2xi+1+e3yi+1+e4zi+1=fi+1e1+e2xi+2+e3yi+2+e4zi+2=fi+2e1+e2xi+3+e3yi+3+e4zi+3=fi+3\begin{cases} e_1 + e_2 \cdot x_i + e_3 \cdot y_i + e_4 \cdot z_i = f_i\\ e_1 + e_2 \cdot x_{i+1} + e_3 \cdot y_{i+1} + e_4 \cdot z_{i+1} = f_{i+1}\\ e_1 + e_2 \cdot x_{i+2} + e_3 \cdot y_{i+2} + e_4 \cdot z_{i+2} = f_{i+2}\\ e_1 + e_2 \cdot x_{i+3} + e_3 \cdot y_{i+3} + e_4 \cdot z_{i+3} = f_{i+3} \end{cases}
(6.49)

Поскольку функции <<крышки>> ϕn\phi_n равны единице в своём узле и нулю в остальных, линейный интерполянт функции источника, выраженный через них, принимает вид

f~(x,y,z)=fiϕi+fi+1ϕi+1+fi+2ϕi+2+fi+3ϕi+3,\widetilde{f}(x, y, z) = f_i \cdot \phi_i + f_{i+1} \cdot \phi_{i+1} + f_{i+2} \cdot \phi_{i+2} + f_{i+3} \cdot \phi_{i+3},
(6.50)

где fi,fi+1,fi+2,fi+3f_i, f_{i+1}, f_{i+2}, f_{i+3} — значения функции источника в вершинах тетраэдра.

Подставим интерполированную функцию источника и пробную функцию в (6.48). Примем во внимание (6.32) из раздела о функциях <<крышек>>

тетf(x,y,z)υdV=тет(nfnϕn)(mqmϕm)dV=mnqmfnтетϕmϕndV,\int_{\text{тет}} f(x, y, z) \cdot \upsilon \,dV = \int_{\text{тет}} \left( \sum_{n} f_n \cdot \phi_n \right) \cdot \left( \sum_{m} q_m \cdot \phi_m \right) \,dV = \sum_{m} \sum_{n} q_m \cdot f_n \cdot \int_{\text{тет}} \phi_m \cdot \phi_n \,dV,

где индексы mm и nn пробегают вершины тетраэдра {i,i+1,i+2,i+3}\{i, i+1, i+2, i+3\}.

Воспользуемся соотношениями (6.33) для интегралов произведений функций <<крышек>>, выведенными при вычислении матрицы демпфирования, где VтетV_{\text{тет}} — объём тетраэдра, который вычисляется по формуле (6.16). После приведения подобных получаем

тетf(x,y,z)υdV=Vтет20[qi(2fi+fi+1+fi+2+fi+3)+qi+1(fi+2fi+1+fi+2+fi+3)+qi+2(fi+fi+1+2fi+2+fi+3)+qi+3(fi+fi+1+fi+2+2fi+3)]\begin{aligned} &\int_{\text{тет}} f(x, y, z) \cdot \upsilon \,dV = \frac{\displaystyle V_{\text{тет}}}{\displaystyle 20} \cdot \Big[ q_i \cdot (2 \cdot f_i + f_{i+1} + f_{i+2} + f_{i+3})\\ &+ q_{i+1} \cdot (f_i + 2 \cdot f_{i+1} + f_{i+2} + f_{i+3}) + q_{i+2} \cdot (f_i + f_{i+1} + 2 \cdot f_{i+2} + f_{i+3})\\ &+ q_{i+3} \cdot (f_i + f_{i+1} + f_{i+2} + 2 \cdot f_{i+3}) \Big] \end{aligned}

Введём обозначения для элементов локального вектора нагрузки тетраэдра

ri=Vтет20(2fi+fi+1+fi+2+fi+3)ri+1=Vтет20(fi+2fi+1+fi+2+fi+3)ri+2=Vтет20(fi+fi+1+2fi+2+fi+3)ri+3=Vтет20(fi+fi+1+fi+2+2fi+3)\begin{split} &r_i = \frac{\displaystyle V_{\text{тет}}}{\displaystyle 20} \cdot (2 \cdot f_i + f_{i+1} + f_{i+2} + f_{i+3})\\ &r_{i+1} = \frac{\displaystyle V_{\text{тет}}}{\displaystyle 20} \cdot (f_i + 2 \cdot f_{i+1} + f_{i+2} + f_{i+3})\\ &r_{i+2} = \frac{\displaystyle V_{\text{тет}}}{\displaystyle 20} \cdot (f_i + f_{i+1} + 2 \cdot f_{i+2} + f_{i+3})\\ &r_{i+3} = \frac{\displaystyle V_{\text{тет}}}{\displaystyle 20} \cdot (f_i + f_{i+1} + f_{i+2} + 2 \cdot f_{i+3}) \end{split}
(6.51)

Таким образом, локальный вектор нагрузки для трёхмерного тетраэдрального элемента имеет вид

Rтет=[riri+1ri+2ri+3]=Vтет20[2111121111211112][fifi+1fi+2fi+3].\begin{aligned}\mathbf{R}_{\text{тет}} = \begin{bmatrix} r_i\\ r_{i+1}\\ r_{i+2}\\ r_{i+3} \end{bmatrix} = \frac{\displaystyle V_{\text{тет}}}{\displaystyle 20} \begin{bmatrix} 2 & 1 & 1 & 1\\ 1 & 2 & 1 & 1\\ 1 & 1 & 2 & 1\\ 1 & 1 & 1 & 2 \end{bmatrix} \begin{bmatrix} f_i\\ f_{i+1}\\ f_{i+2}\\ f_{i+3} \end{bmatrix}.\end{aligned}
(6.52)

Заметим, что полученный вектор нагрузки совпадает с произведением локальной матрицы демпфирования (6.35) на вектор узловых значений источника, то есть Rтет=Cтетf\mathbf{R}_{\text{тет}} = \mathbf{C}_{\text{тет}} \cdot \mathbf{f}.

Глобальный вектор нагрузки R\mathbf{R} получается путём суммирования вкладов от всех тетраэдральных элементов сетки методом сборки: элементы локальных векторов добавляются к соответствующим элементам глобального вектора согласно глобальной нумерации узлов. Размерность глобального вектора нагрузки равна NN, где NN — общее количество узлов сетки. Важно отметить, что для внутренних узлов происходит суммирование вкладов от всех смежных тетраэдральных элементов, содержащих данный узел. Для граничных узлов вектор нагрузки определяется граничными условиями задачи.