10#ifndef THYRA_DEFAULT_ZERO_LINEAR_OP_DEF_HPP 
   11#define THYRA_DEFAULT_ZERO_LINEAR_OP_DEF_HPP 
   13#include "Thyra_DefaultZeroLinearOp_decl.hpp" 
   14#include "Thyra_MultiVectorStdOps.hpp" 
   15#include "Thyra_VectorStdOps.hpp" 
   16#include "Thyra_AssertOp.hpp" 
   36  initialize(range_in,domain_in);
 
 
   46  range_ = range_in.assert_not_null();
 
   47  domain_ = domain_in.assert_not_null();
 
 
   96  std::ostringstream oss;
 
   98    << 
"Thyra::DefaultZeroLinearOp<" << ST::name() << 
">{" 
   99    << 
"range="<<(range_.get()?range_->description():
"NULL")
 
  100    << 
",domain="<<(domain_.get()?domain_->description():
"NULL")
 
 
  112template<
class Scalar>
 
  119template<
class Scalar>
 
  130    "DefaultZeroLinearOp<Scalar>::apply(...)", *
this, M_trans, X, &*Y
 
 
  139template<
class Scalar>
 
  143  if(   rowStat==RowStatLinearOpBaseUtils::ROW_STAT_ROW_SUM 
 
  144     || rowStat==RowStatLinearOpBaseUtils::ROW_STAT_COL_SUM)
 
 
  154template<
class Scalar>
 
  157    const RowStatLinearOpBaseUtils::ERowStat , 
 
 
  167template<
class Scalar>
 
  170  const RCP<
const VectorSpaceBase<Scalar> > &range_in,
 
  171  const RCP<
const VectorSpaceBase<Scalar> > &domain_in
 
  174  return Teuchos::rcp(
new DefaultZeroLinearOp<Scalar>(range_in, domain_in));
 
  177template<
class Scalar>
 
  180  const RCP<
const VectorSpaceBase<Scalar> > &range_in,
 
  181  const RCP<
const VectorSpaceBase<Scalar> > &domain_in
 
  184  return Teuchos::rcp(
new DefaultZeroLinearOp<Scalar>(range_in, domain_in));
 
  193#define THYRA_DEFAULT_ZERO_LINEAR_OP_INSTANT(SCALAR) \ 
  195  template class DefaultZeroLinearOp<SCALAR >; \ 
  197  template RCP<const Thyra::LinearOpBase<SCALAR > >  \ 
  199    const RCP<const VectorSpaceBase<SCALAR > > &range,  \ 
  200    const RCP<const VectorSpaceBase<SCALAR > > &domain  \ 
  203  template RCP<Thyra::LinearOpBase<SCALAR > >  \ 
  205    const RCP<const VectorSpaceBase<SCALAR > > &range,  \ 
  206    const RCP<const VectorSpaceBase<SCALAR > > &domain  \ 
Represents a zero linear operator M = 0.
 
virtual bool rowStatIsSupportedImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat) const
 
void initialize(const RCP< const VectorSpaceBase< Scalar > > &range, const RCP< const VectorSpaceBase< Scalar > > &domain)
Initialize given a list of non-const linear operators.
 
virtual void getRowStatImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat, const Teuchos::Ptr< VectorBase< Scalar > > &rowStatVec) const
 
void uninitialize()
Set to uninitialized.
 
RCP< const VectorSpaceBase< Scalar > > domain() const
Returns Teuchos::null if uninitialized.
 
RCP< const LinearOpBase< Scalar > > clone() const
 
RCP< const VectorSpaceBase< Scalar > > range() const
Returns Teuchos::null if uninitialized.
 
std::string description() const
Prints just the name DefaultZeroLinearOp along with the overall dimensions.
 
DefaultZeroLinearOp()
Construct to uninitialized.
 
void applyImpl(const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const
 
bool opSupportedImpl(EOpTransp M_trans) const
Returns true .
 
Interface for a collection of column vectors called a multi-vector.
 
Abstract interface for finite-dimensional dense vectors.
 
Abstract interface for objects that represent a space for vectors.
 
#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...
 
EOpTransp
Enumeration for determining how a linear operator is applied. `*.
 
T_To & dyn_cast(T_From &from)
 
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)