Block-Structured AMR Software Framework
amrex::HypreMLABecLap Class Reference

#include <AMReX_HypreMLABecLap.H>

Public Member Functions

 HypreMLABecLap (HypreMLABecLap const &)=delete
 
 HypreMLABecLap (HypreMLABecLap &&)=delete
 
HypreMLABecLapoperator= (HypreMLABecLap const &)=delete
 
HypreMLABecLapoperator= (HypreMLABecLap &&)=delete
 
 HypreMLABecLap (Vector< Geometry > a_geom, Vector< BoxArray > a_grids, Vector< DistributionMapping > a_dmap, HypreSolverID a_hypre_solver_id, std::string a_parmparse_prefix="hypre_mlabeclap")
 
 ~HypreMLABecLap ()
 
void setVerbose (int v)
 
void setMaxIter (int v)
 
void setIsSingular (bool v)
 
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)})
 
void solve (Vector< MultiFab * > const &a_sol, Vector< MultiFab const * > const &a_rhs, Real a_reltol, Real a_abstol)
 
void commBCoefs (int flev, Array< MultiFab const *, AMREX_SPACEDIM > const &a_bcoefs)
 
void commBCoefs_local (int flev, Array< MultiFab const *, AMREX_SPACEDIM > const &a_bcoefs, Vector< FabArrayBase::CopyComTag > const &tags)
 

Private Types

template<class T >
using HostVector = Gpu::PinnedVector< T >
 

Private Member Functions

void addNonStencilEntriesToGraph ()
 

Private Attributes

int m_verbose = 0
 
int m_maxiter = 200
 
bool m_is_singular = false
 
Vector< Geometrym_geom
 
Vector< BoxArraym_grids
 
Vector< DistributionMappingm_dmap
 
std::string m_parmparse_prefix
 
int m_nlevels = 0
 
MPI_Comm m_comm = MPI_COMM_NULL
 
Vector< IntVectm_ref_ratio
 
Real m_ascalar = std::numeric_limits<Real>::max()
 
Real m_bscalar = std::numeric_limits<Real>::max()
 
Array< LinOpBCType, AMREX_SPACEDIM > m_lobc
 
Array< LinOpBCType, AMREX_SPACEDIM > m_hibc
 
Vector< std::unique_ptr< MLMGBndry > > m_bndry
 
Vector< std::unique_ptr< BndryRegister > > m_bndry_rhs
 
Vector< iMultiFabm_fine_masks
 
Vector< iMultiFabm_crse_masks
 
Vector< iMultiFabm_c2f_offset_from
 
Vector< LayoutData< int > > m_c2f_total_from
 
Vector< iMultiFabm_c2f_nentries
 
Vector< iMultiFabm_c2f_offset_to
 
Vector< LayoutData< int > > m_c2f_total_to
 
Vector< Array< iMultiFab, AMREX_SPACEDIM > > m_offset_cf_bcoefs
 
Vector< Array< LayoutData< std::unique_ptr< Gpu::DeviceVector< Real > > >, AMREX_SPACEDIM > > m_cf_bcoefs
 
Vector< HostVector< int > > m_f2c_bno
 
Vector< HostVector< IntVect > > m_f2c_cell
 
Vector< Vector< HYPRE_Int > > m_f2c_nentries
 
Vector< HostVector< std::size_t > > m_f2c_offset
 
Vector< HostVector< Real > > m_f2c_values
 
HYPRE_SStructGrid m_ss_grid = nullptr
 
HYPRE_SStructStencil m_ss_stencil = nullptr
 
HYPRE_SStructGraph m_ss_graph = nullptr
 
HYPRE_SStructSolver m_ss_solver = nullptr
 
HYPRE_SStructSolver m_ss_precond = nullptr
 
HYPRE_SStructMatrix m_ss_A = nullptr
 
HYPRE_SStructVector m_ss_x = nullptr
 
HYPRE_SStructVector m_ss_b = nullptr
 
HYPRE_Solver m_solver = nullptr
 
HypreSolverID m_hypre_solver_id = HypreSolverID::BoomerAMG
 
HYPRE_Int m_hypre_object_type = HYPRE_PARCSR
 

Member Typedef Documentation

◆ HostVector

template<class T >
using amrex::HypreMLABecLap::HostVector = Gpu::PinnedVector<T>
private

Constructor & Destructor Documentation

◆ HypreMLABecLap() [1/3]

amrex::HypreMLABecLap::HypreMLABecLap ( HypreMLABecLap const &  )
delete

◆ HypreMLABecLap() [2/3]

amrex::HypreMLABecLap::HypreMLABecLap ( HypreMLABecLap &&  )
delete

◆ HypreMLABecLap() [3/3]

amrex::HypreMLABecLap::HypreMLABecLap ( Vector< Geometry a_geom,
Vector< BoxArray a_grids,
Vector< DistributionMapping a_dmap,
HypreSolverID  a_hypre_solver_id,
std::string  a_parmparse_prefix = "hypre_mlabeclap" 
)

◆ ~HypreMLABecLap()

amrex::HypreMLABecLap::~HypreMLABecLap ( )

Member Function Documentation

◆ addNonStencilEntriesToGraph()

void amrex::HypreMLABecLap::addNonStencilEntriesToGraph ( )
private

◆ commBCoefs()

void amrex::HypreMLABecLap::commBCoefs ( int  flev,
Array< MultiFab const *, AMREX_SPACEDIM > const &  a_bcoefs 
)

◆ commBCoefs_local()

void amrex::HypreMLABecLap::commBCoefs_local ( int  flev,
Array< MultiFab const *, AMREX_SPACEDIM > const &  a_bcoefs,
Vector< FabArrayBase::CopyComTag > const &  tags 
)

◆ operator=() [1/2]

HypreMLABecLap& amrex::HypreMLABecLap::operator= ( HypreMLABecLap &&  )
delete

◆ operator=() [2/2]

HypreMLABecLap& amrex::HypreMLABecLap::operator= ( HypreMLABecLap const &  )
delete

◆ setIsSingular()

void amrex::HypreMLABecLap::setIsSingular ( bool  v)
inline

◆ setMaxIter()

void amrex::HypreMLABecLap::setMaxIter ( int  v)
inline

◆ setup()

void amrex::HypreMLABecLap::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)} 
)

◆ setVerbose()

void amrex::HypreMLABecLap::setVerbose ( int  v)
inline

◆ solve()

void amrex::HypreMLABecLap::solve ( Vector< MultiFab * > const &  a_sol,
Vector< MultiFab const * > const &  a_rhs,
Real  a_reltol,
Real  a_abstol 
)

Member Data Documentation

◆ m_ascalar

Real amrex::HypreMLABecLap::m_ascalar = std::numeric_limits<Real>::max()
private

◆ m_bndry

Vector<std::unique_ptr<MLMGBndry> > amrex::HypreMLABecLap::m_bndry
private

◆ m_bndry_rhs

Vector<std::unique_ptr<BndryRegister> > amrex::HypreMLABecLap::m_bndry_rhs
private

◆ m_bscalar

Real amrex::HypreMLABecLap::m_bscalar = std::numeric_limits<Real>::max()
private

◆ m_c2f_nentries

Vector<iMultiFab> amrex::HypreMLABecLap::m_c2f_nentries
private

◆ m_c2f_offset_from

Vector<iMultiFab> amrex::HypreMLABecLap::m_c2f_offset_from
private

◆ m_c2f_offset_to

Vector<iMultiFab> amrex::HypreMLABecLap::m_c2f_offset_to
private

◆ m_c2f_total_from

Vector<LayoutData<int> > amrex::HypreMLABecLap::m_c2f_total_from
private

◆ m_c2f_total_to

Vector<LayoutData<int> > amrex::HypreMLABecLap::m_c2f_total_to
private

◆ m_cf_bcoefs

Vector<Array<LayoutData<std::unique_ptr<Gpu::DeviceVector<Real> > >,AMREX_SPACEDIM> > amrex::HypreMLABecLap::m_cf_bcoefs
private

◆ m_comm

MPI_Comm amrex::HypreMLABecLap::m_comm = MPI_COMM_NULL
private

◆ m_crse_masks

Vector<iMultiFab> amrex::HypreMLABecLap::m_crse_masks
private

◆ m_dmap

Vector<DistributionMapping> amrex::HypreMLABecLap::m_dmap
private

◆ m_f2c_bno

Vector<HostVector<int> > amrex::HypreMLABecLap::m_f2c_bno
private

◆ m_f2c_cell

Vector<HostVector<IntVect> > amrex::HypreMLABecLap::m_f2c_cell
private

◆ m_f2c_nentries

Vector<Vector<HYPRE_Int> > amrex::HypreMLABecLap::m_f2c_nentries
private

◆ m_f2c_offset

Vector<HostVector<std::size_t> > amrex::HypreMLABecLap::m_f2c_offset
private

◆ m_f2c_values

Vector<HostVector<Real> > amrex::HypreMLABecLap::m_f2c_values
private

◆ m_fine_masks

Vector<iMultiFab> amrex::HypreMLABecLap::m_fine_masks
private

◆ m_geom

Vector<Geometry> amrex::HypreMLABecLap::m_geom
private

◆ m_grids

Vector<BoxArray> amrex::HypreMLABecLap::m_grids
private

◆ m_hibc

Array<LinOpBCType,AMREX_SPACEDIM> amrex::HypreMLABecLap::m_hibc
private
Initial value:
{AMREX_D_DECL(LinOpBCType::bogus,
LinOpBCType::bogus,
LinOpBCType::bogus)}
#define AMREX_D_DECL(a, b, c)
Definition: AMReX_SPACE.H:104

◆ m_hypre_object_type

HYPRE_Int amrex::HypreMLABecLap::m_hypre_object_type = HYPRE_PARCSR
private

◆ m_hypre_solver_id

HypreSolverID amrex::HypreMLABecLap::m_hypre_solver_id = HypreSolverID::BoomerAMG
private

◆ m_is_singular

bool amrex::HypreMLABecLap::m_is_singular = false
private

◆ m_lobc

Array<LinOpBCType,AMREX_SPACEDIM> amrex::HypreMLABecLap::m_lobc
private
Initial value:
{AMREX_D_DECL(LinOpBCType::bogus,
LinOpBCType::bogus,
LinOpBCType::bogus)}

◆ m_maxiter

int amrex::HypreMLABecLap::m_maxiter = 200
private

◆ m_nlevels

int amrex::HypreMLABecLap::m_nlevels = 0
private

◆ m_offset_cf_bcoefs

Vector<Array<iMultiFab,AMREX_SPACEDIM> > amrex::HypreMLABecLap::m_offset_cf_bcoefs
private

◆ m_parmparse_prefix

std::string amrex::HypreMLABecLap::m_parmparse_prefix
private

◆ m_ref_ratio

Vector<IntVect> amrex::HypreMLABecLap::m_ref_ratio
private

◆ m_solver

HYPRE_Solver amrex::HypreMLABecLap::m_solver = nullptr
private

◆ m_ss_A

HYPRE_SStructMatrix amrex::HypreMLABecLap::m_ss_A = nullptr
private

◆ m_ss_b

HYPRE_SStructVector amrex::HypreMLABecLap::m_ss_b = nullptr
private

◆ m_ss_graph

HYPRE_SStructGraph amrex::HypreMLABecLap::m_ss_graph = nullptr
private

◆ m_ss_grid

HYPRE_SStructGrid amrex::HypreMLABecLap::m_ss_grid = nullptr
private

◆ m_ss_precond

HYPRE_SStructSolver amrex::HypreMLABecLap::m_ss_precond = nullptr
private

◆ m_ss_solver

HYPRE_SStructSolver amrex::HypreMLABecLap::m_ss_solver = nullptr
private

◆ m_ss_stencil

HYPRE_SStructStencil amrex::HypreMLABecLap::m_ss_stencil = nullptr
private

◆ m_ss_x

HYPRE_SStructVector amrex::HypreMLABecLap::m_ss_x = nullptr
private

◆ m_verbose

int amrex::HypreMLABecLap::m_verbose = 0
private

The documentation for this class was generated from the following files: