J'ai supprimé un beau paquet de variables statiques liées principalement au contact en vue de paraléliser la détection des noeuds en contact. Par exemple le code suivant a été modifié (MeshPointDetector.cpp
):
static ProjectionState PjstNod1; pjOp.projection(PjstNod1, nodx);
Le mot clef static
est présent juste pour éviter l'allocation successive de plusieurs ProjectionState
. Ca marche très bien (et pas beaucoup moins vite) quand cet objet est alloué sur la pile.
Hors contexte contact, j'ai modifié les fonctions de forme (routines du style getNbIpForMassIntegration
) qui retournaient des variables statiques elles aussi. L'utilisation de “pi
” (en variable statique locale) a été remplacée par un appel à mtMath::OOPi
. Il y avait aussi qq static
dans Nurbs++ et l'ALE.
Au final, j'ai pas vu de dégradation de perfs. Ces modifs sont de toutes façons inévitables (et ne sont pas les dernières) pour paralléliser le code.
— Romain BOMAN 2011/04/11 13:46