42 #ifndef THYRA_TPETRA_EUCLIDEAN_SCALAR_PROD_DEF_HPP
43 #define THYRA_TPETRA_EUCLIDEAN_SCALAR_PROD_DEF_HPP
45 #include "Thyra_TpetraEuclideanScalarProd_decl.hpp"
46 #include "Thyra_TpetraMultiVector.hpp"
47 #include "Thyra_TpetraVector.hpp"
53 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
60 typedef Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node> TMV;
71 X_tpetra->dot(*Y_tpetra, scalarProds_out);
75 Teuchos::rcp_const_cast<TMV>(X_tpetra)->template sync<Kokkos::HostSpace>();
77 Teuchos::rcp_const_cast<TMV>(Y_tpetra)->template sync<Kokkos::HostSpace>();
84 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
89 using Teuchos::rcp_dynamic_cast;
95 return tmv->getConstTpetraMultiVector();
98 RCP<const TV> tv = rcp_dynamic_cast<const TV>(mv);
100 return tv->getConstTpetraVector();
103 return Teuchos::null;
110 #endif // THYRA_EUCLIDEAN_SCALAR_PROD_DEF_HPP