DaxToolkit icon indicating copy to clipboard operation
DaxToolkit copied to clipboard

GenerateTopology + User CellConnections not saving properly

Open gzagaris opened this issue 11 years ago • 1 comments

dax::cont::UniformGrid<> inputGrid; inputGrid.SetExtent(minE,maxE); inputGrid.SetOrigin( dax::make_Vector3(this->Origin[0], this->Origin[1], this->Origin[2])); inputGrid.SetSpacing( dax::make_Vector3(this->Spacing[0], this->Spacing[1], this->Spacing[2]));

typedef dax::cont::GenerateTopology<dax::worklet::Tetrahedralize, dax::cont::ArrayHandleConstantValuedax::Id > GenerateT; typedef GenerateT::ClassifyResultType ClassifyResultType;

dax::cont::Scheduler<> scheduler;

//for every input cell generate 5 output cells, using a constant //value array handle ClassifyResultType classification(5,inputGrid.GetNumberOfCells());

dax::worklet::Tetrahedralize tetWorklet; GenerateT generateTets(classification,tetWorklet);

//don't remove duplicate points. generateTets.SetRemoveDuplicatePoints(false);

//we want to use our Connectivity array as the dax unstructured grids //connectivity array. This way dax will directly write into our allocated //memory and we won't have to copy anything dax::cont::ArrayHandle< dax::Id > connHandle = dax::cont::make_ArrayHandle( this->Connectivity, 4 * this->NumTets );

dax::cont::UnstructuredGrid< dax::CellTagTetrahedron > outGrid; outGrid.SetCellConnections(connHandle);

scheduler.Invoke(generateTets,inputGrid,outGrid);

//this will copy the memory back to the host if we are using cuda, and //for OpenMP and TBB it is a no op connHandle.CopyInto(this->Connectivity); // if we don't do this the control side isn't valid

gzagaris avatar Apr 19 '13 16:04 gzagaris

Looking into this, Dax is setup so that user allocated space can only be used for reading not writing.

robertmaynard avatar Apr 19 '13 20:04 robertmaynard