46 #ifndef XPETRA_TPETRAOPERATOR_HPP 
   47 #define XPETRA_TPETRAOPERATOR_HPP 
   51 #include <Tpetra_Operator.hpp> 
   52 #include <Tpetra_Details_residual.hpp> 
   54 #include "Xpetra_Map.hpp" 
   55 #include "Xpetra_TpetraMap.hpp" 
   56 #include "Xpetra_MultiVector.hpp" 
   57 #include "Xpetra_TpetraMultiVector.hpp" 
   64   template <
class Scalar,
 
   73     virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> > 
getDomainMap()
 const {
 
   79     virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> > 
getRangeMap()
 const {
 
   93            Teuchos::ETransp mode = Teuchos::NO_TRANS,
 
   94            Scalar alpha = Teuchos::ScalarTraits<Scalar>::one(),
 
   95            Scalar beta = Teuchos::ScalarTraits<Scalar>::zero())
 const {
 
  101       return op_->hasTransposeApply();
 
  113     void describe(Teuchos::FancyOStream &out, 
const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default)
 const {
 
  123     TpetraOperator(
const Teuchos::RCP<Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node> > &op) : 
op_(op) { } 
 
  126     RCP<Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node> > 
getOperator(){
return op_;}
 
  140     RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node> > 
op_;
 
  146 #if ((!defined(HAVE_TPETRA_INST_SERIAL)) && (!defined(HAVE_TPETRA_INST_INT_INT)) && defined(HAVE_XPETRA_EPETRA)) 
  150       : 
public Operator< double, int, int, EpetraNode > {
 
  160     virtual Teuchos::RCP<const Xpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > 
getDomainMap()
 const {
 
  161       return Teuchos::null;
 
  165     virtual Teuchos::RCP<const Xpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > 
getRangeMap()
 const {
 
  166       return Teuchos::null;
 
  178            Teuchos::ETransp mode = Teuchos::NO_TRANS,
 
  179            Scalar alpha = Teuchos::ScalarTraits<Scalar>::one(),
 
  180            Scalar beta = Teuchos::ScalarTraits<Scalar>::zero())
 const {  }
 
  194     void describe(Teuchos::FancyOStream &out, 
const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default)
 const {   }
 
  202     TpetraOperator(
const Teuchos::RCP<Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node> > &op) { }
 
  205     RCP<Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node> > 
getOperator(){
return Teuchos::null;}
 
  218 #if ((!defined(HAVE_TPETRA_INST_SERIAL)) && (!defined(HAVE_TPETRA_INST_INT_LONG_LONG)) && defined(HAVE_XPETRA_EPETRA)) 
  222       : 
public Operator< double, int, long long, EpetraNode > {
 
  232     virtual Teuchos::RCP<const Xpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > 
getDomainMap()
 const {
 
  233       return Teuchos::null;
 
  237     virtual Teuchos::RCP<const Xpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > 
getRangeMap()
 const {
 
  238       return Teuchos::null;
 
  250            Teuchos::ETransp mode = Teuchos::NO_TRANS,
 
  251            Scalar alpha = Teuchos::ScalarTraits<Scalar>::one(),
 
  252            Scalar beta = Teuchos::ScalarTraits<Scalar>::zero())
 const {  }
 
  266     void describe(Teuchos::FancyOStream &out, 
const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default)
 const {   }
 
  274     TpetraOperator(
const Teuchos::RCP<Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node> > &op) { }
 
  277     RCP<Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node> > 
getOperator(){
return Teuchos::null;}
 
  291 #define XPETRA_TPETRAOPERATOR_SHORT 
  292 #endif // XPETRA_TPETRAOPERATOR_HPP 
virtual Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getDomainMap() const 
The Map associated with the domain of this operator, which must be compatible with X...
 
virtual void apply(const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &X, Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, Scalar alpha=Teuchos::ScalarTraits< Scalar >::one(), Scalar beta=Teuchos::ScalarTraits< Scalar >::zero()) const 
Computes the operator-multivector application. 
 
std::string description() const 
A simple one-line description of this object. 
 
virtual bool hasTransposeApply() const 
Whether this operator supports applying the transpose or conjugate transpose. 
 
RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getOperator()
Gets the operator out. 
 
std::string description() const 
A simple one-line description of this object. 
 
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const 
Print the object with the given verbosity level to a FancyOStream. 
 
void residual(const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &X, const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &B, Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &R) const 
 
RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getOperator()
Gets the operator out. 
 
RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > op_
The Tpetra::Operator which this class wraps. 
 
virtual Teuchos::RCP< const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getDomainMap() const 
The Map associated with the domain of this operator, which must be compatible with X...
 
void residual(const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &X, const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &B, Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &R) const 
 
virtual bool hasTransposeApply() const 
Whether this operator supports applying the transpose or conjugate transpose. 
 
void residual(const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &X, const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &B, Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &R) const 
Compute a residual R = B - (*this) * X. 
 
TpetraOperator(const Teuchos::RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &op)
TpetraOperator constructor to wrap a Tpetra::Operator object. 
 
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const 
Print the object with the given verbosity level to a FancyOStream. 
 
virtual void apply(const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &X, Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, Scalar alpha=Teuchos::ScalarTraits< Scalar >::one(), Scalar beta=Teuchos::ScalarTraits< Scalar >::zero()) const 
Computes the operator-multivector application. 
 
TpetraOperator(const Teuchos::RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &op)
TpetraOperator constructor to wrap a Tpetra::Operator object. 
 
std::string description() const 
A simple one-line description of this object. 
 
RCP< const Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > toTpetra(const RCP< const CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > &graph)
 
virtual void apply(const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &X, Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, Scalar alpha=Teuchos::ScalarTraits< Scalar >::one(), Scalar beta=Teuchos::ScalarTraits< Scalar >::zero()) const 
Computes the operator-multivector application. 
 
virtual Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getRangeMap() const 
The Map associated with the range of this operator, which must be compatible with Y...
 
virtual Teuchos::RCP< const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getRangeMap() const 
The Map associated with the range of this operator, which must be compatible with Y...
 
RCP< const CrsGraph< int, GlobalOrdinal, Node > > toXpetra(const Epetra_CrsGraph &g)
 
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const 
Print the object with the given verbosity level to a FancyOStream. 
 
virtual Teuchos::RCP< const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getDomainMap() const 
The Map associated with the domain of this operator, which must be compatible with X...
 
#define XPETRA_MONITOR(funcName)
 
TpetraOperator(const Teuchos::RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &op)
TpetraOperator constructor to wrap a Tpetra::Operator object. 
 
virtual bool hasTransposeApply() const 
Whether this operator supports applying the transpose or conjugate transpose. 
 
RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getOperator()
Gets the operator out. 
 
virtual Teuchos::RCP< const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getRangeMap() const 
The Map associated with the range of this operator, which must be compatible with Y...