|
| | 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 | needsUpdate () const override |
| |
| virtual void | update () override |
| |
| 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 void | prepareForSolve () override |
| |
| virtual Real | xdoty (int amrlev, int mglev, const MultiFab &x, const MultiFab &y, bool local) const final override |
| |
| virtual void | Fapply (int amrlev, int mglev, MultiFab &out, const MultiFab &in) const =0 |
| |
| virtual void | Fsmooth (int amrlev, int mglev, MultiFab &sol, const MultiFab &rsh, int redblack) const =0 |
| |
| 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 =0 |
| |
| 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 |
| |
| virtual void | addInhomogNeumannFlux (int, const Array< MultiFab *, AMREX_SPACEDIM > &, MultiFab const &, bool) const |
| |
| | 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 | getNComp () const |
| |
| virtual int | getNGrow (int=0, int=0) const |
| |
| virtual void | normalize (int, int, MultiFab &) const |
| |
| virtual void | unimposeNeumannBC (int, Any &) const |
| |
| virtual void | applyInhomogNeumannTerm (int, Any &) const |
| |
| virtual void | applyOverset (int, Any &) const |
| |
| virtual void | scaleRHS (int, Any &) const |
| |
| virtual bool | isSingular (int) const |
| |
| virtual bool | isBottomSingular () const |
| |
| virtual std::unique_ptr< MLLinOp > | makeNLinOp (int) const |
| |
| virtual void | getFluxes (const Vector< Array< MultiFab *, AMREX_SPACEDIM > > &, const Vector< MultiFab * > &, Location) const |
| |
| virtual void | getFluxes (const Vector< MultiFab * > &, const Vector< MultiFab * > &) 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 |
| |