<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none"><!--P{margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr" style="font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;">
<p>Dear ParaView developers,<br>
</p>
<p><br>
</p>
<p>I wrote a plugin to read in structured grid HDF5 fiels but I am having problems with running the plugin in parallel. The grid isn't loaded/visualized correctly when running the plugin in parallel. The grid is open at the end of the axis, where the extent
is divided. It appears that ParaView doesn't know,when running in parallel, that the grid is finished there.<br>
The data is loaded correctly into the "false" grid. I get no error and it looks fine except for the grid part that is missing.
</p>
<p>If i run the plugin in serial everything is fine.</p>
<p><br>
</p>
<p>The plugin inherits from vtkMultiBlockDataSet and looks like this:<br>
</p>
<p><br>
Request information:<br>
//Basic stuff</p>
<p>//extent[6]<br>
</p>
<p>//read the extent from the grid and store it in extent<br>
</p>
<p>this->internalBlocks->Blocks[0]->SetExtent(0,extent[1], 0, extent[3],0, extent[5]);</p>
<p>//outinfo GetInformationObject and CAN_PRODUCE_SUB_EXTENT<br>
</p>
<p>outInfo ->Set(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(),extent,6);<br>
</p>
<p><br>
</p>
<p>RequestData:</p>
<p>vtkInformation *outInfo = outputVector->GetInformationObject(0);<br>
vtkMultiBlockDataSet* multiBlock = vtkMultiBlockDataSet::SafeDownCast(outInfo->Get(vtkDataObject::DATA_OBJECT()));</p>
<p>vtkStructuredGrid* nthGrid = this->internalBlocks->Blocks[0];<br>
int subext[6];<br>
</p>
<p>outInfo->Get(vtkStreamingDemandDrivenPipeline::UPDATE_EXTENT(),subext;)<br>
int size[3]={0,0,0};<br>
size[0]=subext[5]-subext[4]+1; <br>
size[1]=subext[3]-subext[2]+1;<br>
size[2]=subext[1]-subext[0]+1;</p>
<p>//stuff</p>
<p>//reading the points in x,y,z for each process with the offset etc.<br>
</p>
<p> vtkPoints *points = vtkPoints::New();</p>
<p> for(int k=0; k<size[0]; k++ ){<br>
for(int j=0; j<size[1]; j++ ){<br>
for(int ii=0;ii<size[2];ii++){<br>
int pointId=ii+(j+k*size[1])*size[2];<br>
points->InsertNextPoint(x[pointId],y[pointId],z[pointId]);</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>nthGrid->SetPoints(points);</p>
<p>//Loading the Data<br>
</p>
<p><br>
</p>
<p>For example the dimension is 151x122x50, and i run it with 2 MPI processes then i get the following outputs for the grid:<br>
</p>
<p>The extent from CPU0 is: 0-75, 0-122, 0-50 and the corresponding size is 76, 123, 51<br>
The extent from CPU1 is 75-150, 0-122,0-50 and the corresponding size is 76, 123, 51<br>
The data is divided correctly and the output looks fine, doesn't it?<br>
</p>
<p><br>
</p>
<p>What am i doing wrong? <br>
Thanks in advance,<br>
<br>
Markus Moser<br>
Student Assistant<br>
</p>
<p>Chair of Fluid Mechanics and Institute of Aerodynamics Aachen<br>
RWTH Aachen<br>
<br>
<br>
</p>
</body>
</html>