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

#include <AMReX_HypreNodeLap.H>

Public Types

using Int = HYPRE_Int
 
using AtomicInt = std::conditional_t< sizeof(Int)==4, unsigned int, unsigned long long >
 

Public Member Functions

 HypreNodeLap (const BoxArray &grids_, const DistributionMapping &dmap_, const Geometry &geom_, const FabFactory< FArrayBox > &factory_, const iMultiFab &owner_mask_, const iMultiFab &dirichlet_mask_, MPI_Comm comm_, MLNodeLinOp const *linop_, int verbose_, std::string options_namespace_)
 
 ~HypreNodeLap ()
 
 HypreNodeLap (HypreNodeLap const &)=delete
 
 HypreNodeLap (HypreNodeLap &&)=delete
 
HypreNodeLapoperator= (HypreNodeLap const &)=delete
 
HypreNodeLapoperator= (HypreNodeLap &&)=delete
 
void solve (MultiFab &soln, const MultiFab &rhs, Real rel_tol, Real abs_tol, int max_iter)
 
void setHypreOptionsNamespace (const std::string &ns)
 
Int fill_local_node_id ()
 
Int fill_local_node_id_gpu ()
 
Int fill_local_node_id_cpu ()
 
void fill_global_node_id ()
 
void loadVectors (MultiFab &soln, const MultiFab &rhs)
 
void getSolution (MultiFab &soln)
 

Static Public Member Functions

static void adjust_singular_matrix (Int const *ncols, Int const *cols, Int const *rows, Real *mat)
 

Private Attributes

BoxArray grids
 
DistributionMapping dmap
 
Geometry geom
 
FabFactory< FArrayBox > const * factory = nullptr
 
iMultiFab const * owner_mask = nullptr
 
iMultiFab const * dirichlet_mask = nullptr
 
MPI_Comm comm = MPI_COMM_NULL
 
MLNodeLinOp const * linop = nullptr
 
int verbose = 0
 
std::unique_ptr< HypreIJIfacehypre_ij
 
HYPRE_IJMatrix A = nullptr
 
HYPRE_IJVector b = nullptr
 
HYPRE_IJVector x = nullptr
 
LayoutData< Intnnodes_grid
 
LayoutData< Gpu::DeviceVector< Int > > node_id_vec
 
FabArray< BaseFab< AtomicInt > > node_id
 
iMultiFab local_node_id
 
LayoutData< Intid_offset
 
MultiFab tmpsoln
 
std::string options_namespace {"hypre"}
 

Member Typedef Documentation

◆ AtomicInt

using amrex::HypreNodeLap::AtomicInt = std::conditional_t<sizeof(Int) == 4, unsigned int, unsigned long long>

◆ Int

using amrex::HypreNodeLap::Int = HYPRE_Int

Constructor & Destructor Documentation

◆ HypreNodeLap() [1/3]

amrex::HypreNodeLap::HypreNodeLap ( const BoxArray grids_,
const DistributionMapping dmap_,
const Geometry geom_,
const FabFactory< FArrayBox > &  factory_,
const iMultiFab owner_mask_,
const iMultiFab dirichlet_mask_,
MPI_Comm  comm_,
MLNodeLinOp const *  linop_,
int  verbose_,
std::string  options_namespace_ 
)

◆ ~HypreNodeLap()

amrex::HypreNodeLap::~HypreNodeLap ( )
default

◆ HypreNodeLap() [2/3]

amrex::HypreNodeLap::HypreNodeLap ( HypreNodeLap const &  )
delete

◆ HypreNodeLap() [3/3]

amrex::HypreNodeLap::HypreNodeLap ( HypreNodeLap &&  )
delete

Member Function Documentation

◆ adjust_singular_matrix()

void amrex::HypreNodeLap::adjust_singular_matrix ( Int const *  ncols,
Int const *  cols,
Int const *  rows,
Real *  mat 
)
static

◆ fill_global_node_id()

void amrex::HypreNodeLap::fill_global_node_id ( )

◆ fill_local_node_id()

HypreNodeLap::Int amrex::HypreNodeLap::fill_local_node_id ( )

◆ fill_local_node_id_cpu()

HypreNodeLap::Int amrex::HypreNodeLap::fill_local_node_id_cpu ( )

◆ fill_local_node_id_gpu()

HypreNodeLap::Int amrex::HypreNodeLap::fill_local_node_id_gpu ( )

◆ getSolution()

void amrex::HypreNodeLap::getSolution ( MultiFab soln)

◆ loadVectors()

void amrex::HypreNodeLap::loadVectors ( MultiFab soln,
const MultiFab rhs 
)

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ setHypreOptionsNamespace()

void amrex::HypreNodeLap::setHypreOptionsNamespace ( const std::string &  ns)
inline

◆ solve()

void amrex::HypreNodeLap::solve ( MultiFab soln,
const MultiFab rhs,
Real  rel_tol,
Real  abs_tol,
int  max_iter 
)

Member Data Documentation

◆ A

HYPRE_IJMatrix amrex::HypreNodeLap::A = nullptr
private

◆ b

HYPRE_IJVector amrex::HypreNodeLap::b = nullptr
private

◆ comm

MPI_Comm amrex::HypreNodeLap::comm = MPI_COMM_NULL
private

◆ dirichlet_mask

iMultiFab const* amrex::HypreNodeLap::dirichlet_mask = nullptr
private

◆ dmap

DistributionMapping amrex::HypreNodeLap::dmap
private

◆ factory

FabFactory<FArrayBox> const* amrex::HypreNodeLap::factory = nullptr
private

◆ geom

Geometry amrex::HypreNodeLap::geom
private

◆ grids

BoxArray amrex::HypreNodeLap::grids
private

◆ hypre_ij

std::unique_ptr<HypreIJIface> amrex::HypreNodeLap::hypre_ij
private

◆ id_offset

LayoutData<Int> amrex::HypreNodeLap::id_offset
private

◆ linop

MLNodeLinOp const* amrex::HypreNodeLap::linop = nullptr
private

◆ local_node_id

iMultiFab amrex::HypreNodeLap::local_node_id
private

◆ nnodes_grid

LayoutData<Int> amrex::HypreNodeLap::nnodes_grid
private

◆ node_id

FabArray<BaseFab<AtomicInt> > amrex::HypreNodeLap::node_id
private

◆ node_id_vec

LayoutData<Gpu::DeviceVector<Int> > amrex::HypreNodeLap::node_id_vec
private

◆ options_namespace

std::string amrex::HypreNodeLap::options_namespace {"hypre"}
private

◆ owner_mask

iMultiFab const* amrex::HypreNodeLap::owner_mask = nullptr
private

◆ tmpsoln

MultiFab amrex::HypreNodeLap::tmpsoln
private

◆ verbose

int amrex::HypreNodeLap::verbose = 0
private

◆ x

HYPRE_IJVector amrex::HypreNodeLap::x = nullptr
private

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