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
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')
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