[Paraview] Attaching D3 to my own reader
Paul Edwards
paul.m.edwards at gmail.com
Thu Oct 22 05:56:58 EDT 2009
Thanks berk - it works now :)
BTW I also needed to set:
outInfo->Set(vtkStreamingDemandDrivenPipeline::UPDATE_NUMBER_OF_GHOST_LEVELS(),
1);
Will this change the results for any filters if I keep ghost cells on
all the time? And, is this the recommended thing to do? Also, is
there any documentation on writing filters to handle ghost levels?
Thanks,
Paul
2009/10/21 Berk Geveci <berk.geveci at kitware.com>:
> 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