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

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

xixi+1(υx)2dx.\int_{x_i}^{x_{i+1}} \left( \frac{\displaystyle \partial \upsilon}{\displaystyle \partial x} \right)^2 \,dx.
(6.1)

В общем случае пробная функция υ(x)\upsilon(x) =i=1Nυi(x)= \sum_{i=1}^N \upsilon_i(x), тогда как на симплексе она имеет вид υ(i)(i+1)(x)\upsilon_{(i)(i+1)}(x) =qiϕi(x)= q_i \cdot \phi_i(x) +qi+1ϕi+1(x)+ q_{i+1} \cdot \phi_{i+1}(x). Примем во внимание (5.7) и (5.8) из раздела о функциях «крышек» и запишем соотношения для функций «крышек»

ϕi(x)\displaystyle \phi_i(x) =ai\displaystyle = a_i +bix\displaystyle + b_i \cdot xϕi+1(x)\displaystyle \phi_{i+1}(x) =ai+1\displaystyle = a_{i+1} +bi+1x\displaystyle + b_{i+1} \cdot x
(6.2)

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

υ(i)(i+1)(x)x\displaystyle \frac{\displaystyle \partial \upsilon_{(i)(i+1)}(x)}{\displaystyle \partial x} =qibi\displaystyle = q_i \cdot b_i +qi+1bi+1\displaystyle + q_{i+1} \cdot b_{i+1}
(6.3)

Заметим, что производная не зависит от xx и является константой на отрезке. Подставим (6.3) в (6.1)

xixi+1(υ(i)(i+1)x)2dx\displaystyle \int_{x_i}^{x_{i+1}} \left( \frac{\displaystyle \partial \upsilon_{(i)(i+1)}}{\displaystyle \partial x} \right)^2 \,dx =l(i)(i+1)(qibi+qi+1bi+1)2,\displaystyle = l_{(i)(i+1)} \cdot (q_i \cdot b_i + q_{i+1} \cdot b_{i+1})^2,

где l(i)(i+1)l_{(i)(i+1)} =xi+1= x_{i+1} xi- x_i — длина отрезка.

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

xixi+1(υ(i)(i+1)x)2dx\displaystyle \int_{x_i}^{x_{i+1}} \left(\frac{\displaystyle \partial \upsilon_{(i)(i+1)}}{\displaystyle \partial x}\right)^2 \,dx =l(i)(i+1)[qi2bi2+qi+12bi+12+2qiqi+1bibi+1].\displaystyle = l_{(i)(i+1)} \cdot \left[ q_i^2 \cdot b_i^2 + q_{i+1}^2 \cdot b_{i+1}^2 + 2 \cdot q_i \cdot q_{i+1} \cdot b_i \cdot b_{i+1} \right].

Примем во внимание формулы из (5.8) для коэффициентов bb и введём обозначения для элементов локальной матрицы жёсткости отрезка

k(i)(i)=l(i)(i+1)bi2=1xi+1xik(i+1)(i+1)=l(i)(i+1)bi+12=1xi+1xik(i)(i+1)=k(i+1)(i)=l(i)(i+1)bibi+1=1xi+1xi\begin{split} &k_{(i)(i)} = l_{(i)(i+1)} \cdot b_i^2 = \frac{\displaystyle 1}{\displaystyle x_{i+1} - x_i}\\ &k_{(i+1)(i+1)} = l_{(i)(i+1)} \cdot b_{i+1}^2 = \frac{\displaystyle 1}{\displaystyle x_{i+1} - x_i}\\ &k_{(i)(i+1)} = k_{(i+1)(i)} = l_{(i)(i+1)} \cdot b_i \cdot b_{i+1} = -\frac{\displaystyle 1}{\displaystyle x_{i+1} - x_i} \end{split}
(6.4)

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

K=[k(i)(i)k(i)(i+1)k(i+1)(i)k(i+1)(i+1)]=1xi+1xi[1111].\begin{aligned}\mathbf{K} = \begin{bmatrix} k_{(i)(i)} & k_{(i)(i+1)}\\ k_{(i+1)(i)} & k_{(i+1)(i+1)} \end{bmatrix} = \frac{\displaystyle 1}{\displaystyle x_{i+1} - x_i} \begin{bmatrix} 1 & -1\\ -1 & 1 \end{bmatrix}.\end{aligned}
(6.5)

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

Например, рассмотрим сетку с узлами 0,1,,i,i0, 1, \ldots, i, i +1,,N+1, \ldots, N. При сборке каждый отрезок (j)(j+1)(j)(j+1) вносит вклад ±1l(j)(j+1)\pm \frac{\displaystyle 1}{\displaystyle l_{(j)(j+1)}}, причём внутренний узел ii получает вклад сразу от двух смежных отрезков — (i1)(i)(i-1)(i) и (i)(i+1)(i)(i+1), — поэтому на главной диагонали стоит сумма 1l(i1)(i)\frac{\displaystyle 1}{\displaystyle l_{(i-1)(i)}} +1l(i)(i+1)+ \frac{\displaystyle 1}{\displaystyle l_{(i)(i+1)}}. Поскольку длина l(j)(j+1)l_{(j)(j+1)} зависит от номера отрезка, её нельзя вынести как общий множитель — каждый элемент глобальной матрицы хранит длину своего отрезка. В результате матрица получается трёхдиагональной

K\displaystyle \mathbf{K} =[1l(0)(1)1l(0)(1)001l(0)(1)1l(0)(1)+1l(1)(2)1l(1)(2)01l(1)(2)1l(i1)(i)+1l(i)(i+1)1l(i)(i+1)1l(i)(i+1)1l(i)(i+1)+1l(i+1)(i+2)1l(N1)(N)01l(N1)(N)1l(N1)(N)].\displaystyle = \begin{bmatrix} \frac{\displaystyle 1}{\displaystyle l_{(0)(1)}} & -\frac{\displaystyle 1}{\displaystyle l_{(0)(1)}} & 0 & \cdots & & & 0\\ -\frac{\displaystyle 1}{\displaystyle l_{(0)(1)}} & \frac{\displaystyle 1}{\displaystyle l_{(0)(1)}} + \frac{\displaystyle 1}{\displaystyle l_{(1)(2)}} & -\frac{\displaystyle 1}{\displaystyle l_{(1)(2)}} & & & & \\ 0 & -\frac{\displaystyle 1}{\displaystyle l_{(1)(2)}} & \ddots & \ddots & & & \\ \vdots & & \ddots & \frac{\displaystyle 1}{\displaystyle l_{(i-1)(i)}} + \frac{\displaystyle 1}{\displaystyle l_{(i)(i+1)}} & -\frac{\displaystyle 1}{\displaystyle l_{(i)(i+1)}} & & \vdots\\ & & & -\frac{\displaystyle 1}{\displaystyle l_{(i)(i+1)}} & \frac{\displaystyle 1}{\displaystyle l_{(i)(i+1)}} + \frac{\displaystyle 1}{\displaystyle l_{(i+1)(i+2)}} & \ddots & \\ & & & & \ddots & \ddots & -\frac{\displaystyle 1}{\displaystyle l_{(N-1)(N)}}\\ 0 & & & \cdots & & -\frac{\displaystyle 1}{\displaystyle l_{(N-1)(N)}} & \frac{\displaystyle 1}{\displaystyle l_{(N-1)(N)}} \end{bmatrix}.