Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:xfem:xfem

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:user:xfem:xfem [2013/08/21 14:49] – [Interactions de chargement] biotteaudoc:user:xfem:xfem [2016/03/30 15:23] (current) – external edit 127.0.0.1
Line 3: Line 3:
 ===== Introduction ===== ===== 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.+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 pour les XFEMElements (voir les ElementXFEM défis par Lara dans oo_nda\intelSig\src et bon courage !).
  
 ==== Principe ==== ==== Principe ====
Line 23: Line 23:
 ==== Intérêt ==== ==== 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. +Les frontières des éléments du maillage n'ont plus besoin d'être coïncidents 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. 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.
Line 35: Line 35:
 Plus précisement différentes classes ont étés introduites. Les plus importantes sont les suivantes : 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//Élément 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_basics// : définition numérique de l'élément fini étendu 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_enrichment// : contient toutes les fonctions spécifiques aux éléments 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       * //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    * //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
Line 47: Line 47:
 ===== Formalisme du jeu de données ===== ===== 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".+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"Ne pas oublier en en-tête de fichier d'importer la libraire mtXFEM et la visualisation en utilisant la commande : 
 + 
 +  from toolbox.importMetafor_XFEM import *
  
 ==== Définition géométriques ==== ==== Définition géométriques ====
Line 66: Line 68:
     prp1.put(MATERIAL, 1)                   # loi matériau (domain.getMaterialSet()) définie classiquement     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+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(NB_IP_INTCELL, 1)              # nombre de points de gauss par sous cellule triangulaire
Line 73: Line 75:
     prp1.put(LS_CALC_METH, 0)               # méthode de calcul du signe de la level set     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(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+    prp1.put(FULL_SIDES, 0)                 # affichage de l'ensemble des éléments 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) : Une fois l'ElementProperties correctement définit, le XFEMFieldApplicator est définit classiquement (comme un FieldApplicator classique) :
Line 83: Line 87:
 ==== Interaction de chargement ==== ==== Interaction de chargement ====
  
 +L'ElementProperties pour une interaction de chargement est le suivant :
  
-==== Interaction de contact====+    prp2 ElementProperties(XFEMTractionElement) 
 +    prp2.put(XPRESSURE, 100000000)    # Pression de chargement 
 +    prp2.put(XNIP, 2)                 # Nombre de point de gauss par cellule linéaire d'intégration
  
-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 :+En pratique, il absolument inutile d' utiliser plus de deux points d'intégration (si les éléments sont linéaires). Comme pour les interactions classiques, il est possible de faire dépendre la pression du temps : 
 + 
 +    fct = PieceWiseLinearFunction() 
 +    fct.setData(0.0, 0.0) 
 +    fct.setData(1.0, 1.0) 
 +    prp2.depend(XPRESSURE, fct, Field1D(TM,RE)) 
 +     
 +L'interaction de chargement est alors définie de la manière suivante : 
 +     
 +    load = XFEMLoadingInteraction(2) 
 +    load.push(Cset(13))              # curve chargée 
 +    load.addProperty(prp2) 
 +    domain.getInteractionSet().add(load) 
 +==== 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.define(2,XFEMFrictionlessContactMaterial)
Line 92: Line 114:
     Mat(2).put(TPENALTY, 3.3e8)  # pénalité tangente (sauf pour XFEMFrictionlessContactMaterial)     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(COEF_FROT, 0.3)   # seulement pour XFEMCoulombContactMaterial
-    Mat(2).put(UNILAT, 0)        # loi de contact unilatéral+    Mat(2).put(UNILAT, 0)        # loi de contact unilatéral ou non
  
-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).+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. 
  
     prp2 = ElementProperties(XFEMContactElement)     prp2 = ElementProperties(XFEMContactElement)
Line 109: Line 131:
     load.addProperty(prp2)     load.addProperty(prp2)
     domain.getInteractionSet().add(load)     domain.getInteractionSet().add(load)
 +    
 +==== Reste du jeu de données ====
  
 +Le reste du jeu de données est classique. Pour le mechanicalIterationManager, je conseille de mettre la tolérance sur le résidu à 1.0e-2. Dans le cas ou un encastrement est définit en utilisant une XFEMContactIteration (XFEMStickingContactMaterial avec unilatéral nul) il peut être nécessaire de réduire la valeur de cette tolérance.
 +    
 +==== Affichage ====
  
-===== Limitations actuelles ====+L'affichage classique est remplacé par l'affichage des éléments complètements rempli et par les cellules d'intégration. De manière à mieux visualiser les XFEM je conseille d'utiliser la visualisation suivante : 
  
 +    try :
 +        win1 = VizWin()
 +        win1.add(app.getXFEMSides().getCurveSet())
 +        win1.add(app.getXFEMElementSet())
 +        win1.open()
 +        metafor.addObserver(win1)
 +    except NameError:
 +        pass 
 +        
 +et de désactiver l'affichage de la grille (maillage de calcul)dans les options de la fenêtre. La dimension de app.getXFEMSides().getCurveSet() dépend du paramètre FULL_SIDES (affichage du maillage des éléments, ou uniquement des éléments actifs).
 +
 +
 +===== Limitations actuelles ====
  
 +   * Lorsque le chargement sur la structure devient trop important, la distorsion du maillage pour les éléments peut remplis provoque l'apparition d'un jacobien négatif et l'arrêt du calcul.
 +   * Dans certains cas, le calcul du signe de la fonction level set peut être faux... Dans ce cas la zone matérielle numérique ne correspond pas à la zone matérielle définie par l'utilisateur. L'utilisation du paramètre LS_CALC_METH permet néanmoins de limiter l'apparition de ce problème.
 +   * Des surcontraintes peuvent apparaitre sur les éléments en contact de part le chargement.
 +   * L'utilisation de trop de point de gauss par sous-cellules triangulaire peut provoquer des surcontraintes et l'arrêt du calcul faute de convergence.
 +   * Si la frontière présente deux arrêtes vives au sein d'un unique élément, un seul point de "bifurcation" est détecté par Metafor (il correspond à celui permettant de couvrir la zone matérielle la plus importante).
doc/user/xfem/xfem.1377089374.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki