//#####################################################################
// Copyright 2002-2007, Ronald Fedkiw, Geoffrey Irving, Nipun Kwatra.
// This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt.
//#####################################################################
// Class BOUNDARY_EXTRAPOLATE_CELL
//#####################################################################
#ifndef __BOUNDARY_EXTRAPOLATE_CELL__
#define __BOUNDARY_EXTRAPOLATE_CELL__

#include <Core/Boundaries/BOUNDARY.h>
namespace PhysBAM{

template<class TV,class T2>
class BOUNDARY_EXTRAPOLATE_CELL:public BOUNDARY<TV,T2>
{
    typedef typename TV::SCALAR T;typedef VECTOR<int,TV::m> IV;
public:

    BOUNDARY_EXTRAPOLATE_CELL() = default;
    virtual ~BOUNDARY_EXTRAPOLATE_CELL() = default;

//#####################################################################
    void Fill_Ghost_Cells(const GRID<TV>& grid,const ARRAYS_ND_BASE<T2,IV>& u,ARRAYS_ND_BASE<T2,IV>& u_ghost,const int number_of_ghost_cells=3) const override;
    void Apply_Boundary_Condition_Cell(const GRID<TV>& grid,ARRAYS_ND_BASE<T2,IV>& u) const override;
//#####################################################################
};
//#####################################################################
}
#endif
