1#ifndef AMREX_HYPRE_ML_ABECLAP_H_
2#define AMREX_HYPRE_ML_ABECLAP_H_
3#include <AMReX_Config.H>
11#include <HYPRE_sstruct_ls.h>
36 std::string a_parmparse_prefix =
"hypre_mlabeclap");
44 void setup (Real a_ascalar, Real a_bscalar,
50 std::pair<MultiFab const*, IntVect>
const& a_coarse_bc = {
nullptr,
IntVect(0)});
52 void solve (Vector<MultiFab*>
const& a_sol, Vector<MultiFab const*>
const& a_rhs,
53 Real a_reltol, Real a_abstol);
59 void commBCoefs (
int flev, Array<MultiFab const*,AMREX_SPACEDIM>
const& a_bcoefs);
60 void commBCoefs_local (
int flev, Array<MultiFab const*,AMREX_SPACEDIM>
const& a_bcoefs,
61 Vector<FabArrayBase::CopyComTag>
const& tags);
int MPI_Comm
Definition AMReX_ccse-mpi.H:47
static constexpr int MPI_COMM_NULL
Definition AMReX_ccse-mpi.H:55
Definition AMReX_HypreMLABecLap.H:25
Vector< LayoutData< int > > m_c2f_total_to
Definition AMReX_HypreMLABecLap.H:100
void addNonStencilEntriesToGraph()
Definition AMReX_HypreMLABecLap.cpp:200
void setup(Real a_ascalar, Real a_bscalar, Vector< MultiFab const * > const &a_acoefs, Vector< Array< MultiFab const *, AMREX_SPACEDIM > > const &a_bcoefs, Array< LinOpBCType, AMREX_SPACEDIM > const &a_lobc, Array< LinOpBCType, AMREX_SPACEDIM > const &a_hibc, Vector< MultiFab const * > const &a_levelbcdata, std::pair< MultiFab const *, IntVect > const &a_coarse_bc={nullptr, IntVect(0)})
Definition AMReX_HypreMLABecLap.cpp:487
Vector< std::unique_ptr< BndryRegister > > m_bndry_rhs
Definition AMReX_HypreMLABecLap.H:90
Array< LinOpBCType, AMREX_SPACEDIM > m_hibc
Definition AMReX_HypreMLABecLap.H:85
HYPRE_SStructStencil m_ss_stencil
Definition AMReX_HypreMLABecLap.H:121
void solve(Vector< MultiFab * > const &a_sol, Vector< MultiFab const * > const &a_rhs, Real a_reltol, Real a_abstol)
Definition AMReX_HypreMLABecLap.cpp:907
void setMaxIter(int v)
Definition AMReX_HypreMLABecLap.H:41
HYPRE_SStructGraph m_ss_graph
Definition AMReX_HypreMLABecLap.H:122
HypreMLABecLap(HypreMLABecLap const &)=delete
Vector< iMultiFab > m_c2f_offset_from
Definition AMReX_HypreMLABecLap.H:96
HYPRE_Solver m_solver
Definition AMReX_HypreMLABecLap.H:129
void commBCoefs_local(int flev, Array< MultiFab const *, AMREX_SPACEDIM > const &a_bcoefs, Vector< FabArrayBase::CopyComTag > const &tags)
Definition AMReX_HypreMLABecLap.cpp:1440
Vector< DistributionMapping > m_dmap
Definition AMReX_HypreMLABecLap.H:73
Vector< HostVector< Real > > m_f2c_values
Definition AMReX_HypreMLABecLap.H:118
Real m_ascalar
Definition AMReX_HypreMLABecLap.H:80
void setVerbose(int v)
Definition AMReX_HypreMLABecLap.H:40
HYPRE_Int m_hypre_object_type
Definition AMReX_HypreMLABecLap.H:132
Vector< iMultiFab > m_c2f_offset_to
Definition AMReX_HypreMLABecLap.H:99
std::string m_parmparse_prefix
Definition AMReX_HypreMLABecLap.H:74
HYPRE_SStructSolver m_ss_solver
Definition AMReX_HypreMLABecLap.H:123
~HypreMLABecLap()
Definition AMReX_HypreMLABecLap.cpp:167
Vector< Array< iMultiFab, AMREX_SPACEDIM > > m_offset_cf_bcoefs
Definition AMReX_HypreMLABecLap.H:103
Vector< std::unique_ptr< MLMGBndry > > m_bndry
Definition AMReX_HypreMLABecLap.H:89
Vector< IntVect > m_ref_ratio
Definition AMReX_HypreMLABecLap.H:78
HYPRE_SStructGrid m_ss_grid
Definition AMReX_HypreMLABecLap.H:120
Vector< iMultiFab > m_crse_masks
Definition AMReX_HypreMLABecLap.H:92
bool m_is_singular
Definition AMReX_HypreMLABecLap.H:69
int m_nlevels
Definition AMReX_HypreMLABecLap.H:75
Vector< HostVector< IntVect > > m_f2c_cell
Definition AMReX_HypreMLABecLap.H:115
HYPRE_SStructSolver m_ss_precond
Definition AMReX_HypreMLABecLap.H:124
Vector< LayoutData< int > > m_c2f_total_from
Definition AMReX_HypreMLABecLap.H:97
Vector< HostVector< std::size_t > > m_f2c_offset
Definition AMReX_HypreMLABecLap.H:117
void setIsSingular(bool v)
Definition AMReX_HypreMLABecLap.H:42
int m_verbose
Definition AMReX_HypreMLABecLap.H:67
Real m_bscalar
Definition AMReX_HypreMLABecLap.H:81
void commBCoefs(int flev, Array< MultiFab const *, AMREX_SPACEDIM > const &a_bcoefs)
Definition AMReX_HypreMLABecLap.cpp:1127
Vector< Geometry > m_geom
Definition AMReX_HypreMLABecLap.H:71
MPI_Comm m_comm
Definition AMReX_HypreMLABecLap.H:76
Vector< HostVector< int > > m_f2c_bno
Definition AMReX_HypreMLABecLap.H:114
Vector< Vector< HYPRE_Int > > m_f2c_nentries
Definition AMReX_HypreMLABecLap.H:116
HYPRE_SStructVector m_ss_x
Definition AMReX_HypreMLABecLap.H:126
HypreMLABecLap(HypreMLABecLap &&)=delete
Vector< Array< LayoutData< std::unique_ptr< Gpu::DeviceVector< Real > > >, AMREX_SPACEDIM > > m_cf_bcoefs
Definition AMReX_HypreMLABecLap.H:104
Array< LinOpBCType, AMREX_SPACEDIM > m_lobc
Definition AMReX_HypreMLABecLap.H:82
Vector< BoxArray > m_grids
Definition AMReX_HypreMLABecLap.H:72
HypreSolverID m_hypre_solver_id
Definition AMReX_HypreMLABecLap.H:131
Vector< iMultiFab > m_c2f_nentries
Definition AMReX_HypreMLABecLap.H:98
Vector< iMultiFab > m_fine_masks
Definition AMReX_HypreMLABecLap.H:91
HYPRE_SStructVector m_ss_b
Definition AMReX_HypreMLABecLap.H:127
HypreMLABecLap & operator=(HypreMLABecLap const &)=delete
HYPRE_SStructMatrix m_ss_A
Definition AMReX_HypreMLABecLap.H:125
int m_maxiter
Definition AMReX_HypreMLABecLap.H:68
Definition AMReX_PODVector.H:262
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:27
Definition AMReX_Amr.cpp:49
IntVectND< AMREX_SPACEDIM > IntVect
Definition AMReX_BaseFwd.H:30
HypreSolverID
Definition AMReX_HypreMLABecLap.H:18
std::array< T, N > Array
Definition AMReX_Array.H:24