//#####################################################################
// Copyright 2010.
// This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt.
//#####################################################################
// Class LEVELSET_MAKER_UNIFORM
//##################################################################### 
#ifndef __LEVELSET_MAKER_UNIFORM__
#define __LEVELSET_MAKER_UNIFORM__

#include <Core/Arrays/ARRAYS_ND.h>
#include <Core/Grids/GRID.h>
#include <Core/Meshes/MESHES_FORWARD.h>
namespace PhysBAM{

template<class TV>
class LEVELSET_MAKER_UNIFORM
{
    typedef MESH_OBJECT<TV,TV::m-1> T_SURFACE;
    typedef VECTOR<int,TV::m> IV;typedef typename TV::SCALAR T;
public:
//#####################################################################
    static void Compute_Level_Set(T_SURFACE& surface,GRID<TV>& grid,AT_CELLS,int ghost_cells,ARRAY<T,IV>& phi);
    static void Compute_Level_Set(T_SURFACE& surface,GRID<TV>& grid,AT_NODES,int ghost_cells,ARRAY<T,IV>& phi)
    {auto reg_grid=grid.Get_MAC_Grid_At_Regular_Positions();Compute_Level_Set(surface,reg_grid,at_cells,ghost_cells,phi);}
//#####################################################################
};
}
#endif
