Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:xfem:xfem

This is an old revision of the document!


eXtended Finite Element Method

Introduction

Les éléments finis enrichis définis dans la librairies mtXFEM ne permettent pour le moment que de modéliser des discontinuités matérielles de type “material / void”. Les enrichissements spécifiques pour la description d'inclusion, de bi-matériaux ou de phénomènes de fracturation ne sont pas encore disponibles dans Metafor.

Principe

La frontière de la structure est décrite par l’iso-zéro d’une level set (fonction distance signée - cf l’exemple si dessous pour une frontière circulaire). Dans les zones ou la level set est négative, on suppose qu’on est dans la matière, inversement si elle est positive on est dans le vide.

La formulation éléments finis doit donc être enrichie de manière à pouvoir considérer les cas ou l’élément est vide, rempli, ou partiellement rempli. Les deux premiers cas sont triviaux : on les enlève de l’analyse ou on utilise une formulation classique sur l’élément. Pour le dernier cas, on va intégrer par partie les forces internes et la matrice de raideur en utilisant des sous-cellules triangulaires d’intégration.

Ces sous-cellules n’ont pas de degrés de liberté associés. Ce sont uniquement des supports des quantités du quadrangle sur les section de l’élément ou il existe de la matière.

Pour l'application de conditions limites, une stratégie similaire, utilisant des éléments uni-dimensionnels d'intégration, est définie. Elle permet de prendre en compte des chargements sur la frontière de la structure qui sont appliquées à l'intérieur d'un élément fini enrichi.

Intérêt

Les frontières des éléments du maillage n'ont plus besoin d'être coincidents avec les frontières de la structure. La définition du maillage est alors indépendante de la topologie de la structure.

Quelque soit la complexité de la zone matérielle, une bounding box couvrant l'intégralité du maillage, et dont la qualité géométrique est parfaite, peut alors être utilisée.

Implémentation numérique

Dans Metafor, une nouvelle librairie appelée mtXFEM a permis d'introduire les développements X-FEM indépendamment des librairies déjà existantes pour les éléments finis classique. Une seconde librairie mtXFEMDrawable contient les classes et fonctions d'affichage spécifiques aux X-FEM.

Plus précisement différentes classes ont étés introduites. Les plus importantes sont les suivantes :

  • XFEMElement : Element fini enrichi 2D quadrangulaire. Le fichier cpp est cindé en 3 fichiers :
    • XFEMElement_basics : définition numérique de l'éléments fini etendu et définition des fonctions “classiques” (constructeur, destructeur, initID, toDofSet, etc.)
    • XFEMElement_enrichment : contient toutes les fonctions spécifiques aux élements finis enrichis (calcul de la fonction level set, construction des éléments d'intégration, etc.)
    • XFEMElement_io : contient les fonctions d'affichage (grossièrement copiées-collées du Volume2DElement
  • XFEMTractionElement et XFEMContactElement sont les éléments enrichis de chargement. Ils sont bi-dimensionnels (contrairement aux éléments de chargement 2D traditionnels) pour permettre le calcul des quatre forces nodales associées à un chargement interne. Ces deux éléments utilisent respectivement les XFEMLoadingElement et les XFEM1DContactElement comme frontière uni-dimensionnelle d'intégration
  • 3 classes d'interactions (XFEMFieldApplicator, XFEMLoadingInteraction, XFEMContactInteraction) dont le fonctionnement est très similaire au fonctionnement des interactions éléments finis classique (voir plus bas).
  • Une méthode d'intégration volumique spécifique (XFEMVolumeIntegrationMethod) pour le calcul des quantités aux points de Gauss des sous-cellules d'intégration et des forces internes.
  • 3 classes de matériau de contact (XFEMFrictionLessContactMaterial, XFEMStickingContactMaterial, XFEMCoulombContactMaterial)

Formalisme du jeu de données

Différents exemples sont disponibles dans le dossier apps/XFEM/. Le plus simple pour découvrir la syntaxe d'un cas test est de lancer “cont.py”.

Définition géométriques

Dans un premier temps on définit une bounding box (rectangulaire, la plus simple possible) de la zone matérielle que l'on va définir par la suite. Cette bounding box sera maillée par la suite en utilisant les outils classiques de Metafor.

Une wire doit par la suite être définie de manière à décrire la frontière initiale de la structure. Cette wire doit éventuellement être orientée selon la méthode de calcul de la level set retenue (voir l'option LS_CALC_METH plus loin).

Enfin des wires permettant de décrire les frontières chargées de la structure (ou suceptible d'être chargées plus tard pour les interactions de contact) doivent être définies.

XFEMFieldApplicator

Tout comme pour les FieldApplicator et autre interactions, il convient de définir dans un premier temps un ElementProperties adéquate pour l'interaction. Les propriétés obligatoires sont les suivantes :

  prp1 = ElementProperties(XFEMElement)
  prp1.put(BOUNDARY_WIRE, 2)              # wire décrivant la frontière de la structure
  prp1.put(CAUCHYMECHVOLINTMETH, VES_CMVIM_STD)   # méthode d'intégration pour les éléments remplis
  prp1.put(MATERIAL, 1)                   # loi matériau (domain.getMaterialSet()) définie classiquement
  

Les paramêtre optionnels sont les suivants. Pour cet exemple les paramêtres par défaut sont donnés

  
  prp1.put(NB_IP_INTCELL, 1)              # nombre de points de gauss par sous cellule triangulaire
  prp1.put(INVERSE_WIRE, 0)               # Wire décrite vide a droite ou a gauche (pour modéliser des trous)
  prp1.put(TOL_LEVELSET, 0.15)            # % a partir de laquelle la distance signée est mise à zéro
  prp1.put(LS_CALC_METH, 0)               # méthode de calcul du signe de la level set
  prp1.put(SOUS_INTEG, 0)                 # méthode apparentée à la sous-intégration pour les éléments coupés
  prp1.put(FULL_SIDES, 0)                 # affichage de l'ensemble des élements ou seulement des actifs

Attention, en fonction des paramêtres LS_CALC_METH et TOL_LEVELSET, la définition du maillage de calcul peut parfois échouer. En agissant sur ces deux paramêtres il est souvent possible de retrouver un maillage de calcul correct.

Une fois l'ElementProperties correctement définit, le XFEMFieldApplicator est définit classiquement (comme un FieldApplicator classique) :

  app = XFEMFieldApplicator(1)
  app.push(Sset(1))       # numéro de la side correspondant à la bounding box maillée 
  app.addProperty(prp1)
  domain.getInteractionSet().add(app)

Interaction de chargement

Interaction de contact

Dans un premier temps on définit un matériau de contact, qui permet de définir les paramêtres de pénalités. En fonction du matériau de contact retenu, seuls certains paramètres doivent être définis :

  Mat.define(2,XFEMFrictionlessContactMaterial)
  Mat(2).put(NPENALTY, 1.e9)   # pénalité normale
  Mat(2).put(TPENALTY, 3.3e8)  # pénalité tangente (sauf pour XFEMFrictionlessContactMaterial)
  Mat(2).put(COEF_FROT, 0.3)   # seulement pour XFEMCoulombContactMaterial
  Mat(2).put(UNILAT, 0)        # loi de contact unilatéral

Seuls deux paramêtres sont définis dans le ElementProperties : la loi de matériau de contact, et le nombre de point de gauss par sous-cellule d'intégration de conditions limites. En pratique, il absolument inutile d'en utiliser plus de deux (si les éléments sont linéaires).

  prp2 = ElementProperties(XFEMContactElement)
  prp2.put(MATERIAL, 2)
  prp2.put(XNIP, 2)

Enfin l'interaction de contact est définie comme une interaction de contact classique (push des frontières suceptibles de rentrer en contact avec l'outil définit par setTool :

  load = XFEMContactInteraction(2)
  load.setTool(Cset(8))
  load.push(Cset(5))
  load.push(Cset(12))
  load.push(Cset(9))
  load.addProperty(prp2)
  domain.getInteractionSet().add(load)

Limitations actuelles

doc/user/xfem/xfem.1377089545.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki