I am guessing that this has something to do with ghost levels. When you first update your reader, no one requests ghost levels so the reader produces none. Later, when you apply extract surface with Piece Invariant turned on, it asks for ghost levels which causes your reader to re-execute. However, it still does not produce ghost levels because you are not passing this request to D3. Here is what should work:
* To execute the D3 filter, do something like this: d3->UpdateInformation(); exec = static_cast<vtkStreamingDemandDrivenPipeline*>(d3->GetExecutive()); exec->SetUpdateExtent(exec->GetOutputInformation(), piece, numPieces, 1); // 1 -> ghostlevel d3->Update(); // shallow copy and such Then, something like: output->GetInformation()->Set(vtkDataObject::DATA_NUMBER_OF_GHOST_LEVELS(), 1); What I did above is to always produce 1 ghost level. Filters that did not ask for ghost levels will ignore this extra ghost level. Filters that do ask for ghost levels should function fine. Let me know if you need more help. Also, let me know if this works or not because I am writing this without trying it :-) -berk On Wed, Oct 21, 2009 at 7:03 AM, Paul Edwards <[email protected]> wrote: > I am trying to use D3 in my parallel reader to distribute the data. > Previously I have been doing this in the ParaView pipeline but now I > would like to incorporate it into my readers RequestData. I am > experiencing a problem when I use the reader, extract the surface and > then use the feature edges filter. Everything works as expected until > clicking apply for Feature Edges where request data is called again > for my filter and then the partition boundaries included in the > output. This does not happen if I remove the D3 from my RequestData > and use in the ParaView pipeline. > > I am adding the D3 filter as outlined below in my RequestData: > > vtkMultiBlockDataSet* output = vtkMultiBlockDataSet::SafeDownCast( > outInfo->Get(vtkDataObject::DATA_OBJECT())); > VTK_CREATE(vtkMultiBlockDataSet, multiblock); > > // ... > // READ IN MULTIBLOCK DATA HERE > // ... > > VTK_CREATE(vtkDistributedDataFilter, d3); > d3->AddInput(multiblock); > d3->Update(); > output->ShallowCopy(d3->GetOutput()); > > Can anyone see anything wrong with this? Could it be because I need > to set something else in the RequestInformation? Currently I do this: > > vtkInformation *outInfo = outputVector->GetInformationObject(0); > outInfo->Set(vtkStreamingDemandDrivenPipeline::MAXIMUM_NUMBER_OF_PIECES(), > -1); > return 1; > > Any advice would be appreciated. > > Thanks, > Paul > _______________________________________________ > 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 > _______________________________________________ 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
