Line data Source code
1 : #ifndef AMREX_OPERATOR_DIAGONAL_H_ 2 : #define AMREX_OPERATOR_DIAGONAL_H_ 3 : 4 : #include <AMReX_MLCellLinOp.H> 5 : #include <AMReX_Array.H> 6 : #include <limits> 7 : 8 : #include "Operator/Operator.H" 9 : 10 : 11 : using namespace amrex; 12 : 13 : namespace Operator 14 : { 15 : class Diagonal : public Operator<Grid::Node> 16 : { 17 : public: 18 : Diagonal () {} 19 : Diagonal (const Vector<Geometry>& a_geom, 20 : const Vector<BoxArray>& a_grids, 21 : const Vector<DistributionMapping>& a_dmap, 22 : const LPInfo& a_info); 23 : virtual ~Diagonal (); 24 : Diagonal (const Diagonal&) = delete; 25 : Diagonal (Diagonal&&) = delete; 26 : Diagonal& operator= (const Diagonal&) = delete; 27 : Diagonal& operator= (Diagonal&&) = delete; 28 : protected: 29 : 30 : virtual void Fapply (int amrlev, int mglev, MultiFab& out, const MultiFab& in) const override final; 31 : virtual void Fsmooth (int amrlev, int mglev, MultiFab& sol, const MultiFab& rsh) const override final; 32 0 : virtual int getNComp() const override {return AMREX_SPACEDIM;}; 33 0 : virtual void normalize (int /*amrlev*/, int /*mglev*/, MultiFab& /*mf*/) const override final {}; 34 0 : virtual void reflux (int /*crse_amrlev*/, 35 : MultiFab& /*res*/, const MultiFab& /*crse_sol*/, const MultiFab& /*crse_rhs*/, 36 0 : MultiFab& /*fine_res*/, MultiFab& /*fine_sol*/, const MultiFab& /*fine_rhs*/) const override {}; 37 : 38 : }; 39 : } 40 : #endif