Table of Contents

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 GPStates (pour l'ALE), je veux permettre un meilleur typage des InternalFields. En particulier, j'aimerais pouvoir accéder aux grandeurs contenue dans les GPStates 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 Locks. 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 Dofs.

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

Romain BOMAN 2008/06/27 08:48