30 typedef Teuchos::RCP<Matrix_Type> MatrixPtr_Type;
31 typedef Teuchos::RCP<const Matrix_Type> MatrixConstPtr_Type;
33 typedef typename Matrix_Type::Map_Type Map_Type;
34 typedef typename Matrix_Type::MapPtr_Type MapPtr_Type;
35 typedef typename Matrix_Type::MapConstPtr_Type MapConstPtr_Type;
37 typedef typename Matrix_Type::MultiVector_Type MultiVector_Type;
38 typedef typename Matrix_Type::MultiVectorPtr_Type MultiVectorPtr_Type;
39 typedef typename Matrix_Type::MultiVectorConstPtr_Type MultiVectorConstPtr_Type;
42 typedef Teuchos::RCP<BlockMultiVector_Type> BlockMultiVectorPtr_Type;
44 typedef BlockMatrix<SC,LO,GO,NO> BlockMatrix_Type;
45 typedef Teuchos::RCP<BlockMatrix_Type> BlockMatrixPtr_Type;
48 typedef Teuchos::RCP<BlockMap_Type> BlockMapPtr_Type;
50 typedef Teuchos::Tuple<GO, 2> GOTuple_Type;
51 typedef Teuchos::Tuple<LO, 2> LOTuple_Type;
58 BlockMatrix(BlockMatrixPtr_Type bMatrixIn);
66 MatrixPtr_Type getBlock(
int i,
int j);
68 MatrixConstPtr_Type getBlockConst(
int i,
int j)
const;
70 bool blockExists(
int i,
int j)
const;
72 void addBlock(
const MatrixPtr_Type& matrix,
int i,
int j);
76 void mergeBlockNew(UN blockRow, UN blockCol);
78 void determineLocalOffsets();
80 void determineGlobalOffsets();
82 void print(Teuchos::EVerbosityLevel verbLevel=Teuchos::VERB_EXTREME);
84 void printMerge(Teuchos::EVerbosityLevel verbLevel=Teuchos::VERB_EXTREME);
86 void writeMM(std::string fN=
"blockMat")
const;
88 Teuchos::RCP<const Thyra::LinearOpBase<SC> > getThyraLinOp();
90 Teuchos::RCP<const Thyra::BlockedLinearOpBase<SC> > getThyraLinBlockOp()
const;
92 void apply(
const BlockMultiVector_Type& X,
93 BlockMultiVector_Type& Y )
const;
95 void apply(
const BlockMultiVector_Type& X,
96 BlockMultiVector_Type& Y,
101 MatrixPtr_Type getMergedMatrix();
103 BlockMapPtr_Type getMap();
107 BlockMapPtr_Type blockMap_;
108 MatrixPtr_Type mergedMatrix_;
109 MapPtr_Type mergedMap_;
110 Teuchos::RCP<SmallMatrix<GOTuple_Type> > globalBlockOffsets_;
111 Teuchos::RCP<SmallMatrix<LOTuple_Type> > localBlockOffsets_;