Přeskočit obsah

Zpracování geometrických okrajových podmínek

Newton-Raphsonova metoda řeší v každé iteraci lineární rovnici \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\), avšak geometrické okrajové podmínky (omezení posunutí) dosud nejsou do této rovnice zahrnuty. Tato kapitola ukazuje, jak upravit matici tuhosti \(\boldsymbol{K}\) a vektor rezidua \(\boldsymbol{R}\) pro stupně volnosti, na které jsou aplikována omezení posunutí \(\boldsymbol{u} = \bar{\boldsymbol{u}}\), aby posunutí po iteraci dosáhlo předepsané hodnoty. Vícebodová omezení (MPC) a nelineární omezení související s kontaktem jsou zpracována samostatně; viz Vícebodová omezení a Kontakt.

Zásada ponechání omezených posunutí jako neznámých proměnných

Posunutí uzlu podléhajícího geometrické okrajové podmínce již není neznámou proměnnou, ale je pevně nastaveno na předepsanou hodnotu \(\bar{u}_i\). Tyto stupně volnosti by bylo možné považovat za konstanty a eliminovat je z lineární rovnice \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\); FrontISTR však vynucuje omezení úpravou \(\boldsymbol{K}\) a \(\boldsymbol{R}\), přičemž omezené stupně volnosti ponechává ve vektoru korekcí \(d\boldsymbol{u}\) stejným způsobem jako ostatní stupně volnosti.

Při tomto přístupu se rozměry matice koeficientů ani pořadí stupňů volnosti nemění podle přítomnosti omezení, takže není nutné eliminovat proměnné a znovu uspořádávat uvolněné řádky a sloupce. Protože je takové přeuspořádání v implementaci ukládající matici koeficientů ve formátu řídké matice obtížné, FrontISTR používá druhý přístup, při němž se omezení vynucují výhradně aktualizací matice koeficientů a pravé strany.

Cílová hodnota korekcí Newton-Raphsonovy metody

Pro stupeň volnosti \(i\) s omezeným posunutím nechť korekce \(du_i\) získaná v Newton-Raphsonově iteraci splňuje

\[ du_i = d\bar{u}_i \equiv \begin{cases} \bar{u}_i & (\text{1. iterace}) \\ 0 & (\text{2. a další iterace}) \end{cases} \]

Upravte \(\boldsymbol{K}\) a \(\boldsymbol{R}\) tak, aby korekce nabývala této hodnoty. Tím přírůstek posunutí dosáhne předepsané hodnoty \(\bar{u}_i\) v první iteraci; od druhé iterace se korekce rovná \(0\) a předepsaná hodnota se zachovává.

Postup úpravy matice a vektoru rezidua

Cílové hodnoty popsané v předchozí části se dosáhne následujícími dvěma úpravami při zachování tvaru lineární rovnice \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\).

  1. Diagonalizace řádku \(i\): Nahraďte diagonální člen \(K_{ii}\), koeficient u \(du_i\), hodnotou \(1\), všechny ostatní koeficienty \(K_{ij}\ (j \not= i)\) hodnotou \(0\) a pravou stranu nastavte na \(R_i \to d\bar{u}_i\). Rovnice v řádku \(i\) se potom změní na \(du_i = d\bar{u}_i\).
  2. Přesun z řádků \(j(\not= i)\): Pro každý řádek \(j(\not= i)\) s \(K_{ji} \not= 0\) přesuňte člen \(K_{ji} du_i = K_{ji} d\bar{u}_i\) na pravou stranu. To znamená odečíst \(K_{ji} d\bar{u}_i\) od pravé strany a koeficient \(K_{ji}\) u \(du_i\) nastavit na \(0\).

Ve složkovém zápisu odpovídají rovnice před a po úpravě následujícím tvarům.

\[ \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} \]

Označme upravenou matici koeficientů a pravou stranu jako \(\tilde{\boldsymbol{K}}, \tilde{\boldsymbol{R}}\). Lineární rovnice, která se nakonec řeší, je

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

Pokud existuje více omezených stupňů volnosti, aplikují se výše uvedené úpravy 1 a 2 postupně na každý omezený stupeň volnosti \(i\).

Rozsah zpracování v implementaci řídké matice

V implementaci je matice koeficientů \(\boldsymbol{K}\) uložena ve formátu řídké matice. Zpracování řádků \(j(\not= i)\) v postupu 2 předchozí části se proto provádí pouze pro řádky, které mají ve sloupci \(i\) nenulové prvky, tedy pro stupně volnosti uzlů spojených prostřednictvím prvků s omezeným stupněm volnosti \(i\). U nespojených stupňů volnosti je \(K_{ji} = 0\), takže přesun členu pravou stranu nezmění. Toto omezení umožňuje dokončit zpracování omezení pouze lokálními operacemi vzhledem k celkovému počtu uzlů.

Související témata

AI-assisted translation May contain errors Official docs Status