28 typedef Teuchos::RCP<Matrix_Type> MatrixPtr_Type;
29 typedef Teuchos::RCP<const Matrix_Type> MatrixConstPtr_Type;
31 typedef typename Matrix_Type::Map_Type Map_Type;
32 typedef typename Matrix_Type::MapPtr_Type MapPtr_Type;
33 typedef typename Matrix_Type::MapConstPtr_Type MapConstPtr_Type;
35 typedef typename Matrix_Type::MultiVector_Type MultiVector_Type;
36 typedef typename Matrix_Type::MultiVectorPtr_Type MultiVectorPtr_Type;
37 typedef typename Matrix_Type::MultiVectorConstPtr_Type MultiVectorConstPtr_Type;
40 typedef Teuchos::RCP<BlockMultiVector_Type> BlockMultiVectorPtr_Type;
42 typedef BlockMatrix<SC,LO,GO,NO> BlockMatrix_Type;
43 typedef Teuchos::RCP<BlockMatrix_Type> BlockMatrixPtr_Type;
46 typedef Teuchos::RCP<BlockMap_Type> BlockMapPtr_Type;
48 typedef Teuchos::Tuple<GO, 2> GOTuple_Type;
49 typedef Teuchos::Tuple<LO, 2> LOTuple_Type;
56 BlockMatrix(BlockMatrixPtr_Type bMatrixIn);
64 MatrixPtr_Type getBlock(
int i,
int j);
66 MatrixConstPtr_Type getBlockConst(
int i,
int j)
const;
68 bool blockExists(
int i,
int j)
const;
70 void addBlock(
const MatrixPtr_Type& matrix,
int i,
int j);
74 void mergeBlockNew(UN blockRow, UN blockCol);
76 void determineLocalOffsets();
78 void determineGlobalOffsets();
80 void print(Teuchos::EVerbosityLevel verbLevel=Teuchos::VERB_EXTREME);
82 void printMerge(Teuchos::EVerbosityLevel verbLevel=Teuchos::VERB_EXTREME);
84 void writeMM(std::string fN=
"blockMat")
const;
86 Teuchos::RCP<const Thyra::LinearOpBase<SC> > getThyraLinOp();
88 Teuchos::RCP<const Thyra::BlockedLinearOpBase<SC> > getThyraLinBlockOp()
const;
90 void apply(
const BlockMultiVector_Type& X,
91 BlockMultiVector_Type& Y )
const;
93 void apply(
const BlockMultiVector_Type& X,
94 BlockMultiVector_Type& Y,
99 MatrixPtr_Type getMergedMatrix();
101 BlockMapPtr_Type getMap();
105 BlockMapPtr_Type blockMap_;
106 MatrixPtr_Type mergedMatrix_;
107 MapPtr_Type mergedMap_;
108 Teuchos::RCP<SmallMatrix<GOTuple_Type> > globalBlockOffsets_;
109 Teuchos::RCP<SmallMatrix<LOTuple_Type> > localBlockOffsets_;