Table of Contents
Commit 2007-11-21
Modifs
Nettoyages
- Split (1 fichier par classe +
inl
) des nouveaux fichiers du commit précédent. - Nettoyage du source.
- Ajout de doc doxygen aux nouvelles classes.
- Templatisation des nouveaux index “à la OE” (démarrant à 1) ⇒ création du template
OeIndex
. Instanciation de ce template pourDofIndex
,PartDofIndex
,PartIndex
etDBIndex
. - Modification de
Bidon
enDummy
(resteBidonDammage
de PP)
Fac Texte Amélioré (XML)
Lorsque j'ai débugué le Fac pour la création des Fields, j'ai eu beaucoup de mal à comprendre ce qui était sauvé sur disque et où les problèmes se trouvaient. Je suis passé alors en mode “Texte” mais la tâche restait difficile vu que la sortie est, en fait, quelques très longues lignes de texte.
Pour éviter d'avoir ce genre de problème, j'ai modifié la sortie du Fac texte (TextArchive
) pour qu'elle soit réellement exploitable lors de phases de debug. Pour structurer les données et traduire la hiérarchie des objets dans un fichier, j'ai choisi le format XML qui a l'avantage d'être un standard reconnu.
Ecriture XML
Pour l'écriture des données au format XML, j'ai ajouté du code dans les routines de sérialisation des objets.
archive.begin(className()); archive << ... // [variables de l'objet] archive.end(className());
Elles permettent d'écrire les tags XML. Ces appels n'influencent pas l'écriture binaire du Fac.
J'ai ajouté aussi une macro et des templates pour que la commande:
archive << ARCITEM(version);
écrive le nom de la variable dans les tags et que la bonne fonction d'écriture soit appelée en fonction du type de la variable.
Le résultat ressemble à ça:
<Archive> <head> <version> 13 </version> </head> <MetaFac> <Metafor> <TdFieldSavedValues> 1.27738386E+000 2.71438585E+002 </TdFieldSavedValues> <TimeStepManager> 3.37278283E-002 1.06212215E-001 35 34 </TimeStepManager> <IterationManager> 2 106 </IterationManager> <IterationManager> 0 0 </IterationManager> </Metafor> <Step> 2.00000000E+000 14 <DBSet> TXTYTZ RE 128 0.00000000E+000 0.00000000E+000 0.00000000E+000 0.00000000E+000 0.00000000E+000 0.00000000E+000 0.00000000E+000 0.00000000E+000 0.00000000E+000 0.00000000E+000 0.00000000E+000 0.00000000E+000 ...
C'est pas encore l'idéal (l'indentation n'est pas encore toujours respectée) mais ça a déjà une meilleure tête.
Et ça peut être ouvert avec des logiciels du type Bonfire Studio:
Tiens, ça ressemble à l'ObjectBrowser…
(Une idée serait de lire les objets de Metafor à partir de l'ObjectBrowser avec un objet Archive
…)
Lecture XML
La difficulté est la relecture du XML. C'est vraiment pas pour les tapettes… Faut-il utiliser une bibliothèque toute faite (parsers SAX, DOM de Qt par exemple)? L'avantage c'est que le format peut être rendu très libre. L'inconvénient c'est qu'il est difficile alors de maintenir un Fac binaire avec la même interface…
Je crois que ce n'est pas nécessaire. Actuellement, les tags doivent être seuls sur leur ligne et ça fonctionne. Plus tard, il faudra essayer d'étendre le système si le XML est régulièrement utilisé.
Split lecture/écriture
J'ai séparé les classes Archive
d'écriture et de lecture. Ca permet de ne pas se tromper (par exemple, le matériau thixo écrivait sur le Fac lors de la lecture…
Incompatibilité
Le nouveau Fac est incompatible avec l'ancien:
- le Fac texte est complètement différent.
- le Fac binaire a été nettoyé (identificateurs 64 bits, entête contenant la version, etc)
La config VizWin
(vizwin.conf
) a également changé de format. Supprimez le fichier de votre répertoire de travail si vous en avez un.
oo_nda/arcelor
- Création d'un module Arcelor dans oo_nda (il faudra mettre copra la dedans plus tard).
Warnings
- en vue d'une utilisation généralisée d'index 64 bits, j'ai ajouté les pragmas relatifs à ces warnings dans toutes les libs. Ceux-ci seront désactivés les uns après les autres au cours du temps (c'est pas faisable en une fois).
#pragma warning( disable : 4018) // signed/unsigned mismatch #pragma warning( disable : 4267) // conversion de 'size_t' en 'int'
- Nettoyage d'index fait dans
mtGlobal
,gen4
,gen4gui
.
A Faire:
- Indexer les matrices de mtMath avec des
size_t
. UserNo
⇒size_t
au lieu deint
(pas direct car UserNo=-1 est utilisé).
Fichiers ajoutés/supprimés
Certains fichiers ne sont pas splittés. D'autres devront passer de Oofelie à Metafor.
mtFEMBase/DofType.cpp added mtFEMBase/DofTypeMask.cpp added mtFEMBase/DofTypeMask.h added mtKernel/FieldList.h added (+) mtFEMBase/DofType.inl added mtFEMBase/DofTypeMask.inl added mtKernel/DBPointer.inl added mtKernel/Field.inl added mtKernel/DBIndex.cpp deleted mtFEMBase/PartIndex.h deleted mtKernel/KeyList.h deleted apps/ale/pstArcelor3d.py deleted apps/qs/pstAbaqus2d.py deleted
oeFEMBase/Locel.cpp added oeFEMBase/Locinv.cpp added oeFEMBase/PartDofList.cpp added oeFEMBase/Locel.h added oeFEMBase/Locinv.h added oeFEMBase/LocinvItem.h added oeFEMBase/PartDofIndex.h added oeFEMBase/PartDofList.h added oeFEMBase/PartIndex.h added (+) oeFEMBase/Locel.inl added oeFEMBase/Locinv.inl added oeFEMBase/LocinvItem.inl added oeFEMBase/PartDofList.inl added oeKernel/DBValue1D.inl added oeKernel/DBValue.cpp deleted
arcelor added arcelor/__init__.py added arcelor/tests added arcelor/tests/__init__.py added arcelor/tests/pstAbaqus2d.py added (+) arcelor/tests/pstArcelor3d.py added (+)
— Romain BOMAN 2007/11/21 09:14