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 THYRA_BLOCKED_LINEAR_OP_BASE_HPP
00030 #define THYRA_BLOCKED_LINEAR_OP_BASE_HPP
00031
00032 #include "Thyra_LinearOpBase.hpp"
00033
00034 namespace Thyra {
00035
00037 template <class Scalar> class ProductVectorSpaceBase;
00038
00046 template<class RangeScalar, class DomainScalar=RangeScalar>
00047 class BlockedLinearOpBase : virtual public LinearOpBase<RangeScalar,DomainScalar> {
00048 public:
00049
00055 virtual Teuchos::RefCountPtr<const ProductVectorSpaceBase<RangeScalar> >
00056 productRange() const = 0;
00057
00063 virtual Teuchos::RefCountPtr<const ProductVectorSpaceBase<DomainScalar> >
00064 productDomain() const = 0;
00065
00076 virtual bool blockExists(const int i, const int j) const = 0;
00077
00089 virtual bool blockIsConst(const int i, const int j) const = 0;
00090
00107 virtual Teuchos::RefCountPtr<LinearOpBase<RangeScalar,DomainScalar> >
00108 getNonconstBlock(const int i, const int j) = 0;
00109
00125 virtual Teuchos::RefCountPtr<const LinearOpBase<RangeScalar,DomainScalar> >
00126 getBlock(const int i, const int j) const = 0;
00127
00128 };
00129
00130 }
00131
00132 #endif // THYRA_BLOCKED_LINEAR_OP_BASE_HPP