4 + en cours, OK mais perfectible
7 + visualisation de groupe (type d'element): on voit tout le maillage, mais le groupe est OK
8 creation d'une structure vtkUnstructuredGrid locale : iteration un peu lourde, et pas de partage avec la structure du maillage (pas evident)
9 - inversion d'un volume (tetra): exception
10 - script de creation de noeuds et d'elements: OK, mais pas compatible avec version precedente (numerotation noeuds differente)
11 + affichage numeros noeuds: numeros en trop sur (O,0,0) pas systematique, trouver la condition (enlever dans vtkUnstructuredGrid ?)
12 ==> purge systematique noeuds et cellules en trop dans compactage grid.
13 + gestion du mode embedded mal faite lors d'un script python : journal commandes intempestif
14 - affichage des noeuds apres changement lineaire <--> quadratique à l'IHM : pas pris en compte, alors que maillage OK,
16 ==> cassé apres mode embedded ou elimination noeuds en trop ?
17 - extrusion elements 2D along a path : affichage apres calcul pas toujours OK (filaire)
19 A tester, non pris en compte
20 ============================
22 - polyedres (attendre vtk)
25 =============================== Hypothese de refonte de l'API de SMDS
27 n'utiliser que vtkUnstructuredGrid, ne pas avor d'objets SMDS_MeshElement mais seulement des index de vtkUnstructuredGrid.
28 2987 usages de SMDS_MeshNodes
31 ==> en dernier ressort, lourd
32 ================================================================================
34 Essai a API SMDS a peu pres constante
35 =====================================
38 static vector<SMDS_Mesh*> _meshList; --> retrouver un SMDS_Mesh
39 vtkUnstructuredGrid* myGrid;
41 vector<SMDS_MeshNode *> myNodes; --> meme index que dans le pointSet de myGrid
42 vector<SMDS_MeshCell *> myCells; --> index = ID client, pas le meme index que dans le cellTypes de myGrid (ID vtk)
47 int myID; --> index dans la structure geree par SMDS_Mesh
48 int myMeshId; --> pour retrouver SMDS_Mesh* dans _meshList
49 int myShapeId; --> pour retrouver la subShape
52 SMDS_MeshNode: SMDS_MeshElement
53 SMDS_PositionPtr myPosition; --> A REVOIR : objet position dans la shape geom
54 ##vector<int> myInverseElements; --> SUPPRIME : pour retrouver les elements, vtkCellLinks
57 SMDS_MeshCell: SMDS_MeshElement --> generique pour tous les elements (cells)
58 int myVtkID --> A SUPPRIMER
60 SMDS_MeshVolume: SMDS_MeshCell
62 SMDS_VolumeOfNodes: SMDS_MeshVolume --> Garder temporairement, utilisation dans StdMesher et SMDS_VolumeTool
63 const SMDS_MeshNode **myNodes; --> Couteux
66 SMDS_VolumeVtkNodes: SMDS_MeshVolume --> Utiliser systematiquement dans SMDS,
70 SMDS_MeshElementIDFactory: SMDS_MeshNodeIDFactory
71 vector<int> myIDElements; // index = ID client, value = ID vtk --> A SUPPRIMER, ne sert que dans SMDS_MeshElementIDFactory
72 vector<int> myVtkIndex; // index = ID vtk, value = ID client --> A REPORTER dans SMDS_Mesh
77 ========= TODO ============
79 enlever vtkId de SMDS_MeshCell, utiliser SMDS_MeshElementIDFactory.
81 ajouter ID dans SMDS_Mesh::createTriangle
82 verifier ID dans SMDS_Mesh::Find*OrCreate
84 ===================================================
85 occupation memoire cube 100*100*100 sans affichage
87 - sur Debian Sarge 64 bits, les mesures malloc_stat() semblent coherentes
88 avec une mesure externe globale(recherche du passage en swap du process).
89 - sur Ubuntu 9.10 64 bits, les mesures malloc_stat() donnent des resultats bizarres (surestimation ?),
90 mais la mesure avec l'outil KDE de surveillance systeme est OK avec la recherche du swap.
93 Reference : V513 Debian Sarge 64 bits: --> 463 - 33 = 430 Mo
94 -------------------------------------
96 system bytes = 43757568
97 in use bytes = 32909584 = 33M
99 max mmap bytes = 16371712
102 system bytes = 464670720
103 in use bytes = 463105120 = 463M
104 max mmap regions = 47
105 max mmap bytes = 28188672
107 Debian Sarge 64 bits, vtkUnstructuredGrid nodes et hexa, 4 janvier 2010 --> 512 - 41 = 471M
108 -----------------------------------
111 system bytes = 52133888
112 in use bytes = 41340320 : 41M
113 max mmap regions = 72
114 max mmap bytes = 24625152
117 system bytes = 520560640
118 in use bytes = 518735584 : 512M
119 max mmap regions = 88
120 max mmap bytes = 198385664
122 idem avec pool SMDS_MeshNodes --> 483 -33 = 450M
123 -----------------------------
125 system bytes = 43696128
126 in use bytes = 32915184 : 33M
127 max mmap regions = 41
128 max mmap bytes = 16371712
131 system bytes = 484806656
132 in use bytes = 482980992 : 483M
133 max mmap regions = 58
134 max mmap bytes = 184557568
136 idem ci-dessus + pool SMDS_VolumeVtkNodes --> 475 -33 = 442M (git: add ObjectPool.hxx)
137 -----------------------------------------
140 system bytes = 43200512
141 in use bytes = 32908576 : 33M
142 max mmap regions = 41
143 max mmap bytes = 16371712
146 system bytes = 478068736
147 in use bytes = 475144400 : 475M
148 max mmap regions = 59
149 max mmap bytes = 184692736
151 remplacement SMDS_PositionPtr: (boost::shared_ptr<SMDS_Position> --> SMDS_Position*) --> 436 - 35 = 401M (git SMDS_Position)
152 ------------------------------------------------------------------------------------
154 system bytes = 45408256
155 in use bytes = 35097680 : 35M
156 max mmap regions = 47
157 max mmap bytes = 18116608
160 system bytes = 438935552
161 in use bytes = 436116560 : 436M
162 max mmap regions = 65
163 max mmap bytes = 186437632
165 simplification SMDS_SpacePosition (pas de double[3]) --> 418 -33 = 385M (git SMDS_SpacePosition)
166 ----------------------------------------------------
168 system bytes = 42582016
169 in use bytes = 32883552 : 33M
170 max mmap regions = 41
171 max mmap bytes = 16371712
174 system bytes = 421728256
175 in use bytes = 418378000 : 418M
176 max mmap regions = 58
177 max mmap bytes = 183640064
179 sizeof(SMDS_MeshElement) 16
180 sizeof(SMDS_MeshNode) 24
181 sizeof(SMDS_MeshCell) 24
182 sizeof(SMDS_VolumeVtkNodes) 24
183 sizeof(SMDS_Position) 16
184 sizeof(SMDS_SpacePosition) 16
186 impact d'un int en plus dans SMDS_MeshElement --> 426 - 33 = 393M
187 ---------------------------------------------
189 sizeof(SMDS_MeshElement) 24
190 sizeof(SMDS_MeshNode) 32 --> on retrouve bien les 8M
191 sizeof(SMDS_MeshCell) 24
192 sizeof(SMDS_VolumeVtkNodes) 24
193 sizeof(SMDS_Position) 16
194 sizeof(SMDS_SpacePosition) 16
197 system bytes = 43192320
198 in use bytes = 32681088 : 33M
199 max mmap regions = 41
200 max mmap bytes = 16371712
203 system bytes = 429334528
204 in use bytes = 426424576 : 426M
205 max mmap regions = 59
206 max mmap bytes = 184692736
208 remplacement std::set par std::vector dans SMESHDS_SubMesh --> 347 - 35 = 312M
209 ----------------------------------------------------------
210 sizeof(SMDS_MeshElement) 24
211 sizeof(SMDS_MeshNode) 32
212 sizeof(SMDS_MeshCell) 24
213 sizeof(SMDS_VolumeVtkNodes) 24
214 sizeof(SMDS_Position) 16
215 sizeof(SMDS_SpacePosition) 16
218 system bytes = 45404160
219 in use bytes = 35132160 --> 35M
220 max mmap regions = 49
221 max mmap bytes = 17723392
224 system bytes = 349831168
225 in use bytes = 346885424 --> 347M
226 max mmap regions = 73
227 max mmap bytes = 204148736
229 Ce resultat est coherent avec une recherche de swap sur une machine a 8Go de memoire:
230 Cube a 270**3 mailles (~20M mailles) --> 6.2 Go (idem Debian Sarge et Ubuntu 9.10, 64 bits)
231 Le meme avec V5.1.3 --> 14 Go (swap)