===== Commit - LPx - 28 Février 2019 ===== Petites améliorations de Metafor à la demande de Yannick (optimisation tests d'IRS) ====== Parallélisation ValuesManager ====== * Le cout de calcul des extracteur peut devenir proportionnelement importante dans certains cas (en parallèle et avec l'utilisation des méthode type NRModifié qui supprime quasiment le calcul et l'inversion du système linéaire => le reste devient proportionnelement plus important) * => s'agissant d'opérations largement indépendantes, la boucles sur les Extracteurs (dans ''ValuesManager.fillNow(nt)''à condition (comme pour toute autre parallélisation) de le demander explicitement dans le jeux de données via la commande ValuesManager.useTBB() # calcul des extracteurs en parallele * Les timers ont aussi été complétés pour mesurer * le temps de calcul nécessaire au ValuesManager * le temps de calcul nécessaire à l'écriture des Facs * le temps de calcul des lineSearch (dans l'algo globale) * Dans le Other non mesuré, les opérations mathématiques sur StrVectors (liés aux schémas d'intégration) peuvent aussi devenir importants, mais leur mesure demande de vérifier que ces opérations ne sont pas déjà mesurées d'autre part (solveK, ...) => cette mesure fera l'objet d'un commit ultérieur ====== Extracteur work contact forces ====== * Pour les simulations d'IRS, Yannick avait, à la demande de SAB, développé deux extracteurs de travail des forces Normales et tangentielles de contact en python * Il a ensuite, optimisé ces extracteurs via une implémentation C++ * Attention, qu'il s'agit d'un incrément de travail à chaque pas de temps et une mesure locale sur chaque noeud de contact (il faut donc appliquer un V2SOP : SumOperator() pour obtenir l'incrément de travail total sur l'interaction de contact et intégrer sur le temps (Matlab, Scilab,Excell,...) pour obtenir le travail total. * Exemple d'utilisation : oo_meta/apps/parallel/contactCoonsSpline.py : valuesmanager.add(14, NormalForceWorkValueExtractor(metafor, ci), SumOperator(),'normalContactWork') valuesmanager.add(15, TangentForceWorkValueExtractor(metafor, ci), SumOperator(),'tangentContactWork') * Attention, il est nécessaire de passer aussi metafor à l'extracteur (faudra que je regarde si on ne peut pas faire autrement) ====== extracteurs d'énergie ====== * Par défaut, Metafor calcule l'énergie interne et externe sur tout le modèle. * Ces grandeurs ne sont généralement pas utilisées dans l'analyse des résultats et peuvent avoir un cout de calcul non négligeable (quand tout le reste & déjà été optimisé => calcul IRS) * Une fonction permet de désactiver cet appel : metafor.setExtractTdSavedValues(False) ===== Fichiers ajoutés/supprimés : ===== Added : oo_meta/mtContact/src/NormalForceWorkValueExtractor.h/cpp Added : oo_meta/mtContact/src/TangentForceWorkValueExtractor.h/cpp Deleted : Moved : ===== Tests ajoutés/supprimés ===== Adding: Deleted : Moved : --- //[[L.Papeleux@uliege.be|Luc Papeleux]] 2019/02/27 //