Line data Source code
1 : #ifndef OPERATOR_IMPLICIT_IMPLICIT_H_ 2 : #define OPERATOR_IMPLICIT_IMPLICIT_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 : namespace Implicit 16 : { 17 : class Implicit : public Operator<Grid::Cell> 18 : { 19 : public: 20 0 : Implicit () {} 21 : Implicit (const Vector<Geometry>& a_geom, 22 : const Vector<BoxArray>& a_grids, 23 : const Vector<DistributionMapping>& a_dmap, 24 : BC::BC<Set::Scalar>& a_bc, 25 : const LPInfo& a_info); 26 0 : virtual ~Implicit () {}; 27 : Implicit (const Implicit&) = delete; 28 : Implicit (Implicit&&) = delete; 29 : Implicit& operator= (const Implicit&) = delete; 30 : Implicit& operator= (Implicit&&) = delete; 31 : 32 : protected: 33 : 34 : virtual void Fapply (int amrlev, int mglev, MultiFab& out, const MultiFab& in) const final; 35 : virtual void Fsmooth (int amrlev, int mglev, MultiFab& sol, const MultiFab& rsh, int redblack) const final; 36 : virtual void FFlux (int amrlev, const MFIter& mfi, 37 : const Array<FArrayBox*,AMREX_SPACEDIM>& flux, 38 : const FArrayBox& sol, Location loc, const int face_only=0) const; 39 0 : virtual int getNComp() const {return AMREX_SPACEDIM;}; 40 0 : virtual bool isCrossStencil () const { return false; } 41 : private: 42 : }; 43 : } 44 : } 45 : #endif