Table of Contents

Commit 2011-12-13

- Introduction des efforts imposés dans les éléments X-FEM. - Correction de la méthode de sous-découpage

Forces imposées X-FEM

La frontière de chargement est décrite par une nouvelles level set. Dans le cas ou la frontière de chargement coupe un élément enrichi, des points d'intersection sont crées ainsi qu'un élément unidimensionnel d’intégration.

Point de “détail” : contrairement a la level set permettant d'intégrer le comportement, cette level set n'a pas de tolérance qui mette la distance à 0 si la distance est trop petite. La frontière de chargement est donc décrite de manière exacte, même si l'élément est discrétisé avec une certaine erreur de discrétisation géométrique.

Pour le fonctionnement, les éléments d’intégration des CL ne sont pas crées par une interaction, mais gérés par les éléments XFEM. Les propriétés de chargement doivent donc être donné dans le élément properties XFEM (ce qui est peu contre intuitif, mais beaucoup plus simple au niveau de la gestion).

Les nouvelles propriétés sont :

prp1.put(CHARGE_WIRE, UserNo)       # Wire décrivant la frontière de chargement
prp1.put(XFEMPRESS, double)         # Pression appliquée
prp1.put(NBPG_BOUND, int)           # Nombre de point de Gauss pour l'intégration sur la frontiere

Sous-découpage enrichi

Avant le sous découpage ne prenait pas en compte quand la frontière de chargement s'arrétait au milieu d'un élément. J'ai changé la procédure de sous découpage pour avoir quelque chose de plus précis et réduire l'erreur de discrétisation géométrique :

- Les frontières de la matière peuvent être conformes aux frontières des éléments. - Les frontières de la matière peuvent s'arrêter au sein d'un élément

La procédure de sous découpage pour les éléments ou la frontière bifurque a l'intérieur est différente de la procédure utilisée précédemment et les sous cellules sont crées en tournant autour du point de bifurcation.

Autour des XFEM

Tips de visualisation

Ca pourrait etre utile à quelqu'un d'autre, je le met donc ici. Sous windows, il est possible de visualiser la solution éléments finis au court d'une procédure plutôt que d'attendre que l'itération mécanique se termine.

En entête de fichier, rajouter :

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

A l'endroit ou on souhaite voir l'affichage, rajouter :

Metafor *metafor = static_cast<Metafor*>(this->getDomain().getFather());
std::list<GUIObserver *>::iterator it = metafor->guiObservers.begin();
for(; it!=metafor->guiObservers.end(); ++it)
    (*it)->update();
Sleep(3000);

Intersections et SurroundednessTest

J'ai changé la fonction qui permet de calculer les intersections multiples entre 2 curve. Désormais quand on “perd” une intersection ou lorsque on a un doute sur celles que l'on a determiné, le belonging type retourné n'est plus PROJ_OUT (par défaut auparavant) mais PROJ_UNDEFINED. Ca permet au mtGeoSurroundednessTest de fonctionner correctement dans tous les cas. Ca n'a pas d'influence notable sur les problèmes de contact d'après la batterie.

Fichiers ajoutés

[a]:oo_meta/XFEM/XFEMTractionElement.h
[a]:oo_meta/XFEM/XFEMTractionElement.cpp
[a]:oo_meta/apps/xfem/ep_XFEM_incomp.py