I think setting UPDATE_NUMBER_OF_GHOST_LEVELS on the output of the filter before calling Update is the right thing to do. However, in your example code I do not see where that value is getting set. I only see the update extent being set, and that is not sufficient to produce ghost cells.
-Ken On 11/19/09 4:50 PM, "Christine Corbett Moran" <[email protected]> wrote: I'm having trouble with generating ghost cells, either on my own or with D3 (via the duplicate boundary points mode). In neither case am I able to see a single ghost level of value 1 for any of my points on a test data set, which has 10,000 cells, one point per cell, distributed on 4 processors. I try both generating ghost cells at level one within my d3 call in my reader as follows: vtkSmartPointer<vtkDistributedDataFilter> d3 = \ vtkSmartPointer<vtkDistributedDataFilter>::New(); d3->AddInput(tipsyReadInitialOutput); d3->UpdateInformation(); vtkStreamingDemandDrivenPipeline* exec = \ static_cast<vtkStreamingDemandDrivenPipeline*>(d3->GetExecutive()); // adds one ghostlevel exec->SetUpdateExtent(exec->GetOutputInformation(0), piece, numPieces, 1); d3->Update(); // changing output to output of d3 output->ShallowCopy(d3->GetOutput()); output->GetInformation()->Set( vtkDataObject::DATA_NUMBER_OF_GHOST_LEVELS(), 1); And, as far as I can tell, the procedure for a filter requesting ghost levels is: // Requesting one level of ghost cells vtkInformation* inInfo = inputVector[0]->GetInformationObject(0); inInfo->Set( vtkStreamingDemandDrivenPipeline::UPDATE_NUMBER_OF_GHOST_LEVELS(),1); And my reader or D3 would then have to access the inInfo act on this request. However neither my filter nor D3 are generating any ghost cells, as is verified by examining: output->GetPointData()->GetArray("vtkGhostLevels")->GetTuple( nextHaloId)[0] Can any one see what's going on? I've read a chunk of vtk source referencing vtkGhostLevels or using UPDATE_NUMBER_OF_GHOST_LEVELS but haven't found the clue yet. An update on my D3/PKd tree question: I decided to run D3 automatically if the user checks a button in my readers and strongly recommend they run D3 if they don't use my readers. I found that BuildLocator() or BuildLocatorFromPoints(points) never worked as I had hoped from the documentation (I wanted to call it once/or on all processes on the PkD tree generated by D3 and have it build a locator which works across all processes, i.e. can also find points belonging to a neighbor process), so instead I build a KdTree locator local to each process, separate from the PKdTree generated by D3, and coordinate a search if necessary, I can still make this highly data parallel for my applications, e.g. finding the mass of all points within a given radius by doing local searches/consolidation and just sending the results for a final consolidation to the root. Christine _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe: http://www.paraview.org/mailman/listinfo/paraview **** Kenneth Moreland *** Sandia National Laboratories *********** *** *** *** email: [email protected] ** *** ** phone: (505) 844-8919 *** web: http://www.cs.unm.edu/~kmorel
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe: http://www.paraview.org/mailman/listinfo/paraview
