 /*******************************************************************************
 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_AXPBY 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, ds is not executed
+# 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
 Run with: 
 >$ echo npx npy npz n Nx Ny Nz | mpirun -n#procs ./cluster_mpib 
  

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

    //The Arakawa scheme
    dg::ArakawaX<dg::CartesianMPIGrid3d, Matrix, Vector> arakawa( grid);

    dg::Elliptic<dg::CylindricalMPIGrid3d, Matrix, Vector> laplace(gridEll, dg::not_normed, dg::centered);
    const Vector solution = dg::evaluate ( fct, gridEll);
    const Vector deriv = dg::evaluate( derivative, gridEll);
    x = dg::evaluate( initial, gridEll);
    Vector b = dg::evaluate ( laplace_fct, gridEll);
    dg::blas2::symv( ellw3d, b, b);
    dg::CG< Vector > pcg( x, n*n*Nx*Ny);
