Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2007:11_21



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:

<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:

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.
  • UserNosize_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 (+)

Romain BOMAN 2007/11/21 09:14

commit/2007/11_21.txt · Last modified: 2016/03/30 15:23 (external edit)