Ce commit rassemble les derniers développements que j'ai faits lors de la rédaction de mon manuscrit de thèse. Je vais procéder en deux temps. Ce commit concerne uniquement le code source. Je commiterai ensuite les cas-tests.
Ce nouveau ReZoner
ALE permet de repositionner les nœuds sur une entité géométrique (une courbe généralement) en “copiant” les coordonnées des nœuds d'une autre entité. Ça correspond au repositionnement “miroir” de la thèse de JPP.
rez = MirrorReZoner2(target, modele, comp, rev)
target
: entité ciblemodele
: l'entité qu'on copie (il faut le même nombre de nœuds que target
) comp
: la composante à copier (TX
, TY
ou TZ
)rev
: parcourt la liste des noeuds à l'envers (True
ou False
)
J'utilise ce ReZoner
pour la barre de Taylor dans ma thèse (pas encore commité).
J'ai interfacé une méthode qui permet de choisir la manière dont les flux convectifs ALE sont calculés. Normalement, il n'est pas nécessaire de modifier ces paramètres sauf pour analyser finement ce qui se passe.
aleMethod.setFluxMethod(mth)
où mth
peut valoir:
FLX_NORLAG
: calcul des flux en se basant sur la normale lagrangienne aux facettes.FLX_NOREUL
: calcul des flux en se basant sur la normale eulérienne aux facettes.FLX_NORMOY
: calcul des flux en se basant sur la normale moyenne.FLX_REAL
: calcul des flux exacts (défaut).Cette liberté sur le calcul des flux se traduit par une légère pertes de perf. sur les cas tests ALE.
Là aussi, cette option est seulement utile pour faire de la démo dans le cadre d'un manuscrit de thèse. Les valeurs par défaut fonctionnent très bien.
aleMethod.setBcFluxMethod(mth)
où mth
peut valoir:
BCFLX_ZERO
: Les flux sont considérés nulsBCFLX_CST
: Les flux parasites sont pris en compte et calculés en considérant une reconstruction constante du champ inconnu (défaut).BCFLX_LINEAR
: Les flux parasites sont pris en compte et calculés en considérant une reconstruction linéaire du champ inconnu.L'ALE est maintenant chronométrée. Un bilan récapitulatif du coût des différentes phases est simplement affiché en fin de calcul.
Les splines (CubicSpline
) et le repositionnement spline (SplineCurveReZoner
) peuvent être paramétrés:
rez = SplineCurveReZoner(curve) rez.setTangentType(mth)
avec mth
:
SPLINE_LS
: Spline de McConnalogue (LS pour Laurent Stainier)SPLINE_LITT
: Les splines du cours de Litt (est-il toujours vivant?)SPLINE_DISC
: Tangentes nulles ⇒ ligne brisée (correspond à ce que j'appelle “repositionnement naïf” dans ma thèse)
J'ai codé de manière un peu crade une loi de Tresca qui dépend de la limite élastique (ou la limite d'élasticité pour JPP ) courante extrapolée au nœud de contact.
Puisque c'est mal foutu, le code est commentarisé dans oo_meta\mtElements\boundaries\ContactElement.inl
. Idéalement, il faudrait nettoyer tout ça…
IsoTherStaggeredTmTimeIntegration
dans le cas de l'utilisation de l'ALE.dat2py
pour la batterie multithread (ca merdouillait dans les nouvelles pierrepolades).
Il est possible de faire de l'écrouissage cinématique avec de l'ALE (EvpMixtHHypoGpState
). Le tenseur des backstress (1 seul) est convecté avec le reste des grandeurs aux points de Gauss.
J'ai fait quelques modifs dans toolbox.varmesh
qui contient des classes permettant de gérer facilement des zones de raffinement de maillage. Testé dans le modèle de planage notamment.
Pour le travail du TFiste de Barbara Rossi, j'ai ajouté la sortie des grandeurs IF_YIELD
et IF_EPL
sur la section de mesure du modèle de profilage lagrangien.
mtALE/MirrorReZoner2.cpp added mtALE/MirrorReZoner2.h added
— Romain BOMAN 2010/03/06 16:25