42 #ifndef THYRA_DEFAULT_ZERO_LINEAR_OP_DEF_HPP 43 #define THYRA_DEFAULT_ZERO_LINEAR_OP_DEF_HPP 45 #include "Thyra_DefaultZeroLinearOp_decl.hpp" 46 #include "Thyra_MultiVectorStdOps.hpp" 47 #include "Thyra_VectorStdOps.hpp" 48 #include "Thyra_AssertOp.hpp" 57 template<
class Scalar>
62 template<
class Scalar>
68 initialize(range_in,domain_in);
72 template<
class Scalar>
78 range_ = range_in.assert_not_null();
79 domain_ = domain_in.assert_not_null();
83 template<
class Scalar>
86 range_ = Teuchos::null;
87 domain_ = Teuchos::null;
94 template<
class Scalar>
95 RCP< const VectorSpaceBase<Scalar> >
102 template<
class Scalar>
103 RCP< const VectorSpaceBase<Scalar> >
110 template<
class Scalar>
111 RCP<const LinearOpBase<Scalar> >
116 return Teuchos::rcp(
new this_t(range_,domain_));
117 return Teuchos::rcp(
new this_t());
124 template<
class Scalar>
127 typedef Teuchos::ScalarTraits<Scalar> ST;
128 std::ostringstream oss;
130 <<
"Thyra::DefaultZeroLinearOp<" << ST::name() <<
">{" 131 <<
"range="<<(range_.get()?range_->description():
"NULL")
132 <<
",domain="<<(domain_.get()?domain_->description():
"NULL")
144 template<
class Scalar>
151 template<
class Scalar>
162 "DefaultZeroLinearOp<Scalar>::apply(...)", *
this, M_trans, X, &*Y
164 #endif // TEUCHOS_DEBUG 168 template<
class Scalar>
172 if( rowStat==RowStatLinearOpBaseUtils::ROW_STAT_ROW_SUM
173 || rowStat==RowStatLinearOpBaseUtils::ROW_STAT_COL_SUM)
183 template<
class Scalar>
186 const RowStatLinearOpBaseUtils::ERowStat rowStat,
189 Thyra::put_scalar(Teuchos::ScalarTraits<Scalar>::zero(),rowStatVec);
196 template<
class Scalar>
197 Teuchos::RCP<const Thyra::LinearOpBase<Scalar> >
199 const RCP<
const VectorSpaceBase<Scalar> > &range_in,
200 const RCP<
const VectorSpaceBase<Scalar> > &domain_in
203 return Teuchos::rcp(
new DefaultZeroLinearOp<Scalar>(range_in, domain_in));
206 template<
class Scalar>
207 Teuchos::RCP<Thyra::LinearOpBase<Scalar> >
209 const RCP<
const VectorSpaceBase<Scalar> > &range_in,
210 const RCP<
const VectorSpaceBase<Scalar> > &domain_in
213 return Teuchos::rcp(
new DefaultZeroLinearOp<Scalar>(range_in, domain_in));
222 #define THYRA_DEFAULT_ZERO_LINEAR_OP_INSTANT(SCALAR) \ 224 template class DefaultZeroLinearOp<SCALAR >; \ 226 template RCP<const Thyra::LinearOpBase<SCALAR > > \ 228 const RCP<const VectorSpaceBase<SCALAR > > &range, \ 229 const RCP<const VectorSpaceBase<SCALAR > > &domain \ 232 template RCP<Thyra::LinearOpBase<SCALAR > > \ 234 const RCP<const VectorSpaceBase<SCALAR > > &range, \ 235 const RCP<const VectorSpaceBase<SCALAR > > &domain \ 239 #endif // THYRA_DEFAULT_ZERO_LINEAR_OP_DEF_HPP bool opSupportedImpl(EOpTransp M_trans) const
Returns true .
void uninitialize()
Set to uninitialized.
EOpTransp
Enumeration for determining how a linear operator is applied. `*.
RCP< const VectorSpaceBase< Scalar > > range() const
Returns Teuchos::null if uninitialized.
#define THYRA_ASSERT_LINEAR_OP_MULTIVEC_APPLY_SPACES(FUNC_NAME, M, M_T, X, Y)
This is a very useful macro that should be used to validate that the spaces for the multi-vector vers...
RCP< const VectorSpaceBase< Scalar > > domain() const
Returns Teuchos::null if uninitialized.
Abstract interface for objects that represent a space for vectors.
void applyImpl(const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const
Interface for a collection of column vectors called a multi-vector.
DefaultZeroLinearOp()
Construct to uninitialized.
Abstract interface for finite-dimensional dense vectors.
virtual void getRowStatImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat, const Teuchos::Ptr< VectorBase< Scalar > > &rowStatVec) const
virtual bool rowStatIsSupportedImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat) const
Represents a zero linear operator M = 0.
std::string description() const
Prints just the name DefaultZeroLinearOp along with the overall dimensions.
RCP< const LinearOpBase< Scalar > > clone() const
void initialize(const RCP< const VectorSpaceBase< Scalar > > &range, const RCP< const VectorSpaceBase< Scalar > > &domain)
Initialize given a list of non-const linear operators.