|
| MLPoissonT ()=default |
|
| MLPoissonT (const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info=LPInfo(), const Vector< FabFactory< FAB > const * > &a_factory={}) |
|
| MLPoissonT (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< FAB > const * > &a_factory={}) |
|
| ~MLPoissonT () override |
|
| MLPoissonT (const MLPoissonT< MF > &)=delete |
|
| MLPoissonT (MLPoissonT< MF > &&)=delete |
|
MLPoissonT< MF > & | operator= (const MLPoissonT< MF > &)=delete |
|
MLPoissonT< MF > & | operator= (MLPoissonT< MF > &&)=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< FAB > 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< FAB > const * > &a_factory={}) |
|
void | prepareForSolve () final |
|
bool | isSingular (int amrlev) const final |
| Is it singular on given AMR level? More...
|
|
bool | isBottomSingular () const final |
| Is the bottom of MG singular? More...
|
|
void | Fapply (int amrlev, int mglev, MF &out, const MF &in) const final |
|
void | Fsmooth (int amrlev, int mglev, MF &sol, const MF &rhs, int redblack) const final |
|
void | FFlux (int amrlev, const MFIter &mfi, const Array< FAB *, AMREX_SPACEDIM > &flux, const FAB &sol, Location loc, int face_only=0) const final |
|
void | normalize (int amrlev, int mglev, MF &mf) const final |
| Divide mf by the diagonal component of the operator. Used by bicgstab. More...
|
|
RT | getAScalar () const final |
|
RT | getBScalar () const final |
|
MF const * | getACoeffs (int, int) const final |
|
Array< MF const *, AMREX_SPACEDIM > | getBCoeffs (int, int) const final |
|
std::unique_ptr< MLLinOpT< MF > > | makeNLinOp (int grid_size) const final |
|
bool | supportNSolve () const final |
|
void | copyNSolveSolution (MF &dst, MF const &src) const final |
|
void | get_dpdn_on_domain_faces (Array< MF *, AMREX_SPACEDIM > const &dpdn, MF const &phi) |
| Compute dphi/dn on domain faces after the solver has converged. More...
|
|
| MLCellABecLapT ()=default |
|
| ~MLCellABecLapT () override=default |
|
| MLCellABecLapT (const MLCellABecLapT< MF > &)=delete |
|
| MLCellABecLapT (MLCellABecLapT< MF > &&)=delete |
|
MLCellABecLapT< MF > & | operator= (const MLCellABecLapT< MF > &)=delete |
|
MLCellABecLapT< MF > & | operator= (MLCellABecLapT< MF > &&)=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< FAB > 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< FAB > const * > &a_factory={}) |
|
iMultiFab const * | getOversetMask (int amrlev, int mglev) const |
|
bool | needsUpdate () const override |
| Does it need update if it's reused? More...
|
|
void | update () override |
| Update for reuse. More...
|
|
void | setDirichletNodesToZero (int amrlev, int mglev, MF &mf) const override |
|
void | getFluxes (const Vector< Array< MF *, AMREX_SPACEDIM > > &a_flux, const Vector< MF * > &a_sol, Location a_loc) const final |
|
void | getFluxes (const Vector< MF * > &, const Vector< MF * > &) const final |
|
void | applyInhomogNeumannTerm (int amrlev, MF &rhs) const final |
| Extra terms introduced when we treat inhomogeneous Nuemann BC as homogeneous. More...
|
|
void | addInhomogNeumannFlux (int amrlev, const Array< MF *, AMREX_SPACEDIM > &grad, MF const &sol, bool mult_bcoef) const final |
|
void | applyOverset (int amrlev, MF &rhs) const override |
| for overset solver only More...
|
|
| MLCellLinOpT () |
|
| ~MLCellLinOpT () override=default |
|
| MLCellLinOpT (const MLCellLinOpT< MF > &)=delete |
|
| MLCellLinOpT (MLCellLinOpT< MF > &&)=delete |
|
MLCellLinOpT< MF > & | operator= (const MLCellLinOpT< MF > &)=delete |
|
MLCellLinOpT< MF > & | operator= (MLCellLinOpT< MF > &&)=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< FAB > const * > &a_factory={}) |
|
void | setLevelBC (int amrlev, const MF *levelbcdata, const MF *robinbc_a=nullptr, const MF *robinbc_b=nullptr, const MF *robinbc_f=nullptr) final |
| Set boundary conditions for given level. For cell-centered solves only. More...
|
|
bool | needsUpdate () const override |
| Does it need update if it's reused? More...
|
|
void | update () override |
| Update for reuse. More...
|
|
void | setGaussSeidel (bool flag) noexcept |
|
virtual bool | isCrossStencil () const |
|
virtual bool | isTensorOp () const |
|
void | updateSolBC (int amrlev, const MF &crse_bcdata) const |
|
void | updateCorBC (int amrlev, const MF &crse_bcdata) const |
|
virtual void | applyBC (int amrlev, int mglev, MF &in, BCMode bc_mode, StateMode s_mode, const MLMGBndryT< MF > *bndry=nullptr, bool skip_fillboundary=false) const |
|
BoxArray | makeNGrids (int grid_size) const |
|
void | restriction (int, int, MF &crse, MF &fine) const override |
| Restriction onto coarse MG level. More...
|
|
void | interpolation (int amrlev, int fmglev, MF &fine, const MF &crse) const override |
| Add interpolated coarse MG level data to fine MG level data. More...
|
|
void | interpAssign (int amrlev, int fmglev, MF &fine, MF &crse) const override |
| Overwrite fine MG level data with interpolated coarse data. More...
|
|
void | interpolationAmr (int famrlev, MF &fine, const MF &crse, IntVect const &nghost) const override |
| Interpolation between AMR levels. More...
|
|
void | averageDownSolutionRHS (int camrlev, MF &crse_sol, MF &crse_rhs, const MF &fine_sol, const MF &fine_rhs) override |
| Average-down data from fine AMR level to coarse AMR level. More...
|
|
void | apply (int amrlev, int mglev, MF &out, MF &in, BCMode bc_mode, StateMode s_mode, const MLMGBndryT< MF > *bndry=nullptr) const override |
| Apply the linear operator, out = L(in) More...
|
|
void | smooth (int amrlev, int mglev, MF &sol, const MF &rhs, bool skip_fillboundary=false) const final |
| Smooth. More...
|
|
void | solutionResidual (int amrlev, MF &resid, MF &x, const MF &b, const MF *crse_bcdata=nullptr) override |
| Compute residual for solution. More...
|
|
void | prepareForFluxes (int amrlev, const MF *crse_bcdata=nullptr) override |
|
void | correctionResidual (int amrlev, int mglev, MF &resid, MF &x, const MF &b, BCMode bc_mode, const MF *crse_bcdata=nullptr) final |
| Compute residual for the residual-correction form, resid = b - L(x) More...
|
|
void | reflux (int crse_amrlev, MF &res, const MF &crse_sol, const MF &, MF &, MF &fine_sol, const MF &) const final |
| Reflux at AMR coarse/fine boundary. More...
|
|
void | compFlux (int amrlev, const Array< MF *, AMREX_SPACEDIM > &fluxes, MF &sol, Location loc) const override |
| Compute fluxes. More...
|
|
void | compGrad (int amrlev, const Array< MF *, AMREX_SPACEDIM > &grad, MF &sol, Location loc) const override |
| Compute gradients of the solution. More...
|
|
void | applyMetricTerm (int amrlev, int mglev, MF &rhs) const final |
| apply metric terms if there are any More...
|
|
void | unapplyMetricTerm (int amrlev, int mglev, MF &rhs) const final |
| unapply metric terms if there are any More...
|
|
Vector< RT > | getSolvabilityOffset (int amrlev, int mglev, MF const &rhs) const override |
| get offset for fixing solvability More...
|
|
void | fixSolvabilityByOffset (int amrlev, int mglev, MF &rhs, Vector< RT > const &offset) const override |
|
RT | xdoty (int amrlev, int mglev, const MF &x, const MF &y, bool local) const final |
| x dot y, used by the bottom solver More...
|
|
RT | normInf (int amrlev, MF const &mf, bool local) const override |
|
void | averageDownAndSync (Vector< MF > &sol) const override |
|
void | avgDownResAmr (int clev, MF &cres, MF const &fres) const override |
|
| 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) |
|
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. 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 |
|
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 BottomSolver | getDefaultBottomSolver () const |
|
virtual int | getNComp () const |
| Return number of components. More...
|
|
virtual int | getNGrow (int=0, int=0) const |
|
virtual void | unimposeNeumannBC (int, MF &) const |
| This is needed for our nodal projection solver. More...
|
|
virtual void | scaleRHS (int, MF &) const |
| scale RHS to fix solvability More...
|
|
virtual void | fixSolvabilityByOffset (int, int, MF &, Vector< RT > const &) const |
| fix solvability by subtracting offset from RHS More...
|
|
virtual void | prepareForGMRES () |
|
virtual void | postSolve (Vector< MF > &) 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 Geometry & | Geom (int amr_lev, int mglev=0) const noexcept |
|
|
Vector< std::unique_ptr< MF > > | m_robin_bcval |
|
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 |
|
using | RealTuple = Array< RT, 2 *BL_SPACEDIM > |
|
using | BCTuple = Array< BoundCond, 2 *BL_SPACEDIM > |
|
bool | supportInhomogNeumannBC () const noexcept override |
|
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 |
|
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 |
|
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 > |
T | get_d0 (T const &dx, T const &dy, T const &) const noexcept |
|
template<typename T > |
T | get_d1 (T const &, T const &dy, T const &dz) const noexcept |
|
Vector< Vector< std::unique_ptr< iMultiFab > > > | m_overset_mask |
|
LPInfo | m_lpinfo_arg |
|
bool | m_has_metric_term = false |
|
Vector< std::unique_ptr< MLMGBndryT< MF > > > | m_bndry_sol |
|
Vector< std::unique_ptr< BndryRegisterT< MF > > > | m_crse_sol_br |
|
Vector< std::unique_ptr< MLMGBndryT< MF > > > | m_bndry_cor |
|
Vector< std::unique_ptr< BndryRegisterT< MF > > > | m_crse_cor_br |
|
Vector< Vector< std::unique_ptr< BndryCondLoc > > > | m_bcondloc |
|
Vector< Vector< BndryRegisterT< MF > > > | m_undrrelxr |
|
Vector< Vector< Array< MultiMask, 2 *AMREX_SPACEDIM > > > | m_maskvals |
|
Vector< std::unique_ptr< iMultiFab > > | m_norm_fine_mask |
|
Vector< YAFluxRegisterT< MF > > | m_fluxreg |
|
bool | m_use_gauss_seidel = true |
|
int | mg_domain_min_width = 2 |
|
LPInfo | info |
|
int | verbose = 0 |
|
int | maxorder = 3 |
|
bool | enforceSingularSolvable = true |
|
int | m_num_amr_levels = 0 |
|
Vector< int > | m_amr_ref_ratio |
|
Vector< int > | m_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< IntVect > | mg_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< int > | m_domain_covered |
|
MPI_Comm | m_default_comm = MPI_COMM_NULL |
|
MPI_Comm | m_bottom_comm = MPI_COMM_NULL |
|
std::unique_ptr< CommContainer > | m_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 constexpr int | mg_coarsen_ratio = 2 |
|
static constexpr int | mg_box_min_width = 2 |
|