Amesos2 - Direct Sparse Solver Interfaces Version of the Day
Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Private Attributes | Friends
Amesos2::MultiVecAdapter< Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Class Template Reference

Amesos2 adapter for the Tpetra::MultiVector class. More...

#include <Amesos2_TpetraMultiVecAdapter_decl.hpp>

List of all members.

Public Types

typedef Tpetra::MultiVector
< Scalar, LocalOrdinal,
GlobalOrdinal, Node > 
multivec_t
typedef Scalar scalar_t
typedef LocalOrdinal local_ordinal_t
typedef GlobalOrdinal global_ordinal_t
typedef Node node_t
typedef Tpetra::global_size_t global_size_t

Public Member Functions

bool isLocallyIndexed () const
 Checks whether this multivector is local to the calling node.
bool isGloballyIndexed () const
const Teuchos::RCP< const
Tpetra::Map< local_ordinal_t,
global_ordinal_t, node_t > > & 
getMap () const
const Teuchos::RCP< const
Teuchos::Comm< int > > & 
getComm () const
 Returns the Teuchos::Comm object associated with this multi-vector.
size_t getLocalLength () const
 Get the length of vectors local to the calling node.
size_t getLocalNumVectors () const
 Get the number of vectors on this node.
global_size_t getGlobalLength () const
 Get the length of vectors in the global space.
global_size_t getGlobalNumVectors () const
 Get the number of global vectors.
size_t getStride () const
 Return the stride between vectors on this node.
bool isConstantStride () const
 Return true if this MV has constant stride between vectors on this node.
Teuchos::RCP< const
Tpetra::Vector< scalar_t,
local_ordinal_t,
global_ordinal_t, node_t > > 
getVector (size_t j) const
 Const vector access.
Teuchos::RCP< Tpetra::Vector
< scalar_t, local_ordinal_t,
global_ordinal_t, node_t > > 
getVectorNonConst (size_t j)
 Nonconst vector access.
void get1dCopy (const Teuchos::ArrayView< scalar_t > &A, size_t lda, Teuchos::Ptr< const Tpetra::Map< local_ordinal_t, global_ordinal_t, node_t > > distribution_map) const
 Copies the multivector's data into the user-provided vector.
Teuchos::ArrayRCP< scalar_t > get1dViewNonConst (bool local=false)
 Extracts a 1 dimensional view of this MultiVector's data.
void put1dData (const Teuchos::ArrayView< const scalar_t > &new_data, size_t lda, Teuchos::Ptr< const Tpetra::Map< local_ordinal_t, global_ordinal_t, node_t > > source_map)
 Export data into the global MultiVector space.
std::string description () const
 Get a short description of this adapter class.
void describe (Teuchos::FancyOStream &os, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const
 Print a description of this adapter to the Fancy Output Stream.

Static Public Attributes

static const char * name

Protected Member Functions

 MultiVecAdapter (const MultiVecAdapter< multivec_t > &adapter)
 Copy constructor.
 MultiVecAdapter (const Teuchos::RCP< multivec_t > &m)
 Initialize an adapter from a multi-vector RCP.

Private Attributes

Teuchos::RCP< multivec_t > mv_
 The multivector this adapter wraps.
Teuchos::RCP< Tpetra::Import
< local_ordinal_t,
global_ordinal_t, node_t > > 
importer_
 Used for transferring between local and global multivectors.
Teuchos::RCP< Tpetra::Export
< local_ordinal_t,
global_ordinal_t, node_t > > 
exporter_
Teuchos::RCP< const
Tpetra::Map< local_ordinal_t,
global_ordinal_t, node_t > > 
mv_map_
 The adapted multivector's map.

Friends

Teuchos::RCP< MultiVecAdapter
< multivec_t > > 
createMultiVecAdapter (Teuchos::RCP< multivec_t >)
Teuchos::RCP< const
MultiVecAdapter< multivec_t > > 
createConstMultiVecAdapter (Teuchos::RCP< const multivec_t >)

Detailed Description

template<typename Scalar, typename LocalOrdinal, typename GlobalOrdinal, class Node>
class Amesos2::MultiVecAdapter< Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > >

Amesos2 adapter for the Tpetra::MultiVector class.


Constructor & Destructor Documentation

template<typename Scalar , typename LocalOrdinal , typename GlobalOrdinal , class Node >
Amesos2::MultiVecAdapter< Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > >::MultiVecAdapter ( const Teuchos::RCP< multivec_t > &  m) [protected]

Initialize an adapter from a multi-vector RCP.

Parameters:
mAn RCP pointing to the multi-vector which is to be wrapped.

Member Function Documentation

template<typename Scalar , typename LocalOrdinal , typename GlobalOrdinal , class Node >
void Amesos2::MultiVecAdapter< Epetra_MultiVector >::get1dCopy ( const Teuchos::ArrayView< scalar_t > &  A,
size_t  lda,
Teuchos::Ptr< const Tpetra::Map< local_ordinal_t, global_ordinal_t, node_t > >  distribution_map 
) const

Copies the multivector's data into the user-provided vector.

Each vector of the multivector is placed lda apart in the given ArrayView. Giving a distribution map is useful in the case where the data needs to end up on different processors than it currently resides. For example, the SuperLU_DIST interface may receive a B multivector that is distributed across 13 processors, but only 12 of those 13 processors are in SuperLU_DIST's processor grid. The rows of the multivector need to then be distributed amongst the 12 that are in the grid.

Parameters:
[in/out]A user-supplied storage for multi-vector data
[in]ldauser-supplied spacing for consecutive vectors in A
[in]distribution_mapis a Tpetra::Map that describes the desired distribution of the multivector's data accross the calling processors. The map describes where the 'rows' of the multivector will end up.
Exceptions:
std::runtime_errorThrown if the space available in A is not large enough given lda , the value of global_copy , and the number of vectors in this.

References Amesos2::Util::tpetra_map_to_epetra_map().

template<typename Scalar , typename LocalOrdinal , typename GlobalOrdinal , class Node >
Teuchos::ArrayRCP<scalar_t> Amesos2::MultiVecAdapter< Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > >::get1dViewNonConst ( bool  local = false)

Extracts a 1 dimensional view of this MultiVector's data.

Guarantees that the view returned will reside in contiguous storage.

Warning:
It is recommended to use the get1dCopy function, from a data-hiding perspective. Use if you know what you are doing.
Parameters:
localif true , each node will get a view of the vectors it is in possession of. The default, false , will give each calling node a view of the global multivector.
template<typename Scalar , typename LocalOrdinal , typename GlobalOrdinal , class Node >
void Amesos2::MultiVecAdapter< Epetra_MultiVector >::put1dData ( const Teuchos::ArrayView< const scalar_t > &  new_data,
size_t  lda,
Teuchos::Ptr< const Tpetra::Map< local_ordinal_t, global_ordinal_t, node_t > >  source_map 
)

Export data into the global MultiVector space.

Parameters:
new_dataThe data to be exported into this.
source_mapdescribes how the input array data is distributed accross processors. This data will be redistributed to match the map of the adapted multivector.

The documentation for this class was generated from the following files: