42#ifndef THYRA_TPETRA_THYRA_WRAPPERS_HPP
43#define THYRA_TPETRA_THYRA_WRAPPERS_HPP
56template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
60 const RCP<
const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > &
tpetraMap
63 using Teuchos::rcp_dynamic_cast;
76template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
84 using Teuchos::rcp_dynamic_cast;
92 Tpetra::createLocalMapWithNode<LocalOrdinal,GlobalOrdinal,Node>(
103template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
106 const RCP<
const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > &tpetraMap
109 return tpetraVectorSpace<Scalar>(tpetraMap);
113template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
116 const RCP<Tpetra::Vector<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraVector_in,
117 const RCP<
const VectorSpaceBase<Scalar> > space_in
127template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
130 const RCP<
const Tpetra::Vector<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraVector_in,
131 const RCP<
const VectorSpaceBase<Scalar> > space
134 return constTpetraVector(
141template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
144 const RCP<Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraMultiVector_in,
145 const RCP<
const VectorSpaceBase<Scalar> > rangeSpace,
146 const RCP<
const VectorSpaceBase<Scalar> > domainSpace
149 return tpetraMultiVector(
151 getOrCreateLocallyReplicatedTpetraVectorSpace<Scalar, LocalOrdinal, GlobalOrdinal, Node>(
152 domainSpace, tpetraMultiVector_in->getMap()->getComm(),
153 tpetraMultiVector_in->getNumVectors()
160template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
163 const RCP<
const Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraMultiVector_in,
164 const RCP<
const VectorSpaceBase<Scalar> > rangeSpace,
165 const RCP<
const VectorSpaceBase<Scalar> > domainSpace
168 return constTpetraMultiVector(
170 getOrCreateLocallyReplicatedTpetraVectorSpace<Scalar, LocalOrdinal, GlobalOrdinal, Node>(
171 domainSpace, tpetraMultiVector_in->getMap()->getComm(),
172 tpetraMultiVector_in->getNumVectors()
179template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
182 const RCP<Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraOperator_in,
183 const RCP<
const VectorSpaceBase<Scalar> > rangeSpace,
184 const RCP<
const VectorSpaceBase<Scalar> > domainSpace
190 return tpetraLinearOp<Scalar,LocalOrdinal,GlobalOrdinal,Node>(
198template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
201 const RCP<
const Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraOperator_in,
202 const RCP<
const VectorSpaceBase<Scalar> > rangeSpace,
203 const RCP<
const VectorSpaceBase<Scalar> > domainSpace
208 return constTpetraLinearOp<Scalar,LocalOrdinal,GlobalOrdinal,Node>(
218template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
219RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
228template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
238template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
248template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
258 using Teuchos::rcp_dynamic_cast;
265 return tmv->getTpetraMultiVector();
273 return tv->getTpetraVector();
277 "Error, the input mv = " <<
mv->description() <<
" does not support the"
278 " Thyra::TpetraMultiVector or the Thyra::TpetraVector interfaces!");
285template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
295 using Teuchos::rcp_dynamic_cast;
302 return tmv->getConstTpetraMultiVector();
310 return tv->getConstTpetraVector();
314 "Error, the input mv = " <<
mv->description() <<
" does not support the"
315 " Thyra::TpetraMultiVector or the Thyra::TpetraVector interfaces!");
322template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
332template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
#define TEUCHOS_UNREACHABLE_RETURN(dummyReturnVal)
RCP(T *p, const RCPNodeHandle &node)
bool nonnull(const RCP< T > &p)
#define TEUCHOS_ASSERT(assertion_test)
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Teuchos::RCP< const TpetraVectorSpace< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getOrCreateTpetraVectorSpace(const RCP< const VectorSpaceBase< Scalar > > space, const RCP< const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > &tpetraMap)
RCP< const VectorBase< Scalar > > createConstVector(const RCP< const Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraVector, const RCP< const VectorSpaceBase< Scalar > > space=Teuchos::null)
RCP< const MultiVectorBase< Scalar > > createConstMultiVector(const RCP< const Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraMultiVector, const RCP< const VectorSpaceBase< Scalar > > rangeSpace=Teuchos::null, const RCP< const VectorSpaceBase< Scalar > > domainSpace=Teuchos::null)
RCP< const VectorSpaceBase< Scalar > > createVectorSpace(const RCP< const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > &tpetraMap)
Create a Thyra::VectorSpaceBase object given a Tpetra::Map.
RCP< VectorBase< Scalar > > createVector(const RCP< Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraVector, const RCP< const VectorSpaceBase< Scalar > > space=Teuchos::null)
RCP< MultiVectorBase< Scalar > > createMultiVector(const RCP< Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraMultiVector, const RCP< const VectorSpaceBase< Scalar > > rangeSpace=Teuchos::null, const RCP< const VectorSpaceBase< Scalar > > domainSpace=Teuchos::null)
RCP< LinearOpBase< Scalar > > createLinearOp(const RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraOperator, const RCP< const VectorSpaceBase< Scalar > > rangeSpace=Teuchos::null, const RCP< const VectorSpaceBase< Scalar > > domainSpace=Teuchos::null)
RCP< const LinearOpBase< Scalar > > createConstLinearOp(const RCP< const Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraOperator, const RCP< const VectorSpaceBase< Scalar > > rangeSpace=Teuchos::null, const RCP< const VectorSpaceBase< Scalar > > domainSpace=Teuchos::null)
Teuchos::RCP< const ScalarProdVectorSpaceBase< Scalar > > getOrCreateLocallyReplicatedTpetraVectorSpace(const RCP< const VectorSpaceBase< Scalar > > space, const RCP< const Teuchos::Comm< int > > &tpetraComm, const int numCols)