====== Commit 2008-06-27 ====== ===== Modifs ===== ==== DofSet haché ==== Dans le but de faire une interface générale pour l'accès des données des ''GPState''s (pour l'ALE), je veux permettre un meilleur typage des ''InternalField''s. En particulier, j'aimerais pouvoir accéder aux grandeurs contenue dans les ''GPState''s sous leur forme mathématique initiale (matrice, vecteur, scalaire, etc). Actuellement, toutes ces grandeurs sont des scalaires. Pour y arriver, je dois définir les ''InternalFieldID'' d'une manière similaire à ce qui a été fait pour les ''NatureID'' dans le cadre de la refonte des ''Lock''s. L'idéal serait de fusionner ces deux structures pour unifier complètement la gestion des inconnues dans Metafor. Le problème, c'est que le nombre total de ''NatureID'' influence directement la taille interne du ''DofSet'' et de tous les ''StrVector''. J'ai donc commencé par nettoyer le ''DofSet'' pour y introduire une gestion plus subtile de l'accès aux degrés de liberté. Au lieu d'utiliser un gros ''std::vector'' tout pourri et une indexation via de simples entiers (''DofIndex''), il faudrait utiliser une map avec une bonne fonction de hachage. C'est ce que j'ai fait. J'ai également supprimé la visiblité de ''DofIndex'' à l'extérieur du ''DofSet''. Cela signifie par exemple que le LOCEL de l'élément n'est plus un tableau d'entiers mais un accès direct aux ''Dof''s. Ca donne à l'affichage (de ''cont2''): __avant:__ Connexion with 3 parts & 2728 dofs part #1 : 220 dofs part #2 : 22 dofs part #3 : 0 dofs __après__ Connexion with 3 parts & 242 dofs part #1 : 220 dofs part #2 : 22 dofs part #3 : 0 dofs Côté perfs, on observe une perte de perf (de 15%) qui, à mon avis, est due au fait que j'ai modifié ''StrVector''. L'update est beaucoup plus coûteux qu'auparavant pour tous les vecteurs basés hors de la DB. Cependant, il serait possible d'éviter ceci est déplaçant le code de mise à jour dans la fonction ''rebuild'' (et appeler cette fonction lorsque le profil de la ligne de ciel change). Je ferai ça pour le prochain commit. ===== Projet ====== ===== Fichiers ajoutés/supprimés ====== mtFEMBase/DofIndex.h deleted --- //[[r_boman@yahoo.fr|Romain BOMAN]] 2008/06/27 08:48//