Calcul efficient : qualité des résultats et efforts de
calcul
Amélioration d’un modèle : méthodes r, h et p
Les indicateurs d’erreur ont pour but de nous indiquer si « nous sommes loin de la solution », afin de pouvoir modifier le modèle si besoin. Ainsi, par itérations successives, on pourra tendre vers une solution de plus en plus proche de la solution exacte. Les indicateurs locaux nous permettent notamment de faire des modifications uniquement locales du modèles, i.e. uniquement là où il y en a besoin, par exemple en raffinant le maillage. Globalement, il existe trois stratégies pour améliorer la précision de la solution obtenue : Méthode r : Pour un maillage et un type d’élément donné, il s’agit de déplacer les nœuds, en fonctions des indicateurs d’erreur, et donc sans impacter le nombre de degrés de liberté du système. Ainsi, la taille des éléments peut augmenter (maillage plus grossier) dans les zones les moins sollicitées et diminuer (maillage plus fin) dans les zones les plus sollicitées. On voit que la restriction de la méthode est qu’elle ne joue pas sur le nombre de n ? ?uds, et que par conséquent, sans violer les contraintes de distorsion, elle est limitée. Méthode h : En conservant le même type d’élément, on les subdivise dans les zones les plus sollicitées selon le ou les indicateurs d’erreur choisis. Dans cette méthode, on augmente le nombre de nœuds afin de contrôler les erreurs et la précision du modèle. Il est nécessaire de se fixer une limite dans la précision recherchée afin de ne pas trop raffiner le maillage. Méthode p : À nombre d’éléments constant, dans les zones les plus sollicitées, on va modifier les éléments en introduisant des fonctions de formes polynomiales d’ordre plus élevé, dites hiérarchiques. La complexité du système est cette fois encore accrue. Évidemment, ces méthodes peuvent être combinées. La méthode -hp- propose de modifier à la fois le maillage et les fonctions d’interpolation. Elle semble aujourd’hui être la méthode optimale en terme d’efficacité et de vitesse de convergence. Notons que les méthodes -r- et -h- dépendent des capacités du mailleur automatique implémenté. De nombreux travaux existent sur le maillage automatique, nous n’entrerons pas dans ce détail. 13.2 Post-traitement Une manière d’améliorer les résultats est de recourir à des méthodes dites de post-traitement, i.e. des méthodes qui, à partir des données issues de la résolution du système matriciel correspondant au problème, fournissent des données complémentaires ou améliorent toute ou partie des données déjà disponibles. En fonction des problèmes (donc des données disponibles et des données souhaitées) de nombreuses méthodes existent. Elles sont généralement dédiées à un problème donné.Nous nous proposons ici de donner quelques exemples : — Nous avons déjà abordé dans ce document le cas où, à partir des déplacement nodaux obtenus par un calcul éléments finis d’une structure mécanique composée de deux matériaux différents dans une discrétisation classique « en déplacements », on souhaite remonter aux contraintes à l’interface entre lesdits matériaux. Une méthode mentionnée est la méthode dite de « Reissner local » qui consiste à intégrer les équations d’équilibre sous la forme mixte de Reissner, mais uniquement sur des paires d’éléments ayant des propriété matérielles différentes et possédant une face commune. On obtient alors un champ de contrainte complètement continu dont on ne retient que les composantes correspondant à la trace des contraintes, les autres étant calculées comme dans la méthode classique. On montre que l’on améliore grandement la qualité de l’approximation des contraintes aux interfaces, mêmes avec un maillage grossier. — Disposant d’un point de pression constant par élément, on peut calculer la pression en un point quelconque comme interpolation (linéaire ou non) à partir des points disponibles. — À partir des données nodales dans un modèle unidimensionnel (poutre ou barre selon le cas), il est possible de remonter à la répartition des contraintes en un points quelconque de la structure via les hypothèses faites dans le modèle sur la répartition des contraintes dans une section + via une interpolation lorsque l’on se trouve dans une section ne passant pas par un nœud. — Dans de nombreux cas industriels, une condition de la conception est que la contrainte reste en tout point en-deçà de la limite élastique du matériau. Un calcul linéaire est donc tout à fait licite, et l’on en est fort aise… Néanmoins, il se peut que dans certaines zones locales, ce critère ne soit pas respecté. Comment faire alors pour obtenir des contraintes « améliorées » dans cette zone, i.e. des contraintes plus proches de ce qu’aurait donné un calcul non-linéaire (mais coûteux) ? Il existe plusieurs méthodes. L’une d’elle est de procéder à une correction plastique. Nous présentons ici sommairement la méthode de Neuber, initialement proposée en 1961 [107], et aujourd’hui couramment utilisée. D’autres méthodes existent, telle que celle de Molski-Glinka [108], ou encore d’autres plus ou moins raffinées [109]. Dans le cas d’un chargement uniaxial, Neuber postule que le produit de la contrainte par la déformation ne dépend pas de l’écoulement plastique. Cette solution ne permet pas de prendre en compte la contrainte moyenne. C’est pourquoi d’autres auteurs, comme par exemple Chaudonneret et Culié [110, 111], ont proposé une autre méthode basée sur un changement de repère à chaque extremum du chargement. Pour un état de contrainte multiaxial, Plusieurs généralisations des travaux de Neuber ont été faites. Les meilleurs résultats sont obtenus en considérant les invariants de von Mises des tenseurs. C’est la forme qui a été adoptée dans la majorité des postulats de type Neuber pour des états de contrainte multiaxiaux. On pourra se reporter à la thèse de Herbland [109] paragraphe III.2 pour plus de détails.
Exemple d’implémentation d’un post-traitement dans ANSYS
Dans ce chapitre, nous présentons un manière d’implémenter la méthode « Reissner local » mentionnée aux paragraphes 13.2 et 12.3. Il s’agit de calculer les contraintes à l’interface entre deux matériaux en utilisant la fonctionnelle mixte d’Hellinger-Reissner donnée à l’équation (8.52). Le but est de montrer que même sur un maillage grossier, il est possible de correctement estimer les contraintes aux interfaces, pour peu que l’on dispose d’une méthode appropriée. Nous espérons qu’au passage, nous démontrerons également qu’il est assez simple d’implémenter des fonctions dans un code existant.
Macro dans ANSYS
Si un code ne dispose pas de la méthode que l’on souhaite utiliser, il est toujours possible de retraiter les résultats… toutefois, selon les codes, il est plus ou moins aisé d’implémenter des fonctions dans ledit code. ANSYS est souvent qualifié de « code industriel », ce qui pourrait laisser supposer qu’il n’a pas la même capacité à résoudre les problèmes que des codes dits « de recherche » ou « spécialisés ». Or il n’en est rien (même si en toute rigueur, il y a une quinzaine d’années il était plus faible que d’autres sur les non linéarités, ce qui n’est plus vrai depuis longtemps). C’est vrai que disposant d’une interface utilisateur remarquable (comparée à celle de nombreux autres codes), il est possible de ne réaliser les calculs que via cette interface, i.e. sans passer par un fichier batch… ce que ne font de toutes façons pas les gens sérieux (donc cet argument ne tient pas). Le qualificatif d’industriel peut également laisser penser que le logiciel est plus fermé que d’autres, mais ce n’est que partiellement le cas, en tous les cas on peut y remédier facilement, et c’est pourquoi nous allons présenter l’implémentation d’une macro dans ce code. Pour implémenter une nouvelle fonction dans ANSYS, plusieurs méthodes s’offrent à nous. Nous citerons : — écrire le bout de programme et recompiler le noyau : c’est faisable en théorie, mais personnellement je n’ai jamais réussi… — partir des fichiers de résultats binaires pour les retravailler : c’est également théoriquement faisable, mais il faut décortiquer les formats d’écriture desdits fichiers, les relire, réécrire dans le même format… et c’est donc beaucoup de travail (purement informatique) ; — programmer la fonction directement sous ANSYS (ANSYS possède un langage assez riche et puissant) ; — ou alors, et c’est la voie que nous allons montrer, utiliser ANSYS en « coopération » avec un petit programme extérieur. La structure de la macro ANSYS que nous proposons (et qui peut être également incluse dans les menus d’ANSYS, mais nous n’entrons pas dans ce niveau de détail d’interfaçage) est très simple : — on récupère les données dont nous avons besoin et on les stocke dans des fichiers externes (simples) ; — on lance un programme externe (dont la structure sera exposée plus bas) ; — on réintègre les résultats dans ANSYS. On peut alors se servir de toutes les fonctions de visualisation disponibles dans ANSYS avec les résultats modifiés… La routine READANS permet de lire les données. Celles-ci sont stockées dans les matrices COORD(NODMAX,3), DISP(NODMAX,2), XMAT(MATMAX,3) et NLT(NELTMAX,9). la routine CHELT détecte les interfaces, i.e. les faces dont les nœuds appartiennent à des éléments dont les propriétés matérielles sont différentes. Le vecteur NADJ(NODMAX,8) contient les numéros des deux éléments adjacents (positions 1 et 2) ainsi que les numéros des nœuds de l’interface (positions 3, 4 et 5). La routine MATER construit, pour chacune des faces de l’interface, la matrice de rigidité (aussi bien pour le cas isotrope que pour le cas orthotrope). La routine LOCREISS calcule les contraintes nodales le long de chaque face. Les contraintes ayant été calculées pour les nœuds de chacune des faces de l’interface, on moyenne les résultats pour un nœud appartenant à plusieurs faces. C’est ce que fait la routine AVERAGE. À ce stade, nous disposons donc des contraintes nodales, calculées par la fonctionnelle mixte d’Hellinger-Reissner, le long de toutes les interfaces présentes dans le modèle. Il ne reste plus qu’à écrire ces résultats pour qu’ils soient relus par la macros ANSYS.