doc:user:xfem:xfem
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
doc:user:xfem:xfem [2013/08/21 14:31] – biotteau | doc: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 " | + | 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 ==== | ||
Line 23: | Line 23: | ||
==== Intérêt ==== | ==== Intérêt ==== | ||
- | Les frontières des éléments du maillage n'ont plus besoin d' | + | Les frontières des éléments du maillage n'ont plus besoin d' |
Quelque soit la complexité de la zone matérielle, | Quelque soit la complexité de la zone matérielle, | ||
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 : | ||
- | * // | + | * // |
- | * // | + | * // |
- | * // | + | * // |
* // | * // | ||
* // | * // | ||
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 " | + | 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 ==== | ==== Définition géométriques ==== | ||
Line 59: | Line 61: | ||
==== XFEMFieldApplicator ==== | ==== XFEMFieldApplicator ==== | ||
- | Une fois le maillage réalisée, le XFEMFieldApplicator est définit | + | Tout comme pour les FieldApplicator et autre interactions, |
prp1 = ElementProperties(XFEMElement) | prp1 = ElementProperties(XFEMElement) | ||
- | prp1.put(BOUNDARY_WIRE, | + | prp1.put(BOUNDARY_WIRE, |
- | prp1.put(CAUCHYMECHVOLINTMETH, | + | prp1.put(CAUCHYMECHVOLINTMETH, |
- | prp1.put(NB_IP_INTCELL, 1) | + | prp1.put(MATERIAL, 1) # loi matériau (domain.getMaterialSet()) définie classiquement |
- | prp1.put(MATERIAL, 1) | + | |
- | prp1.put(INVERSE_WIRE, | + | Les paramêtre optionnels sont les suivants. Pour cet exemple les paramètres par défaut sont donnés |
- | prp1.put(TOL_LEVELSET, | + | |
- | prp1.put(LS_CALC_METH, | + | prp1.put(NB_IP_INTCELL, 1) # nombre de points de gauss par sous cellule triangulaire |
+ | prp1.put(INVERSE_WIRE, | ||
+ | prp1.put(TOL_LEVELSET, | ||
+ | prp1.put(LS_CALC_METH, | ||
+ | prp1.put(SOUS_INTEG, | ||
+ | prp1.put(FULL_SIDES, | ||
- | ==== Interactions | + | Attention, en fonction des paramêtres LS_CALC_METH et TOL_LEVELSET, |
+ | Une fois l' | ||
+ | app = XFEMFieldApplicator(1) | ||
+ | app.push(Sset(1)) | ||
+ | app.addProperty(prp1) | ||
+ | domain.getInteractionSet().add(app) | ||
+ | ==== Interaction de chargement ==== | ||
+ | L' | ||
- | ===== Limitations actuelles ==== | + | 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.txt · Last modified: 2016/03/30 15:23 by 127.0.0.1