//#####################################################################
// Copyright 2002-2004, Ronald Fedkiw.
// This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt.
//#####################################################################
// Class ADVECTION_CONSERVATIVE_ENO  
//##################################################################### 
#ifndef __ADVECTION_CONSERVATIVE_ENO__
#define __ADVECTION_CONSERVATIVE_ENO__

#include <Core/Advection/ADVECTION_SEPARABLE_UNIFORM.h>
namespace PhysBAM{

template<class TV,class T2>
class ADVECTION_CONSERVATIVE_ENO:public ADVECTION_SEPARABLE_UNIFORM<TV,T2>
{
    typedef typename TV::SCALAR T;
    typedef VECTOR<int,1> IV;
    int order;
public:
    using ADVECTION_SEPARABLE_UNIFORM<TV,T2>::Advection_Solver;using ADVECTION_SEPARABLE_UNIFORM<TV,T2>::ENO;

    ADVECTION_CONSERVATIVE_ENO();
    virtual ~ADVECTION_CONSERVATIVE_ENO();

//#####################################################################
    void Set_Order(const int order_input=3) override;
    void Advection_Solver(const int m,const T dx,const ARRAY<T2,IV>& Z,const ARRAY<T,IV>& u,ARRAY<T2,IV>& u_Zx,
        ARRAY<T2>* flux_input) override;
//#####################################################################
};   
}
#endif
