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

#include <AMReX_MLNodeLaplacian.H>

Inheritance diagram for amrex::MLNodeLaplacian:
amrex::MLNodeLinOp amrex::MLLinOpT< MF >

Public Member Functions

 MLNodeLaplacian ()=default
 
 MLNodeLaplacian (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={}, Real a_const_sigma=Real(0.0))
 
 ~MLNodeLaplacian () override=default
 
 MLNodeLaplacian (const MLNodeLaplacian &)=delete
 
 MLNodeLaplacian (MLNodeLaplacian &&)=delete
 
MLNodeLaplacianoperator= (const MLNodeLaplacian &)=delete
 
MLNodeLaplacianoperator= (MLNodeLaplacian &&)=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={}, Real a_const_sigma=Real(0.0))
 
std::string name () const override
 
void setRZCorrection (bool rz) noexcept
 
void setNormalizationThreshold (Real t) noexcept
 
void setSigma (int amrlev, const MultiFab &a_sigma)
 
void compDivergence (const Vector< MultiFab * > &rhs, const Vector< MultiFab * > &vel)
 
void compRHS (const Vector< MultiFab * > &rhs, const Vector< MultiFab * > &vel, const Vector< const MultiFab * > &rhnd, const Vector< MultiFab * > &rhcc)
 
void updateVelocity (const Vector< MultiFab * > &vel, const Vector< MultiFab const * > &sol) const
 
void compSyncResidualCoarse (MultiFab &sync_resid, const MultiFab &phi, const MultiFab &vold, const MultiFab *rhcc, const BoxArray &fine_grids, const IntVect &ref_ratio)
 
void compSyncResidualFine (MultiFab &sync_resid, const MultiFab &phi, const MultiFab &vold, const MultiFab *rhcc)
 
void setGaussSeidel (bool flag) noexcept
 
void setHarmonicAverage (bool flag) noexcept
 
void setMapped (bool flag) noexcept
 
void setCoarseningStrategy (CoarseningStrategy cs) noexcept
 
BottomSolver getDefaultBottomSolver () const final
 
void restriction (int amrlev, int cmglev, MultiFab &crse, MultiFab &fine) const final
 
void interpolation (int amrlev, int fmglev, MultiFab &fine, const MultiFab &crse) const final
 
void averageDownSolutionRHS (int camrlev, MultiFab &crse_sol, MultiFab &crse_rhs, const MultiFab &fine_sol, const MultiFab &fine_rhs) final
 
void reflux (int crse_amrlev, MultiFab &res, const MultiFab &crse_sol, const MultiFab &crse_rhs, MultiFab &fine_res, MultiFab &fine_sol, const MultiFab &fine_rhs) const final
 
void prepareForSolve () final
 
void Fapply (int amrlev, int mglev, MultiFab &out, const MultiFab &in) const final
 
void Fsmooth (int amrlev, int mglev, MultiFab &sol, const MultiFab &rhs) const final
 
void normalize (int amrlev, int mglev, MultiFab &mf) const final
 
void fixUpResidualMask (int amrlev, iMultiFab &resmsk) final
 
void getFluxes (const Vector< Array< MultiFab *, AMREX_SPACEDIM > > &, const Vector< MultiFab * > &, Location) const final
 
void getFluxes (const Vector< MultiFab * > &a_flux, const Vector< MultiFab * > &a_sol) const final
 
void unimposeNeumannBC (int amrlev, MultiFab &rhs) const final
 
Vector< Real > getSolvabilityOffset (int amrlev, int mglev, MultiFab const &rhs) const override
 
void fixSolvabilityByOffset (int amrlev, int mglev, MultiFab &rhs, Vector< Real > const &offset) const override
 
void compGrad (int, const Array< MultiFab *, AMREX_SPACEDIM > &, MultiFab &, Location) const final
 
void compGrad (int amrlev, MultiFab &grad, MultiFab &sol) const
 
void averageDownCoeffs ()
 
void averageDownCoeffsToCoarseAmrLevel (int flev)
 
void averageDownCoeffsSameAmrLevel (int amrlev)
 
void restrictInteriorNodes (int camrlev, MultiFab &crhs, MultiFab &frhs) const
 
void FillBoundaryCoeff (MultiFab &sigma, const Geometry &geom)
 
void buildStencil ()
 
- Public Member Functions inherited from amrex::MLNodeLinOp
 MLNodeLinOp ()
 
 ~MLNodeLinOp () override=default
 
 MLNodeLinOp (const MLNodeLinOp &)=delete
 
 MLNodeLinOp (MLNodeLinOp &&)=delete
 
MLNodeLinOpoperator= (const MLNodeLinOp &)=delete
 
MLNodeLinOpoperator= (MLNodeLinOp &&)=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={}, int a_eb_limit_coarsening=-1)
 
void setSmoothNumSweeps (int nsweeps) noexcept
 
void setLevelBC (int, const MultiFab *, const MultiFab *=nullptr, const MultiFab *=nullptr, const MultiFab *=nullptr) final
 
void apply (int amrlev, int mglev, MultiFab &out, MultiFab &in, BCMode bc_mode, StateMode s_mode, const MLMGBndry *bndry=nullptr) const final
 
void smooth (int amrlev, int mglev, MultiFab &sol, const MultiFab &rhs, bool skip_fillboundary=false) const override
 
void solutionResidual (int amrlev, MultiFab &resid, MultiFab &x, const MultiFab &b, const MultiFab *crse_bcdata=nullptr) override
 
void correctionResidual (int amrlev, int mglev, MultiFab &resid, MultiFab &x, const MultiFab &b, BCMode bc_mode, const MultiFab *crse_bcdata=nullptr) override
 
Vector< Real > getSolvabilityOffset (int amrlev, int mglev, MultiFab const &rhs) const override
 
void fixSolvabilityByOffset (int amrlev, int mglev, MultiFab &rhs, Vector< Real > const &offset) const override
 
void prepareForSolve () override
 
void prepareForGMRES () override
 
void setDirichletNodesToZero (int amrlev, int mglev, MultiFab &mf) const override
 
bool isSingular (int amrlev) const override
 Is it singular on given AMR level? More...
 
bool isBottomSingular () const override
 Is the bottom of MG singular? More...
 
Real xdoty (int amrlev, int mglev, const MultiFab &x, const MultiFab &y, bool local) const final
 
virtual void applyBC (int amrlev, int mglev, MultiFab &phi, BCMode bc_mode, StateMode state_mode, bool skip_fillboundary=false) const
 
void nodalSync (int amrlev, int mglev, MultiFab &mf) const
 
void buildMasks ()
 
void setOversetMask (int amrlev, const iMultiFab &a_dmask)
 
Real normInf (int amrlev, MultiFab const &mf, bool local) const override
 
void avgDownResAmr (int, MultiFab &, MultiFab const &) const final
 
void interpolationAmr (int famrlev, MultiFab &fine, const MultiFab &crse, IntVect const &nghost) const override
 
void averageDownAndSync (Vector< MultiFab > &sol) const override
 
void interpAssign (int amrlev, int fmglev, MultiFab &fine, MultiFab &crse) const override
 
- Public Member Functions inherited from amrex::MLLinOpT< MF >
 MLLinOpT ()=default
 
virtual ~MLLinOpT ()=default
 
 MLLinOpT (const MLLinOpT< MF > &)=delete
 
 MLLinOpT (MLLinOpT< MF > &&)=delete
 
MLLinOpT< MF > & operator= (const MLLinOpT< MF > &)=delete
 
MLLinOpT< MF > & operator= (MLLinOpT< MF > &&)=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< FAB > const * > &a_factory, bool eb_limit_coarsening=true)
 
void setDomainBC (const Array< BCType, AMREX_SPACEDIM > &lobc, const Array< BCType, AMREX_SPACEDIM > &hibc) noexcept
 Boundary of the whole domain. More...
 
void setDomainBC (const Vector< Array< BCType, AMREX_SPACEDIM > > &lobc, const Vector< Array< BCType, AMREX_SPACEDIM > > &hibc) noexcept
 Boundary of the whole domain. More...
 
void setDomainBCLoc (const Array< Real, AMREX_SPACEDIM > &lo_bcloc, const Array< Real, AMREX_SPACEDIM > &hi_bcloc) noexcept
 Set location of domain boundaries. More...
 
bool needsCoarseDataForBC () const noexcept
 Needs coarse data for bc? More...
 
void setCoarseFineBC (const MF *crse, int crse_ratio, LinOpBCType bc_type=LinOpBCType::Dirichlet) noexcept
 Set coarse/fine boundary conditions. For cell-centered solves only. More...
 
void setCoarseFineBC (const MF *crse, IntVect const &crse_ratio, LinOpBCType bc_type=LinOpBCType::Dirichlet) noexcept
 
template<typename AMF , std::enable_if_t<!std::is_same_v< MF, AMF >, int > = 0>
void setCoarseFineBC (const AMF *crse, int crse_ratio, LinOpBCType bc_type=LinOpBCType::Dirichlet) noexcept
 
template<typename AMF , std::enable_if_t<!std::is_same_v< MF, AMF >, int > = 0>
void setCoarseFineBC (const AMF *crse, IntVect const &crse_ratio, LinOpBCType bc_type=LinOpBCType::Dirichlet) noexcept
 
virtual void setLevelBC (int, const MF *, const MF *=nullptr, const MF *=nullptr, const MF *=nullptr)=0
 Set boundary conditions for given level. For cell-centered solves only. More...
 
template<typename AMF , std::enable_if_t<!std::is_same_v< MF, AMF >, int > = 0>
void setLevelBC (int amrlev, const AMF *levelbcdata, const AMF *robinbc_a=nullptr, const AMF *robinbc_b=nullptr, const AMF *robinbc_f=nullptr)
 
void setVerbose (int v) noexcept
 Set verbosity. More...
 
void setMaxOrder (int o) noexcept
 Set order of interpolation at coarse/fine boundary. More...
 
int getMaxOrder () const noexcept
 Get order of interpolation at coarse/fine boundary. More...
 
void setEnforceSingularSolvable (bool o) noexcept
 
bool getEnforceSingularSolvable () const noexcept
 
virtual int getNComp () const
 Return number of components. More...
 
virtual int getNGrow (int=0, int=0) const
 
virtual bool needsUpdate () const
 Does it need update if it's reused? More...
 
virtual void update ()
 Update for reuse. More...
 
virtual void restriction (int amrlev, int cmglev, MF &crse, MF &fine) const =0
 Restriction onto coarse MG level. More...
 
virtual void interpolation (int amrlev, int fmglev, MF &fine, const MF &crse) const =0
 Add interpolated coarse MG level data to fine MG level data. More...
 
virtual void interpAssign (int amrlev, int fmglev, MF &fine, MF &crse) const
 Overwrite fine MG level data with interpolated coarse data. More...
 
virtual void interpolationAmr (int famrlev, MF &fine, const MF &crse, IntVect const &nghost) const
 Interpolation between AMR levels. More...
 
virtual void averageDownSolutionRHS (int camrlev, MF &crse_sol, MF &crse_rhs, const MF &fine_sol, const MF &fine_rhs)
 Average-down data from fine AMR level to coarse AMR level. More...
 
virtual void apply (int amrlev, int mglev, MF &out, MF &in, BCMode bc_mode, StateMode s_mode, const MLMGBndryT< MF > *bndry=nullptr) const =0
 Apply the linear operator, out = L(in) More...
 
virtual void smooth (int amrlev, int mglev, MF &sol, const MF &rhs, bool skip_fillboundary=false) const =0
 Smooth. More...
 
virtual void normalize (int amrlev, int mglev, MF &mf) const
 Divide mf by the diagonal component of the operator. Used by bicgstab. More...
 
virtual void solutionResidual (int amrlev, MF &resid, MF &x, const MF &b, const MF *crse_bcdata=nullptr)=0
 Compute residual for solution. More...
 
virtual void prepareForFluxes (int, const MF *=nullptr)
 
virtual void correctionResidual (int amrlev, int mglev, MF &resid, MF &x, const MF &b, BCMode bc_mode, const MF *crse_bcdata=nullptr)=0
 Compute residual for the residual-correction form, resid = b - L(x) More...
 
virtual void reflux (int crse_amrlev, MF &res, const MF &crse_sol, const MF &crse_rhs, MF &fine_res, MF &fine_sol, const MF &fine_rhs) const
 Reflux at AMR coarse/fine boundary. More...
 
virtual void compFlux (int, const Array< MF *, AMREX_SPACEDIM > &, MF &, Location) const
 Compute fluxes. More...
 
virtual void compGrad (int, const Array< MF *, AMREX_SPACEDIM > &, MF &, Location) const
 Compute gradients of the solution. More...
 
virtual void applyMetricTerm (int, int, MF &) const
 apply metric terms if there are any More...
 
virtual void unapplyMetricTerm (int, int, MF &) const
 unapply metric terms if there are any More...
 
virtual void unimposeNeumannBC (int, MF &) const
 This is needed for our nodal projection solver. More...
 
virtual void applyInhomogNeumannTerm (int, MF &) const
 Extra terms introduced when we treat inhomogeneous Nuemann BC as homogeneous. More...
 
virtual void applyOverset (int, MF &) const
 for overset solver only More...
 
virtual void scaleRHS (int, MF &) const
 scale RHS to fix solvability More...
 
virtual Vector< RTgetSolvabilityOffset (int, int, MF const &) const
 get offset for fixing solvability More...
 
virtual void fixSolvabilityByOffset (int, int, MF &, Vector< RT > const &) const
 fix solvability by subtracting offset from RHS More...
 
virtual void setDirichletNodesToZero (int, int, MF &) const
 
virtual RT xdoty (int amrlev, int mglev, const MF &x, const MF &y, bool local) const =0
 x dot y, used by the bottom solver More...
 
virtual std::unique_ptr< MLLinOpT< MF > > makeNLinOp (int) const
 
virtual void getFluxes (const Vector< Array< MF *, AMREX_SPACEDIM > > &, const Vector< MF * > &, Location) const
 
virtual void getFluxes (const Vector< MF * > &, const Vector< MF * > &) const
 
virtual bool supportNSolve () const
 
virtual void copyNSolveSolution (MF &, MF const &) const
 
virtual void postSolve (Vector< MF > &) const
 
virtual RT normInf (int amrlev, MF const &mf, bool local) const =0
 
virtual void averageDownAndSync (Vector< MF > &sol) const =0
 
virtual void avgDownResAmr (int clev, MF &cres, MF const &fres) const
 
virtual void avgDownResMG (int clev, MF &cres, MF const &fres) const
 
bool isMFIterSafe (int amrlev, int mglev1, int mglev2) const
 
int NAMRLevels () const noexcept
 Return the number of AMR levels. More...
 
int NMGLevels (int amrlev) const noexcept
 Return the number of MG levels at given AMR level. More...
 
const GeometryGeom (int amr_lev, int mglev=0) const noexcept
 

Protected Member Functions

void resizeMultiGrid (int new_size) final
 
- Protected Member Functions inherited from amrex::MLNodeLinOp
void resizeMultiGrid (int new_size) override
 
- Protected Member Functions inherited from amrex::MLLinOpT< MF >
const Vector< int > & AMRRefRatio () const noexcept
 Return AMR refinement ratios. More...
 
int AMRRefRatio (int amr_lev) const noexcept
 Return AMR refinement ratio at given AMR level. More...
 
FabFactory< FAB > 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 hasBC (BCType bct) const noexcept
 
bool hasInhomogNeumannBC () const noexcept
 
bool hasRobinBC () const noexcept
 
virtual bool supportRobinBC () const noexcept
 
virtual bool supportInhomogNeumannBC () 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
 
virtual IntVect getNGrowVectRestriction () const
 
virtual void make (Vector< Vector< MF > > &mf, IntVect const &ng) const
 
virtual MF make (int amrlev, int mglev, IntVect const &ng) const
 
virtual MF makeAlias (MF const &mf) const
 
virtual MF makeCoarseMG (int amrlev, int mglev, IntVect const &ng) const
 
virtual MF makeCoarseAmr (int famrlev, IntVect const &ng) const
 
virtual std::unique_ptr< FabFactory< FAB > > makeFactory (int, int) const
 
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
 

Private Member Functions

void checkPoint (std::string const &file_name) const final
 

Private Attributes

int m_is_rz = 0
 
Real m_const_sigma = Real(0.0)
 
Vector< Vector< Array< std::unique_ptr< MultiFab >, AMREX_SPACEDIM > > > m_sigma
 
Vector< Vector< std::unique_ptr< MultiFab > > > m_stencil
 
Vector< std::unique_ptr< MultiFab > > m_nosigma_stencil
 
Vector< Vector< Real > > m_s0_norm0
 
Real m_normalization_threshold = Real(1.e-8)
 
bool m_use_gauss_seidel = true
 
bool m_use_harmonic_average = false
 
bool m_use_mapped = false
 

Additional Inherited Members

- Public Types inherited from amrex::MLNodeLinOp
enum class  CoarseningStrategy : int { Sigma , RAP }
 
- Public Types inherited from amrex::MLLinOpT< MF >
using MFType = MF
 
using FAB = typename FabDataType< MF >::fab_type
 
using RT = typename FabDataType< MF >::value_type
 
using BCType = LinOpBCType
 
using BCMode = LinOpEnumType::BCMode
 
using StateMode = LinOpEnumType::StateMode
 
using Location = LinOpEnumType::Location
 
- Static Public Member Functions inherited from amrex::MLNodeLinOp
static std::unique_ptr< iMultiFabmakeOwnerMask (const BoxArray &ba, const DistributionMapping &dm, const Geometry &geom)
 
- Public Attributes inherited from amrex::MLLinOpT< MF >
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
 
- Protected Attributes inherited from amrex::MLNodeLinOp
std::unique_ptr< iMultiFabm_owner_mask_top
 
std::unique_ptr< iMultiFabm_owner_mask_bottom
 
Vector< Vector< std::unique_ptr< iMultiFab > > > m_dirichlet_mask
 
Vector< std::unique_ptr< iMultiFab > > m_cc_fine_mask
 
Vector< std::unique_ptr< iMultiFab > > m_nd_fine_mask
 
Vector< std::unique_ptr< LayoutData< int > > > m_has_fine_bndry
 
MultiFab m_bottom_dot_mask
 
MultiFab m_coarse_dot_mask
 
Vector< std::unique_ptr< iMultiFab > > m_norm_fine_mask
 
CoarseningStrategy m_coarsening_strategy = CoarseningStrategy::Sigma
 
bool m_masks_built = false
 
bool m_overset_dirichlet_mask = false
 
int m_smooth_num_sweeps = 4
 
bool m_in_solution_mode = true
 
- Protected Attributes inherited from amrex::MLLinOpT< MF >
int mg_domain_min_width = 2
 
LPInfo info
 
int verbose = 0
 
int maxorder = 3
 
bool enforceSingularSolvable = true
 
int m_num_amr_levels = 0
 
Vector< intm_amr_ref_ratio
 
Vector< intm_num_mg_levels
 
const MLLinOpT< MF > * m_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< FAB > > > > 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
 
Array< Real, AMREX_SPACEDIM > m_domain_bloc_lo {{AMREX_D_DECL(0._rt,0._rt,0._rt)}}
 
Array< Real, AMREX_SPACEDIM > m_domain_bloc_hi {{AMREX_D_DECL(0._rt,0._rt,0._rt)}}
 
bool m_needs_coarse_data_for_bc = false
 
LinOpBCType m_coarse_fine_bc_type = LinOpBCType::Dirichlet
 
IntVect m_coarse_data_crse_ratio = IntVect(-1)
 
RealVect m_coarse_bc_loc
 
const MF * m_coarse_data_for_bc = nullptr
 
MF m_coarse_data_for_bc_raii
 
- Static Protected Attributes inherited from amrex::MLLinOpT< MF >
static constexpr int mg_coarsen_ratio = 2
 
static constexpr int mg_box_min_width = 2
 

Constructor & Destructor Documentation

◆ MLNodeLaplacian() [1/4]

amrex::MLNodeLaplacian::MLNodeLaplacian ( )
default

◆ MLNodeLaplacian() [2/4]

amrex::MLNodeLaplacian::MLNodeLaplacian ( 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 = {},
Real  a_const_sigma = Real(0.0) 
)

◆ ~MLNodeLaplacian()

amrex::MLNodeLaplacian::~MLNodeLaplacian ( )
overridedefault

◆ MLNodeLaplacian() [3/4]

amrex::MLNodeLaplacian::MLNodeLaplacian ( const MLNodeLaplacian )
delete

◆ MLNodeLaplacian() [4/4]

amrex::MLNodeLaplacian::MLNodeLaplacian ( MLNodeLaplacian &&  )
delete

Member Function Documentation

◆ averageDownCoeffs()

void amrex::MLNodeLaplacian::averageDownCoeffs ( )

◆ averageDownCoeffsSameAmrLevel()

void amrex::MLNodeLaplacian::averageDownCoeffsSameAmrLevel ( int  amrlev)

◆ averageDownCoeffsToCoarseAmrLevel()

void amrex::MLNodeLaplacian::averageDownCoeffsToCoarseAmrLevel ( int  flev)

◆ averageDownSolutionRHS()

void amrex::MLNodeLaplacian::averageDownSolutionRHS ( int  camrlev,
MultiFab crse_sol,
MultiFab crse_rhs,
const MultiFab fine_sol,
const MultiFab fine_rhs 
)
final

◆ buildStencil()

void amrex::MLNodeLaplacian::buildStencil ( )

◆ checkPoint()

void amrex::MLNodeLaplacian::checkPoint ( std::string const &  file_name) const
finalprivatevirtual

Reimplemented from amrex::MLLinOpT< MF >.

◆ compDivergence()

void amrex::MLNodeLaplacian::compDivergence ( const Vector< MultiFab * > &  rhs,
const Vector< MultiFab * > &  vel 
)

◆ compGrad() [1/2]

void amrex::MLNodeLaplacian::compGrad ( int  amrlev,
MultiFab grad,
MultiFab sol 
) const

◆ compGrad() [2/2]

void amrex::MLNodeLaplacian::compGrad ( int  ,
const Array< MultiFab *, AMREX_SPACEDIM > &  ,
MultiFab ,
Location   
) const
inlinefinal

◆ compRHS()

void amrex::MLNodeLaplacian::compRHS ( const Vector< MultiFab * > &  rhs,
const Vector< MultiFab * > &  vel,
const Vector< const MultiFab * > &  rhnd,
const Vector< MultiFab * > &  rhcc 
)

◆ compSyncResidualCoarse()

void amrex::MLNodeLaplacian::compSyncResidualCoarse ( MultiFab sync_resid,
const MultiFab phi,
const MultiFab vold,
const MultiFab rhcc,
const BoxArray fine_grids,
const IntVect ref_ratio 
)

◆ compSyncResidualFine()

void amrex::MLNodeLaplacian::compSyncResidualFine ( MultiFab sync_resid,
const MultiFab phi,
const MultiFab vold,
const MultiFab rhcc 
)

◆ define()

void amrex::MLNodeLaplacian::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 = {},
Real  a_const_sigma = Real(0.0) 
)

◆ Fapply()

void amrex::MLNodeLaplacian::Fapply ( int  amrlev,
int  mglev,
MultiFab out,
const MultiFab in 
) const
finalvirtual

Implements amrex::MLNodeLinOp.

◆ FillBoundaryCoeff()

void amrex::MLNodeLaplacian::FillBoundaryCoeff ( MultiFab sigma,
const Geometry geom 
)

◆ fixSolvabilityByOffset()

void amrex::MLNodeLaplacian::fixSolvabilityByOffset ( int  amrlev,
int  mglev,
MultiFab rhs,
Vector< Real > const &  offset 
) const
override

◆ fixUpResidualMask()

void amrex::MLNodeLaplacian::fixUpResidualMask ( int  amrlev,
iMultiFab resmsk 
)
finalvirtual

Reimplemented from amrex::MLNodeLinOp.

◆ Fsmooth()

void amrex::MLNodeLaplacian::Fsmooth ( int  amrlev,
int  mglev,
MultiFab sol,
const MultiFab rhs 
) const
finalvirtual

Implements amrex::MLNodeLinOp.

◆ getDefaultBottomSolver()

BottomSolver amrex::MLNodeLaplacian::getDefaultBottomSolver ( ) const
inlinefinalvirtual

Reimplemented from amrex::MLLinOpT< MF >.

◆ getFluxes() [1/2]

void amrex::MLNodeLaplacian::getFluxes ( const Vector< Array< MultiFab *, AMREX_SPACEDIM > > &  ,
const Vector< MultiFab * > &  ,
Location   
) const
inlinefinal

◆ getFluxes() [2/2]

void amrex::MLNodeLaplacian::getFluxes ( const Vector< MultiFab * > &  a_flux,
const Vector< MultiFab * > &  a_sol 
) const
final

◆ getSolvabilityOffset()

Vector< Real > amrex::MLNodeLaplacian::getSolvabilityOffset ( int  amrlev,
int  mglev,
MultiFab const &  rhs 
) const
override

◆ interpolation()

void amrex::MLNodeLaplacian::interpolation ( int  amrlev,
int  fmglev,
MultiFab fine,
const MultiFab crse 
) const
final

◆ name()

std::string amrex::MLNodeLaplacian::name ( ) const
inlineoverridevirtual

Reimplemented from amrex::MLLinOpT< MF >.

◆ normalize()

void amrex::MLNodeLaplacian::normalize ( int  amrlev,
int  mglev,
MultiFab mf 
) const
final

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ prepareForSolve()

void amrex::MLNodeLaplacian::prepareForSolve ( )
finalvirtual

Implements amrex::MLLinOpT< MF >.

◆ reflux()

void amrex::MLNodeLaplacian::reflux ( int  crse_amrlev,
MultiFab res,
const MultiFab crse_sol,
const MultiFab crse_rhs,
MultiFab fine_res,
MultiFab fine_sol,
const MultiFab fine_rhs 
) const
final

◆ resizeMultiGrid()

void amrex::MLNodeLaplacian::resizeMultiGrid ( int  new_size)
finalprotectedvirtual

Reimplemented from amrex::MLLinOpT< MF >.

◆ restrictInteriorNodes()

void amrex::MLNodeLaplacian::restrictInteriorNodes ( int  camrlev,
MultiFab crhs,
MultiFab frhs 
) const

◆ restriction()

void amrex::MLNodeLaplacian::restriction ( int  amrlev,
int  cmglev,
MultiFab crse,
MultiFab fine 
) const
final

◆ setCoarseningStrategy()

void amrex::MLNodeLaplacian::setCoarseningStrategy ( CoarseningStrategy  cs)
inlinenoexcept

◆ setGaussSeidel()

void amrex::MLNodeLaplacian::setGaussSeidel ( bool  flag)
inlinenoexcept

◆ setHarmonicAverage()

void amrex::MLNodeLaplacian::setHarmonicAverage ( bool  flag)
inlinenoexcept

◆ setMapped()

void amrex::MLNodeLaplacian::setMapped ( bool  flag)
inlinenoexcept

◆ setNormalizationThreshold()

void amrex::MLNodeLaplacian::setNormalizationThreshold ( Real  t)
inlinenoexcept

◆ setRZCorrection()

void amrex::MLNodeLaplacian::setRZCorrection ( bool  rz)
inlinenoexcept

◆ setSigma()

void amrex::MLNodeLaplacian::setSigma ( int  amrlev,
const MultiFab a_sigma 
)

◆ unimposeNeumannBC()

void amrex::MLNodeLaplacian::unimposeNeumannBC ( int  amrlev,
MultiFab rhs 
) const
final

◆ updateVelocity()

void amrex::MLNodeLaplacian::updateVelocity ( const Vector< MultiFab * > &  vel,
const Vector< MultiFab const * > &  sol 
) const

Member Data Documentation

◆ m_const_sigma

Real amrex::MLNodeLaplacian::m_const_sigma = Real(0.0)
private

◆ m_is_rz

int amrex::MLNodeLaplacian::m_is_rz = 0
private

◆ m_normalization_threshold

Real amrex::MLNodeLaplacian::m_normalization_threshold = Real(1.e-8)
private

◆ m_nosigma_stencil

Vector<std::unique_ptr<MultiFab> > amrex::MLNodeLaplacian::m_nosigma_stencil
private

◆ m_s0_norm0

Vector<Vector<Real> > amrex::MLNodeLaplacian::m_s0_norm0
private

◆ m_sigma

Vector<Vector<Array<std::unique_ptr<MultiFab>,AMREX_SPACEDIM> > > amrex::MLNodeLaplacian::m_sigma
private

◆ m_stencil

Vector<Vector<std::unique_ptr<MultiFab> > > amrex::MLNodeLaplacian::m_stencil
private

◆ m_use_gauss_seidel

bool amrex::MLNodeLaplacian::m_use_gauss_seidel = true
private

◆ m_use_harmonic_average

bool amrex::MLNodeLaplacian::m_use_harmonic_average = false
private

◆ m_use_mapped

bool amrex::MLNodeLaplacian::m_use_mapped = false
private

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