Finite Element Domain Decomposition Library
FEDDLib
Loading...
Searching...
No Matches
FEDD::BlockMap< LO, GO, NO > Class Template Reference

Block Variant of Map class. More...

#include <BlockMap_decl.hpp>

Public Types

typedef BlockMap< LO, GO, NO > BlockMap_Type
 
typedef Teuchos::RCP< BlockMap_TypeBlockMapPtr_Type
 
typedef Map< LO, GO, NO > Map_Type
 
typedef Map_Type::MapPtr_Type MapPtr_Type
 
typedef Map_Type::MapConstPtr_Type MapConstPtr_Type
 
typedef Map_Type::Comm_Type Comm_Type
 
typedef Map_Type::CommPtr_Type CommPtr_Type
 
typedef Map_Type::CommConstPtr_Type CommConstPtr_Type
 

Public Member Functions

 BlockMap (UN size)
 Initializing block maps with the size of system (i.e. 2 for Stokes problem). As systems are distributed row-wise, block i corresponds to row-block i.
 
void resize (UN size)
 
void addBlock (MapConstPtr_Type map, int i)
 Adding map to corresponding block i. Block i is row-wise distrubted according to the underlying map.
 
void merge ()
 Merging the map of different blocks together. Relevant for monolithic solving/precondtioning.
 
void print ()
 
void info ()
 
std::string getUnderlyingLib () const
 
MapConstPtr_Type getMergedMap ()
 Getting merged map of block maps.
 
CommConstPtr_Type getComm ()
 Get underlying communicator.
 
CommPtr_Type getCommNonConst ()
 
MapPtr_Type getBlock (UN i)
 
MapConstPtr_Type getBlock (UN i) const
 
UN size () const
 

Detailed Description

template<class LO = default_lo, class GO = default_go, class NO = default_no>
class FEDD::BlockMap< LO, GO, NO >

Block Variant of Map class.

This becomes relevant for block systems and when we attempt to use monolithic preconditioning or solving to determine the merged map of system.

Template Parameters
LOThe local ordinal type. The is the index type for local indices
GOThe global ordinal type. The is the index type for global indices
NOThe Kokkos Node type. This would allow for performance portibility when using Kokkos. Currently, this is not used.

This becomes relevant for block systems and when we attempt to use monolithic preconditioning or solving to determine the merged map of system.

i.e. Stokes Problem:

0 | A B BlockMap->getBlock(0) of row-block 0

1 | B^T 0 BlockMap->getBlock(1) of row-block 1

Constructor & Destructor Documentation

◆ BlockMap()

template<class LO, class GO, class NO>
FEDD::BlockMap< LO, GO, NO >::BlockMap ( UN size)

Initializing block maps with the size of system (i.e. 2 for Stokes problem). As systems are distributed row-wise, block i corresponds to row-block i.

Parameters
sizeof system

Member Function Documentation

◆ addBlock()

template<class LO, class GO, class NO>
void FEDD::BlockMap< LO, GO, NO >::addBlock ( MapConstPtr_Type map,
int i )

Adding map to corresponding block i. Block i is row-wise distrubted according to the underlying map.

Parameters
maplocal to global indexing of rows
iblock id

◆ getComm()

template<class LO, class GO, class NO>
BlockMap< LO, GO, NO >::CommConstPtr_Type FEDD::BlockMap< LO, GO, NO >::getComm ( )

Get underlying communicator.

Returns
comm_

◆ getMergedMap()

template<class LO, class GO, class NO>
BlockMap< LO, GO, NO >::MapConstPtr_Type FEDD::BlockMap< LO, GO, NO >::getMergedMap ( )

Getting merged map of block maps.

Returns
mergedMap
Here is the call graph for this function:

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