6. Conseils et recommandations sur le maillage#
Cette partie traite de l’adéquation entre le maillage utilisé pour le calcul et la qualité de la solution obtenue. D’abord on rappelle la problématique du raffinement de maillage dans le cadre de la méthode X-FEM. Après un rappel de la définition de la taille de maille, un critère à respecter sur les tailles des mailles est donné. Ensuite, on présente différentes stratégies de raffinement. On détaille par la suite celle basée sur le logiciel Homard couplé à Code_Aster. Enfin, on résume la méthodologie recommandée pour le raffinement de maillage dans le cadre X-FEM.
6.1. La problématique du raffinement de maillage dans le cadre X-FEM#
L’utilisation de la méthode X-FEM permet de lever certaines difficultés liées au maillage. Notamment, un maillage libre de la structure saine suffit. Dans la suite, on fera l’hypothèse que le maillage sain initial est suffisamment fin pour obtenir une précision suffisante sur les déplacements et contraintes pour un calcul d’une structure sans fissure.
L’introduction de la fissure amène à se poser 2 questions:
Le maillage initial est-il suffisamment fin pour représenter la forme géométrique de la fissure?
Le maillage initial est-il suffisamment fin pour le post-traitement des quantités caractéristiques de la mécanique de la rupture (taux de restitution d’énergie et facteurs d’intensité des contraintes)?
La première question est légitime, car la géométrie de la fissure est caractérisée par les level sets, dont les valeurs sont portées aux nœuds du maillage. Donc la finesse du maillage influe sur la qualité de la représentation de la fissure, et donc sur la forme de la fissure. Dans l’immense majorité des cas, la surface de la fissure est plane. Ce type de surface peut être représenté fidèlement même avec un maillage relativement grossier. Dans le cas contraire (fissure courbe), il faut s’assurer que la courbure de la fissure peut être bien représentée.
La qualité de la représentation du fond de fissure est aussi importante. Mais les exigences en terme de représentation géométrique correcte sont négligeables devant celles nécessaires pour le post-traitement (cf. 2ème question).
La 2ème question est la plus préoccupante. En effet, les contraintes sont singulières en pointe de fissure. Il faut donc un maillage adapté pour bien capter cette singularité. Ce problème est traité avec la méthode des éléments finis (FEM) par l’utilisation d’une part d’éléments quadratiques dont les nœuds milieux sont déplacés au quart des arêtes (éléments dits de «Barsoum») et d’autre part d’un maillage rayonnant qui permet un fort raffinement dans la zone de post-traitement.
Avec X-FEM, l’ajout de fonctions d’enrichissement asymptotiques est le pendant des éléments de Barsoum. Mais cela n’a une influence que très localement. Il faut donc un maillage relativement raffiné dans la zone de post-traitement. Notons aussi que seuls les éléments X-FEM linéaires sont considérés dans cette note (les éléments X-FEM quadratiques étant actuellement en cours d’optimisation).
L’obtention d’un maillage suffisamment fin est le cœur de ce chapitre. L’objectif est de préciser dans un premier temps quelle doit être la finesse du maillage dans la zone de post-traitement. Ensuite, la démarche d’obtention d’un tel raffinement est expliquée.
Remarque:
Le cas des interfaces est plus problématique car d’une part les interfaces sont généralement courbes et d’autre part des conditions de contact unilatéral sont souvent définies sur les interfaces. Or pour résoudre correctement le problème du contact entre 2 surfaces courbes, il est impératif que les surfaces soient représentées par des éléments finis d’ordre 2. Une thèse sur les interfaces courbes représentées par des level sets d’ordre 2 est en cours. Cependant, on ne traitera pas dans ce chapitre le cas du raffinement de maillage pour les interfaces.
6.2. Définition de la taille d’une maille#
On définit la taille d’une maille (ou encore diamètre d’une maille) comme la valeur de la longueur de la plus grande arête de la maille. Cette taille peut être facilement calculée dans le module SMESH de Salomé (Control → Element Diameter 2D ou 3D).
6.3. Critères sur les tailles des mailles#
La précision du calcul du taux de restitution d’énergie (\(G\) ) et des facteurs d’intensité des contraintes (\(K\) ) est directement liée à la taille des éléments proches du fond de fissure. Il convient de distinguer 2 longueurs:
la longueur des éléments dans le plan orthogonal au fond de fissure en 3D, c’est-à-dire le plan complet en 2D;
la longueur des éléments le long du fond de fissure (en 3D uniquement).
Dans le plan, on considère que la zone d’intérêt est un disque autour du fond de fissure de rayon \(R<a/5\) , \(a\) étant la profondeur de la fissure. Dans cette zone, on constate qu’environ 4 à 6 éléments sont nécessaires pour obtenir une erreur sur le taux de restitution d’énergie entre 1% et 2%. Par conséquent, la taille maximale d’un élément dans cette zone, notée \({h}_{1}\) , doit être de l’ordre de \(a/20\) .
Le long du fond de fissure, la discrétisation est liée à la courbure du fond de fissure. Pour un fond droit, quelques éléments suffisent. Pour un fond courbe, par exemple un quart de cercle, le nombre d’éléments le long du fond, noté \({h}_{2}\) , doit être au moins égal à 20.
Dans certains cas (notamment avec un maillage en hexaèdres), on peut régler indépendamment les tailles des mailles \({h}_{1}\) , et \({h}_{2}\) . Mais dans la plupart des cas (maillages en tétraèdres), la taille des mailles est liée à un seul paramètre utilisateur \(h\) . Il faut donc que h satisfasse les 2 conditions ci-dessus, soit \(h=min({h}_{1,}{h}_{2})\) . La 2ème condition n’est pas aisée à écrire car elle dépend de la courbure du fond de fissure. Or c’est bien souvent la 1ère condition qui est la plus contraignante sur la taille des mailles \(({h}_{1}<{h}_{2})\) . On peut ainsi conclure dans le cas général, la condition à respecter sur la taille des mailles dans la zone d’intérêt: \(h\) ne doit dépasser \(a/20\) .
Bilan:
Dans le cas général, la taille des mailles dans une zone proche du fond de fissure doit être de l’ordre de \(a/20\) , \(a\) étant la profondeur de la fissure. Des tailles de l’ordre de \(a/10\) permettent d’avoir déjà une bonne idée du résultat.
6.4. Techniques de raffinement de maillage dans le cadre X-FEM#
L’obtention d’un maillage X-FEM sur une structure industrielle n’est pas si aisée. Deux approches peuvent être envisagées: l’introduction d’un bloc fissure, ou l’adaptation de maillage.
L’introduction d’un bloc fissure consiste à définir lors de la création du maillage, une boîte englobant la fissure. Le maillage dans cette boîte sera réglé, et la finesse du maillage doit être un paramètre de la procédure de maillage. La boîte doit être suffisamment large si l’étude la propagation de la fissure est envisagée. Il est aussi nécessaire de créer une zone de raccord entre la boîte réglée, et le reste de la structure maillée en libre. Cette approche a récemment été utilisée dans plusieurs études (voir les notes d’étude [7] et [8]). Ce bloc raffiné peut être également obtenu en exploitant les cartes de tailles locales des algorithmes de maillages (Netgen, Blsurf).
La deuxième approche (recommandée) consiste à réaliser un maillage adéquat par raffinements successifs d’un maillage libre initial jugé grossier. Le critère de raffinement (ou critère d’erreur) est basé sur la distance au fond de fissure. Un exemple d’utilisation de cette approche par adaptation de maillage avec le logiciel Homard est présenté dans [9]. Sa mise en œuvre est dorénavant très aisée, grâce à la macro-commande RAFF_XFEM qui crée le champ d’erreur directement à partir de la liste des fissures. Ce champ d’erreur doit ensuite être donné en entrée de la macro-commande MACR_ADAP_MAIL (voir un exemple d’adaptation de maillage pour X-FEM avec le cas test sslp317a,b,c).
La paragraphe suivant détaille cette 2ème approche.
6.5. Méthodologie de raffinement de maillage avec Homard et level sets#
Cette technique ne nécessite pas de disposer de la géométrie (CAO). Elle fait appel seulement au maillage initial sain. Elle utilise le logiciel de raffinement de maillage Homard, appelable depuis Code_Aster par la commande MACR_ADAP_MAIL.
6.5.1. Détermination du nombre d’appel à Homard#
À chaque appel à Homard, les mailles qui seront découpées verront leur taille divisée d’un facteur 2. Il est donc facile de savoir le nombre de fois qu’il faut successivement appeler Homard. Connaissant la taille initiale des mailles dans la zone d’intérêt \({h}_{0}\) et la taille des mailles que l’on souhaite obtenir au final \({h}_{c}\) (taille cible), il faut appeler Homard au moins \(\text{nb\_raff}\) fois, avec \(\text{nb\_raff}\ge \frac{\ln({h}_{0})-\ln({h}_{c})}{\ln(2)}\) . On recommande de prendre \(\text{nb\_raff}=E(n)+1\) , avec \(n=\frac{\ln({h}_{0})-\ln({h}_{c})}{\ln(2)}\) . La taille des mailles après raffinement sera donc de \(h=\frac{{h}_{0}}{{2}^{\text{nb\_raff}}}\) . Notons que bien souvent, à cause de la division entière, la taille finale n’est pas exactement la taille cible souhaitée, mais on sait que \(\frac{{h}_{c}}{2}\le h\le {h}_{c}\) .
Maintenant que le nombre d’appels à Homard est déterminé, il est nécessaire de savoir pour chaque appel à Homard combien de mailles, et lesquelles, doivent être découpées (pilotage d’Homard).
6.5.2. Pilotage d’Homard (indicateur d’erreur et critère de raffinement)#
Il faut que Homard raffine uniquement les mailles les plus proches du fond de fissure. Pour cela, il suffit de lui fournir un champ représentant la distance au fond de fissure en chaque nœud du maillage. Les nœuds dont cette distance est la plus faible permettent de déterminer les mailles à raffiner en priorité. La question est alors la suivante: combien de mailles faut-il découper à chaque appel à Homard? On peut soit imposer:
un pourcentage de mailles à découper,
ou bien choisir de découper toutes les mailles dont la distance au fond est inférieure à une valeur limite (seuil). Cette valeur limite peut être la valeur du rayon de la zone de post-traitement (notée \(R\) au § 6.3 ).
Critère avec pourcentage d’éléments: la difficulté est de trouver les bons pourcentages qui peuvent dépendre de la position du fond (longueur du fond). Cela pose un problème en pratique pour la propagation. Bien que simple, ce critère est déconseillé car il abouti à des maillages peu optimaux en termes de nombre de nœuds (voir illustration sur le cas-test sslp317a).
Critère avec seuil: des mailles initiales très grosses peuvent poser problème. Ainsi aucune maille n’est découpée initialement, car aucune maille ne se trouve complètement à une distance inférieure au seuil \(R\) . Il faut alors forcer l’algorithme à découper et utiliser un seuil variable. Le seuil au niveau de raffinement \(k\) s’écrit alors \(max(R,\frac{{h}_{0}}{{2}^{k}})\) .
Remarque:
Homard ne permet de découper que les mailles dont la valeur du champ «d’erreur» est supérieure au seuil. Il a donc fallu créer un champ d’erreur tel que les mailles les plus proches du fond de fissure aient l’erreur la plus grande. Pour cela, l’erreur n’est pas la distance \(d\) au fond de fissure, mais l’opposée de la distance au fond, soit \(e=-d\) . La condition \(d<max(R,\frac{{h}_{0}}{{2}^{k}})\) devient donc \(e=-d>-max(R,\frac{{h}_{0}}{{2}^{k}})\) . Donc le seuil à définir dans Homard (CRIT_RAFF_ABS) est en fait égal à \(-max(R,\frac{{h}_{0}}{{2}^{k}})\) . Il faut aussi utiliser le mot-clé USAGE_CMP = “RELATIF”(voir illustration sur le cas-test sslp317b).
Sur certains maillages où les mailles sont un peu allongées, l’utilisation d’un critère avec seuil variable tel que évoqué précédemment ne fonctionne pas et aucune maille n’est découpée initialement. Un nouvel indicateur d’erreur par zone (indicateur binaire) a récemment été mis en place (RAFF_XFEM/TYPE=”ZONE”). Le principe de cet indicateur est de valoir 1 dans la zone à raffiner (zone d’intérêt) et 0 partout ailleurs. La zone d’intérêt est en 2d un disque autour du fond de fissure et en 3d un tore autour du fond de fissure, caractérisés par la donnée d’un rayon \(R\) . Cet indicateur permet de toujours raffiner au moins une maille, et est plus simple à utiliser que l’indicateur précédent (voir [U7.03.51]). L’utilisation de ce nouvel indicateur ainsi que la méthodologie associée sont conseillés . Il s’utilise exclusivement avec un critère en valeur absolue dans MAC_ADAP_MAIL (CRIT_RAFF_ABS fixé à 0,5). Avec cette indicateur, il est préférable de réaliser un appel à Homard en plus de \(\text{nb\_raff}\) , avec DIAM_MIN fixé à \({h}_{c}\) .
Pour une illustration de cette méthodologie, on peut se référer aux cas-tests sslv155[b,c], sslv110f, sslp317c. Un récapitulatif complet de cette méthodologie est donné au paragraphe suivant.
6.6. Récapitulatif de la méthodologie recommandée de raffinement de maillage#
On peut résumer la méthodologie recommandée par l’algorithme suivant:
estimation de la taille des mailles initiales dans la zone d’intérêt (il est préférable que les tailles dans cette zone soient homogènes) → \({h}_{0}\)
donnée de la taille cible de mailles après raffinement de la zone d’intérêt: \({h}_{c}\) (entre \(a/10\) et \(a/40\) )
calcul du nombre minimal de raffinements: \(\text{nb\_raff}=E(n)+1\) , avec \(n=\frac{\ln({h}_{0})-\ln({h}_{c})}{\ln(2)}\)
calcul de la taille des mailles après raffinement: \(h=\frac{{h}_{0}}{{2}^{\text{nb\_raff}}}\)
calcul du rayon de la zone d’intérêt: \(R=5h\)
nombre véritable d’itérations de la boucle d’adaptation: \(\text{nb\_iter}=\text{nb\_raff}+1\) .
boucle d’adaptation
définition de la fissure/interface sur le maillage courant
calcul de l’indicateur par zone (RAFF_XFEM/TYPE=”ZONE”,RAYON= \(R\) ).
appel à Homard avec CRIT_RAFF_ABS = 0,5 et DIAM_MIN = \({h}_{c}\) .
Remarque:
Dans le cas des maillages dont la taille des mailles n’est pas uniforme dans la zone d’intérêt, on peut utiliser le même algorithme en notant \({h}_{0}\) la plus grande taille des mailles dans cette zone. Mais la formule \(h=\frac{{h}_{0}}{{2}^{\text{nb\_raff}}}\) ne s’applique plus. Donc la taille des mailles après raffinement est inconnue. On ne peut donc pas choisir \(R=5h\) car \(h\) est une inconnue. On choisit alors \(R=5{h}_{c}\) bien que ce choix ne soit pas optimal. On conseille alors après la phase de raffinement de déterminer \(h\) «à la main», puis de dé-raffiner hors de la zone d’intérêt définie par \(R=5h\) . Ceci étant un peu délicat à mettre en œuvre, une macro-commande est en cours de réflexion.