Sari la conținut

Tratarea condițiilor geometrice de frontieră

Metoda Newton-Raphson rezolvă ecuația liniară \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\) la fiecare iterație, însă condițiile geometrice de frontieră (constrângerile de deplasare) nu au fost încă incluse în această ecuație. Acest capitol arată cum se modifică matricea de rigiditate \(\boldsymbol{K}\) și vectorul rezidual \(\boldsymbol{R}\) pentru gradele de libertate asupra cărora se aplică restricțiile de deplasare \(\boldsymbol{u} = \bar{\boldsymbol{u}}\), astfel încât deplasarea după iterație să atingă valoarea prescrisă. Constrângerile multipunct (MPC) și constrângerile neliniare asociate contactului sunt tratate separat; consultați Constrângeri multipunct și Contact.

Politica de păstrare a constrângerilor de deplasare ca variabile necunoscute

Deplasarea unui nod supus unei condiții geometrice de frontieră nu mai este o variabilă necunoscută, ci este fixată la valoarea prescrisă \(\bar{u}_i\). Aceste grade de libertate ar putea fi tratate drept constante și eliminate din ecuația liniară \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\); totuși, FrontISTR impune constrângerile prin modificarea lui \(\boldsymbol{K}\) și \(\boldsymbol{R}\), păstrând în același timp gradele de libertate constrânse în vectorul de corecție \(d\boldsymbol{u}\), în același mod ca celelalte grade de libertate.

Prin această abordare, dimensiunile matricei coeficienților și ordonarea gradelor de libertate nu se modifică în funcție de prezența constrângerilor, astfel încât nu este necesară eliminarea variabilelor și recompactarea liniilor și coloanelor eliberate. Deoarece o asemenea recompactare este dificilă într-o implementare care stochează matricea coeficienților în format rar, FrontISTR adoptă abordarea în care constrângerile sunt impuse exclusiv prin actualizarea matricei coeficienților și a membrului drept.

Valoarea țintă a corecțiilor Newton-Raphson

Pentru un grad de libertate \(i\) cu deplasare constrânsă, corecția \(du_i\) obținută în iterația Newton-Raphson este impusă ca

\[ du_i = d\bar{u}_i \equiv \begin{cases} \bar{u}_i & (\text{prima iterație}) \\ 0 & (\text{a doua iterație și cele ulterioare}) \end{cases} \]

Se modifică \(\boldsymbol{K}\) și \(\boldsymbol{R}\) astfel încât corecția să ia această valoare. În consecință, incrementul deplasării atinge valoarea prescrisă \(\bar{u}_i\) la prima iterație; de la a doua iterație înainte, corecția devine \(0\), iar valoarea prescrisă este menținută.

Procedura de modificare a matricei și a vectorului rezidual

Valoarea țintă descrisă în secțiunea precedentă este realizată prin următoarele două modificări, păstrând forma ecuației liniare \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\).

  1. Diagonalizarea liniei \(i\): Se înlocuiește termenul diagonal \(K_{ii}\), coeficientul lui \(du_i\), cu \(1\), toți ceilalți coeficienți \(K_{ij}\ (j \not= i)\) cu \(0\), iar membrul drept se setează la \(R_i \to d\bar{u}_i\). Ecuația de pe linia \(i\) devine astfel \(du_i = d\bar{u}_i\).
  2. Transferul din liniile \(j(\not= i)\): Pentru fiecare linie \(j(\not= i)\), dacă \(K_{ji} \not= 0\), termenul \(K_{ji} du_i = K_{ji} d\bar{u}_i\) se mută în membrul drept. Cu alte cuvinte, din membrul drept se scade \(K_{ji} d\bar{u}_i\), iar coeficientul \(K_{ji}\) al lui \(du_i\) se setează la \(0\).

În formă pe componente, ecuațiile înainte și după modificare corespund după cum urmează.

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

Notând matricea coeficienților și membrul drept modificate prin \(\tilde{\boldsymbol{K}}, \tilde{\boldsymbol{R}}\), ecuația liniară care trebuie rezolvată în final este

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

Dacă există mai multe grade de libertate constrânse, modificările 1 și 2 de mai sus se aplică succesiv fiecărui grad de libertate constrâns \(i\).

Domeniul de procesare în implementarea cu matrice rară

În implementare, matricea coeficienților \(\boldsymbol{K}\) este stocată în format de matrice rară. Prin urmare, procesarea liniilor \(j(\not= i)\) din procedura 2 a secțiunii precedente se efectuează numai pentru liniile care au elemente nenule în coloana \(i\), adică pentru gradele de libertate ale nodurilor conectate prin elemente la gradul de libertate constrâns \(i\). Pentru gradele de libertate neconectate, \(K_{ji} = 0\), astfel încât transferul termenului nu modifică membrul drept. Această restricție permite realizarea procesării constrângerilor numai prin operații locale în raport cu numărul total de noduri.

Subiecte conexe

AI-assisted translation May contain errors Official docs Status