Block-Structured AMR Software Framework
amrex::MLPoisson Class Reference

#include <AMReX_MLPoisson.H>

Inheritance diagram for amrex::MLPoisson:
amrex::MLCellABecLap amrex::MLCellLinOp amrex::MLLinOp

Public Member Functions

 MLPoisson () noexcept
 
 MLPoisson (const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info=LPInfo(), const Vector< FabFactory< FArrayBox > const * > &a_factory={})
 
 MLPoisson (const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const Vector< iMultiFab const * > &a_overset_mask, const LPInfo &a_info=LPInfo(), const Vector< FabFactory< FArrayBox > const * > &a_factory={})
 
virtual ~MLPoisson ()
 
 MLPoisson (const MLPoisson &)=delete
 
 MLPoisson (MLPoisson &&)=delete
 
MLPoissonoperator= (const MLPoisson &)=delete
 
MLPoissonoperator= (MLPoisson &&)=delete
 
void define (const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info=LPInfo(), const Vector< FabFactory< FArrayBox > const * > &a_factory={})
 
void define (const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const Vector< iMultiFab const * > &a_overset_mask, const LPInfo &a_info=LPInfo(), const Vector< FabFactory< FArrayBox > const * > &a_factory={})
 
virtual void prepareForSolve () final override
 
virtual bool isSingular (int amrlev) const final override
 
virtual bool isBottomSingular () const final override
 
virtual void Fapply (int amrlev, int mglev, MultiFab &out, const MultiFab &in) const final override
 
virtual void Fsmooth (int amrlev, int mglev, MultiFab &sol, const MultiFab &rsh, int redblack) const final override
 
virtual void FFlux (int amrlev, const MFIter &mfi, const Array< FArrayBox *, AMREX_SPACEDIM > &flux, const FArrayBox &sol, Location loc, const int face_only=0) const final override
 
virtual void normalize (int amrlev, int mglev, MultiFab &mf) const final override
 
virtual Real getAScalar () const final override
 
virtual Real getBScalar () const final override
 
virtual MultiFab const * getACoeffs (int, int) const final override
 
virtual Array< MultiFab const *, AMREX_SPACEDIM > getBCoeffs (int, int) const final override
 
virtual std::unique_ptr< MLLinOpmakeNLinOp (int grid_size) const final override
 
virtual bool supportNSolve () const final override
 
virtual void copyNSolveSolution (MultiFab &dst, MultiFab const &src) const final override
 
void get_dpdn_on_domain_faces (Array< MultiFab *, AMREX_SPACEDIM > const &dpdn, MultiFab const &phi)
 Compute dphi/dn on domain faces after the solver has converged. More...
 
- Public Member Functions inherited from amrex::MLCellABecLap
 MLCellABecLap ()
 
virtual ~MLCellABecLap ()
 
 MLCellABecLap (const MLCellABecLap &)=delete
 
 MLCellABecLap (MLCellABecLap &&)=delete
 
MLCellABecLapoperator= (const MLCellABecLap &)=delete
 
MLCellABecLapoperator= (MLCellABecLap &&)=delete
 
void define (const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info=LPInfo(), const Vector< FabFactory< FArrayBox > const * > &a_factory={})
 
void define (const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const Vector< iMultiFab const * > &a_overset_mask, const LPInfo &a_info=LPInfo(), const Vector< FabFactory< FArrayBox > const * > &a_factory={})
 
iMultiFab const * getOversetMask (int amrlev, int mglev) const
 
virtual bool needsUpdate () const override
 
virtual void update () override
 
virtual void getFluxes (const Vector< Array< MultiFab *, AMREX_SPACEDIM > > &a_flux, const Vector< MultiFab * > &a_sol, Location a_loc) const final override
 
virtual void getFluxes (const Vector< MultiFab * > &, const Vector< MultiFab * > &) const final override
 
virtual void applyInhomogNeumannTerm (int amrlev, Any &rhs) const final override
 
virtual void addInhomogNeumannFlux (int amrlev, const Array< MultiFab *, AMREX_SPACEDIM > &grad, MultiFab const &sol, bool mult_bcoef) const final override
 
virtual void applyOverset (int amlev, Any &rhs) const override
 
- Public Member Functions inherited from amrex::MLCellLinOp
 MLCellLinOp ()
 
virtual ~MLCellLinOp ()
 
 MLCellLinOp (const MLCellLinOp &)=delete
 
 MLCellLinOp (MLCellLinOp &&)=delete
 
MLCellLinOpoperator= (const MLCellLinOp &)=delete
 
MLCellLinOpoperator= (MLCellLinOp &&)=delete
 
void define (const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info=LPInfo(), const Vector< FabFactory< FArrayBox > const * > &a_factory={})
 
virtual void setLevelBC (int amrlev, const MultiFab *levelbcdata, const MultiFab *robinbc_a=nullptr, const MultiFab *robinbc_b=nullptr, const MultiFab *robinbc_f=nullptr) final override
 For cell-centered solves only: this must be called for each level. Argument levelbcdata is used to supply Dirichlet or Neumann bc at the physical domain; if those data are homogeneous we can pass nullptr instead of levelbcdata. Regardless, this function must be called. If used, the MultiFab levelbcdata must have one ghost cell. Only the data outside the physical domain will be used. It is assumed that the data in those ghost cells outside the domain live exactly on the face of the physical domain. Argument amrlev is relative level such that the lowest to the solver is always 0. The optional arguments robinbc_[a|b|f] provide Robin boundary condition a*phi + b*dphi/dn = f. Note that d./dn is d./dx at the upper boundary and -d./dx at the lower boundary, for Robin BC. However, for inhomogeneous Neumann BC, the value in leveldata is assumed to be d./dx. More...
 
virtual bool isCrossStencil () const
 
virtual bool isTensorOp () const
 
void updateSolBC (int amrlev, const MultiFab &crse_bcdata) const
 
void updateCorBC (int amrlev, const MultiFab &crse_bcdata) const
 
virtual void applyBC (int amrlev, int mglev, MultiFab &in, BCMode bc_mode, StateMode s_mode, const MLMGBndry *bndry=nullptr, bool skip_fillboundary=false) const
 
BoxArray makeNGrids (int grid_size) const
 
virtual void restriction (int, int, MultiFab &crse, MultiFab &fine) const override
 
virtual void interpolation (int amrlev, int fmglev, MultiFab &fine, const MultiFab &crse) const override
 
virtual void interpAssign (int amrlev, int fmglev, MultiFab &fine, MultiFab &crse) const override
 
virtual void averageDownSolutionRHS (int camrlev, MultiFab &crse_sol, MultiFab &crse_rhs, const MultiFab &fine_sol, const MultiFab &fine_rhs) override
 
virtual void apply (int amrlev, int mglev, MultiFab &out, MultiFab &in, BCMode bc_mode, StateMode s_mode, const MLMGBndry *bndry=nullptr) const override
 
virtual void smooth (int amrlev, int mglev, MultiFab &sol, const MultiFab &rhs, bool skip_fillboundary=false) const final override
 
virtual void solutionResidual (int amrlev, MultiFab &resid, MultiFab &x, const MultiFab &b, const MultiFab *crse_bcdata=nullptr) override
 
virtual void correctionResidual (int amrlev, int mglev, MultiFab &resid, MultiFab &x, const MultiFab &b, BCMode bc_mode, const MultiFab *crse_bcdata=nullptr) final override
 
virtual void reflux (int crse_amrlev, MultiFab &res, const MultiFab &crse_sol, const MultiFab &, MultiFab &, MultiFab &fine_sol, const MultiFab &) const final override
 
virtual void compFlux (int amrlev, const Array< MultiFab *, AMREX_SPACEDIM > &fluxes, MultiFab &sol, Location loc) const override
 
virtual void compGrad (int amrlev, const Array< MultiFab *, AMREX_SPACEDIM > &grad, MultiFab &sol, Location loc) const override
 
virtual void applyMetricTerm (int amrlev, int mglev, Any &rhs) const final override
 
virtual void unapplyMetricTerm (int amrlev, int mglev, MultiFab &rhs) const final override
 
virtual Vector< Real > getSolvabilityOffset (int amrlev, int mglev, Any const &rhs) const override
 
virtual void fixSolvabilityByOffset (int amrlev, int mglev, Any &rhs, Vector< Real > const &offset) const override
 
virtual Real xdoty (int amrlev, int mglev, const MultiFab &x, const MultiFab &y, bool local) const final override
 
void applyMetricTermToMF (int amrlev, int mglev, MultiFab &rhs) const
 
virtual Real AnyNormInfMask (int amrlev, Any const &a, bool local) const override
 
virtual void AnyAvgDownResAmr (int clev, Any &cres, Any const &fres) const override
 
virtual void AnyInterpolationAmr (int famrlev, Any &fine, const Any &crse, IntVect const &) const override
 
virtual void AnyAverageDownAndSync (Vector< Any > &sol) const override
 
- Public Member Functions inherited from amrex::MLLinOp
 MLLinOp ()
 
virtual ~MLLinOp ()
 
 MLLinOp (const MLLinOp &)=delete
 
 MLLinOp (MLLinOp &&)=delete
 
MLLinOpoperator= (const MLLinOp &)=delete
 
MLLinOpoperator= (MLLinOp &&)=delete
 
void define (const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info, const Vector< FabFactory< FArrayBox > const * > &a_factory, bool eb_limit_coarsening=true)
 
virtual std::string name () const
 
void setDomainBC (const Array< BCType, AMREX_SPACEDIM > &lobc, const Array< BCType, AMREX_SPACEDIM > &hibc) noexcept
 Boundary of the whole domain. This functions must be called, and must be called before other bc functions. More...
 
void setDomainBC (const Vector< Array< BCType, AMREX_SPACEDIM > > &lobc, const Vector< Array< BCType, AMREX_SPACEDIM > > &hibc) noexcept
 
void setDomainBCLoc (const Array< Real, AMREX_SPACEDIM > &lo_bcloc, const Array< Real, AMREX_SPACEDIM > &hi_bcloc) noexcept
 
bool needsCoarseDataForBC () const noexcept
 Needs coarse data for bc? If the lowest level grids does not cover the entire domain, coarse level data are needed for supplying Dirichlet bc at coarse/fine boundary, even when the domain bc is not Dirichlet. More...
 
void setCoarseFineBC (const MultiFab *crse, int crse_ratio) noexcept
 For cell-centered solves only: if we want to do a linear solve where the boundary conditions on the coarsest AMR level of the solve come from a coarser level (e.g. the base AMR level of the solve is > 0 and does not cover the entire domain), we must explicitly provide the coarser data. Boundary conditions from a coarser level are always Dirichlet. The MultiFab crse does not need to have ghost cells and is at a coarser resolution than the coarsest AMR level of the solve; it is used to supply (interpolated) boundary conditions for the solve. NOTE: If this is called, it must be called before setLevelBC. If crse is nullptr, then the bc values are assumed to be zero. More...
 
void setVerbose (int v) noexcept
 
void setMaxOrder (int o) noexcept
 
int getMaxOrder () const noexcept
 
void setEnforceSingularSolvable (bool o) noexcept
 
bool getEnforceSingularSolvable () const noexcept
 
virtual BottomSolver getDefaultBottomSolver () const
 
virtual int getNComp () const
 
virtual int getNGrow (int=0, int=0) const
 
virtual void unimposeNeumannBC (int, Any &) const
 
virtual void scaleRHS (int, Any &) const
 
virtual Any AnyMake (int amrlev, int mglev, IntVect const &ng) const
 
virtual Any AnyMakeCoarseMG (int amrlev, int mglev, IntVect const &ng) const
 
virtual Any AnyMakeCoarseAmr (int famrlev, IntVect const &ng) const
 
virtual Any AnyMakeAlias (Any const &a) const
 
virtual IntVect AnyGrowVect (Any const &a) const
 
virtual void AnyCopy (Any &dst, Any const &src, IntVect const &ng) const
 
virtual void AnyAdd (Any &dst, Any const &src, IntVect const &ng) const
 
virtual void AnySetToZero (Any &a) const
 
virtual void AnySetBndryToZero (Any &a) const
 
virtual void AnyParallelCopy (Any &dst, Any const &src, IntVect const &src_nghost, IntVect const &dst_nghost, Periodicity const &period=Periodicity::NonPeriodic()) const
 
virtual Real AnyNormInf (Any &a) const
 
virtual void AnySolutionResidual (int amrlev, Any &resid, Any &x, Any const &b, Any const *crse_bcdata=nullptr)
 
virtual void AnyCorrectionResidual (int amrlev, int mglev, Any &resid, Any &x, const Any &b, BCMode bc_mode, const Any *crse_bcdata=nullptr)
 
virtual void AnyReflux (int crse_amrlev, Any &res, const Any &crse_sol, const Any &crse_rhs, Any &fine_res, Any &fine_sol, const Any &fine_rhs)
 
virtual void AnyAvgDownResMG (int clev, Any &cres, Any const &fres) const
 
virtual void AnySmooth (int amrlev, int mglev, Any &sol, const Any &rhs, bool skip_fillboundary=false) const
 
virtual void AnyRestriction (int amrlev, int cmglev, Any &crse, Any &fine) const
 
virtual void AnyInterpolationMG (int amrlev, int fmglev, Any &fine, const Any &crse) const
 
virtual void AnyInterpAssignMG (int amrlev, int fmglev, Any &fine, Any &crse) const
 
virtual void AnyAverageDownSolutionRHS (int camrlev, Any &crse_sol, Any &crse_rhs, const Any &fine_sol, const Any &fine_rhs)
 
virtual void postSolve (Vector< Any > &sol) const
 
Real MFNormInf (MultiFab const &mf, iMultiFab const *fine_mask, bool local) const
 
bool isMFIterSafe (int amrlev, int mglev1, int mglev2) const
 

Private Attributes

Vector< intm_is_singular
 

Additional Inherited Members

- Public Types inherited from amrex::MLLinOp
enum class  BCMode { Homogeneous , Inhomogeneous }
 
enum class  StateMode { Solution , Correction }
 
enum class  Location { FaceCenter , FaceCentroid , CellCenter , CellCentroid }
 
using BCType = LinOpBCType
 
- Static Public Member Functions inherited from amrex::MLLinOp
static void Initialize ()
 
static void Finalize ()
 
- Protected Types inherited from amrex::MLCellLinOp
using RealTuple = Array< Real, 2 *BL_SPACEDIM >
 
using BCTuple = Array< BoundCond, 2 *BL_SPACEDIM >
 
- Protected Member Functions inherited from amrex::MLCellABecLap
virtual bool supportInhomogNeumannBC () const noexcept override
 
- Protected Member Functions inherited from amrex::MLLinOp
int NAMRLevels () const noexcept
 functions More...
 
int NMGLevels (int amrlev) const noexcept
 
const Vector< int > & AMRRefRatio () const noexcept
 
int AMRRefRatio (int amr_lev) const noexcept
 
const GeometryGeom (int amr_lev, int mglev=0) const noexcept
 
FabFactory< FArrayBox > const * Factory (int amr_lev, int mglev=0) const noexcept
 
GpuArray< BCType, AMREX_SPACEDIM > LoBC (int icomp=0) const noexcept
 
GpuArray< BCType, AMREX_SPACEDIM > HiBC (int icomp=0) const noexcept
 
bool hasInhomogNeumannBC () const noexcept
 
bool hasRobinBC () const noexcept
 
virtual bool supportRobinBC () const noexcept
 
bool isBottomActive () const noexcept
 
MPI_Comm BottomCommunicator () const noexcept
 
MPI_Comm Communicator () const noexcept
 
void setCoarseFineBCLocation (const RealVect &cloc) noexcept
 
bool doAgglomeration () const noexcept
 
bool doConsolidation () const noexcept
 
bool doSemicoarsening () const noexcept
 
bool isCellCentered () const noexcept
 
void make (Vector< Vector< Any > > &mf, IntVect const &ng) const
 
virtual std::unique_ptr< FabFactory< FArrayBox > > makeFactory (int, int) const
 
virtual void resizeMultiGrid (int new_size)
 
bool hasHiddenDimension () const noexcept
 
int hiddenDirection () const noexcept
 
Box compactify (Box const &b) const noexcept
 
template<typename T >
Array4< T > compactify (Array4< T > const &a) const noexcept
 
template<typename T >
get_d0 (T const &dx, T const &dy, T const &) const noexcept
 
template<typename T >
get_d1 (T const &, T const &dy, T const &dz) const noexcept
 
- Protected Attributes inherited from amrex::MLCellABecLap
Vector< Vector< std::unique_ptr< iMultiFab > > > m_overset_mask
 
LPInfo m_lpinfo_arg
 
- Protected Attributes inherited from amrex::MLCellLinOp
bool m_has_metric_term = false
 
Vector< std::unique_ptr< MLMGBndry > > m_bndry_sol
 
Vector< std::unique_ptr< BndryRegister > > m_crse_sol_br
 
Vector< std::unique_ptr< MLMGBndry > > m_bndry_cor
 
Vector< std::unique_ptr< BndryRegister > > m_crse_cor_br
 
Vector< Vector< std::unique_ptr< BndryCondLoc > > > m_bcondloc
 
Vector< std::unique_ptr< MultiFab > > m_robin_bcval
 
Vector< Vector< BndryRegister > > m_undrrelxr
 
Vector< Vector< Array< MultiMask, 2 *AMREX_SPACEDIM > > > m_maskvals
 
Vector< std::unique_ptr< iMultiFab > > m_norm_fine_mask
 
Vector< YAFluxRegisterm_fluxreg
 
- Protected Attributes inherited from amrex::MLLinOp
LPInfo info
 
int verbose = 0
 
int maxorder = 3
 
bool enforceSingularSolvable = true
 
int m_num_amr_levels
 
Vector< intm_amr_ref_ratio
 
Vector< intm_num_mg_levels
 
const MLLinOpm_parent = nullptr
 
IntVect m_ixtype
 
bool m_do_agglomeration = false
 
bool m_do_consolidation = false
 
bool m_do_semicoarsening = false
 
Vector< IntVectmg_coarsen_ratio_vec
 
Vector< Vector< Geometry > > m_geom
 first Vector is for amr level and second is mg level More...
 
Vector< Vector< BoxArray > > m_grids
 
Vector< Vector< DistributionMapping > > m_dmap
 
Vector< Vector< std::unique_ptr< FabFactory< FArrayBox > > > > m_factory
 
Vector< intm_domain_covered
 
MPI_Comm m_default_comm = MPI_COMM_NULL
 
MPI_Comm m_bottom_comm = MPI_COMM_NULL
 
std::unique_ptr< CommContainerm_raii_comm
 
Vector< Array< BCType, AMREX_SPACEDIM > > m_lobc
 
Vector< Array< BCType, AMREX_SPACEDIM > > m_hibc
 
Vector< Array< BCType, AMREX_SPACEDIM > > m_lobc_orig
 
Vector< Array< BCType, AMREX_SPACEDIM > > m_hibc_orig
 
Array< Real, AMREX_SPACEDIM > m_domain_bloc_lo {{AMREX_D_DECL(0.,0.,0.)}}
 
Array< Real, AMREX_SPACEDIM > m_domain_bloc_hi {{AMREX_D_DECL(0.,0.,0.)}}
 
bool m_needs_coarse_data_for_bc
 
int m_coarse_data_crse_ratio = -1
 
RealVect m_coarse_bc_loc
 
const MultiFabm_coarse_data_for_bc = nullptr
 
- Static Protected Attributes inherited from amrex::MLLinOp
static constexpr int mg_coarsen_ratio = 2
 
static constexpr int mg_box_min_width = 2
 
static constexpr int mg_domain_min_width = 2
 

Constructor & Destructor Documentation

◆ MLPoisson() [1/5]

amrex::MLPoisson::MLPoisson ( )
inlinenoexcept

◆ MLPoisson() [2/5]

amrex::MLPoisson::MLPoisson ( const Vector< Geometry > &  a_geom,
const Vector< BoxArray > &  a_grids,
const Vector< DistributionMapping > &  a_dmap,
const LPInfo a_info = LPInfo(),
const Vector< FabFactory< FArrayBox > const * > &  a_factory = {} 
)

◆ MLPoisson() [3/5]

amrex::MLPoisson::MLPoisson ( const Vector< Geometry > &  a_geom,
const Vector< BoxArray > &  a_grids,
const Vector< DistributionMapping > &  a_dmap,
const Vector< iMultiFab const * > &  a_overset_mask,
const LPInfo a_info = LPInfo(),
const Vector< FabFactory< FArrayBox > const * > &  a_factory = {} 
)

◆ ~MLPoisson()

amrex::MLPoisson::~MLPoisson ( )
virtual

◆ MLPoisson() [4/5]

amrex::MLPoisson::MLPoisson ( const MLPoisson )
delete

◆ MLPoisson() [5/5]

amrex::MLPoisson::MLPoisson ( MLPoisson &&  )
delete

Member Function Documentation

◆ copyNSolveSolution()

void amrex::MLPoisson::copyNSolveSolution ( MultiFab dst,
MultiFab const &  src 
) const
finaloverridevirtual

Reimplemented from amrex::MLLinOp.

◆ define() [1/2]

void amrex::MLPoisson::define ( const Vector< Geometry > &  a_geom,
const Vector< BoxArray > &  a_grids,
const Vector< DistributionMapping > &  a_dmap,
const LPInfo a_info = LPInfo(),
const Vector< FabFactory< FArrayBox > const * > &  a_factory = {} 
)

◆ define() [2/2]

void amrex::MLPoisson::define ( const Vector< Geometry > &  a_geom,
const Vector< BoxArray > &  a_grids,
const Vector< DistributionMapping > &  a_dmap,
const Vector< iMultiFab const * > &  a_overset_mask,
const LPInfo a_info = LPInfo(),
const Vector< FabFactory< FArrayBox > const * > &  a_factory = {} 
)

◆ Fapply()

void amrex::MLPoisson::Fapply ( int  amrlev,
int  mglev,
MultiFab out,
const MultiFab in 
) const
finaloverridevirtual

Implements amrex::MLCellLinOp.

◆ FFlux()

void amrex::MLPoisson::FFlux ( int  amrlev,
const MFIter mfi,
const Array< FArrayBox *, AMREX_SPACEDIM > &  flux,
const FArrayBox sol,
Location  loc,
const int  face_only = 0 
) const
finaloverridevirtual

Implements amrex::MLCellLinOp.

◆ Fsmooth()

void amrex::MLPoisson::Fsmooth ( int  amrlev,
int  mglev,
MultiFab sol,
const MultiFab rsh,
int  redblack 
) const
finaloverridevirtual

Implements amrex::MLCellLinOp.

◆ get_dpdn_on_domain_faces()

void amrex::MLPoisson::get_dpdn_on_domain_faces ( Array< MultiFab *, AMREX_SPACEDIM > const &  dpdn,
MultiFab const &  phi 
)

Compute dphi/dn on domain faces after the solver has converged.

◆ getACoeffs()

virtual MultiFab const* amrex::MLPoisson::getACoeffs ( int  ,
int   
) const
inlinefinaloverridevirtual

Implements amrex::MLCellABecLap.

◆ getAScalar()

virtual Real amrex::MLPoisson::getAScalar ( ) const
inlinefinaloverridevirtual

Implements amrex::MLCellABecLap.

◆ getBCoeffs()

virtual Array<MultiFab const*,AMREX_SPACEDIM> amrex::MLPoisson::getBCoeffs ( int  ,
int   
) const
inlinefinaloverridevirtual

Implements amrex::MLCellABecLap.

◆ getBScalar()

virtual Real amrex::MLPoisson::getBScalar ( ) const
inlinefinaloverridevirtual

Implements amrex::MLCellABecLap.

◆ isBottomSingular()

virtual bool amrex::MLPoisson::isBottomSingular ( ) const
inlinefinaloverridevirtual

Reimplemented from amrex::MLLinOp.

◆ isSingular()

virtual bool amrex::MLPoisson::isSingular ( int  amrlev) const
inlinefinaloverridevirtual

Reimplemented from amrex::MLLinOp.

◆ makeNLinOp()

std::unique_ptr< MLLinOp > amrex::MLPoisson::makeNLinOp ( int  grid_size) const
finaloverridevirtual

Reimplemented from amrex::MLLinOp.

◆ normalize()

void amrex::MLPoisson::normalize ( int  amrlev,
int  mglev,
MultiFab mf 
) const
finaloverridevirtual

Reimplemented from amrex::MLLinOp.

◆ operator=() [1/2]

MLPoisson& amrex::MLPoisson::operator= ( const MLPoisson )
delete

◆ operator=() [2/2]

MLPoisson& amrex::MLPoisson::operator= ( MLPoisson &&  )
delete

◆ prepareForSolve()

void amrex::MLPoisson::prepareForSolve ( )
finaloverridevirtual

Reimplemented from amrex::MLCellABecLap.

◆ supportNSolve()

bool amrex::MLPoisson::supportNSolve ( ) const
finaloverridevirtual

Reimplemented from amrex::MLLinOp.

Member Data Documentation

◆ m_is_singular

Vector<int> amrex::MLPoisson::m_is_singular
private

The documentation for this class was generated from the following files: