commit:2013:05_14
Table of Contents
Commit 2013-05-14
Abrawal + Divers
Abrawal
Bancs UCL
- Ajout des tests représentatifs des 2 bancs UCL :
- Banc d'abradabilité (reshaping du banc TA) basé sur un principe similaire à celui de Sulzer d'une lame tournant à haute vitesse venant user une plaque (courbe ou plane) d'abradable en translation.
- Tribomètre : système pion - disque avec un pion en lame de tournevis et un disque recouvert d'abradable
- C'est juste un premier modèle : maintenant faut le faire tourner et analyser le comportement …
- Modification des initialisations de l'abradable
- robustification des tests d'initialisation ovale pour un abradable en cylindre de révolution (l'ovalisation était déjà dispo depuis la version 1712)
- Ajout d'usure en “bord” des abradables en side classiques (coons) : sinon on risque de générer des chocs àla prise de contact
Extractors
- Ajout de 2 extracteurs de moment de forces :
- MomentValueExtractor : calcul une composante (X, Y ou Z) du moment des forces par rapport à un point de l'espace
- Moment2AxeValueExtractor : Calcul le moment des forces autour d'un axe (le couple quoi !!!)
- Ajout d'un incRef/decRef sur le GObject Target de
NodalValueExtractor
Divers
NortonHoffPHypoMaterial
- Correction d'un bug pervers dans le
NortonHoffPHypoMaterial
(Attention il y a unP
) :- La batterie plantait sous windows au moment de la désallocation mémoire
- Le test dans Metafor.exe / Metafor_d.exe ne plantait pas / Les batterie Linux ne montraient pas d'erreur
- Il n'est pas possible de lancer la batterie sur une version debug de Metafor
- Les outils de debug memoire (valgrind, intelInspector) n'ont pas montré de solution évidente
- Finalement, je me suis souvenu qu'on pouvait lancer Metafor au travers de Python via les anciennes commandes load('apps.qs.cont2'), meta(), quit() en Release et en Debug
- Le bug :
- Yves a ajouté un GKState spécifique à son matériau :
NortonHoffPHypoGpkState
- à chaque utilisation du matériau, il caste bien le
MechanicalGKState *
enNortonHoffPHypoGpkState *
(static cast vu que tout doit être bon, on ne va pas vérifier à chaque fois que la classe est du bon type) - Malheureusement il a oublié de dériver la fonction
allocGKState()
définissant le type d'objet à allouer (donc il allouait unHypoGpkState
en lieu et place duNortonHoffPHypoGpkState
) - Malheureusement 2 : le
NortonHoffPHypoGpkState
ne rajoutant que 2 doubles à sa classe mère, le débordement mémoire n'écrasait rien d'important (sauf manifestement des info relatives au destructeur)
- Conclusion : il faut qu'on mette en place un système de vérification au runtime de la bonne allocation des GP/GKStates (via un Dynamic Cast n'intervenant qu'1 fois ou en définissant une macro sur les Static Casts des matériaux qui deviendraient dynamiques en debug par exemple).
- Tout autre idée, à discuter, pour fiabiliser le process est la bien venue (et si qqn veut s'en charger, il est aussi le bien venu)
PythonOneParameterFunction - PythonDirectorOneParameterFunction
- Dans mes recherches relatives à la problématique
NortonHoffPHypoMaterial
une question s'est posée sur la gestion memoire desPythonOneParameterFunction
qui est une classe où Romain avait implémenté “à la main” un mécanisme similaire au mecanisme de director lorsque celui ci n'était pas encore fiable/utilisable/implémenté (biffer la mention inutile) dans Swig. - On s'est donc posé la question de savoir si il n'y avait pas une interaction entre la gestion memoire “à la main” et le director (ce n'était finalement pas ca la cause du chmilblick)
- On s'est aussi posé la question de la pertinence de la classe
PythonOneParameterFunction
maintenant que le mécanisme de director fonctionne et est plus en phase avec l'esprit orienté objet - Conclusions :
- PythonOneParameterFunction : n'est plus une classe director (retour à l'état avant vers 1721)
- PythonDirectorOneParameterFunction : nouvelle classe Director de OneParameterFunction (dérivez vos 4 fonctions selon l'usage: evaluate, computeDerivation, computeIntegration(t1), computeIntegration(t0,t1) )
- Les tests fluidMaterial.tests.kP_NH et mu_NH sont réécrit en utilisant cette methodologie de même que le test apps.ale.pyReZoner (utilisation de la fonction dans un mailleur)
- Si quelqu'un a le courage de modifier les +-150 tests utilisant PythonOneParameterFunction…
- bonus :
PythonOneParameterFunction
ne nécessitant plus de lui appliquer un %pythonappend disown, on gagne quelques leaks (qu'on reperdra quand on passera auxPythonDirectorOneParameterFunction
…)
OneParameterFunction
- Suppression de l'operateur
[]
redondant avec la fonction evaluate (et pouvant preter à confusion) - Propagation dans les 3-4 classes utilisant cet operateur (principalement mailleurs)
Fichiers ajoutés/supprimés
A \oo_meta\mtFEM\extractors\MomentValueExtractor.h/cpp A \oo_meta\mtFEM\extractors\Moment2AxeValueExtractor.h/cpp A \oo_meta\mtMath\PythonDirectorOneParameterFunction.h/cpp R
Tests ajoutés/supprimés
A oo_nda\abrawal\toolsBancsUcl A oo_nda\abrawal\toolsBancsUcl\bancAbradabiliteUcl.py A oo_nda\abrawal\toolsBancsUcl\postBancAbradabiliteUCL.m A oo_nda\abrawal\toolsBancsUcl\tribometreUcl.py A oo_nda\abrawal\toolsBancsUcl\postTribometreUcl.m A oo_nda\abrawal\testsBattery\bancUcl20rev_alpha08Peno1e3.py A oo_nda\abrawal\testsBattery\triboUcl20rev_alpha08Peno1e3.py R
— Luc Papeleux 2013/05/14
commit/2013/05_14.txt · Last modified: 2016/03/30 15:23 by 127.0.0.1