2. Méthode “COLLOCATION”#

Remarque sur le vocabulaire:

Le mot « projeter » est parfois ambigu dans ce document.

Quand on dit « projeter » le champ de \(\mathit{ma1}\) vers \(\mathit{ma2}\) , on cherche le champ sur \(\mathit{ma2}\) connaissant celui sur \(\mathit{ma1}\) : la projection va de 1 vers 2.

Pour la méthode “COLLOCATION”, il faut trouver pour chaque nœud \(\mathit{n2}\) de \(\mathit{ma2}\) quel est le point de \(\mathit{ma1}\) qui occupe la même position que \(\mathit{n2}\) , pour cela on projette le nœud \(\mathit{n2}\) sur le maillage \(\mathit{ma1}\) : la projection va de 2 vers 1.

2.1. Algorithme mis en œuvre#

On boucle sur tous les nœuds du maillage \(\mathit{ma2}\) :

pour chaque nœud (\(\mathit{n2}\) ), on procède en 4 étapes :

  1. On cherche quelle est la maille \(\mathit{m1}\) de \(\mathit{ma1}\) qui « contient » géométriquement le nœud n2,

  2. On détermine une position approchée de \(\mathit{n2}\) dans \(\mathit{m1}\) (i.e. ses coordonnées dans l’élément de référence associé à la maille \(\mathit{m1}\) ),

  3. On «affine» la position calculée précédemment en résolvant un problème non linéaire pour tenir compte du fait que les mailles ne sont pas linéaires (le jacobien de la transformation géométrique varie sur la maille).

  4. On utilise les fonctions de forme de la maille \(\mathit{m1}\) pour déterminer la valeur du champ sur \(\mathit{n2}\) connaissant la valeur du champ sur les nœuds de \(\mathit{m1}\) .

2.1.1. Remarque#

La troisième étape montre que cette méthode suppose que tous les nœuds de la maille m1 connaissent le champ à projeter. Par exemple, on ne saurait pas projeter un champ qui porterait des degrés de liberté différents sur ses nœuds « sommets » et sur ses nœuds « milieux d’arête ». La projection d’un tel champ est possible en revanche avec les 2 autres méthodes de projection [§ 3 ].

2.2. Les difficultés rencontrées et leur traitement#

2.2.1. Étape 1#

  • On ne traite pas l’éventuelle courbure des bords des éléments. Par exemple, dans la figure ci‑dessous (problème plan), le nœud \(\mathit{n2}\) sera déclaré appartenir à la maille \(\mathit{m1a}\) alors qu’il appartient à la maille \(\mathit{m1b}\) . En réalité, ce problème est rare car, le plus souvent, les bords «courbes» n’existent que sur la frontière des domaines maillés (les facettes internes sont planes).

_images/1000077A0000569C00003FAA35C8219B0D2A06CD.svg
  • Si le nœud \(\mathit{n2}\) est en réalité « extérieur » au maillage \(\mathit{ma1}\) , on lui affectera la maille \(\mathit{m1}\) la plus proche de lui. Ce comportement permet de projeter, sans s’arrêter en erreur fatale, un champ sur un maillage dont la frontière diffère légèrement de celle du maillage initial (ce qui est toujours le cas dans la pratique).

2.2.2. Étapes 2 et 3#

Pour trouver le point de l’élément de référence qui donne par la transformation géométrique le nœud \(\mathit{n2}\) , il faut en général résoudre un problème non-linéaire, car il n’y a que pour le triangle à 3 nœuds (en 2D) et pour le tétraèdre à 4 nœuds (en 3D) que la transformation géométrique est linéaire.

On suppose dans un premier temps que la maille est linéaire en oubliant ses nœuds milieux et en la découpant arbitrairement en triangles ou tétraèdres. Dans cette maille «linéarisée» on détermine une position approchée du point en vis à vis du nœud \(\mathit{n2}\) .

Puis on résout par un algorithme de Newton le problème non-linéaire de la recherche précise du point en partant de l’approximation précédemment calculée.

Remarque : le problème non-linéaire est résolu dans deux cas de figure 2D (projection d’un maillage 2D sur un autre maillage 2D) ou 3D (projection d’un maillage 3D sur un autre maillage 3D) mais pas pour les cas 2.5D (coques plongées dans l’espace 3D) ou 1.5D (maillage filaire en 2D),

2.2.3. Étape 4#

On n’utilise pas toujours les vraies fonctions de forme des éléments du maillage initial. En effet, dans le Code_Aster , ce sont les éléments finis qui choisissent leurs fonctions de forme : un triangle de thermique n’est pas obligé de choisir les mêmes fonctions de forme qu’un triangle de mécanique. Un élément peut aussi ne pas avoir besoin de fonctions de forme, ou bien il peut choisir des fonctions différentes selon les variables à interpoler. La formulation de l’élément ne fait pas non plus toujours apparaître d’élément de référence et de transformation géométrique associée.

Pour toutes ces raisons et pour que la programmation de PROJ_CHAMP soit indépendante des éléments finis présents dans le modèle, on affecte à toutes les mailles de \(\mathit{ma1}\) , les fonctions de forme des éléments iso-paramétriques 1D, 2D ou 3D [R3.01.01].

2.3. Détails concernant les étapes 1 et 2#

Informatiquement, les étapes 1 et 2 sont réalisées simultanément. Nous allons discuter successivement de la façon de traiter les 3 problèmes suivants :

  • traitement d’un nœud \(\mathit{n2}\) se retrouvant à l’intérieur de la frontière du maillage \(\mathit{ma1}\) (cas le plus fréquent),

  • traitement d’un nœud \(\mathit{n2}\) à l’extérieur de la frontière de \(\mathit{ma1}\) ,

  • traitement du cas des maillages de type « coque » (surfaces plongées dans \({\mathrm{ℝ}}^{3}\) ).

2.3.1. Nœud n2 « intérieur »#

Pour comprendre le traitement d’un nœud intérieur, prenons le cas d’une maille 2D QUAD8 (\(\mathit{abcd}\) ). On commence par oublier ses nœuds milieux (et donc leur éventuelle courbure) puis on la découpe en 2 triangles (\(\mathit{abc}\) et \(\mathit{acd}\) ). Ce découpage est arbitraire (il dépend de la numérotation locale des nœuds du QUAD8). Notons que l’autre découpage possible (autre diagonale) donnerait en général un autre point dans l’élément de référence.

_images/10001462000069D500002A4500CD708D9C95528E.svg

\(\mathit{n2}\) appartient au triangle \(\mathit{abc}\) . On cherche ses coordonnées barycentriques dans ce triangle. Ce sont les 3 nombres \(\mathit{xa},\mathit{xb},\mathit{xc}\) tels que l’on puisse écrire : \(\mathit{n2}=\mathit{xa}\times a+\mathit{xb}\times b+\mathit{xc}\times c\)

Le point N2 de l’élément de référence retenu par l’algorithme sera:

\(\mathit{N2}=\mathit{xa}\times A+\mathit{xb}\times B+\mathit{xc}\times C\)

Pour les mailles volumiques (Hexaèdres, Pentaèdres, Pyramides et Tétraèdres), on procède de la même façon : on oublie les nœuds milieux et on découpe les mailles non tétraèdriques en tétraèdres.

2.3.2. Nœud n2 « extérieur »#

Un nœud \(\mathit{n2}\) est déclaré extérieur au maillage \(\mathit{ma1}\) si on n’a trouvé aucune maille pour laquelle il soit intérieur. Lorsque ceci est constaté, on recherche la maille \(\mathit{m1}\) la plus proche de \(\mathit{n2}\) . La distance calculée est celle qui sépare le nœud \(\mathit{n2}\) et la frontière de la maille \(\mathit{m1}\) . Appelons \(\mathit{p2}\) le point de \(\mathit{m1}\) le plus proche de \(\mathit{n2}\) . Ce point peut être sur une face d’un élément volumique ou sur une arête ou sur un sommet.

Exemple (en 2D) :

_images/10000E20000069BB00004F7AE5395A679ADB99A0.svg

Au nœud \(B\) , on associe le point \(\mathit{pB}\) obtenu ici par projection orthogonale de \(B\) sur une arête de \(\mathit{T1}\) .

Au nœud \(A\) , on associe le point \(\mathit{pA}\) du triangle \(\mathit{T1}\) . On aurait pu tout aussi bien lui associer le point pA du triangle \(\mathit{T2}\) , mais cela n’aurait rien changé puisque le champ à projeter est connu aux nœuds du maillage. Il est donc continu entre les éléments adjacents.

Une fois trouvé le point \(\mathit{p2}\) de la maille \(\mathit{m1}\) qui réalise le minimum de la distance avec \(\mathit{n2}\) , on se ramène au problème précédent : le point \(\mathit{N2}\) de l’élément de référence qui sera associé à \(\mathit{n2}\) sera le correspondant de \(\mathit{p2}\) par la procédure du paragraphe [§ 2.3.1 ].

Remarques :

Pour un triangle (ou un tétraèdre) donné \(T\) , il n’y a qu’un point \(\mathit{p2}\) réalisant la distance minimale entre \(\mathit{n2}\) et \(T\) car \(T\) est convexe. Cette propriété disparaîtrait si on tenait compte de la courbure des bords des mailles. On voit là que les deux simplifications de l’implémentation (oubli des nœuds milieux et découpage des mailles en triangles linéaires) sont liées entre elles.

Un point extérieur aura toujours une valeur interpolée entre les valeurs des nœuds du maillage \(\mathit{ma1}\) et jamais extrapolée ; ce qui n’est pas le cas des 2 méthodes NUAGE_DEG_0/1.

2.3.3. Cas des maillages « coque »#

Lorsque l’on cherche à projeter les nœuds d’un maillage surfacique sur un autre maillage surfacique, on tombe en général systématiquement sur le cas des points « extérieurs » ci-dessus. En effet, l’imprécision sur les coordonnées des nœuds fait qu’un nœud \(\mathit{n2}\) n’est jamais rigoureusement dans le plan des triangles des mailles de \(\mathit{ma1}\) .

C’est donc la procédure du [§ 2.3.2 ] qui s’applique:

Pour chaque nœud \(\mathit{n2}\) :

  • recherche du triangle (ou du tétraèdre) qui réalise le minimum de distance avec \(\mathit{n2}\) . Identification du point \(\mathit{p2}\) qui réalise cette distance,

  • calcul du point \(\mathit{n2}\) de l’élément de référence qui correspond à \(\mathit{p2}\) par la procédure du [§3.3.1].