Rien

Modifs
- Nettoyage en vue d'un ElementSet dynamique:
- ElementSet : l'index n'est plus shifté ! on accède donc aux éléments avec un index interne qui varie de 0 à elset.size()-1 (4 ans que ça nous emm****...)
- Suppression du numéro lors du ElementSet.define().
- Rendons à César ce qui est à César:
- Transfert des routines d'énums dynamiques vers Metafor (IDBase, IDListTemplate, etc) ainsi que de la classe VirtualObject.
- Nettoyage des vecteurs/matrices de pointeurs:
- Changement de nom : MatStr devient MatrixStrBase (rôle similaire à VectorStrBase)
- Réécriture "C++" des classes *Str (suppression des déclarations en début de routine, utilisation de références au lieu de pointeurs, etc).
- fillNumericalStiffnessBase : remplacement des appels via pointeurs de fonctions membres par un appel générique utilisant les nouveaux TypeStr dynamiques.
- VectorStrBase : suppression des fonctions spécifiques int_forces, ext_forces, etc.
- Nettoyage en vue du restart sans redémarrage Metafor:
- Création de fichiers StateActivatorEntry.*. Ceci permettra d'étoffer la classe pour permettre la numérotation des CL (et rendre les CL dynamiques).
- Changement de nom : StateActivator(Set/Entry) devient DofFlag et DofFlagSet (puisque ces classes n'ont rien à voir avec les "States" mais se rapportent aux flags des ddls).
- Nettoyage de la DB en vue du restart et remaillage:
- DBSet : define renvoie une référence.
- Nettoyage de l'accès à la DB (simplification à l'extrême). PositionSet est vide (!)
- DBValue3D utilise un Vect3 au lieu d'un double[3]
- Plus possible de faire un getVect3 ou putVect3 à partir d'un DBSet (il faut un DBSet3)
- Le C++ dans ses dernières limites:
- Uniformisation des constructeurs éléments (tous le même nombre d'arguments).
- Templatisation de la classe ElementID. La classe Factory<T> est née (création généralisée d'un objet à partir de son identificateur). Elle permettra d'unifier le code des classes ElementID, MaterialID et MaterialLawID (identiques sauf l'appel du constructeur!), et tous les autres objets idéntifiés par énums dynamiques.
- Problème mémoire:
- metaGlobal.h incluait un fichier STL avant la configuration de celle-ci ! Conséquence : pstArcelor3d utilisait 3.5 Go sous Tru64 (voir ce commit). Oublier un metaGlobal.h dans un fichier entête peut donc être catastrophique puisqu'il configure (entre autres) la gestion mémoire de la STL sous Tru64.
Fichiers ajoutés/supprimés
A oeKernel/ElementFactoryArgs.h
A oeKernel/Factory.h
A oeKernel/Factory.inl
A oeKernel/FactoryArgs.h
A oeKernel/MaterialFactoryArgs.h
A oeKernel/MaterialLawFactoryArgs.h
R oeKernel/oeDBSet3.inl
A oeKernel/oeDofFlag.cpp
A oeKernel/oeDofFlag.h
A oeKernel/oeDofFlagSet.cpp
A oeKernel/oeDofFlagSet.h
A oeKernel/oeDofFlagSet.inl
R oeKernel/oeElementID.cpp
R oeKernel/oeIDBase.h
R oeKernel/oeIDBase.inl
R oeKernel/oeIDListTemplate.h
R oeKernel/oeIDListTemplate.inl
A oeKernel/oeMatrixStrBase.cpp
A oeKernel/oeMatrixStrBase.h
R oeKernel/oeMatStr.cpp
R oeKernel/oeMatStr.h
R oeKernel/oeMatStr.inl
R oeKernel/oeObjectID.cpp
R oeKernel/oeObjectID.h
R oeKernel/oeObjectIDList.cpp
R oeKernel/oeObjectIDList.h
R oeKernel/oeObjectIDs.cpp
R oeKernel/oeObjectIDs.h
R oeKernel/oeStateActivatorSet.cpp
R oeKernel/oeStateActivatorSet.h
R oeKernel/oeStateActivatorSet.inl
R oeKernel/oeVirtualObject.cpp
R oeKernel/oeVirtualObject.h
R oeKernel/oeVirtualObject.inl
Modifs
- Suppression des classes Transformation et MirrorTransformation (trop spécifiques et non testées).
- Interfaçage SWIG de ValueExtractor (cfr. "problème python" ci-dessous).
Problème python détecté (et résolu)
Le travail d'Amine sur le retour élastique m'a permis de trouver un "problème" de python dans le cas d'un restart de Metafor. Son but était de définir des courbes (ValueExtractors) dans une deuxième phase de calcul. Le ValuesManager est vide dans le fichier python du test et est enrichi au vol par l'intermédiaire d'un fichier .t. Résultat: plantage dans une routine de gestion des streams python lors de la lecture du .t ... glups.
En essayant de trouver la source du problème, j'ai remarqué que l'utilisation d'un fichier .t (envoi de commandes python en redirigeant l'entrée standard <stdin> grâce à l'opérateur "<" du shell) n'est pas équivalente à faire un "import":
- il faut faire attention de laisser une ligne vide (sans "tab" ni espace) après une définition de fonction.
- chaque fonction retournant un objet (p. expl poiset.define(...) retourne le point nouvellement créé) enclanche un "print" du proxy SWIG associé. Si bien que si le type de l'objet retourné n'a pas d'interface SWIG, ça plante lamentablement lors de ce print (!) C'est ce qui se passait pour valuesManager.define(...).
Bref, pour corriger ce problème, j'ai juste dû créer une interface SWIG pour la classe ValueExtractor (type retourné par la fonction problématique). Une autre solution aurait été de faire retourner un void à cette fonction.
Fichiers ajoutés/supprimés
A mtGlobal/IDBase.h
A mtGlobal/IDBase.inl
A mtGlobal/IDListTemplate.h
A mtGlobal/IDListTemplate.inl
A mtGlobal/ObjectID.cpp
A mtGlobal/ObjectID.h
A mtGlobal/ObjectIDList.cpp
A mtGlobal/ObjectIDList.h
A mtGlobal/ObjectIDs.cpp
A mtGlobal/ObjectIDs.h
R mtGeo/mtGeoMirrorTransformation.cpp
R mtGeo/mtGeoMirrorTransformation.h
R mtGeo/mtGeoTransformation.cpp
R mtGeo/mtGeoTransformation.h
R mtIo/ToZMesh.*