doc:user:xfem:xfem
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
doc:user:xfem:xfem [2013/08/21 10:52] – created biotteau | doc:user:xfem:xfem [2016/03/30 15:23] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 2: | Line 2: | ||
===== 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 " | ||
==== Principe ==== | ==== 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' | ||
+ | |||
+ | {{ : | ||
==== Intérêt ==== | ==== Intérêt ==== | ||
+ | |||
+ | Les frontières des éléments du maillage n'ont plus besoin d' | ||
+ | |||
+ | Quelque soit la complexité de la zone matérielle, | ||
+ | |||
+ | {{ : | ||
==== Implémentation numérique ==== | ==== Implémentation numérique ==== | ||
+ | Dans Metafor, une nouvelle librairie appelée mtXFEM a permis d' | ||
+ | |||
+ | Plus précisement différentes classes ont étés introduites. Les plus importantes sont les suivantes : | ||
+ | |||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * 3 classes d' | ||
+ | * Une méthode d' | ||
+ | * 3 classes de matériau de contact (// | ||
===== 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 " | ||
+ | |||
+ | from toolbox.importMetafor_XFEM import * | ||
+ | |||
+ | ==== Définition géométriques ==== | ||
+ | |||
+ | Dans un premier temps on définit une bounding box (rectangulaire, | ||
+ | |||
+ | 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' | ||
+ | |||
+ | Enfin des wires permettant de décrire les frontières chargées de la structure (ou suceptible d' | ||
==== XFEMFieldApplicator ==== | ==== XFEMFieldApplicator ==== | ||
- | ==== Interactions | + | Tout comme pour les FieldApplicator et autre interactions, |
+ | prp1 = ElementProperties(XFEMElement) | ||
+ | prp1.put(BOUNDARY_WIRE, | ||
+ | prp1.put(CAUCHYMECHVOLINTMETH, | ||
+ | prp1.put(MATERIAL, | ||
+ | | ||
+ | Les paramêtre optionnels sont les suivants. Pour cet exemple les paramètres par défaut sont donnés | ||
+ | | ||
+ | prp1.put(NB_IP_INTCELL, | ||
+ | prp1.put(INVERSE_WIRE, | ||
+ | prp1.put(TOL_LEVELSET, | ||
+ | prp1.put(LS_CALC_METH, | ||
+ | prp1.put(SOUS_INTEG, | ||
+ | prp1.put(FULL_SIDES, | ||
+ | Attention, en fonction des paramêtres LS_CALC_METH et TOL_LEVELSET, | ||
+ | Une fois l' | ||
- | ===== Limitations actuelles | + | app = XFEMFieldApplicator(1) |
+ | app.push(Sset(1)) | ||
+ | app.addProperty(prp1) | ||
+ | domain.getInteractionSet().add(app) | ||
+ | ==== Interaction de chargement | ||
+ | L' | ||
+ | |||
+ | prp2 = ElementProperties(XFEMTractionElement) | ||
+ | prp2.put(XPRESSURE, | ||
+ | prp2.put(XNIP, | ||
+ | |||
+ | En pratique, il absolument inutile d' utiliser plus de deux points d' | ||
+ | |||
+ | fct = PieceWiseLinearFunction() | ||
+ | fct.setData(0.0, | ||
+ | fct.setData(1.0, | ||
+ | prp2.depend(XPRESSURE, | ||
+ | | ||
+ | L' | ||
+ | | ||
+ | load = XFEMLoadingInteraction(2) | ||
+ | load.push(Cset(13)) | ||
+ | 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, | ||
+ | Mat(2).put(NPENALTY, | ||
+ | Mat(2).put(TPENALTY, | ||
+ | Mat(2).put(COEF_FROT, | ||
+ | Mat(2).put(UNILAT, | ||
+ | |||
+ | 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' | ||
+ | |||
+ | prp2 = ElementProperties(XFEMContactElement) | ||
+ | prp2.put(MATERIAL, | ||
+ | prp2.put(XNIP, | ||
+ | |||
+ | Enfin l' | ||
+ | |||
+ | 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) | ||
+ | | ||
+ | ==== Reste du jeu de données ==== | ||
+ | |||
+ | Le reste du jeu de données est classique. Pour le mechanicalIterationManager, | ||
+ | | ||
+ | ==== Affichage ==== | ||
+ | |||
+ | L' | ||
+ | |||
+ | 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' | ||
+ | |||
+ | |||
+ | ===== Limitations actuelles ==== | ||
+ | * Lorsque le chargement sur la structure devient trop important, la distorsion du maillage pour les éléments peut remplis provoque l' | ||
+ | * 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' | ||
+ | * Des surcontraintes peuvent apparaitre sur les éléments en contact de part le chargement. | ||
+ | * L' | ||
+ | * Si la frontière présente deux arrêtes vives au sein d'un unique élément, un seul point de " |
doc/user/xfem/xfem.1377075124.txt.gz · Last modified: 2016/03/30 15:22 (external edit)