commit:2008:05_14
Table of Contents
Commit 2008-05-14
- Gestion de la mémoire par référence comptées (RefCounted)
Modifs
NumberedObject
dérive deRefCounted
- Suppression de la commande
numberObjectSet.copy(nobj)
au profit denumberObjectSet.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é parsafeAdd
- 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 auset
- 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 deincRef
,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 leValuesManager
, pointeur stoqués à la fois dans leDataVectorSet
deMetafor
et dans chaqueValuesStruct
et objets détruits par leDataVectorSet
- ⇒ Suppression du
DataVectorSet
de Metafor (double stoquage inutile) - ⇒
ValuesManager
devient unestd::map<UserNo,ValuesStruct*>
- ⇒ allocation du
VectorOnFile
dans leValuesManager
- ⇒ 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
deMetafor
(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 by 127.0.0.1