[Paraview] Some D3 and MPI questions
John Biddiscombe
biddisco at cscs.ch
Mon Nov 20 13:53:40 EST 2006
That's it - because it's multiblock - I'm only getting the Cuts from the
last pass of the CompositeDataPipeline loop - so the planar slice is
correct, but only for the final part.
Damn. How can I get the BSP cuts for all parts of the multiblock data
JB
> Ken,
>
>> I'm a little confused. Once you call SetCuts on a k-d tree, the
>> distribution should be set and will never be recalculated. Are you
>> calling D3->GetKdTree()->SetCuts()?
>>
> On the animation I posted, I was not re-using the cuts, I was allowing
> the tree to be recomputed on each timestep.
>
> When I tried to re-use the cuts, as below - the first time the reader
> executes, we have this->FirstTime=true and the Cuts are saved, then
> reused on subsequent passes - but the first frame looks ok and the ones
> after look very dodgy.
>
> The data is Multiblock and the D3 filter accepts only Unstructured, so I
> pass the data through a multigroupscalar filter and force the pieces
> manually to trigger the copmposite data pipeline into looping for me and
> generating multiblock D3 output (it works very nicely).
> The first execution gives the "right" looking data, but after that it
> changes and looks less well balanced. I concluded that it was storing
> not just the cuts, but also some Cell IDs and since these were invalid
> onsubsequent time steps, the thing failed to generate the proper output.
> It does seem to work consistently after the second execution, ie it does
> not change as you correctly state, but it doesn't look so good either -
> and why does it change the second time. I'm checking to see if I've made
> a boo-boo somewhere, but I welcome help.
>
> cheers
>
> JB
>
>
> #ifdef USE_D3
> if (this->updateNumPieces>1) {
> //
> // Before doing any D3 filter operation, set a barrier point to
> synchronize things
> //
> this->Controller->Barrier();
>
> vtkCompositeDataPipeline *cp = vtkCompositeDataPipeline::New();
> this->D3->SetDefaultExecutivePrototype(cp);
> this->scalars->SetDefaultExecutivePrototype(cp);
> cp->Delete();
>
> vtkStreamingDemandDrivenPipeline* exec =
> vtkStreamingDemandDrivenPipeline::SafeDownCast(this->D3->GetExecutive());
> exec->SetUpdateNumberOfPieces(exec->GetOutputInformation(0),
> this->updateNumPieces);
> exec->SetUpdatePiece(exec->GetOutputInformation(0),
> this->updatePiece);
>
> if (!this->FirstStep && this->BSPcuts) {
> this->D3->GetKdtree()->SetCuts(this->BSPcuts);
> CSCSOutputMacro(<<"Using BSPCuts from previously ");
> }
> this->scalars->SetInput(mb);
> this->D3->SetInputConnection(this->scalars->GetOutputPort());
> this->D3->SetController(this->Controller);
> this->D3->SetBoundaryModeToAssignToAllIntersectingRegions();
> this->D3->UseMinimalMemoryOff();
> this->D3->SetRetainKdtree(1);
> exec->Update();
> if (this->FirstStep) {
> if (this->BSPcuts) this->BSPcuts->Delete();
> this->BSPcuts = this->D3->GetKdtree()->GetCuts();
> this->BSPcuts->Register(this);
> this->BSPcuts->PrintSelf(std::cout, 0 );
> this->FirstStep = 0;
> }
> //
> //
> //
> dob = exec->GetOutputData(0);
> }
> #endif
>
>
> _______________________________________________
> ParaView mailing list
> ParaView at paraview.org
> http://www.paraview.org/mailman/listinfo/paraview
--
John Biddiscombe, email:biddisco @ cscs.ch
http://www.cscs.ch/about/BJohn.php
CSCS, Swiss National Supercomputing Centre | Tel: +41 (91) 610.82.07
Via Cantonale, 6928 Manno, Switzerland | Fax: +41 (91) 610.82.82
More information about the ParaView
mailing list