47 #ifndef __Teko_BlockedEpetraOperator_hpp__
48 #define __Teko_BlockedEpetraOperator_hpp__
51 #include "Epetra_Operator.h"
54 #include "Teuchos_RCP.hpp"
56 #include "Thyra_LinearOpBase.hpp"
59 #include "Teko_BlockedReordering.hpp"
60 #include "Teko_EpetraOperatorWrapper.hpp"
61 #include "Teko_BlockedMappingStrategy.hpp"
81 const Teuchos::RCP<const Epetra_Operator> & content,
82 const std::string & label=
"<ANYM>");
92 virtual void SetContent(
const std::vector<std::vector<int> > & vars,
93 const Teuchos::RCP<const Epetra_Operator> & content);
99 { BuildBlockedOperator(); }
101 virtual const Teuchos::RCP<const Epetra_Operator> GetContent()
const
102 {
return fullContent_; }
104 virtual const Teuchos::RCP<const Epetra_Operator> GetContent()
105 {
return fullContent_; }
107 const Teuchos::RCP<const Epetra_Operator> GetBlock(
int i,
int j)
const;
112 void Reorder(
const BlockReorderManager & brm);
119 virtual void WriteBlocks(
const std::string & prefix)
const;
130 virtual int SetUseTranspose(
bool )
133 virtual int ApplyInverse(
const Epetra_MultiVector &, Epetra_MultiVector &)
const
134 { TEUCHOS_ASSERT(
false);
return -1; }
136 virtual double NormInf()
const
137 { TEUCHOS_ASSERT(
false);
return 0.0; }
140 virtual bool UseTranspose()
const {
return false; }
141 virtual bool HasNormInf()
const {
return false; }
142 virtual const Epetra_Comm & Comm()
const {
return fullContent_->Comm(); }
144 #ifndef Teko_DEBUG_OFF
151 Teuchos::RCP<const Epetra_Operator> fullContent_;
152 Teuchos::RCP<BlockedMappingStrategy> blockedMapping_;
153 Teuchos::RCP<Thyra::LinearOpBase<double> > blockedOperator_;
154 Teuchos::RCP<const BlockReorderManager> reorderManager_;
158 void BuildBlockedOperator();
virtual void RebuildOps()
bool testAgainstFullOperator(int count, double tol) const
Helps perform sanity checks.
void Reorder(const BlockReorderManager &brm)
Implements the Epetra_Operator interface with a Thyra LinearOperator. This enables the use of absrtac...
virtual void SetContent(const std::vector< std::vector< int > > &vars, const Teuchos::RCP< const Epetra_Operator > &content)
void RemoveReording()
Remove any reordering on this object.
Tear about a user specified Epetra_Operator (CrsMatrix) using a vector of vectors of GIDs for each bl...
BlockedEpetraOperator(const std::vector< std::vector< int > > &vars, const Teuchos::RCP< const Epetra_Operator > &content, const std::string &label="<ANYM>")
virtual void WriteBlocks(const std::string &prefix) const