3. Enrichissement du modèle#
Il s’agit de l’opérateur MODI_MODELE_XFEM [U4.41.11], développé spécialement pour l’analyse par X-FEM [R7.02.12] avec le but de modifier certains éléments finis classiques afin de les transformer en éléments finis enrichis. Cet opérateur a notamment pour but de préparer le modèle à un calcul X-FEM dans lequel l’utilisateur aurait introduit plusieurs fissures. Les fissures peuvent éventuellement découper la même maille voir se brancher l’une sur l’autre.. On fait appel à la routine XCONNO qui réalise la concaténation des SD X-FEM définies par fissure, le principe étant d’avoir des SD définies sur le modèle, pour l’ensemble des fissures. Ces SD concaténées servent ensuite au découpage des éléments en sous éléments (XTOPOI) et à déterminer les facettes de contact (XTOPOC).
Pour l’approche grands glissements avec X-FEM , les modifications apportées ici concernent la topologie des facettes de contact. Plus exactement, le contenu de l’objet MODELE//”.TOPOFAC.PI” (voir [D4.10.02]) a été changé: il ne stocke plus les coordonnées réelles des points d’intersection, mais les coordonnées de référence dans l’élément parent. On ajoute en même temps deux nouveaux objets: MODELE//”.TOPOFAC.GE” et MODELE//”.TOPOFAC.GM” qui vont stocker les coordonnées réelles des points d’intersection pour les facettes de contact, respectivement esclave et maître . On a donc dupliqué les facettes de contact par rapport à l’implémentation HPP. Par convention on désigne comme facette esclave celle formée par des points d’intersection attachés au côté des LSN négatifs (LSN<0 aux nœuds enrichis), tandis que la facette maître est formée par les points d’intersection attachés au côté des LSN positifs (LSN>0 aux nœuds enrichis). On observe que l’utilisateur a la possibilité de jouer avec le statut des facettes en changeant le signe de la level-set LSN dans le fichier de commande. Si la fissure n’est pas introduite par une fonction analytique mais par des mailles surfaciques, le changement du statut esclave/maître est possible par le changement d’ordre des nœuds qui composent ces mailles. Cette dernière opération peut s’avérer onéreuse et donc l’introduction d’un nouveau mot clé est envisageable pour permettre à l’utilisateur le choix facile des côtés positifs et négatifs, directement dans le fichier de commande. Pour plus de détails sur le calcul des level-sets pour les deux modalités d’introduction d’une fissure, voir le chapitre 2.2 de la documentation de référence de la X-FEM [R7.02.12].
Plusieurs SD qui sont mentionnées ici sont attachées au MODELE et présentées en détail dans le manuel [D4.06.02] «Structures de Données ligrel et modele».
Voici un exemple d’appel de l’opérateur X-FEM dans le fichier de commande:
MODELEK=MODI_MODELE_XFEM(MODELE_IN=MODELEIN,
FISSURE=(FISS1,FISS2),
CONTACT=”P1P1”,
INFO=1,);
La description des routines Fortran pour l’opérateur MODI_MODELE_XFEM est donnée ci-dessous et l’arbre d’appel est présenté sur la Figure 2.
OP0113 – est la routine de base de l’opérateur. On crée ici trois SD: MODELE//”.XFEM_CONT” (stocke l’information sur l’existence ou non du contact), MODELE//”.NFIS” (stocke le nombre des fissures dans le modèle) et MODELE//”.FISS” (stocke les noms des fissures).
XTYELE– routine qui détermine le type d’élément X-FEM, suivant le type d’enrichissement et suivant le type de contact.
XTYHEA – routine qui compte le nombre de ddl Heavisides actifs dans la maille, dans le cas du Multi-Heaviside.
XMOLIG – routine pour la modification de la LIGREL X-FEM, suivant le type d’enrichissement.
XCODEC – routine chapeau pour le lancement du calcul du découpage en sous-tétraèdres, des facettes de contact et vérification des critères de conditionnement.
XCONNO – routine qui réalise la concaténation des champs nœuds pour passer à la multi-fissuration. Les nouveaux champs sont attachés au modèle, ils sont de type champ elno.
XFISNO– routine qui crée les sd MODELE”//.FISSNO” et MODELE”//.HEAVNO”. Ce sont des champs ELNO utiles dans le cas des éléments qui voient plusieurs fissures. La première SD retourne le numéro de fissure vu localement par l’élément associé au numéro de ddl Heaviside du nœud. La deuxième réalise l’opération inverse et retourne le numéro de ddl Heaviside à associer au numéro local de fissure au nœud.
XTOPOI – lancement du calcul de découpage des éléments fissurés en sous-tétraèdres.
TE0514 – calcul élémentaire des partitions des éléments fissurés.
On sort avec les SD:
MODELE//”TOPOSE.PIN”,MODELE//”TOPOSE.CNS”,MODELE//”TOPOSE.HEA”, MODELE//”TOPOSE.LON’etMODELE//”TOPOSE.CRI”. Lorsque la maille voit plusieurs fissures, elle est découpée séquentiellement par chacune des fissures. A cet effet, les différentes opérations de ce TE sont encapsulées dans une boucle sur les fissures.
XDECOU – routine appelée depuis TE0514 pour trouver les points d’intersection entre les arêtes et le plan de fissure. Notons que c’est la routine XDECQU qui est appelée dans le cas quadratique.
XDECOV - routine appelée depuis TE0514 pour découper un tétraèdre en sous-tétraèdres. Notons que c’est la routine XDECQV qui est appelée dans le cas quadratique.
XTOPOC – lancement du calcul pour le sous-découpage de la surface de contact et la création des SD MODELE//”.TOPOFAC.PI”, MODELE//”.TOPOFAC.AI”, MODELE//”.TOPOFAC.CF”, MODELE//”.TOPOFAC.LO”, MODELE//”.TOPOFAC.BA” et MODELE//”.TOPOFAC.OE” Notons que la SD MODELE//”.TOPOFAC.PI” contient les coordonnées des points d’intersection dans l’élément parent: elle est très utile pour retrouver la valeur des fonctions de forme des points d’intersection. La SD MODELE//”.TOPOFAC.OE” analogue contient les coordonnées des points d’intersection dans le repère global. Elle est utile pour alimenter le TE0519 lors de la réactualisation géométrique. Dans le cas de mailles multi-fisurées, toutes ces SD sont dupliquées autant de fois que l’élément voit de fissures. La SD MODELE//”.TOPOFAC.HE” est alors ajoutée pour stocker, par facette de contact, la valeur des fonctions Heaviside de chaque fissure de part et d’autre de la facette.
TE0510 – calcul élémentaire pour la topologie des facettes de contact. Notons que les facettes sont aussi utiles dans le cas des éléments sans contact, afin d’imposer des efforts de pression au niveau des lèvres de la fissure. Dans le cas des éléments contenant une jonction entre fissure, certaines facettes devraient être redécoupées de part et d’autre de la jonction. Ce travail n’a pas été implémenté et les facettes ne sont pas prises en compte.
XCFACE – routine appelée par TE0510 pour trouver les points d’intersection entre les arêtes et le plan de la fissure et déterminer le découpage des facettes. Notons que c’est la routine XCFAQ2 qui est appelée dans le cas quadratique.
XCFACF – routine pour trouver les points d’intersection entre le fond de fissure et les faces pour les éléments en fond de fissure.
XCFACJ – routine pour trouver les points d’intersection entre la jonction de fissures et les faces pour les éléments multi-fisurés.
XAINT2 – routine qui modifie la SD MODELE://”TOPOFAC.AI” dans le cas de mailles multi-fissurées. Il faut s’assurer que les facettes connectées à l’arête coupée possèdent bien les mêmes valeurs de fonction Heaviside. Dans le cas contraire l’arête est éliminée pour éviter tout conflit LBB.
XSTAN2 – routine qui modifie la SD MODELE://”.STNO” afin d’annuler les degrés de liberté HEAVISIDE pour des raisons de conditionnement de matrice et pour éviter des pivots nuls dans la matrice de rigidité.
XCRVOL – routine appelée par XSTAN2 aidant pour le calcul du critère volumique en lien avec le conditionnement des éléments X-FEM.
XORIPE – routine pour orienter les sous-éléments de peau des éléments X-FEM (en 2D les mailles de peau sont des segments de bord).
Figure 2. L’arbre d’appel de l’opérateur MODI_MODELE_XFEM