|
| | MLALaplacian () |
| |
| | MLALaplacian (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={}, const int a_ncomp=1) |
| |
| virtual | ~MLALaplacian () |
| |
| | MLALaplacian (const MLALaplacian &)=delete |
| |
| | MLALaplacian (MLALaplacian &&)=delete |
| |
| MLALaplacian & | operator= (const MLALaplacian &)=delete |
| |
| MLALaplacian & | operator= (MLALaplacian &&)=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 | setScalars (Real a, Real b) noexcept |
| |
| void | setACoeffs (int amrlev, const MultiFab &alpha) |
| |
| virtual int | getNComp () const override |
| |
| virtual bool | needsUpdate () const override |
| |
| virtual void | update () override |
| |
| 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, const int face_only=0) const final override |
| |
| virtual void | normalize (int marlve, int mglev, MultiFab &mf) const final override |
| |
| virtual Real | getAScalar () const final override |
| |
| virtual Real | getBScalar () const final override |
| |
| virtual MultiFab const * | getACoeffs (int amrlev, int mglev) const final override |
| |
| virtual Array< MultiFab const *, AMREX_SPACEDIM > | getBCoeffs (int, int) const final override |
| |
| virtual std::unique_ptr< MLLinOp > | makeNLinOp (int) const final override |
| |
| void | averageDownCoeffsSameAmrLevel (int amrlev, Vector< MultiFab > &a) |
| |
| void | averageDownCoeffs () |
| |
| void | averageDownCoeffsToCoarseAmrLevel (int flev) |
| |
| | MLCellABecLap () |
| |
| virtual | ~MLCellABecLap () |
| |
| | MLCellABecLap (const MLCellABecLap &)=delete |
| |
| | MLCellABecLap (MLCellABecLap &&)=delete |
| |
| MLCellABecLap & | operator= (const MLCellABecLap &)=delete |
| |
| MLCellABecLap & | operator= (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 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 |
| |
| | MLCellLinOp () |
| |
| virtual | ~MLCellLinOp () |
| |
| | MLCellLinOp (const MLCellLinOp &)=delete |
| |
| | MLCellLinOp (MLCellLinOp &&)=delete |
| |
| MLCellLinOp & | operator= (const MLCellLinOp &)=delete |
| |
| MLCellLinOp & | operator= (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 |
| |
| | MLLinOp () |
| |
| virtual | ~MLLinOp () |
| |
| | MLLinOp (const MLLinOp &)=delete |
| |
| | MLLinOp (MLLinOp &&)=delete |
| |
| MLLinOp & | operator= (const MLLinOp &)=delete |
| |
| MLLinOp & | operator= (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 | getNGrow (int=0, int=0) const |
| |
| virtual void | unimposeNeumannBC (int, Any &) const |
| |
| virtual void | scaleRHS (int, Any &) const |
| |
| virtual bool | supportNSolve () const |
| |
| virtual void | copyNSolveSolution (MultiFab &, MultiFab const &) 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 |
| |
|
| enum class | BCMode { Homogeneous
, Inhomogeneous
} |
| |
| enum class | StateMode { Solution
, Correction
} |
| |
| enum class | Location { FaceCenter
, FaceCentroid
, CellCenter
, CellCentroid
} |
| |
| using | BCType = LinOpBCType |
| |
| static void | Initialize () |
| |
| static void | Finalize () |
| |
| using | RealTuple = Array< Real, 2 *BL_SPACEDIM > |
| |
| using | BCTuple = Array< BoundCond, 2 *BL_SPACEDIM > |
| |
| virtual bool | supportInhomogNeumannBC () const noexcept override |
| |
| 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 Geometry & | Geom (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 > |
| 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< 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< YAFluxRegister > | m_fluxreg |
| |
| LPInfo | info |
| |
| int | verbose = 0 |
| |
| int | maxorder = 3 |
| |
| bool | enforceSingularSolvable = true |
| |
| int | m_num_amr_levels |
| |
| Vector< int > | m_amr_ref_ratio |
| |
| Vector< int > | m_num_mg_levels |
| |
| const MLLinOp * | 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< FArrayBox > > > > | 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 |
| |
| 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 MultiFab * | m_coarse_data_for_bc = nullptr |
| |
| static constexpr int | mg_coarsen_ratio = 2 |
| |
| static constexpr int | mg_box_min_width = 2 |
| |
| static constexpr int | mg_domain_min_width = 2 |
| |