Skip to content

Commit

Permalink
Merge Pull Request #4618 from bartgol/Trilinos/Fix-4616
Browse files Browse the repository at this point in the history
Automatically Merged using Trilinos Pull Request AutoTester
PR Title: ThyraTpetraAdapters: Added getter for Tpetra::Map in Thyra::TpetraVectorSpace
PR Author: bartgol
  • Loading branch information
trilinos-autotester authored Mar 19, 2019
2 parents 1e72ab5 + 756a6be commit a85d2a7
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,10 @@ template <class Scalar = Tpetra::Vector<>::scalar_type,
class TpetraOperatorVectorExtraction {
public:

// ToDo: Get a Tpetra::Map from a Thyra::VectorSpaceBase?
/** \brief Get a const Tpetra::Map from a const Thyra::VectorSpaceBase object.
*/
static RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
getTpetraMap(const RCP<const VectorSpaceBase<Scalar> > &vs);

/** \brief Get a non-const Tpetra::Vector from a non-const
* Thyra::VectorBase object.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,15 @@ Thyra::createConstLinearOp(

namespace Thyra {

template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
TpetraOperatorVectorExtraction<Scalar,LocalOrdinal,GlobalOrdinal,Node>::
getTpetraMap(const RCP<const VectorSpaceBase<Scalar> > &vs)
{
typedef TpetraVectorSpace<Scalar, LocalOrdinal, GlobalOrdinal, Node> TpetraVectorSpace_t;
return Teuchos::rcp_dynamic_cast<const TpetraVectorSpace_t>(vs, true)->getTpetraMap();
}


template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
RCP<Tpetra::Vector<Scalar,LocalOrdinal,GlobalOrdinal,Node> >
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,11 @@ class TpetraVectorSpace : public SpmdVectorSpaceDefaultBase<Scalar>
) const;
/** \brief . */
RCP< const VectorSpaceBase<Scalar> > clone() const;

/** \brief Get the embedded Tpetra::Map. */
RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
getTpetraMap() const;

//@}

protected:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,12 @@ TpetraVectorSpace<Scalar,LocalOrdinal,GlobalOrdinal,Node>::clone() const
return tpetraVectorSpace<Scalar>(tpetraMap_);
}

template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
TpetraVectorSpace<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getTpetraMap() const
{
return tpetraMap_;
}

// Overridden from SpmdVectorSpaceDefaultBase

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_1_DECL( TpetraThyraWrappers, createVectorSpace,
rcp_dynamic_cast<const SpmdVectorSpaceBase<Scalar> >(vs, true);
TEST_EQUALITY(vs_spmd->localSubDim(), g_localDim);
TEST_EQUALITY(vs->dim(), as<Ordinal>(tpetraMap->getGlobalNumElements()));

typedef Thyra::TpetraOperatorVectorExtraction<Scalar> ConverterT;
RCP<const TpetraMap_t> tpetraMap2 = ConverterT::getTpetraMap(vs);
TEST_EQUALITY(tpetraMap2, tpetraMap);
}


Expand Down

0 comments on commit a85d2a7

Please sign in to comment.