1 #ifndef AMREX_MLNODETENSORLAPLACIAN_H_
2 #define AMREX_MLNODETENSORLAPLACIAN_H_
3 #include <AMReX_Config.H>
19 #if (AMREX_SPACEDIM == 2)
20 static constexpr
int nelems = 3;
49 [[nodiscard]] std::string
name ()
const override {
return std::string(
"MLNodeTensorLaplacian"); }
56 void reflux (
int crse_amrlev,
61 bool skip_fillboundary=
false) const final;
70 #if defined(AMREX_USE_HYPRE) && (AMREX_SPACEDIM > 1)
71 void fillIJMatrix (
MFIter const& mfi,
76 Real* mat)
const override;
78 void fillRHS (
MFIter const& mfi,
Array4< Real > fine
Definition: AMReX_InterpFaceRegister.cpp:90
Array4< Real const > crse
Definition: AMReX_InterpFaceRegister.cpp:92
HYPRE_Int Int
Definition: AMReX_HypreNodeLap.H:36
Definition: AMReX_MFIter.H:57
Definition: AMReX_MLNodeLinOp.H:16
Definition: AMReX_MLNodeTensorLaplacian.H:16
MLNodeTensorLaplacian(MLNodeTensorLaplacian &&)=delete
static constexpr int nelems
Definition: AMReX_MLNodeTensorLaplacian.H:22
std::string name() const override
Definition: AMReX_MLNodeTensorLaplacian.H:49
GpuArray< Real, nelems > scaledSigma(int amrlev, int mglev) const noexcept
Definition: AMReX_MLNodeTensorLaplacian.cpp:42
MLNodeTensorLaplacian(const MLNodeTensorLaplacian &)=delete
int m_redblack
Definition: AMReX_MLNodeTensorLaplacian.H:89
void define(const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info=LPInfo())
Definition: AMReX_MLNodeTensorLaplacian.cpp:64
MLNodeTensorLaplacian & operator=(const MLNodeTensorLaplacian &)=delete
void normalize(int amrlev, int mglev, MultiFab &mf) const final
Definition: AMReX_MLNodeTensorLaplacian.cpp:269
void Fapply(int amrlev, int mglev, MultiFab &out, const MultiFab &in) const final
Definition: AMReX_MLNodeTensorLaplacian.cpp:204
GpuArray< Real, nelems > m_sigma
Definition: AMReX_MLNodeTensorLaplacian.H:88
void interpolation(int amrlev, int fmglev, MultiFab &fine, const MultiFab &crse) const final
Definition: AMReX_MLNodeTensorLaplacian.cpp:129
void Fsmooth(int amrlev, int mglev, MultiFab &sol, const MultiFab &rhs) const final
Definition: AMReX_MLNodeTensorLaplacian.cpp:243
~MLNodeTensorLaplacian() override=default
void setSigma(Array< Real, nelems > const &a_sigma) noexcept
Definition: AMReX_MLNodeTensorLaplacian.cpp:17
void prepareForSolve() final
Definition: AMReX_MLNodeTensorLaplacian.cpp:194
MLNodeTensorLaplacian()=default
void averageDownSolutionRHS(int camrlev, MultiFab &crse_sol, MultiFab &crse_rhs, const MultiFab &fine_sol, const MultiFab &fine_rhs) final
Definition: AMReX_MLNodeTensorLaplacian.cpp:173
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
Definition: AMReX_MLNodeTensorLaplacian.cpp:186
void restriction(int amrlev, int cmglev, MultiFab &crse, MultiFab &fine) const final
Definition: AMReX_MLNodeTensorLaplacian.cpp:82
void fixUpResidualMask(int amrlev, iMultiFab &resmsk) final
Definition: AMReX_MLNodeTensorLaplacian.cpp:275
void setBeta(Array< Real, AMREX_SPACEDIM > const &a_beta) noexcept
Definition: AMReX_MLNodeTensorLaplacian.cpp:23
void smooth(int amrlev, int mglev, MultiFab &sol, const MultiFab &rhs, bool skip_fillboundary=false) const final
Definition: AMReX_MLNodeTensorLaplacian.cpp:227
A collection (stored as an array) of FArrayBox objects.
Definition: AMReX_MultiFab.H:38
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition: AMReX_Vector.H:27
Definition: AMReX_iMultiFab.H:32
Definition: AMReX_Amr.cpp:49
std::array< T, N > Array
Definition: AMReX_Array.H:24
Definition: AMReX_Array4.H:61
Definition: AMReX_MLLinOp.H:35