Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2008:05_14

Commit 2008-05-14

  • Gestion de la mémoire par référence comptées (RefCounted)

Modifs

  • NumberedObject dérive de RefCounted
    • Suppression de la commande numberObjectSet.copy(nobj) au profit de numberObjectSet.add(nobj). Le nombre de ref est incrémenté à chaque fois que le pointeur est copié et décrémenté à chauqe fois que le pointeur est relaché.
    • Les objets Python sont eux aussi gérés par le processus incRef DecRef (dans les .i. Voir commit du 8 Avril)
    • safeCopy est remplacé par safeAdd
    • Tous les objets dérivant de refCounted et conservés doivent dorénavant être alloués (à l'aide de new). Sans quoi ils vont être détruits à l'insu du plein gré du programmateur …
    • les copy en interne (lorsqu'il est nécessaire d'avoir un nouvel objet) sont remplacés par la succession de la création de la copie à l'aide d'un getClone et ensuite de l'ajout au set
      • OLD : Side &newObj = getTopology().getSideSet().copy(s);
      • NEW : Side &newObj = getTopology().getSideSet().add(*s.getClone());
  • Gestion de memoire d'objets Python
    • Un certain nombre d'objets Python perduraient via la technique DISOWN. La gestion mémoire de ces objets a été remplacée par l'utilisateion de incRef, decRef dans les .i (voir commit du 8 Avril). Objets en question :
      • mtALE::AleMethod
      • mtALE::PostStep
      • mtFEM::ValueExtractor
      • mtFEMBase::ElementProperties
      • mtGeo::Axe
      • mtMath::FunctionBase
    • Ajout des incRef & decRef dans les fonctions où cela devient nécessaire
  • Restructuration de ValuesManager
    • La gestion des vecteurs & matrices de stoquage des valeurs utilisés par le ValuesManager était pour le moins pas claire : les vecteurs étaient alloués dans le ValuesManager, pointeur stoqués à la fois dans le DataVectorSet de Metafor et dans chaque ValuesStruct et objets détruits par le DataVectorSet
    • ⇒ Suppression du DataVectorSet de Metafor (double stoquage inutile)
    • ValuesManager devient une std::map<UserNo,ValuesStruct*>
    • ⇒ allocation du VectorOnFile dans le ValuesManager
    • ⇒ stoquage - gestion mémoire & destruction dans ValuesStruct
    • ⇒ Ajout de la fonction ValuesManager.getDataVector(no) pour créer des courbes dans l'interface python.
    • ⇒ Suppression du DataCurveSet de Metafor (jamais utilisé)

Futur Works

  • Utilisation de ces modifs pour appliquer les loadings via Operateurs Geometriques (but initial de la manoeuvre)
  • Vérifier que lorsque l'on fait une copie dans un set on a vraiment besoin d'une copie (ALE)

Tests

  • 80% modifiés !!!
  • STP2E modifié !!! pour ceux qui utilisent mes libs, j'ai inclus le fichier dans

les libs (LibsVs2005_080509.rar sur le ftp de Romain) et juste l'“exe” dans le même repertoire (stp2e_080509.rar)…

  • Correction de aube3 & aube3LineSearch (extraction d'energie sur rien !!!)

Projet

  • up to date

ToDo list

  • finir la modif de ValuesManager (le numéro de l'extracteur) est stoqué à la fois dans le valuesManager & dans le vectorOnFile (pas fait déjà trop de modifs en cours)
  • gestion des set par objets de la STL

Fichiers ajoutés/supprimés

A 
R

Luc PAPELEUX 2008/05/14

commit/2008/05_14.txt · Last modified: 2016/03/30 15:23 (external edit)