Gå till innehållet

Behandling av geometriska randvillkor

Newton-Raphson-metoden löser den linjära ekvationen \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\) vid varje iteration, men geometriska randvillkor (förskjutningsbegränsningar) har ännu inte införlivats i denna ekvation. Detta kapitel visar hur styvhetsmatrisen \(\boldsymbol{K}\) och residualvektorn \(\boldsymbol{R}\) modifieras för de frihetsgrader där förskjutningsbegränsningar \(\boldsymbol{u} = \bar{\boldsymbol{u}}\) tillämpas, så att förskjutningen efter iterationen når det föreskrivna värdet. Flerpunktsbegränsningar (MPC) och icke-linjära begränsningar förknippade med kontakt behandlas separat; se Flerpunktsbegränsningar och Kontakt.

Princip för att behålla förskjutningsbegränsningar som okända variabler

Förskjutningen för en nod som omfattas av ett geometriskt randvillkor är inte längre en okänd variabel utan är fixerad till det föreskrivna värdet \(\bar{u}_i\). Dessa frihetsgrader skulle kunna behandlas som konstanter och elimineras ur den linjära ekvationen \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\); FrontISTR genomdriver dock begränsningarna genom att modifiera \(\boldsymbol{K}\) och \(\boldsymbol{R}\) samtidigt som de begränsade frihetsgraderna behålls i korrektionsvektorn \(d\boldsymbol{u}\) på samma sätt som övriga frihetsgrader.

Med detta angreppssätt ändras inte koefficientmatrisens dimensioner eller frihetsgradernas ordning beroende på om begränsningar finns, så det finns inget behov av att eliminera variabler och packa om de frigjorda raderna och kolumnerna. Eftersom en sådan ompackning är besvärlig i en implementation där koefficientmatrisen lagras i gles matrisform använder FrontISTR det senare angreppssättet, där begränsningarna genomdrivs enbart genom uppdatering av koefficientmatrisen och högerledet.

Målvärde för Newton-Raphson-korrektioner

För en förskjutningsbegränsad frihetsgrad \(i\), låt korrektionen \(du_i\) som erhålls i Newton-Raphson-iterationen vara

\[ du_i = d\bar{u}_i \equiv \begin{cases} \bar{u}_i & (\text{1:a iterationen}) \\ 0 & (\text{2:a och efterföljande iterationer}) \end{cases} \]

Modifiera \(\boldsymbol{K}\) och \(\boldsymbol{R}\) så att korrektionen antar detta värde. Därmed når förskjutningsinkrementet det föreskrivna värdet \(\bar{u}_i\) i den första iterationen; från och med den andra iterationen blir korrektionen \(0\) och det föreskrivna värdet bibehålls.

Procedur för modifiering av matrisen och residualvektorn

Målvärdet som beskrevs i föregående avsnitt uppnås genom följande två modifieringar, samtidigt som formen på den linjära ekvationen \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\) behålls.

  1. Diagonalisering av rad \(i\): Ersätt diagonaltermen \(K_{ii}\), koefficienten för \(du_i\), med \(1\), ersätt alla övriga koefficienter \(K_{ij}\ (j \not= i)\) med \(0\) och sätt högerledet till \(R_i \to d\bar{u}_i\). Ekvationen på rad \(i\) blir då \(du_i = d\bar{u}_i\).
  2. Överföring från rader \(j(\not= i)\): För varje rad \(j(\not= i)\), om \(K_{ji} \not= 0\), flytta termen \(K_{ji} du_i = K_{ji} d\bar{u}_i\) till högerledet. Det vill säga, subtrahera \(K_{ji} d\bar{u}_i\) från högerledet och sätt koefficienten \(K_{ji}\) för \(du_i\) till \(0\).

I komponentform motsvarar ekvationerna före och efter modifieringen följande.

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

Låt den modifierade koefficientmatrisen och högerledet betecknas med \(\tilde{\boldsymbol{K}}, \tilde{\boldsymbol{R}}\). Den linjära ekvation som slutligen ska lösas är

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

Om det finns flera begränsade frihetsgrader tillämpas modifieringarna 1 och 2 ovan successivt på varje begränsad frihetsgrad \(i\).

Behandlingsomfång i implementationen med gles matris

I implementationen lagras koefficientmatrisen \(\boldsymbol{K}\) i gles matrisform. Därför utförs behandlingen av rader \(j(\not= i)\) i procedur 2 i föregående avsnitt endast för rader som har nollskilda element i kolumn \(i\), det vill säga för frihetsgrader hos noder som genom element är anslutna till den begränsade frihetsgraden \(i\). För oanslutna frihetsgrader är \(K_{ji} = 0\), så en överföring av termen ändrar inte högerledet. Denna begränsning gör att begränsningsbehandlingen kan slutföras enbart med lokala operationer i förhållande till det totala antalet noder.

Relaterade ämnen

AI-assisted translation May contain errors Official docs Status