45 #ifndef AMESOS2_VECTORTRAITS_HPP 
   46 #define AMESOS2_VECTORTRAITS_HPP 
   50 #include <Tpetra_MultiVector.hpp> 
   53 #ifdef HAVE_AMESOS2_EPETRA 
   54 #  include <Epetra_MultiVector.h> 
   61   template <
class Vector>
 
   62   struct VectorTraits {};
 
   68   template < 
typename Scalar,
 
   69              typename LocalOrdinal,
 
   70              typename GlobalOrdinal,
 
   73     Tpetra::MultiVector<Scalar,
 
   77     typedef Scalar scalar_t;
 
   78     typedef LocalOrdinal local_ordinal_t;
 
   79     typedef GlobalOrdinal global_ordinal_t;
 
   82     typedef Tpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>  multivector_type;
 
   83     typedef typename multivector_type::impl_scalar_type  ptr_scalar_type; 
 
   86 #ifdef HAVE_AMESOS2_EPETRA 
   89   struct VectorTraits<Epetra_MultiVector> {
 
   90     typedef double scalar_t;
 
   91     typedef int local_ordinal_t;
 
   92     typedef Tpetra::Map<>::global_ordinal_type global_ordinal_t;
 
   93     typedef Tpetra::Map<>::node_type node_t;
 
   95     typedef Epetra_MultiVector multivector_type;
 
   96     typedef double ptr_scalar_type; 
 
  103 #endif  // AMESOS2_VECTORTRAITS_HPP