====== 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 pour ''DofIndex'', ''PartDofIndex'', ''PartIndex'' et ''DBIndex''.
* Modification de ''Bidon'' en ''Dummy'' (reste ''BidonDammage'' 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:
13
1.27738386E+000 2.71438585E+002
3.37278283E-002 1.06212215E-001 35 34
2 106
0 0
2.00000000E+000 14
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 [[http://www.download.com/Bonfire-Studio/3000-7241_4-10342825.html|Bonfire Studio]]:
{{ commit:2007:facxml.png |Fac au format XML}}
Tiens, ça ressemble à l'ObjectBrowser... :-D
(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 de ''int'' (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 (+)
--- //[[r_boman@yahoo.fr|Romain BOMAN]] 2007/11/21 09:14//