     MPI_Cart_get( comm, 3, dims, periods, coords);
     if(rank==0)
     {
-        std::cout<< dims[0] <<" "<<dims[1]<<" "<<dims[2]<<" "<<dims[0]*dims[1]*dims[2]<<" ";
+        std::cout<< dims[0] <<" "<<dims[1]<<" "<<dims[2]<<" "<<dims[0]*dims[1]*dims[2];
         int num_threads = 1;
 #ifdef _OPENMP
         num_threads = omp_get_max_threads( );
 #endif //omp
-        std::cout << num_threads<<" ";
-        std::cout<< n <<" "<<Nx<<" "<<Ny<<" "<<Nz<<" ";
+        std::cout << " "<<num_threads;
+        std::cout<<" "<< n <<" "<<Nx<<" "<<Ny<<" "<<Nz;
     }
 
 

dg::bc bcy = dg::PER;
dg::bc bcz = dg::PER;
double left( double x, double y, double z) {return sin(x)*cos(y)*z;}
double right( double x, double y, double z) {return cos(x)*sin(y)*z;} 
//double right2( double x, double y) {return sin(y);}
double jacobian( double x, double y, double z) 
{
    return z*z*cos(x)*sin(y)*2*sin(2*x)*cos(2*y)-sin(x)*cos(y)*2*cos(2*x)*sin(2*y);
}


/*******************************************************************************
program expects npx, npy, npz, n, Nx, Ny, Nz from std::cin
outputs one line to std::cout
# npx npy npz #procs #threads n Nx Ny Nz t_SCAL t_AXPBY t_POINTWISEDOT t_DOT t_DX_per t_DY_per t_DZ_per t_ARAKAWA #iterations t_1xELLIPTIC_CG_dir_centered t_DS EXBLASCHECK( d and i)
if Nz == 1, DZ and DS are not executed
if std::exception is thrown program writes error to std::cerr and terminates
Run with:
>$ echo npx npy npz n Nx Ny Nz | mpirun -n#procs ./cluster_mpib

 *******************************************************************************/

int main(int argc, char* argv[])
{
    MPI_Init( &argc, &argv);
    unsigned n, Nx, Ny, Nz;
    MPI_Comm comm;
    mpi_init3d( bcx, bcy, bcz, n, Nx, Ny, Nz, comm, std::cin, false);
    int rank;
