[Paraview] problem in defining vtkStructuredGrid in MPI

Andy Bauer andy.bauer at kitware.com
Fri Jun 26 10:55:32 EDT 2015


If the output of the vtm is what you're looking for you won't be able to do
that with the parallel XML structured grid writer because you have a node
partition (i.e. nodes are uniquely assigned to a process and in this case
no other process has that node). Thus the missing cells at the partition
boundary are causing you problems with the pvts reader.

With the multiblock data set my suggestion is to make the first block in
that be a vtkMultiPieceDataSet and then add each process's structured grid
as a piece to that. Then when you load it into ParaView it will behave much
more uniformly.



On Fri, Jun 26, 2015 at 9:56 AM, <u.utku.turuncoglu at be.itu.edu.tr> wrote:

> Hi,
>
> Thanks for your help. Actually, every processor has its own data and i am
> just using the interior regions (so, it does not overlap, no ghost or halo
> regions). Anyway, after my initial mail, i changed the SetExtent part of
> the code as
>
>   sg->SetExtent (*nxstart-2, *nxend-2, *nystart-2, *nyend-2, 0, 0);
>
> because it was starting from 1 in each direction, now it starts from zero.
> This modification fixes the mismatch problem in the number of points comes
> from Paraview and seen in the C++ code. On the other hand, the Paraview
> still complains about the following extents (seems that the inner boundary
> of the 2 x 2 decomposition elements, like ghost region).
>
>     0 140  57 58  0 0
>     70 71  0 57  0 0
>     70 71  58 114  0 0
>
> You can find the data in the attached file (data_00.tar.gz).
>
> Then, i tried to put the individual parts of the structured grid into the
> vtkMultiBlockDataSet using following code
>
>   //
>   // Create multi block grid
>   //
>   vtkMultiBlockDataSet* grid = vtkMultiBlockDataSet::New ();
>   grid->SetNumberOfBlocks(*mpiSize);
>   grid->SetBlock (*mpiRank, sg.GetPointer());
>
> and write the grid information to the file (data_01.tar.gz). In this case,
> Paraview could open the *.vtm file without any message. So, i could not be
> sure about the grid. It seems fine if i look at multi block data file
> (vtm) but not in pvts file.
>
> Regards,
>
> --ufuk
>
>
> > Do you have a node partitioning of your grid? If you do you really need a
> > cell partitioning of the grid which will have multiple points a the
> > partition overlap.
> >
> > Can you share your data?
> >
> > On Fri, Jun 26, 2015 at 5:58 AM, <u.utku.turuncoglu at be.itu.edu.tr>
> wrote:
> >
> >> Hi,
> >>
> >> I am trying to create structured grid in an MPI application and i am
> >> using
> >> following C++ code to implement it
> >>
> >> extern "C" void createstgrid_(double* y, double* x,
> >>                               int* nxstart, int* nxend, int* nystart,
> >> int*
> >> nyend,
> >>                               int* nx, int* ny, int* nz, int* mpiSize,
> >> int* mpiRank) {
> >>   //
> >>   // Create structured grid
> >>   //
> >>   vtkSmartPointer<vtkStructuredGrid> sg =
> >> vtkSmartPointer<vtkStructuredGrid>::New();
> >>   sg->SetExtent (*nxstart-1, *nxend-1, *nystart-1, *nyend-1, 0, 0);
> >>
> >>   //
> >>   // Create data structure to store grid coordinates
> >>   //
> >>   int pnx = ((*nxend)-(*nxstart))+1;
> >>   int pny = ((*nyend)-(*nystart))+1;
> >>   vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
> >>
> >>   //
> >>   // Insert grid coordinate data as points
> >>   //
> >>   k = 0;
> >>   for (int j = 0; j < pny; j++) {
> >>     for (int i = 0; i < pnx; i++) {
> >>       points->InsertPoint(k, x[i+j*pnx], y[i+j*pnx], 0);
> >>       k = k+1;
> >>     }
> >>   }
> >>   sg->SetPoints(points);
> >>
> >>   //
> >>   // Set grid
> >>   //
> >>
> >>
> vtkCPPythonAdaptorAPI::GetCoProcessorData()->GetInputDescriptionByName("input")->SetGrid(sg);
> >>
> >>
> vtkCPPythonAdaptorAPI::GetCoProcessorData()->GetInputDescriptionByName("input")->SetWholeExtent(0,
> >> *nx-1, 0, *ny-1, 0, 0);
> >> }
> >>
> >> so, when i run the code with grid writer, it creates the individual file
> >> (*.vts) for each processor and one extra for the combination (*.pvts).
> >> Anyway, the individual files looks fine in Paraview but if i open the
> >> file
> >> with pvts extension, i am getting following error,
> >>
> >> ERROR: In
> >>
> >>
> /Users/turuncu/Qsync/progs/paraview-4.3.1/src/VTK/IO/XML/vtkXMLPStructuredDataReader.cxx,
> >> line 461
> >> vtkXMLPStructuredGridReader (0x7f961c0910a0): No available piece
> >> provides
> >> data for the following extents:
> >> 0 140  0 1  0 0
> >> 0 1  1 58  0 0
> >> 0 140  58 59  0 0
> >> 0 1  59 114  0 0
> >> 71 72  1 58  0 0
> >> 71 72  59 114  0 0
> >>
> >> The UpdateExtent cannot be filled.
> >>
> >> What is the meaning of this message? It means that some of the grid data
> >> (or points) are not filled by the code. I also check the loop in the C++
> >> code and print out the number of points for each processor
> >>
> >> 0 number of points = 4118
> >> 1 number of points = 4047
> >> 2 number of points = 4060
> >> 3 number of points = 3990
> >>
> >> and the total is 16215, which is consistent with the size of the grid
> >> but
> >> if i check the individual vts files from the Paraview, the files shows
> >> different number of points for each file
> >>
> >> 0 number of points = 4118
> >> 1 number of points = 3976
> >> 2 number of points = 4002
> >> 3 number of points = 3864
> >>
> >> So, only first file matchs with the C++ code but others not. I am not
> >> sure
> >> what is happening in there and if you have any suggestion that will be
> >> great.
> >>
> >> Anyway, in this case i did not use vtkMultiBlockDataSet but after having
> >> correct representation of the grid, i am planing use SetBlock method of
> >> vtkMultiBlockDataSet to assign decomposition elements as individual
> >> blocks.
> >>
> >> Regards,
> >>
> >> --ufuk
> >>
> >> _______________________________________________
> >> 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
> >>
> >> Search the list archives at: http://markmail.org/search/?q=ParaView
> >>
> >> Follow this link to subscribe/unsubscribe:
> >> http://public.kitware.com/mailman/listinfo/paraview
> >>
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/paraview/attachments/20150626/c5144351/attachment.html>


More information about the ParaView mailing list