 using DDiaMatrix =  cusp::dia_matrix<int, dg::get_value_type<DVec>, cusp::device_memory>;
 using DCooMatrix =  cusp::coo_matrix<int, dg::get_value_type<DVec>, cusp::device_memory>;
 #define MPI_OUT if(rank==0)
-#else //TOEFL_MPI
+#else //POET_MPI
 using HVec = dg::HVec;
 using DVec = dg::DVec;
 using HMatrix = dg::HMatrix;

//     ex.invLap_y(y0[0], y1[0]); //phi 
//     dg::blas1::scal(y0[0], 0.);
//     ex.solve_Ni_lwl(y0[0], y1[0], y0[1]);  
        {
                size_t start = 0;
        dg::file::NC_Error_Handle err;
        int ncid;
        err = nc_create( "visual.nc", NC_NETCDF4|NC_CLOBBER, &ncid);
        int dim_ids[3], tvarID;
        err = dg::file::define_dimensions( ncid, dim_ids, &tvarID, grid);

        std::string names[3] = {"ne", "Ni", "phi"};
        int dataIDs[3];
        for( unsigned i=0; i<3; i++){
            err = nc_def_var( ncid, names[i].data(), NC_DOUBLE, 3, dim_ids, &dataIDs[i]);}

        dg::HVec transferH(dg::evaluate(dg::zero, grid));

        dg::assign( y0[0], transferH);
        dg::file::put_vara_double( ncid, dataIDs[0], start, grid, transferH);
        dg::assign( y0[1], transferH);
        dg::file::put_vara_double( ncid, dataIDs[1], start, grid, transferH);
        dg::assign( y1[0], transferH);
        dg::file::put_vara_double( ncid, dataIDs[2], start, grid, transferH);
        err = nc_close(ncid); 
    }
    //////////////////initialisation of timekarniadakis and first step///////////////////
    double time = 0;
    dg::Karniadakis< std::vector<DVec> > karniadakis( y0, y0[0].size(), p.eps_time);

    MPI_OUT std::cout << std::fixed << std::setprecision(2) <<std::setfill('0');
    MPI_OUT std::cout <<"Computation Time \t"<<hour<<":"<<std::setw(2)<<minute<<":"<<second<<"\n";
    MPI_OUT std::cout <<"which is         \t"<<t.diff()/p.itstp/p.maxout<<"s/step\n";
#ifdef POET_MPI
    MPI_Finalize();
#endif //POET_MPI

    return 0;

