3. Implémentation#
L’implémentation dans code_aster de nouvelles méthodes numériques qui diffèrent des éléments de Lagrange peut être difficile. Nous listons les principales raisons:
Nombre limité de supports géométriques possible dans le maillage: triangle et quadrangle en 2D, et tétraèdre, hexaèdre, prisme et pyramide en 3D (pas de support des maillages polyédriques);
Connexion forte entre le support géométrique et l’élément choisi. Le degré d’approximation de la méthode est déterminé par le support géométrique. Par exemple, une approximation linéaire pour des triangles à 3 noeuds (TRIA3) et quadratique pour des triangles à 6 noeuds (TRIA6);
Les inconnues élément fini sont supportées uniquement par des noeuds physiques du maillage (et non par des faces ou des cellules du maillage comme c’est le cas pour les méthodes volumes finis, Galerkin discontinues, et HHO).
Le principal objectif pour l’implémentation des méthodes HHO dans code_aster est de réutiliser autant que possible l’architecture du code et de ne pas modifier les points critiques du code que sont:
Les structures de données
Les catalogues éléments finis
La localité des calculs élémentaires
L’opération d’assemblage
Nous nous limitons nous même à l’implémentation des méthodes HHO dans code_aster aux supports géométriques déjà existants. De plus, uniquement les approximations constante \(k=0\) (en thermique uniquement), linéaire \(k=1\), quadratique \(k=2\), cubique \(k=3\) et quartique \(k=4\) sont implémentées. L’approximation constante, \(k=0\), n’est pas disponible en mécanique car le noyau du tenseur des déformations comprend en plus des translations constantes, les rotations rigides. Les différentes modifications sont limitées à deux opérateurs:
CREA_MAILLAGE: option MODI_HHO
DEFI_MATERIAU: option HHO
3.1. Inconnues HHO et numérotation#
Nous rappelons que les inconnues HHO, \({\widehat{v}}_{T}=({v}_{T},{v}_{\partial T})\in {U}_{T}^{k}\), que nous calculons sont les coefficients des polynômes des cellules et des faces (ces coefficients n’ont a priori aucun sens physique). Puisque, l’assemblage doit être réalisé face par face (et cellule par cellule) et que les inconnues HHO ne peuvent être supportées que par des noeuds physiques du maillage dans code_aster, nous avons besoin que chaque face du maillage possède au moins un noeud qui n’est partagé avec aucune autre face du maillage (typiquement un noeud localisé au barycentre de la face) et qu’il y ait un noeud au barycentre de la cellule. C’est le cas en 2D pour le triangle à 7 noeuds (TRIA7) et le quadrangle à 9 noeuds (QUAD9), et en 3D pour l’hexaèdre à 27 noeuds (HEXA27). Ces supports géométriques correspondent aux éléments quadratiques pour les éléments isoparamétriques. Malheureusement, il n’y a pas dans code_aster de tétraèdres, prismes et pyramides avec cette propriété. C’est pourquoi, nous avons ajouté un convertisseur de maillage dans CREA_MAILLAGE nommé MODI_HHO qui permet de transformer un tétraèdre à 4 noeuds en un tétraèdre à 15 noeuds (de même pour les prismes (PENTA21) et pyramides (PYRAM19)). Les nouveaux noeuds sont localisés au barycentre des faces et de la cellule.
Les inconnues de face \({v}_{F}\) pour les faces \(F\in {F}_{h}\) sont supportées par le noeud qui est localisé au barycentre de la face \(F\). Ces noeuds physiques du maillage qui supportent les inconnues de face sont nommés unknown_nodes. De plus, comme les faces sont supposées planes, nous utilisons les noeuds sommets pour décrire la géométrie des cellules et des faces; et pour calculer les différentes intégrales. Ces noeuds physiques du maillage qui décrivent la géométrie sont nommés geometric_nodes. Finalement, les noeuds localisés aux milieux des segments ne sont pas utilisés et sont nommés empty_nodes. Ces différents catégories de noeuds sont illustrés ici. Ces astuces sur la localisation des inconnues HHO permettent de réutiliser les structures de données et l’assemblage sans modifications.
Fig. 3.1 Différents catégories de noeuds utilisés pour les supports géométriques TRIA7, QUAD9, TETRA15 et HEXA27.#
Remarque (Condensation statique):
La condensation statique (ou complément de Schur) permet d’éliminer localement les inconnues de cellule dans les contributions élémentaires (à la fin, un problème plus petit composé uniquement des inconnues de face est résolu). Une des difficultés principales est que les contributions élémentaires sont calculées localement à l’élément (cellule ou face) puis assemblées directement dans le problème global en utilisant la numérotation. Alors que pour les méthodes HHO, la condensation statique doit être réalisée avant l’assemblage pour éliminer les inconnues de cellules. Pour des raisons de simplicité la condensation statique n’est pas implémentée afin de ne pas changer l’architecture du code.
3.2. Conditions aux limites de Dirichlet#
Les conditions aux limites de Dirichlet sont imposées fortement en modifiant la matrice et le chargement. L’utilisateur doit spécifier les déplacements imposés sur le bord de Dirichlet. Cependant, il n’est pas évident pour l’utilisateur de donner les valeurs des inconnues de faces et cellules car ces coefficients n’ont a priori pas de sens physique. Nous avons ajouté un traducteur automatique qui calcule la projection \(L^2\), \({\Pi}_{F}^{k}({u}_{D})\), et impose la valeur \({v}_{F}={\Pi}_{F}^{k}({u}_{D})\) à partir du déplacement donné \({u}_{D}\) aux noeuds de la face (au sens continu). En pratique, dans AFFE_CHAR_CINE, il suffit de donner les conditions sur DX, DY et/ou DZ et l’opérateur le traduit automatiquement en conditions sur les polynômes HHO.
3.3. Post-traitement#
Les inconnues HHO sont les coefficients de polynômes. Ces coefficients n’ont a priori pas de sens physique. Ainsi, un post-traitement doit être appliqué afin de pouvoir visualiser ces résultats. Nous créons un nouveau champ NOEU qui viendra interpoler au sens des éléments de Lagrange les inconnues HHO dans le champ HHO_DEPL à la fin du calcul. La valeur du déplacement en un noeud du maillage est la moyenne des valeurs des inconnues de cellule qui contient ce noeud. Notons que ce champ est continu contrairement aux champs HHO. Il faut bien noter que ce champ n’est pas en équilibre avec celui des contraintes. Il est là à des fins purement visuels. Le même post-traitement est appliqué aux champs de vitesse et d’accélération dans le cas dynamique.
3.4. Périmètre d’usage#
La méthode HHO est utilisable uniquement en mécanique non-linéaire statique et transitoire (STAT_NON_LINE/DYNA_NON_LINE) et en thermique linéaire et non-linéaire (THER_LINEAIRE/THER_NON_LINE)
Les fonctionnalités suivantes sont exclues:
contact/frottement
pilotage
réduction de modèle
macro-éléments
calcul de modes vibratoires ou de critères de flambement
La méthode est utilisable pour les lois de comportement en petites et grandes déformations (modèle GDEF_LOG, PETIT, GREEN_LAGRANGE).
Par ailleurs, la méthode HHO ne peut être utilisée simultanément avec une méthode élément fini standard. Les conditions limites ne peuvent être affectées que par élimination (AFFE_CHAR_CINE (_F)).
L’essentiel des chargements volumiques et surfaciques sont disponibles.
La méthode fonctionne sur des tout les éléments 2D et 3D du code. Il faut éventuellement utiliser CREA_MAILLAGE/MODI_HHO pour rendre le maillage compatible.
Certains paramètres comme le coefficient de stabilisation peuvent être défini par zone dans DEFI_MATERIAU/HHO. Si aucune valeur n’est donnée une valeur automatique est calculée à partir des paramètres élastiques.