|
| | MLEBTensorOp () |
| | Construct an empty EB tensor operator; call define() before using.
|
| |
| | MLEBTensorOp (const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info, const Vector< EBFArrayBoxFactory const * > &a_factory) |
| | Convenience constructor that forwards to define().
|
| |
| | ~MLEBTensorOp () override |
| |
| | MLEBTensorOp (const MLEBTensorOp &)=delete |
| |
| | MLEBTensorOp (MLEBTensorOp &&)=delete |
| |
| MLEBTensorOp & | operator= (const MLEBTensorOp &)=delete |
| |
| MLEBTensorOp & | operator= (MLEBTensorOp &&)=delete |
| |
| void | define (const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info, const Vector< EBFArrayBoxFactory const * > &a_factory) |
| | Define the AMR hierarchy using EB-aware factories.
|
| |
| void | setShearViscosity (int amrlev, const Array< MultiFab const *, 3 > &eta, Location a_beta_loc) |
| | Provide shear viscosity eta as face-centered MultiFabs.
|
| |
| void | setShearViscosity (int amrlev, Real eta) |
| | Populate eta with a scalar value on AMR level amrlev.
|
| |
| void | setBulkViscosity (int amrlev, const Array< MultiFab const *, 3 > &kappa) |
| | Provide bulk viscosity kappa as face-centered MultiFabs.
|
| |
| void | setBulkViscosity (int amrlev, Real kappa) |
| | Populate kappa with a scalar value.
|
| |
| void | setEBShearViscosity (int amrlev, MultiFab const &eta) |
| | Provide EB-face shear viscosity.
|
| |
| void | setEBShearViscosity (int amrlev, Real eta) |
| | Set EB shear viscosity to a constant scalar.
|
| |
| void | setEBShearViscosityWithInflow (int amrlev, MultiFab const &eta, MultiFab const &eb_vel) |
| | Provide EB shear viscosity plus inflow velocity corrections.
|
| |
| void | setEBBulkViscosity (int amrlev, MultiFab const &kappa) |
| | Provide EB bulk viscosity from a MultiFab.
|
| |
| void | setEBBulkViscosity (int amrlev, Real kappa) |
| | Set EB bulk viscosity to a constant value.
|
| |
| int | getNComp () const final |
| | Return number of components.
|
| |
| bool | isCrossStencil () const final |
| | EB discretization uses a non-cross stencil.
|
| |
| bool | isTensorOp () const final |
| | Whether this operator is a tensor solve.
|
| |
| bool | needsUpdate () const final |
| | True if coefficients/viscosities must be refreshed before apply().
|
| |
| void | update () final |
| | Refresh coefficient averages (not yet implemented).
|
| |
| void | prepareForSolve () final |
| | Prepare shear/bulk coefficient caches and BC data before solving.
|
| |
| bool | isSingular (int) const final |
| | True if AMR level amrlev is singular.
|
| |
| bool | isBottomSingular () const final |
| | True if the bottom level is singular.
|
| |
| void | apply (int amrlev, int mglev, MultiFab &out, MultiFab &in, BCMode bc_mode, StateMode s_mode, const MLMGBndry *bndry=nullptr) const final |
| | Apply the EB tensor operator at (amrlev,mglev).
|
| |
| void | compFlux (int amrlev, const Array< MultiFab *, 3 > &fluxes, MultiFab &sol, Location loc) const override |
| | Assemble viscous fluxes on AMR level amrlev.
|
| |
| void | compVelGrad (int amrlev, const Array< MultiFab *, 3 > &grads, MultiFab &sol, Location loc) const |
| | Compute velocity gradients at the requested location.
|
| |
| void | setBCoeffs (int amrlev, const Array< MultiFab const *, 3 > &beta, Location a_beta_loc)=delete |
| |
| void | setEBDirichlet (int amrlev, const MultiFab &phi, const MultiFab &beta)=delete |
| |
| void | setEBHomogDirichlet (int amrlev, const MultiFab &beta)=delete |
| |
| void | applyBCTensor (int amrlev, int mglev, MultiFab &vel, BCMode bc_mode, StateMode s_mode, const MLMGBndry *bndry) const |
| | Apply tensor boundary conditions prior to an operator call.
|
| |
| void | compCrossTerms (int amrlev, int mglev, MultiFab const &mf, const MLMGBndry *bndry) const |
| | Compute cross-derivative stress terms for cached BC data.
|
| |
| | MLEBABecLap ()=default |
| | Construct an empty operator; call define() before use.
|
| |
| | MLEBABecLap (const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info, const Vector< EBFArrayBoxFactory const * > &a_factory, int a_ncomp=1) |
| | Convenience constructor that forwards to define().
|
| |
| | MLEBABecLap (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, const Vector< EBFArrayBoxFactory const * > &a_factory, int a_ncomp=1) |
| |
| | ~MLEBABecLap () override |
| |
| | MLEBABecLap (const MLEBABecLap &)=delete |
| |
| | MLEBABecLap (MLEBABecLap &&)=delete |
| |
| MLEBABecLap & | operator= (const MLEBABecLap &)=delete |
| |
| MLEBABecLap & | operator= (MLEBABecLap &&)=delete |
| |
| void | define (const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info, const Vector< EBFArrayBoxFactory const * > &a_factory, int a_ncomp=1) |
| | Bind the EB operator to the AMR hierarchy.
|
| |
| 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, const Vector< EBFArrayBoxFactory const * > &a_factory, int a_ncomp=1) |
| |
| void | setPhiOnCentroid () |
| | Interprets phi on EB centroids instead of cell centers when set.
|
| |
| void | setScalars (Real a, Real b) |
| | Set constant scalar coefficients (see MLCellABecLap semantics).
|
| |
| void | setACoeffs (int amrlev, const MultiFab &alpha) |
| | Provide per-cell a coefficients for AMR level amrlev.
|
| |
| void | setACoeffs (int amrlev, Real alpha) |
| | Provide a constant a coefficient.
|
| |
| void | setBCoeffs (int amrlev, const Array< MultiFab const *, 3 > &beta, Location a_beta_loc) |
| | Provide spatially varying b coefficients and their location.
|
| |
| void | setBCoeffs (int amrlev, const Array< MultiFab const *, 3 > &beta) |
| |
| void | setBCoeffs (int amrlev, Real beta) |
| | Provide constant scalar b coefficients.
|
| |
| void | setBCoeffs (int amrlev, Vector< Real > const &beta) |
| | Provide component-specific constant b coefficients.
|
| |
| void | setEBDirichlet (int amrlev, const MultiFab &phi, const MultiFab &beta) |
| | Specify Dirichlet values on EB faces using phi.
|
| |
| void | setEBDirichlet (int amrlev, const MultiFab &phi, Real beta) |
| | Specify Dirichlet values on EB faces.
|
| |
| void | setEBDirichlet (int amrlev, const MultiFab &phi, Vector< Real > const &beta) |
| | Specify Dirichlet values on EB faces.
|
| |
| void | setEBHomogDirichlet (int amrlev, const MultiFab &beta) |
| | Mark EB faces as homogeneous Dirichlet (phi=0) with optional coefficients.
|
| |
| void | setEBHomogDirichlet (int amrlev, Real beta) |
| | Mark EB faces as homogeneous Dirichlet (phi=0).
|
| |
| void | setEBHomogDirichlet (int amrlev, Vector< Real > const &beta) |
| | Mark EB faces as homogeneous Dirichlet (phi=0).
|
| |
| std::unique_ptr< FabFactory< FArrayBox > > | makeFactory (int amrlev, int mglev) const final |
| | EB-aware factory used when the solver needs auxiliary storage on (amrlev,mglev).
|
| |
| void | applyBC (int amrlev, int mglev, MultiFab &in, BCMode bc_mode, StateMode s_mode, const MLMGBndry *bndry=nullptr, bool skip_fillboundary=false) const final |
| | Apply physical BCs to in on (amrlev,mglev) using the supplied BC metadata.
|
| |
| void | apply (int amrlev, int mglev, MultiFab &out, MultiFab &in, BCMode bc_mode, StateMode s_mode, const MLMGBndry *bndry=nullptr) const override |
| | Apply the discrete operator to in on (amrlev,mglev) and store the result in out.
|
| |
| void | compGrad (int amrlev, const Array< MultiFab *, 3 > &grad, MultiFab &sol, Location loc) const final |
| | Compute gradients from the solution sol on level amrlev at location loc.
|
| |
| void | Fapply (int amrlev, int mglev, MultiFab &out, const MultiFab &in) const final |
| | Apply the operator on (amrlev,mglev) and write to out.
|
| |
| void | Fsmooth (int amrlev, int mglev, MultiFab &sol, const MultiFab &rhs, int redblack) const final |
| | Execute a smoothing sweep on (amrlev,mglev). redblack selects the red (0) or black (1) half of the grid.
|
| |
| void | FFlux (int amrlev, const MFIter &mfi, const Array< FArrayBox *, 3 > &flux, const FArrayBox &sol, Location loc, int face_only=0) const final |
| | Compute EB-aware fluxes for sol on the tilebox described by mfi, storing to flux at loc (respecting face_only).
|
| |
| void | normalize (int amrlev, int mglev, MultiFab &mf) const final |
| | Divide mf by the diagonal of the operator (used by CG-family bottom solvers).
|
| |
| Real | getAScalar () const final |
| | Scalar applied to the zeroth-order term.
|
| |
| Real | getBScalar () const final |
| | Scalar applied to the diffusion term.
|
| |
| MultiFab const * | getACoeffs (int amrlev, int mglev) const final |
| | Access the a coefficient MultiFab.
|
| |
| Array< MultiFab const *, 3 > | getBCoeffs (int amrlev, int mglev) const final |
| | Access the b coefficients for (amrlev,mglev).
|
| |
| std::unique_ptr< MLLinOp > | makeNLinOp (int) const final |
| | Create the NSolve counterpart of this operator with the requested grid size.
|
| |
| void | averageDownCoeffsSameAmrLevel (int amrlev, Vector< MultiFab > &a, Vector< Array< MultiFab, 3 > > &b, const Vector< MultiFab * > &b_eb) |
| |
| void | restriction (int amrlev, int cmglev, MultiFab &crse, MultiFab &fine) const final |
| | Restrict fine-grid data onto coarse storage.
|
| |
| void | interpolation (int amrlev, int fmglev, MultiFab &fine, const MultiFab &crse) const final |
| | Add the prolongation of coarse data onto the fine grid (fine += prolong(crse)).
|
| |
| void | averageDownSolutionRHS (int camrlev, MultiFab &crse_sol, MultiFab &crse_rhs, const MultiFab &fine_sol, const MultiFab &fine_rhs) final |
| | Average solution/RHS from fine AMR levels into (camrlev) storage.
|
| |
| void | getEBFluxes (const Vector< MultiFab * > &a_flux, const Vector< MultiFab * > &a_sol) const override |
| | Extract EB face fluxes.
|
| |
| void | applyRobinBCTermsCoeffs () |
| | Apply Robin BC terms to the stored coefficients when requested.
|
| |
| | 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={}) |
| | Describe the AMR hierarchy when overset masks are not required.
|
| |
| 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={}) |
| | Describe the AMR hierarchy when overset masks participate.
|
| |
| iMultiFab const * | getOversetMask (int amrlev, int mglev) const |
| | Overset mask for (amrlev,mglev); returns nullptr when not defined.
|
| |
| void | setDirichletNodesToZero (int amrlev, int mglev, MF &mf) const override |
| | Zero out Dirichlet nodes on (amrlev,mglev) so that GMRES can treat them as known.
|
| |
| void | getFluxes (const Vector< Array< MF *, 3 > > &a_flux, const Vector< MF * > &a_sol, Location a_loc) const final |
| | Fill per-face fluxes using the supplied solution hierarchy.
|
| |
| void | getFluxes (const Vector< MF * > &a_flux, const Vector< MF * > &a_sol) const final |
| | Guard overload that aborts if called (cell-centered flux extraction requires per-direction face arrays).
|
| |
| void | applyInhomogNeumannTerm (int amrlev, MF &rhs) const final |
| | Apply stored Neumann data to the RHS rhs on AMR level amrlev.
|
| |
| void | addInhomogNeumannFlux (int amrlev, const Array< MF *, 3 > &grad, MF const &sol, bool mult_bcoef) const final |
| | Add inhomogeneous Neumann/Robin flux contributions into grad from sol (include b when mult_bcoef is true).
|
| |
| void | applyOverset (int amrlev, MF &rhs) const override |
| | Zero RHS entries in rhs that are covered by overset masks on level amrlev.
|
| |
| | 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={}) |
| | Bind the operator to an AMR hierarchy.
|
| |
| void | setLevelBC (int amrlev, const MF *levelbcdata, const MF *robinbc_a=nullptr, const MF *robinbc_b=nullptr, const MF *robinbc_f=nullptr) final |
| | Provide per-level inhomogeneous boundary data.
|
| |
template<MultiFabLike AMF>
requires (!std::same_as<MF,AMF>) |
| void | setLevelBC (int amrlev, const AMF *levelbcdata, const AMF *robinbc_a=nullptr, const AMF *robinbc_b=nullptr, const AMF *robinbc_f=nullptr) |
| |
| void | setGaussSeidel (bool flag) noexcept |
| | Toggle Gauss–Seidel smoothing in place of Jacobi relaxation.
|
| |
| void | updateSolBC (int amrlev, const MF &crse_bcdata) const |
| | Refresh stored solution BC data from coarse inputs.
|
| |
| void | updateCorBC (int amrlev, const MF &crse_bcdata) const |
| | Refresh stored correction BC data from coarse inputs.
|
| |
| 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 |
| | Apply physical BCs (optionally skipping FillBoundary).
|
| |
| BoxArray | makeNGrids (int grid_size) const |
| | Helper that builds a BoxArray for NSolve with boxes no larger than the requested grid_size.
|
| |
| void | restriction (int amrlev, int cmglev, MF &crse, MF &fine) const override |
| | Restrict a fine-grid field onto its coarse counterpart.
|
| |
| void | interpolation (int amrlev, int fmglev, MF &fine, const MF &crse) const override |
| | Add the prolongation of coarse data onto the fine grid (fine += prolong(crse)).
|
| |
| void | interpAssign (int amrlev, int fmglev, MF &fine, MF &crse) const override |
| | Overwrite fine data with the prolongation of coarse data (fine = prolong(crse)).
|
| |
| void | interpolationAmr (int famrlev, MF &fine, const MF &crse, IntVect const &nghost) const override |
| | Prolong AMR-level data during FMG initialization.
|
| |
| void | averageDownSolutionRHS (int camrlev, MF &crse_sol, MF &crse_rhs, const MF &fine_sol, const MF &fine_rhs) override |
| | Average fine solution/RHS onto the next coarser AMR level.
|
| |
| 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 with boundary conditions.
|
| |
| void | smooth (int amrlev, int mglev, MF &sol, const MF &rhs, bool skip_fillboundary, int niter) const final |
| | Perform niter smoothing iterations on the supplied residual equation.
|
| |
| void | solutionResidual (int amrlev, MF &resid, MF &x, const MF &b, const MF *crse_bcdata=nullptr) override |
| | Compute the residual resid = b - A(x) using solution boundary data.
|
| |
| void | prepareForFluxes (int amrlev, const MF *crse_bcdata=nullptr) override |
| | Ensure BC caches are ready for flux computations (e.g., getFluxes).
|
| |
| void | correctionResidual (int amrlev, int mglev, MF &resid, MF &x, const MF &b, BCMode bc_mode, const MF *crse_bcdata=nullptr) final |
| | Compute the correction residual with optional coarse data.
|
| |
| void | reflux (int crse_amrlev, MF &res, const MF &crse_sol, const MF &, MF &, MF &fine_sol, const MF &) const final |
| | Reflux fine-level fluxes into the coarse residual.
|
| |
| void | compFlux (int amrlev, const Array< MF *, 3 > &fluxes, MF &sol, Location loc) const override |
| | Compute face-centered fluxes from the supplied solution.
|
| |
| void | compGrad (int amrlev, const Array< MF *, 3 > &grad, MF &sol, Location loc) const override |
| | Compute directional gradients of the solution.
|
| |
| void | applyMetricTerm (int amrlev, int mglev, MF &rhs) const final |
| | Multiply the RHS by metric terms appropriate for curvilinear coordinates.
|
| |
| void | unapplyMetricTerm (int amrlev, int mglev, MF &rhs) const final |
| | Remove metric scaling previously applied to the RHS.
|
| |
| Vector< RT > | getSolvabilityOffset (int amrlev, int mglev, MF const &rhs) const override |
| | Compute the average offset needed to enforce solvability constraints.
|
| |
| void | fixSolvabilityByOffset (int amrlev, int mglev, MF &rhs, Vector< RT > const &offset) const override |
| | Apply solvability offsets to the RHS (subtracting the average).
|
| |
| RT | xdoty (int amrlev, int mglev, const MF &x, const MF &y, bool local) const final |
| | Dot product helper.
|
| |
| RT | dotProductPrecond (Vector< MF const * > const &x, Vector< MF const * > const &y) const final |
| | Dot product over the composite AMR hierarchy, excluding cells covered by finer levels (used when the operator is a preconditioner).
|
| |
| RT | norm2Precond (Vector< MF const * > const &x) const final |
| | L2 norm over the composite AMR hierarchy, excluding cells covered by finer levels (used when the operator is a preconditioner).
|
| |
| virtual void | Fapply (int amrlev, int mglev, MF &out, const MF &in) const =0 |
| |
| virtual void | Fsmooth (int amrlev, int mglev, MF &sol, const MF &rhs, int redblack) const =0 |
| |
| virtual void | FFlux (int amrlev, const MFIter &mfi, const Array< FAB *, 3 > &flux, const FAB &sol, Location loc, int face_only=0) const =0 |
| |
| RT | normInf (int amrlev, MF const &mf, bool local) const override |
| | Infinity norm helper used by solvers and diagnostics.
|
| |
| void | averageDownAndSync (Vector< MF > &sol) const override |
| | Average the solution hierarchy down (fine-to-coarse) and sync.
|
| |
| void | avgDownResAmr (int clev, MF &cres, MF const &fres) const override |
| | Average a residual from a fine AMR level to its coarse parent.
|
| |
| void | beginPrecondBC () override |
| | Called when the operator starts being used as a preconditioner.
|
| |
| void | endPrecondBC () override |
| | Called when the operator stops being used as a preconditioner.
|
| |
| void | setInterpBndryHalfWidth (int w) |
| | Control how many cells the interpolation boundary stencil spans.
|
| |
| | 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) |
| | Initialize the operator hierarchy on a set of AMR levels.
|
| |
| virtual std::string | name () const |
| |
| void | setDomainBC (const Array< BCType, 3 > &lobc, const Array< BCType, 3 > &hibc) noexcept |
| | Boundary of the whole domain.
|
| |
| void | setDomainBC (const Vector< Array< BCType, 3 > > &lobc, const Vector< Array< BCType, 3 > > &hibc) |
| | Boundary of the whole domain.
|
| |
| void | setDomainBCLoc (const Array< Real, 3 > &lo_bcloc, const Array< Real, 3 > &hi_bcloc) noexcept |
| | Set location offsets for the physical domain boundaries.
|
| |
| bool | needsCoarseDataForBC () const noexcept |
| | Needs coarse data for bc?
|
| |
| void | setCoarseFineBC (const MF *crse, int crse_ratio, LinOpBCType bc_type=LinOpBCType::Dirichlet) noexcept |
| | Set coarse/fine boundary conditions. For cell-centered solves only.
|
| |
| void | setCoarseFineBC (const MF *crse, IntVect const &crse_ratio, LinOpBCType bc_type=LinOpBCType::Dirichlet) noexcept |
| |
template<typename AMF >
requires (!std::same_as<MF,AMF>) |
| void | setCoarseFineBC (const AMF *crse, int crse_ratio, LinOpBCType bc_type=LinOpBCType::Dirichlet) noexcept |
| |
template<typename AMF >
requires (!std::same_as<MF,AMF>) |
| void | setCoarseFineBC (const AMF *crse, IntVect const &crse_ratio, LinOpBCType bc_type=LinOpBCType::Dirichlet) noexcept |
| |
template<MultiFabLike AMF>
requires (!std::same_as<MF,AMF>) |
| 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.
|
| |
| void | setMaxOrder (int o) noexcept |
| | Set order of interpolation at coarse/fine boundary.
|
| |
| int | getMaxOrder () const noexcept |
| | Get order of interpolation at coarse/fine boundary.
|
| |
| void | setEnforceSingularSolvable (bool o) noexcept |
| | Control whether the solver should try to make singular problems solvable.
|
| |
| bool | getEnforceSingularSolvable () const noexcept |
| |
| virtual BottomSolver | getDefaultBottomSolver () const |
| |
| virtual int | getNGrow (int=0, int=0) const |
| |
| virtual void | normalize (int amrlev, int mglev, MF &mf) const |
| | Divide mf by the diagonal component of the operator. Used by the bottom solvers.
|
| |
| virtual void | unimposeNeumannBC (int amrlev, MF &rhs) const |
| | Undo Neumann contributions stored on the RHS.
|
| |
| virtual bool | scaleRHS (int amrlev, MF *rhs) const |
| | Optionally scale the RHS to fix solvability.
|
| |
| virtual void | preparePrecond () |
| | Prepare auxiliary data used when the operator acts as a preconditioner.
|
| |
| virtual void | getEBFluxes (const Vector< MF * > &a_flux, const Vector< MF * > &a_sol) const |
| | Extract embedded-boundary fluxes.
|
| |
| virtual bool | supportNSolve () const |
| | Whether this operator supports NSolve.
|
| |
| virtual void | copyNSolveSolution (MF &dst, MF const &src) const |
| | Copy an NSolve solution from src to dst.
|
| |
| virtual void | postSolve (Vector< MF * > const &sol) const |
| | Optional hook invoked after the main solve completes.
|
| |
| virtual void | avgDownResMG (int clev, MF &cres, MF const &fres) const |
| | Average residuals from fine to coarse MG levels (FMG helper).
|
| |
| bool | isMFIterSafe (int amrlev, int mglev1, int mglev2) const |
| | Check whether mixing MFIter loops for different MG levels is safe.
|
| |
| int | NAMRLevels () const noexcept |
| | Return the number of AMR levels.
|
| |
| int | NMGLevels (int amrlev) const noexcept |
| | Return the number of MG levels at given AMR level.
|
| |
| const Geometry & | Geom (int amr_lev, int mglev=0) const noexcept |
| | Geometry accessor for (amr_lev,mglev).
|
| |