00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef MEROS_LSC_OPERATOR_SOURCE_H
00030 #define MEROS_LSC_OPERATOR_SOURCE_H
00031
00032 #include "Thyra_LinearOpSourceBase.hpp"
00033 #include "Thyra_VectorImpl.hpp"
00034 #include "Thyra_VectorSpaceImpl.hpp"
00035 #include "Thyra_LinearOperatorDecl.hpp"
00036 #include "Epetra_RowMatrix.h"
00037 #include "Teuchos_RCP.hpp"
00038
00039
00040 namespace Meros
00041 {
00042
00043 using namespace Thyra;
00044
00049
00050 class LSCOperatorSource : virtual public LinearOpSourceBase<double>
00051 {
00052 public:
00053
00056
00059 LSCOperatorSource();
00060
00061
00064 LSCOperatorSource(ConstLinearOperator<double> op);
00065
00068 LSCOperatorSource(ConstLinearOperator<double> op,
00069 ConstLinearOperator<double> Qu);
00070
00073 LSCOperatorSource(Epetra_RowMatrix* S00,
00074 Epetra_RowMatrix* S01,
00075 Epetra_RowMatrix* S10,
00076 Epetra_RowMatrix* S11);
00077
00078
00081 LSCOperatorSource(Epetra_RowMatrix* S00,
00082 Epetra_RowMatrix* S01,
00083 Epetra_RowMatrix* S10,
00084 Epetra_RowMatrix* S11,
00085 Epetra_RowMatrix* Qu);
00086
00087
00088
00089
00090
00091
00092
00093
00096 void initialize(ConstLinearOperator<double> op,
00097 ConstLinearOperator<double> Qu);
00098
00099
00106 void uninitialize();
00107
00108
00110 bool isOpConst() const;
00111
00113 RCP<const LinearOpBase<double> > getOp() const;
00114
00116 RCP<LinearOpBase<double> > getNonconstOp() ;
00117
00119 ConstLinearOperator<double> getSaddleOp() const;
00120
00122 ConstLinearOperator<double> getQu() const;
00123
00124
00125
00126 private:
00127
00128 Teuchos::ConstNonconstObjectContainer<LinearOpBase<double> > op_;
00129 Teuchos::ConstNonconstObjectContainer<LinearOpBase<double> > Qu_;
00130
00131 };
00132
00133
00134 }
00135
00136 #endif // MEROS_LSC_OPERATOR_SOURCE_H