Table of Contents

Commit 2009-02-06

Modifs

Loi de frottement constant

Pour comparer mes résultats ALE sur le test de double extrusion DCET (apps.ale.dCupExtrusion), j'ai dû programmer une loi de frottement de type Tresca où le frottement est une constante indépendante de la pression. $\sigma_T \leq m\,\sigma_0^Y$ où $\sigma_T$ est la contrainte de frottement, $ m $ est le coefficient de frottement et $\sigma_0^Y$ est la containte d'écoulement en cisaillement du matériau (qui vaut la limite en traction / $\sqrt{3}$ dans le cas de VM).

Pour l'implémentation, j'ai juste créé une nouvelle loi TrescaContactMaterial qui ressemble fort à CoulombContactMaterial. J'ai préféré ne pas ajouter des if dans la loi de Coulomb (j'en ai discuté avec Luc). Pour la raideur, je me suis rendu compte que la raideur de Coulomb était codée directement dans l'élément de contact. J'ai donc créé de nouvelles fonctions virtuelles pour que l'élément demande au matériau de calculer la raideur et non qu'il présuppose du Coulomb (!).

Nouveaux tests:

Loadings améliorés

Pour mes tests ALE de planage, j'ai un sérieux problème de propagation de crasses venant des conditions aux limites dans ma solution. Au final, une petite pertu de mes conditions aux limites vient initiialiser mes défos de Green Lagrange avec des valeurs très différentes de 0 et j'observe une sorte de décalage dans mon profil d'allongement. Pour résoudre le problème, j'ai donc imaginé d'imposer mon tenseur F en entrée égal à l'unité… mais problème: la manière dont la gestion des CLs ALE est codée est un vieux machin qui date de bien avant l'époque python et je ne peux pas choisir d'imposer uniquement un ensemble réduit de valeurs en entrée. Soit j'impose tout, soit j'impose rien. et dans ce cas-ci, j'aimerait laisser le tenseur des contrainte se calculer automatiquement.

Pour imposer mes conditions aux limites ALE de manière propre, j'ai ajouté la possibilité de prescrire un champ sur un maillage via le LoadingSet. Il est donc maintenant possible de définir via l' InitialConditionSet un champ scalaire hétérogène aux points de Gauss d'éléments finis. La manière est identique à ce que j'avais fait pour les grandeurs nodales. Ca peut être utile à tout le monde donc lisez la suite…

Nouvelle hiérarchie Loading

Pour ce faire, j'ai remanié la structure des classes Loading/LoadingSet.

Gestion des conditions initiales

Pour l'initialisation, c'est toujours fait dans le toDofSet de Domain mais j'ai dû découper le toDofSet de l'élément en un toDofSet et un initialise. La première routine, alloue le locel et les points de Gauss~; la seconde remplit initialise l'élément. Sans ce découpage, la matrice de capacité thermique par exemple n'est pas correctement initialisée. Cette seconde routine est à nouveau appelée lors du démarrage de l'intégration (l'ancien contactInitialisation devient elementsInitialisation).

Avant:

Maintenant:

Exemple

En application, pour la batterie, j'ai créé une super variante de cont2: cont2ecroui où un morceau du bloc est déjà bien écroui et est visiblement plus raide que le reste du bloc.

Vu que c'est programmé de manière générique, on peut aussi s'amuser à définir des contraintes initiales hétérogènes avec le même système (ou même un IF_GRAIN_SIZE, soyons fou!).

Un nouveau cont2!

et voilà le code pour les curieux:

def tfct(x, y):
    cx = 1./2
    cy = 1./2
    R  = 0.3
    if (cx-x)*(cx-x)+(cy-y)*(cy-y)-R*R<0:
        return 2.
    return 0.
    
epl0fct = PythonMultiParameterFunction(tfct, 2)
metafor.getInitialConditionSet().define(app, IF_EPL, 1.0, epl0fct , FieldList(Field1D(TX,AB), Field1D(TY,AB)))

ALE

Tests Copra

J'ai ajouté les tests de profilage NotInBattery dans la batterie en n'en faisant qu'un import. Ca permet de s'assurer que la moulinette Copra fonctionne bien sur tous les tests. Ces tests sortent un TSC-EXT bidon si l'import s'est effectué correctement.

Projet

Fichiers ajoutés/supprimés

Source

mtFEMBase/DBLoading.cpp	added
mtFEMBase/ElementLoading.cpp	added
mtFEMBase/GPLoading.cpp	added
mtFEMBase/LoadingType.cpp	added
mtMaterials/boundaries/TrescaContactMaterial.cpp	added
mtFEMBase/DBLoading.h	added
mtFEMBase/ElementLoading.h	added
mtFEMBase/GPLoading.h	added
mtFEMBase/LoadingType.h	added
mtMaterials/boundaries/TrescaContactMaterial.h	added

Cas-tests

apps/ale/varBC.py	added
apps/qs/cont2ecroui.py	added
apps/qs/trescaFriction.py	added
geniso/tests/py/__init__.py	added
apps/ale/entonnoir.py	deleted

arcelor/tests/copraLarge	added (+)
arcelor/tests/copraLarge/profilageTraverse.py	added (+)
arcelor/tests/copraProfiling5NotInBattery	deleted
arcelor/tests/copraProfiling5NotInBattery/__init__.py	deleted
arcelor/tests/copraProfiling5NotInBattery/profilageBavolet.py	deleted

Romain BOMAN 2009/02/06 08:51