Aller au contenu

Traitement des conditions aux limites géométriques

La méthode de Newton-Raphson résout l’équation linéaire \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\) à chaque itération, mais les conditions aux limites géométriques (contraintes de déplacement) ne sont pas encore incorporées dans cette équation. Ce chapitre montre comment modifier la matrice de rigidité \(\boldsymbol{K}\) et le vecteur résiduel \(\boldsymbol{R}\) pour les degrés de liberté auxquels s’appliquent des contraintes de déplacement \(\boldsymbol{u} = \bar{\boldsymbol{u}}\), afin que le déplacement après itération atteigne la valeur prescrite. Les contraintes multipoints (MPC) et les contraintes non linéaires associées au contact sont traitées séparément ; voir Contraintes multipoints et Contact.

Principe de conservation des déplacements contraints parmi les variables inconnues

Le déplacement d’un nœud soumis à une condition aux limites géométrique n’est plus une variable inconnue, mais est fixé à la valeur prescrite \(\bar{u}_i\). Ces degrés de liberté pourraient être traités comme des constantes et éliminés de l’équation linéaire \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\) ; FrontISTR impose toutefois les contraintes en modifiant \(\boldsymbol{K}\) et \(\boldsymbol{R}\) tout en conservant les degrés de liberté contraints dans le vecteur de correction \(d\boldsymbol{u}\) de la même manière que les autres degrés de liberté.

Avec cette approche, les dimensions de la matrice des coefficients et l’ordre des degrés de liberté ne changent pas selon la présence ou non de contraintes ; il n’est donc pas nécessaire d’éliminer des variables puis de réorganiser les lignes et colonnes libérées. Une telle réorganisation étant contraignante dans une implémentation où la matrice des coefficients est stockée sous forme creuse, FrontISTR adopte l’approche consistant à imposer les contraintes uniquement par mise à jour de la matrice des coefficients et du second membre.

Valeur cible des corrections de Newton-Raphson

Pour un degré de liberté \(i\) soumis à une contrainte de déplacement, la correction \(du_i\) obtenue lors de l’itération de Newton-Raphson doit prendre la valeur

\[ du_i = d\bar{u}_i \equiv \begin{cases} \bar{u}_i & (\text{1re itération}) \\ 0 & (\text{2e itération et suivantes}) \end{cases} \]

On modifie \(\boldsymbol{K}\) et \(\boldsymbol{R}\) de sorte que la correction prenne cette valeur. Ainsi, l’incrément de déplacement atteint la valeur prescrite \(\bar{u}_i\) à la première itération ; à partir de la deuxième itération, la correction devient \(0\), ce qui maintient la valeur prescrite.

Procédure de modification de la matrice et du vecteur résiduel

La valeur cible décrite dans la section précédente est obtenue par les deux modifications suivantes tout en conservant la forme de l’équation linéaire \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\).

  1. Diagonalisation de la ligne \(i\) : remplacer le terme diagonal \(K_{ii}\), coefficient de \(du_i\), par \(1\), remplacer tous les autres coefficients \(K_{ij}\ (j \not= i)\) par \(0\), et fixer le second membre à \(R_i \to d\bar{u}_i\). L’équation de la ligne \(i\) devient alors \(du_i = d\bar{u}_i\).
  2. Transfert depuis les lignes \(j(\not= i)\) : pour chaque ligne \(j(\not= i)\), si \(K_{ji} \not= 0\), déplacer le terme \(K_{ji} du_i = K_{ji} d\bar{u}_i\) vers le second membre. Autrement dit, soustraire \(K_{ji} d\bar{u}_i\) du second membre et fixer à \(0\) le coefficient \(K_{ji}\) de \(du_i\).

Sous forme composante par composante, les équations avant et après modification correspondent comme suit.

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

En notant respectivement la matrice des coefficients et le second membre modifiés par \(\tilde{\boldsymbol{K}}, \tilde{\boldsymbol{R}}\), l’équation linéaire finalement résolue est

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

S’il existe plusieurs degrés de liberté contraints, les modifications 1 et 2 ci-dessus sont appliquées successivement à chaque degré de liberté contraint \(i\).

Étendue du traitement dans l’implémentation en matrice creuse

Dans l’implémentation, la matrice des coefficients \(\boldsymbol{K}\) est stockée sous forme de matrice creuse. Par conséquent, le traitement des lignes \(j(\not= i)\) de la procédure 2 de la section précédente n’est effectué que pour les lignes possédant des composantes non nulles dans la colonne \(i\), c’est-à-dire pour les degrés de liberté de nœuds reliés par des éléments au degré de liberté contraint \(i\). Pour les degrés de liberté non connectés, \(K_{ji} = 0\) ; le transfert du terme ne modifie donc pas le second membre. Cette restriction permet de traiter les contraintes uniquement par des opérations locales par rapport au nombre total de nœuds.

Rubriques connexes