[vtkusers] Lack of Memory to Insert Millions of Cells

Elizabeth Nitao enitao at craft-tech.com
Wed Jun 21 14:36:45 EDT 2006

Is there an efficient way to construct two million tetrahedrals and 1 
million prisms?  I am inserting over 900,000 pts into an unstructuredgrid.
vtkPoints points
points SetNumberOfPoints [llength $coordx]
   foreach x $coordx \
   y $coordy \
   z $coordz {
       points SetPoint $count $x $y $z
       incr count

 From here I construct the tetrahedrals and prisms which reference the 
point ids in the unstructuredgrid and then add each tet and prism cell 
to the unstructuredgrid.
   vtkUnstructuredGrid volumeCells
   set cell_typeid [list 10 14 13 12]
   set cell_dim [list 4 5 6 8]
   set cell_obj [list vtkTetra vtkPyramid vtkWedge vtkHexahedron]
   set id 0
   # loop through the type of cells
   while {[llength $cell_nodes] != 0} {
   set num_cells [lindex $cell_nodes 0]
   set num_points [lindex $cell_nodes 1]
   set list_points [lrange $cell_nodes \
                2 [expr {1+($num_cells*$num_points)}]]
   # loop through each individual cell
         for {set i 0; set count 0} {$i < $num_cells} {incr i; incr id} {
       eval [lindex $cell_obj [lsearch $cell_dim $num_points]] cell$id
       # loop through each point in a cell
       for {set j 0} {$j < $num_points} {incr j; incr count} {
       set node_id [expr {[lindex $list_points $count] - 1}]
       [cell$id GetPointIds] SetId $j $node_id              }
       volumeCells InsertNextCell [cell$id GetCellType] [cell$id 
   set cell_nodes [lrange $cell_nodes \
           [expr {2+($num_cells*$num_points)}] end]
   puts [lindex $cell_obj [lsearch $cell_dim $num_points]]
   volumeCells SetPoints points

However, too much memory is being consumed and the program exits 
prematurely.  Also, the program is very slow. Setting 
GlobalImmediateModeRenderingOn does not appear to help.  I have not 
tried ReleaseDataFlag since the program is very interactive and will 
need the info of the unstructured grid.  I would appreciate any help you 
can give.  Thanks so much!


More information about the vtkusers mailing list