 {
     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;
     MPI_Comm_rank( comm, &rank);
+    int dims[3], periods[3], coords[3];
+    MPI_Cart_get( comm, 3, dims, periods, coords);
     if(rank==0)
     {
-        int dims[3], periods[3], coords[3];
-        MPI_Cart_get( comm, 3, dims, periods, coords);
         std::cout<< dims[0] <<" "<<dims[1]<<" "<<dims[2]<<" "<<dims[0]*dims[1]*dims[2]<<" ";
         int num_threads = 1;
 #ifdef _OPENMP

        t.toc();
        if(rank==0)std::cout<<t.diff()/(double)multi<<" ";
    }
    if(rank==0)std::cout << res.i<<" ";


    if(rank==0)std::cout <<std::endl;

    //The Elliptic scheme
    periods[0] = false, periods[1] = false;
    MPI_Comm commEll;
    MPI_Cart_create( MPI_COMM_WORLD, 3, dims, periods, true, &commEll);
    dg::CylindricalMPIGrid3d gridEll( R_0, R_0+lx, 0., ly, 0.,lz, n, Nx, Ny,Nz, dg::DIR, dg::DIR, dg::PER, commEll);
    const Vector ellw3d = dg::create::volume(gridEll);
    const Vector ellv3d = dg::create::inv_volume(gridEll);
