PlayaSimpleZeroOpImpl.hpp
00001
00002
00003
00004
00005 #ifndef PLAYA_SIMPLE_ZERO_OP_IMPL_HPP
00006 #define PLAYA_SIMPLE_ZERO_OP_IMPL_HPP
00007
00008
00009
00010 #include "PlayaSimpleZeroOpDecl.hpp"
00011 #include "PlayaOut.hpp"
00012 #include "PlayaTabs.hpp"
00013
00014 #ifndef HAVE_TEUCHOS_EXPLICIT_INSTANTIATION
00015 #include "PlayaLinearOperatorImpl.hpp"
00016 #endif
00017
00018
00019 namespace Playa
00020 {
00021 using namespace Teuchos;
00022
00023
00024
00025
00026
00027
00028
00029 template <class Scalar> inline
00030 SimpleZeroOp<Scalar>::SimpleZeroOp(const VectorSpace<Scalar>& domain,
00031 const VectorSpace<Scalar>& range)
00032 : LinearOpWithSpaces<Scalar>(domain, range) {}
00033
00034
00035
00036 template <class Scalar> inline
00037 void SimpleZeroOp<Scalar>::apply(Teuchos::ETransp transApplyType,
00038 const Vector<Scalar>& in,
00039 Vector<Scalar> out) const
00040 {
00041 Tabs tab(0);
00042 PLAYA_MSG2(this->verb(), tab << "SimpleZeroOp::apply()");
00043
00044 out.zero();
00045
00046 PLAYA_MSG2(this->verb(), tab << "done SimpleZeroOp::apply()");
00047 }
00048
00049
00050 template <class Scalar> inline
00051 std::string SimpleZeroOp<Scalar>::description() const
00052 {return "ZeroOp(domain="
00053 + this->domain()->description()
00054 + ", range=" + this->range()->description() + ")";}
00055
00056
00057
00058 template <class Scalar> inline
00059 LinearOperator<Scalar> zeroOperator(
00060 const VectorSpace<Scalar>& domain,
00061 const VectorSpace<Scalar>& range)
00062 {
00063 RCP<LinearOperatorBase<Scalar> > op
00064 = rcp(new SimpleZeroOp<Scalar>(domain, range));
00065
00066 return op;
00067 }
00068
00069
00070 }
00071
00072 #endif