Depuis la mise en place des méthodes d'intégration mécaniques , il était prévu que celles-ci contiennent leurs données propres d'intégration. C'est maintenant chose faite pour les éléments volumiques / AEJ et XFEM (pas les coques qui n'ont pas été écrite dans ce schéma):
AEJ :
XFEM :
noAnalyticalStiffnessAvailable
n'existe pas)isMechanicalInternalField(type)
reprenant le gros if dupliqué 50 fois dans le code!!computeMaterialPartOfVolumicStiffnessAdiab
ne se faisait jamais que sur les valeurs du premier point d'intégration déviatorique (qu'on soit std/sri/eas/… GPM[0]⇒GPM[ptg])Suppression de l'opérateur bool de la classe Times.
operator bool() const;
Celui-ci était utilisé lors du “if(tStart)” lors de l'appel à la fonction read() renvoyant la mesure du temps.
Times Timer::read() const { if(tStart) return tElaps + Times().read() - tStart; else return tElaps; }
L'appel au if(tStart) renvoyait un static_cast<bool>(user): user étant le temps écoulé dans l'espace utilisateur depuis le début du process. Cette valeur pouvait être nulle dans le cas où la phase de prépro précédent le démarrage du timer est très courte comme dans MetaLub2.0. Dans ce cas, le if(tStart) renvoyait 0, la fonction read() renvoyait tElaps initialisé à 0 et les différentes composantes du temps (kernel, user et real) étaient nulles bien que le temps CPU ait été différent de 0.
Pour corriger ça, j'ai introduit un booléen isOn dans la fonction read(), isOn étant mis à true lors du démarrage du timer.
Times Timer::read() const { if (isOn) return tElaps + Times().read() - tStart; else return tElaps; }
Added : Renamed : Deleted : oo_meta\mtElements\aej\AejElement.inl
Added : Renamed : Deleted :
— Luc Papeleux 2016/01/06