Перейти до змісту

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

У методі Ньютона—Рафсона на кожній ітерації розв'язується лінійне рівняння \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\), але геометричні граничні умови (обмеження переміщень) у нього ще не включено. У цьому розділі показано, як змінювати матрицю жорсткості \(\boldsymbol{K}\) і вектор нев'язки \(\boldsymbol{R}\) для ступенів свободи, на які накладено обмеження переміщення \(\boldsymbol{u} = \bar{\boldsymbol{u}}\), щоб після ітерації переміщення досягало заданого значення. Багатоточкові обмеження (MPC) і нелінійні обмеження, пов'язані з контактом, обробляються окремо; див. Багатоточкові обмеження і Контакт.

Принцип збереження обмежених переміщень серед невідомих

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

За такого підходу розмірність матриці коефіцієнтів і порядок ступенів свободи не залежать від наявності обмежень, тому немає потреби вилучати змінні та перепаковувати звільнені рядки й стовпці. Оскільки така перепаковка є складною в реалізації зі зберіганням матриці коефіцієнтів у розрідженому форматі, FrontISTR використовує другий підхід, за якого обмеження забезпечуються лише оновленням матриці коефіцієнтів і правої частини.

Цільове значення поправки Ньютона—Рафсона

Для обмеженого за переміщенням ступеня свободи \(i\) поправка \(du_i\), що визначається на ітерації Ньютона—Рафсона, має дорівнювати

\[ 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\): діагональний член \(K_{ii}\), який є коефіцієнтом при \(du_i\), замінюється на \(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\), а коефіцієнт \(K_{ji}\) при \(du_i\) встановлюється в \(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\), тому перенесення члена не змінює правої частини. Це обмеження дає змогу завершити обробку обмежень лише локальними операціями відносно загальної кількості вузлів.

Пов'язані теми

AI-assisted translation May contain errors Official docs Status