[Paraview] Attaching D3 to my own reader

Berk Geveci berk.geveci at kitware.com
Wed Oct 21 09:34:42 EDT 2009


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 <paul.m.edwards at gmail.com> 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
>


More information about the ParaView mailing list