- Rien. Il faudra cependant penser à utiliser les références
(voir rubrique Metafor) et hash tables dans l'export (oofelie.c).
Ce n'est pas encore fait.

- Introduction de nouveaux I_
- Ajout du mailleur offset/frontal. Il peut être appelé
via la fonction Face::frontal()
- Ajout de la convection du second ordre (TVD) pour l'ALE
- Les routines ne sont pas encore testées.
- Suppression de warnings sous Tru64 (principalement dus
à _WITH_NURBS_)
- Ajout d'une classe HashedGeoSet. Celle-ci définit
une table de hashage pour un accès plus rapide aux éléments
des tableaux GeoSet (PointSet, NodeSet, CurveSet,
..., VolumeSet). Les entités géométriques
(Point, Curve, ...) ne dérivent pas de cette
classe et ne possèdent donc pas de tables de hashage. Pour utiliser
cette table (désactivée par défaut, utiliser la fonction
HashedGeoSet::build_hash(int hsize=1000). La table est ainsi créée,
mise à jour lors de l'ajout d'éléments et utilisée
lors de la fonction GeoSet::operator(). Il ne faut donc plus utiliser
la fonction GeoSet::search_no() puisque celle-ci n'est pas optimisée.
J'ai remplacé tous les appels de GeoSet::search_no() par
des GeoSet::operator(). Résultat : pour le cas test (non
industriel ;) ) de Laurent (elbow_modif9), la phase de prépro
passe de 8min à 17sec ! Deux cas-tests de la batterie utilisent activement
cette nouvelle fonctionnalité : cont2.e et ale_coin3d.e
(regardez ces nouveaux scripts pour voir comment on fait en détails).
Citons les opérations accélérées par hash tables
:
- Prépro relatif à Excitaset, Interaction
et dérivés, Contact_meta et instanciations.
- Group::fill_facets() (génération de facettes
à partir d'un ensemble de noeuds). Les routines Face::fill_facets()
et Curve::fill_edges() seront aussi prochainement optimisées.
- Création du maillage auxiliaire ALE
- Commandes interprétées utilisant l'opérateur []
- Création d'un objet interpréteur pour les références.
Il permet :
- d'accélérer la lecture du jeu de données en évitant
des get_properties() via l'operateur [].
- de clarifier le fichier .e
Exemple (références & hash table combinées) :
cont2[POSITSET_PO].define(1, 0, 0, 0);
cont2[POSITSET_PO].define(2, Lx, 0, 0);
cont2[POSITSET_PO].define(3, Lx, Ly, 0);
cont2[POSITSET_PO].define(4, 0, Ly, 0);
devient :
Refer poiset(cont2[GEOMETRY_PO][POINTSET_PO]);
poiset.build_hash();
poiset.define(1, 0, 0, 0);
poiset.define(2, Lx, 0, 0);
poiset.define(3, Lx, Ly, 0);
poiset.define(4, 0, Ly, 0);
Ajoutons qu'une simple commande du type :
Refer domain(cont2);
permet de rendre le jeu de données indépendant du nom du cas-test
! youpi !