commit:2013:01_24
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
commit:2013:01_24 [2013/01/24 18:38] – wautelet | commit:2013:01_24 [2016/03/30 15:23] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Commit 2013-01-24 ====== | ||
+ | |||
+ | ===== Modifications ===== | ||
+ | |||
+ | ==== Méthode Area In Contact ==== | ||
+ | |||
+ | La méthode Area In Contact associe une aire à chaque noeud esclave (élément de contact). Ainsi, on peut tenir compte de la densité du maillage sur la frontière de contact (petite maille à côté de grosse maille). Dès lors, la force de contact agissant sur le noeud esclave, dans le cas d'un contact sans frottement (pour faire simple), est donnée par | ||
+ | |||
+ | →F(s)=−tnAs→n(m) | ||
+ | |||
+ | |||
+ | où | ||
+ | |||
+ | |||
+ | - (s) indique l' | ||
+ | - (m) indique le maître.\\ | ||
+ | - As est l'aire de contact nodale.\\ | ||
+ | - →n est la normale extérieure unitaire.\\ | ||
+ | - tn est la pression de contact.\\ | ||
+ | |||
+ | Dans le cadre de la méthode de la pénalité classique, la pression de contact est donnée par | ||
+ | |||
+ | tn=Cngn | ||
+ | |||
+ | où | ||
+ | |||
+ | - Cn est le coefficient de pénalité.\\ | ||
+ | - gn est la distance signée du noeud esclave par rapport à la surface maître.\\ | ||
+ | |||
+ | |||
+ | === Correction des effets de bord === | ||
+ | |||
+ | Lors de la définition d'une interaction de contact, nous devons spécifier l' | ||
+ | |||
+ | Lors de l' | ||
+ | |||
+ | Ainsi, le test suivant est ajouté aux tests existants pour corriger les effets de bord indésirables. Lors l' | ||
+ | |||
+ | Finalement, la correction des effets de bord fonctionne quelque soit le type de l' | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | === Instant du calcul de l'aire nodale de contact === | ||
+ | |||
+ | Jusqu' | ||
+ | |||
+ | < | ||
+ | prp1 = ElementProperties(Contact[2|3]DElement) | ||
+ | prp1.put(AREAINCONTACT, | ||
+ | |||
+ | Si le paramètre AREAINCONTACT vaut AIC_ONCE, l'aire de contact nodale est calculée sur la configuration initiale et n'est plus mise à jour au cours de l' | ||
+ | |||
+ | Cependant, il est nécessaire de clarifier les situations complexes suivantes : | ||
+ | |||
+ | * Rupture d'un élément : | ||
+ | |||
+ | Lors de l' | ||
+ | |||
+ | * Formalisme ALE : | ||
+ | |||
+ | Lors de l' | ||
+ | |||
+ | |||
+ | === Méthode de calcul de l'aire de contact nodale | ||
+ | |||
+ | Il faut définir dans l' | ||
+ | |||
+ | < | ||
+ | prp1 = ElementProperties(Contact[2|3]DElement) | ||
+ | prp1.put(AREAINCONTACTMETHOD, | ||
+ | |||
+ | Si le paramètre AREAINCONTACTMETHOD vaut AIC_METHOD_GEOMETRIC, | ||
+ | |||
+ | Cette dernière méthode permet de retrouver une pression de contact nodale uniforme lorsque l'on écrase un disque creux/ | ||
+ | |||
+ | Sur les figures, ci-dessus, vous pouvez voir la différence entre la méthode géométrique ou consistante dans le cas de l' | ||
+ | |||
+ | {{: | ||
+ | CONFIGURATION INITIALE | ||
+ | {{: | ||
+ | AIC_METHOD_CONSISTENT | ||
+ | {{: | ||
+ | AIC_METHOD_GEOMETRIC | ||
+ | <note important> | ||
+ | |||
+ | === Ajout d'un filtre dans l' | ||
+ | |||
+ | Les extracteurs de grandeur d'une interaction de contact possèdent un filtre qui permet d' | ||
+ | |||
+ | < | ||
+ | valueExtractor = ContactStatusValueExtractor(contInt, | ||
+ | valueExtractor.setGeoFilter(gObject) | ||
+ | gObject = Référence vers un objet géométrique maillé, qui est inclu dans l' | ||
+ | </ | ||
+ | |||
+ | Par défaut, nous considérons tous les éléments de contact de l' | ||
+ | |||
+ | Les opérations se font dans l' | ||
+ | |||
+ | - Opération de filtrage \\ | ||
+ | - Opération de tri \\ | ||
+ | - Opération de " | ||
+ | |||
+ | Il est possible d' | ||
+ | < | ||
+ | areaInContactValues=AreaInContactValueExtractor(contInt, | ||
+ | </ | ||
+ | De là, il est possible de déduire l'aire de contact (potentiellement en contact) : | ||
+ | < | ||
+ | valuesmanager.add(no, | ||
+ | </ | ||
+ | Il est possible d' | ||
+ | < | ||
+ | activeAreaInContactValues=AreaInContactValueExtractor(contInt, | ||
+ | activeAreaInContactValues.setOnlyInContactStatus() | ||
+ | </ | ||
+ | |||
+ | De là, il est possible de déduire l'aire de contact active (réellement en contact) : | ||
+ | |||
+ | < | ||
+ | valuesmanager.add(no, | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== BugFix ==== | ||
+ | |||
+ | === Aire d'une surface Coons Bilinéaire === | ||
+ | |||
+ | Dans le fichier source " | ||
+ | |||
+ | < | ||
+ | Vect3 sum2 ( x3+x4-x2-x1 ); | ||
+ | sum2/ | ||
+ | |||
+ | J'ai changé sum1/=4.0 par sum2/=4.0. | ||
+ | |||
+ | === Affichage des surfaces | ||
+ | |||
+ | Dans le cas test apps_imp_revolutionSurfaceTRSym, | ||
+ | |||
+ | < | ||
+ | if(!wire.getSens(ns)) | ||
+ | ksi = 1.0-ksi;</ | ||
+ | |||
+ | dans le fichier source SurfaceCloud.cpp à la ligne 163 (Fonction " | ||
+ | |||
+ | |||
+ | ==== Modification Cas-Tests ==== | ||
+ | |||
+ | Les effets de bord indésirables en 2D et en 3D sont corrigés désormais dans la version de Metafor pour le calcul de l'aire de contact nodale. Cependant, en discutant avec luc et romain, j'ai adapté les cas tests suivant pour étendre l' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === newac.tests.blisk === | ||
+ | |||
+ | Pour ces cas tests, j'ai modifié le fichier blisk.py dans newac.tools.snecma. Dans ces cas tests, il y a une ou trois aubes déformable(s) en contact avec le carter rigide. Ces interactions de contact sont définies à l'aide des groupes de noeuds 2, 3 et 4. Les noeuds du groupe sur lequel est défini l' | ||
+ | < | ||
+ | xmin = tpointset(1113).getPos0().get1() | ||
+ | ymin = tpointset(840).getPos0().get2() | ||
+ | zmin = tpointset(1113).getPos0().get3() | ||
+ | xmax = tpointset(840).getPos0().get1() | ||
+ | ymax = tpointset(1113).getPos0().get2() | ||
+ | zmax = tpointset(840).getPos0().get3() | ||
+ | groupset(2).addMeshPointsInBox(xmin, | ||
+ | groupset(2).addMeshPointsInBox(xmin+(xmax-xmin)/ | ||
+ | |||
+ | Pour chaque groupe de noeud, j'ai dû aller chercher le numéro du noeud du maillage situé sur le bord d' | ||
+ | | ||
+ | Finalement, l' | ||
+ | |||
+ | |||
+ | === newac.tests.techspace === | ||
+ | |||
+ | Pour ces cas tests, j'ai modifié le fichier aube3D18ER.py dans newac.tools.techspace. Les noeuds du groupe sur lequel est définie l' | ||
+ | (ligne de code à la ligne 314 du fichier aube3D18ER.py). | ||
+ | |||
+ | Entre les lignes 244 à 268 du fichier aube3D18ER.py, | ||
+ | |||
+ | === techspace.tests === | ||
+ | |||
+ | Pour ces cas tests, j'ai modifié à l'aide de Samcef for machining, les groupes de noeuds correspondant au sommet de l'aube pour chacun des maillages bacon importés (c'est à dire tous les fichiers _sommet.sel dans techspace.meshes), | ||
+ | |||
+ | === aspCrushing.tests.threeD.smoothStripRoughTool === | ||
+ | |||
+ | Pour ce cas test, avec l'aide de Yves, j'ai reconstruit la géométrie après l' | ||
+ | |||
+ | <note important> | ||
+ | Pour toute personne désirant utiliser le mailleur par extrusion (Mailleur 3D), je vous recommande de lire attentivement le warning avant de réaliser votre cas test ! | ||
+ | </ | ||
+ | |||
+ | ===== Perspectives ===== | ||
+ | |||
+ | Ajoutez mes cas tests dans la batterie | ||
+ | |||
+ | |||
+ | |||
+ | ===== Fichiers ajoutés/ | ||
+ | |||
+ | < | ||
+ | [r]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Tests ajoutés/ | ||
+ | |||
+ | < | ||
+ | [r]: | ||
+ | [a]: | ||
+ | </ | ||
+ | |||
+ | |||
+ | --- // | ||