Перейти к содержанию

Обработка геометрических граничных условий

Метод Newton-Raphson на каждой итерации решает линейное уравнение \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\), в которое геометрические граничные условия (ограничения перемещений) ещё не включены. В этой главе для степеней свободы, на которые наложено ограничение перемещения \(\boldsymbol{u} = \bar{\boldsymbol{u}}\), показано, как изменить матрицу жёсткости \(\boldsymbol{K}\) и вектор невязки \(\boldsymbol{R}\), чтобы после итерации перемещение достигало заданного значения. Многоточечные ограничения (MPC) и нелинейные ограничения, связанные с контактом, обрабатываются отдельно; см. Многоточечные ограничения и Контакт.

Подход с сохранением ограниченных перемещений в составе неизвестных

Перемещение узла, на который наложено геометрическое граничное условие, уже не является неизвестной величиной, а фиксируется на заданном значении \(\bar{u}_i\). Эти степени свободы можно рассматривать как константы и исключить из линейного уравнения \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\), однако FrontISTR реализует ограничение, оставляя ограниченные степени свободы в векторе поправок \(d\boldsymbol{u}\) наряду с остальными степенями свободы и изменяя \(\boldsymbol{K}\) и \(\boldsymbol{R}\).

При таком подходе размерность матрицы коэффициентов и порядок степеней свободы не меняются в зависимости от наличия ограничений, поэтому не требуется исключать переменные и уплотнять освободившиеся строки и столбцы. Поскольку такое уплотнение затруднительно при хранении матрицы коэффициентов в разреженном формате, FrontISTR использует второй подход, при котором ограничения реализуются только обновлением матрицы коэффициентов и правой части.

Целевое значение поправки Newton-Raphson

Для ограниченной по перемещению степени свободы \(i\) поправка \(du_i\), определяемая на итерации Newton-Raphson, должна удовлетворять

\[ du_i = d\bar{u}_i \equiv \begin{cases} \bar{u}_i & (\text{1-я итерация}) \\ 0 & (\text{2-я и последующие итерации}) \end{cases} \]

Матрицы \(\boldsymbol{K}\) и \(\boldsymbol{R}\) изменяются так, чтобы выполнялось указанное условие. Благодаря этому на первой итерации приращение перемещения достигает заданного значения \(\bar{u}_i\), а начиная со второй итерации поправка становится равной \(0\), и заданное значение сохраняется.

Процедура преобразования матрицы и вектора невязки

Целевое значение из предыдущего раздела достигается следующими двумя преобразованиями с сохранением формы линейного уравнения \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\).

  1. Диагонализация строки \(i\): диагональный элемент, являющийся коэффициентом при \(du_i\), \(K_{ii}\) заменяется на \(1\), все остальные коэффициенты \(K_{ij}\ (j \not= i)\) — на \(0\), а правая часть принимается равной \(R_i \to d\bar{u}_i\). Тогда уравнение строки \(i\) принимает вид \(du_i = d\bar{u}_i\).
  2. Перенос из строк \(j(\not= i)\): для каждой строки \(j(\not= i)\), если \(K_{ji} \not= 0\), член \(K_{ji} du_i = K_{ji} d\bar{u}_i\) переносится в правую часть. То есть из правой части вычитается \(K_{ji} d\bar{u}_i\), коэффициент при \(du_i\), \(K_{ji}\), заменяется на \(0\).

В компонентной форме уравнения до и после преобразования соответствуют друг другу следующим образом.

\[ \begin{bmatrix} K_{11} & K_{12} & \cdots & K_{1i} & \cdots & K_{1N} \\ K_{21} & K_{22} & \cdots & K_{2i} & \cdots & K_{2N} \\ \vdots & \vdots & \ddots & \vdots & & \vdots \\ K_{i1} & K_{i2} & \cdots & K_{ii} & \cdots & K_{iN} \\ \vdots & \vdots & & \vdots & \ddots & \vdots \\ K_{N1} & K_{N2} & \cdots & K_{Ni} & \cdots & K_{NN} \\ \end{bmatrix} \begin{bmatrix} du_1 \\ du_2 \\ \vdots \\ du_i \\ \vdots \\ du_N \end{bmatrix} = \begin{bmatrix} R_1 \\ R_2 \\ \vdots \\ R_i \\ \vdots \\ R_N \end{bmatrix} \]
\[ \Longrightarrow \quad \begin{bmatrix} K_{11} & K_{12} & \cdots & 0 & \cdots & K_{1N} \\ K_{21} & K_{22} & \cdots & 0 & \cdots & K_{2N} \\ \vdots & \vdots & \ddots & \vdots & & \vdots \\ 0 & 0 & \cdots & 1 & \cdots & 0 \\ \vdots & \vdots & & \vdots & \ddots & \vdots \\ K_{N1} & K_{N2} & \cdots & 0 & \cdots & K_{NN} \\ \end{bmatrix} \begin{bmatrix} du_1 \\ du_2 \\ \vdots \\ du_i \\ \vdots \\ du_N \end{bmatrix} = \begin{bmatrix} R_1 - K_{1i} d\bar{u}_i \\ R_2 - K_{2i} d\bar{u}_i \\ \vdots \\ d\bar{u}_i \\ \vdots \\ R_N - K_{Ni} d\bar{u}_i \\ \end{bmatrix} \]

Обозначив преобразованные матрицу коэффициентов и правую часть соответственно через \(\tilde{\boldsymbol{K}}, \tilde{\boldsymbol{R}}\), окончательно решаемое линейное уравнение имеет вид

\[ \tilde{\boldsymbol{K}}\, d\boldsymbol{u} = \tilde{\boldsymbol{R}} \]

Если существует несколько ограниченных степеней свободы, описанные выше преобразования 1 и 2 последовательно применяются к каждой ограниченной степени свободы \(i\).

Область обработки в реализации с разреженной матрицей

В реализации матрица коэффициентов \(\boldsymbol{K}\) хранится в разреженном формате. Поэтому обработка строк \(j(\not= i)\) в процедуре 2 предыдущего раздела выполняется только для строк, имеющих ненулевой элемент в столбце \(i\), то есть для степеней свободы узлов, соединённых через элементы с ограниченной степенью свободы \(i\). Для несвязанных степеней свободы \(K_{ji} = 0\), поэтому перенос члена не изменяет правую часть. Благодаря этому обработка ограничений завершается только локальными операциями относительно общего числа узлов.

Связанные разделы