Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2008:11_21

Commit 2008-11-21

Modifs

ALE - activable ReZoners

Les ReZoners sont maintenant Activables. Ceci permet de les activer/désactiver en cours de calcul. L'intêret est évident: changer de méthode en cours de calcul.

tsm = metafor.getTimeStepManager()
tsm.setInitialTime(0.0, 1.0e-4)
tsm.setNextTime(0.06, 1, 0.1)
tsm.setNextTime(1.0, 1, 0.1)

stages = metafor.getStageManager()

rez1 = UpdEulerCurveReZoner(curve)
rez1.deactivate(stages[1])
rez.add(rez1)
rez2 = SplineCurveReZoner(curve)
rez2.deactivate(stages[0])
rez2.activate(stages[1])
rez.add(rez2)

La courbe curve est remaillée via UpdEulerCurveReZoner entre t=0 et t=0.06 et SplineCurveReZoner pour la suite.

ALE - Nouveau rezoner

MirrorReZoner: permet de conserver la même distance entre deux MeshedObjects au cours du temps selon une direction spécifiée. Par exemple, si la distance est nulle, on retrouve la méthode “miroir” de la thèse de JPP.

ALE - contact

Précédemment, j'avais essayé de gérer le contact ALE (convection du gap tangent) de manière la plus externe possible vis à vis de l'élément de contact. Ceci dans l'esprit d'une “lib ALE” externe qui ne vient pas perturber le développeur non-ALE… Malheureusement, cette manière de faire me ralentit beaucoup dans mes développements et m'empêche d'essayer pas mal de trucs pour résoudre les derniers problèmes que j'ai dans la gestion du contact ALE. Et vu que rien d'autre est fait dans cet esprit, je devrais, pour continuer dans cette voie et pour bien faire, modifier tout le reste…

Donc, momentanément, j'ai modifié la manière utilisée pour gérer le “post” ALE (classe PostStep). J'ai modifié l'ancien algo pour coller à ce qui existe déjà c'est à dire l'interface “beginStep”, “endStep”, “beginALE”, … et finalement “endALE”. Je trouve ça pas terrible puisqu'on vient mettre des commandes relatives au schéma d'intégration dans l'élément mais bon, tout le reste est fait ainsi (cfr. les “if conservatif” par exemple). Je n'ai pas le temps de continuer dans l'autre voie et faire du propre… ce sera pour plus tard.

Au niveau de l'interface utilisateur, rien ne change:

# recalcul du glissement
pst = ContactPostStep()
pst.add(ci1)
pst.add(ci2)
ale.add(pst)

Nouveautés:

  • Recalcul de l'aire de contact après remaillage (et oui, c'était pas fait - je pense pas que ça soit fait en lagrangien)
  • Traitement un peu plus malin des noeuds fixés dans une direction & en contact dans l'autre.

Nouveaux tests

  • ale.pyReZoner: teste les méthodes de relocalisation ALE utilisateur (écrites en python). Le test a été calqué sur ale.defaut et sera la base du TFE ALE de cette année.
  • ale.dCupExtrusion: “DCET” (Double Cup Extrusion Test), test sur lequel je travaille à Birmingham avec Prof. Hartley. Il s'agit de la simulation d'un test tribologique pour évaluer le frottement en forgeage. Ce test est un peu long pour l'instant (~10min). Je le modifierai plus tard pour qu'il prenne moins de temps.
  • ale.parallelCurvesRZ: teste ParallelCurvesReZoner. Une méthode de relocalisation utile pour la simulation du planage que j'avais introduite dans Metafor lors du stage de Ha Minh et qui n'était pas testée.

Autres

  • Mailleur par extrusion: utilisation d'un stdSet au lieu d'un hashSet pour la generation de la liste des noeuds a extruder. Ca permet d'avoir toujours la même numérotation et, au final, de pouvoir recharger les facs correctement. Une raison de plus pour sauver le maillage dans les facs (entre autres).

Projet

Les SWIG directors de CurveReZoner sont maintenant testés dans apps.ale.pyReZoner. Normalement ça change rien mais si ce test ne passe pas chez vous, c'est qu'il y a une merde a ce niveau dans votre projet.

Fichiers ajoutés/supprimés

mtALE/MirrorReZoner.cpp	added
mtALE/MirrorReZoner.h	added

apps/ale/dCupExtrusion.py	added
apps/ale/parallelCurvesRZ.py	added
apps/ale/pyReZoner.py	added

Romain BOMAN 2008/11/21 09:39

commit/2008/11_21.txt · Last modified: 2016/03/30 15:23 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki