# copySerializedBlock problem [SOLVED]

Hi!

I’am trying to copy the results of a successful 3D simulation using D3Q19 MRT model from the MultiBlockLattice3D structure to a simple one dimensional C array in the main MPI thread.

The concerned parts are in the next code fragment:

``````
TensorField3D<T,3> localVelocity(nx, ny, nz);
copySerializedBlock(*computeVelocity(lattice), localVelocity, IndexOrdering::forward);

if(global::mpi().isMainProcessor()) {

double *data = new double[nx*ny*nz*3];

for(int i = 0; i < localVelocity.getNx(); i++)
for(int j = 0; j < localVelocity.getNy(); j++)
for(int k = 0; k < localVelocity.getNz(); k++)
{
int idx = (i*nx*nz+j*nz+k)*3;

Array<T, 3> locVel = localVelocity.get(i, j, k);
data[idx]   = locVel;
data[idx+1] = locVel;
data[idx+2] = locVel;

}
}

``````

The “lattice” variable is a MultiBlockLattice3D structure consisting of 668 atomic blocks.
The code seems to work with one strange behaviour:
The coordinates above a certain Y value get mixed up. Just as if atomic blocks over that Y value would use different indexing (like the X-Z coordinates are switched).
If I’am outputting the data from computeVelocity() using the overloaded '<< ’ operator of pcout then it’s working fine.

One quick visualization of the problem(showing some of the wall cells):
Indexing problem

The cells above Y=0.8 are incorrect, as if they would be sliced off and rotated.
(var01 is the Y axis)

If you could suggest some solution other than using the pcout, or describe some other workaround that is sure to work, it would be great.

``````