Kihagyás

Geometriai peremfeltételek kezelése

A Newton-Raphson-módszer minden iterációban a \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\) lineáris egyenletet oldja meg, ebbe azonban még nincsenek beépítve a geometriai peremfeltételek (elmozdulási kényszerek). Ez a fejezet bemutatja, hogyan kell módosítani a \(\boldsymbol{K}\) merevségi mátrixot és a \(\boldsymbol{R}\) maradékvektort azokon a szabadságfokokon, amelyekre \(\boldsymbol{u} = \bar{\boldsymbol{u}}\) elmozdulási kényszer vonatkozik, hogy az iteráció utáni elmozdulás elérje az előírt értéket. A többpontos kényszerek (MPC) és az érintkezéshez kapcsolódó nemlineáris kényszerek kezelése külön eljárás; lásd a Többpontos kényszerek és az Érintkezés fejezetet.

Az elmozdulási kényszerek ismeretlen változóként való megtartásának elve

A geometriai peremfeltétellel ellátott csomópont elmozdulása már nem ismeretlen változó, hanem az előírt \(\bar{u}_i\) értékre van rögzítve. Ezeket konstansként kezelve ki is lehetne küszöbölni a \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\) lineáris egyenletből, a FrontISTR azonban úgy érvényesíti a kényszert, hogy a kényszerezett szabadságfokokat a többi szabadságfokhoz hasonlóan benne hagyja a \(d\boldsymbol{u}\) korrekcióvektorban, és helyettük a \(\boldsymbol{K}\) és \(\boldsymbol{R}\) értékeit módosítja.

Ezzel a módszerrel az együtthatómátrix mérete és a szabadságfokok sorrendje nem változik attól függően, hogy vannak-e kényszerek, így nincs szükség a változók kiküszöbölése után felszabaduló sorok és oszlopok újratömörítésére. Mivel ez az újratömörítés ritka mátrixos tárolás esetén körülményes, a FrontISTR az utóbbi megoldást alkalmazza: a kényszert kizárólag az együtthatómátrix és a jobb oldal módosításával érvényesíti.

A Newton-Raphson-korrekció célértéke

Az \(i\) kényszerezett elmozdulási szabadságfok esetén a Newton-Raphson-iterációban számított \(du_i\) korrekciót úgy kell meghatározni, hogy

\[ du_i = d\bar{u}_i \equiv \begin{cases} \bar{u}_i & (\text{1. iteráció}) \\ 0 & (\text{a 2. iterációtól}) \end{cases} \]

legyen. Ennek megfelelően kell módosítani a \(\boldsymbol{K}\) és \(\boldsymbol{R}\) értékét. Így az elmozdulásnövekmény már az első iterációban eléri az előírt \(\bar{u}_i\) értéket, a második iterációtól pedig a korrekció \(0\), ezért az előírt érték megmarad.

A mátrix és a maradékvektor módosításának eljárása

Az előző szakasz célértéke a \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\) lineáris egyenlet alakjának megtartása mellett a következő két módosítással érhető el.

  1. Az \(i\) sor diagonalizálása: A \(du_i\) együtthatóját, azaz a \(K_{ii}\) diagonális tagot \(1\)-re, az összes többi \(K_{ij}\ (j \not= i)\) együtthatót \(0\)-ra kell cserélni, a jobb oldalt pedig \(R_i \to d\bar{u}_i\) értékre kell állítani. Így az \(i\) sor egyenlete \(du_i = d\bar{u}_i\) lesz.
  2. Áthelyezés a \(j(\not= i)\) sorokból: Minden \(j(\not= i)\) sorban, ahol \(K_{ji} \not= 0\), a \(K_{ji} du_i = K_{ji} d\bar{u}_i\) tagot át kell vinni a jobb oldalra. Vagyis a jobb oldalból le kell vonni \(K_{ji} d\bar{u}_i\)-t, és a \(du_i\) \(K_{ji}\) együtthatóját \(0\)-ra kell állítani.

Komponensalakban a módosítás előtti és utáni egyenletek a következőképpen felelnek meg egymásnak.

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

A módosított együtthatómátrixot és jobb oldalt rendre \(\tilde{\boldsymbol{K}}\), illetve \(\tilde{\boldsymbol{R}}\) jelöli. A végül megoldandó lineáris egyenlet

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

alakú. Ha több kényszerezett szabadságfok van, a fenti 1. és 2. módosítást minden egyes \(i\) kényszerezett szabadságfokra egymás után kell alkalmazni.

A ritka mátrixos megvalósítás feldolgozási tartománya

A megvalósításban a \(\boldsymbol{K}\) együtthatómátrix ritka mátrixos formában van tárolva, ezért az előző szakasz 2. eljárásában a \(j(\not= i)\) sorok kezelése csak azokra a sorokra terjed ki, amelyek \(i\) oszlopában nem nulla elem található, vagyis azokra a szabadságfokokra, amelyek elemen keresztül kapcsolódnak az \(i\) kényszerezett szabadságfokhoz. Nem kapcsolódó szabadságfokoknál \(K_{ji} = 0\), így az áthelyezés nem változtatja meg a jobb oldalt. Ennek a korlátozásnak köszönhetően a kényszer kezelése a globális csomópontszámhoz képest csak lokális műveletekkel elvégezhető.

Kapcsolódó elemek

AI-assisted translation May contain errors Official docs Status