Tpetra parallel linear algebra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Protected Member Functions | List of all members
Tpetra::Details::Directory< LocalOrdinal, GlobalOrdinal, NodeType > Class Template Referenceabstract

Computes the local ID and process ID corresponding to given global IDs. More...

#include <Tpetra_DirectoryImpl_decl.hpp>

Inheritance diagram for Tpetra::Details::Directory< LocalOrdinal, GlobalOrdinal, NodeType >:
Inheritance graph
[legend]

Public Member Functions

 Directory ()=default
 Constructor. More...
 
LookupStatus getEntries (const map_type &map, const Teuchos::ArrayView< const GlobalOrdinal > &globalIDs, const Teuchos::ArrayView< int > &nodeIDs, const Teuchos::ArrayView< LocalOrdinal > &localIDs, const bool computeLIDs) const
 
virtual bool isOneToOne (const Teuchos::Comm< int > &comm) const =0
 Whether the Directory's input Map is (globally) one to one. More...
 

Protected Member Functions

virtual LookupStatus getEntriesImpl (const map_type &map, const Teuchos::ArrayView< const GlobalOrdinal > &globalIDs, const Teuchos::ArrayView< int > &nodeIDs, const Teuchos::ArrayView< LocalOrdinal > &localIDs, const bool computeLIDs) const =0
 Actually do the work of getEntries(), with no input validation. More...
 

Detailed Description

template<class LocalOrdinal, class GlobalOrdinal, class NodeType>
class Tpetra::Details::Directory< LocalOrdinal, GlobalOrdinal, NodeType >

Computes the local ID and process ID corresponding to given global IDs.

Note
To implementers: This class and its subclasses implement Tpetra::Directory. We separate out the interface (Tpetra::Directory) from the implementation in order to keep backwards compatibility of the interface.

Definition at line 55 of file Tpetra_DirectoryImpl_decl.hpp.

Constructor & Destructor Documentation

template<class LocalOrdinal , class GlobalOrdinal , class NodeType >
Tpetra::Details::Directory< LocalOrdinal, GlobalOrdinal, NodeType >::Directory ( )
default

Constructor.

Subclasses' constructors may only accept the Map to check its properties or to extract data from it in some way. They may not keep a reference to the Map. This prevents circular references, since the Map itself owns the Directory.

Member Function Documentation

template<class LocalOrdinal , class GlobalOrdinal , class NodeType >
LookupStatus Tpetra::Details::Directory< LO, GO, NT >::getEntries ( const map_type map,
const Teuchos::ArrayView< const GlobalOrdinal > &  globalIDs,
const Teuchos::ArrayView< int > &  nodeIDs,
const Teuchos::ArrayView< LocalOrdinal > &  localIDs,
const bool  computeLIDs 
) const

Find process IDs and (optionally) local IDs for the given global IDs.

Precondition
nodeIDs.size() == globalIDs.size()
! computeLIDs || localIDs.size() == globalIDs.size()
Parameters
map[in] The Directory's Map. This must be the same as given to the Directory's constructor. Directory may not keep a reference to the Map, in order to avoid circular references between a Map and its Directory.
globalIDs[in] The global IDs for which to find process IDs (and optionally local IDs).
nodeIDs[out] The process IDs corresponding to the given global IDs. If a global ID does not belong to any process, the corresponding entry of nodeIDs will be -1.
localIDs[out] If computeLIDs is true, we fill this with the local IDs corresponding to the given global IDs. If a given global ID does not correspond to a local ID, the corresponding entry will be Teuchos::OrdinalTraits<LocalOrdinal>::invalid().
computeLIDs[in] Whether to fill in localIDs.
Returns
If at least one GID was not present in the directory, return IDNotPresent. Otherwise, return AllIDsPresent.
Note
To implementers: The implementation of this method first performs input validation, then invokes getEntriesImpl() (implemented in the subclass) to do the work.

Definition at line 36 of file Tpetra_DirectoryImpl_def.hpp.

template<class LocalOrdinal , class GlobalOrdinal , class NodeType >
virtual bool Tpetra::Details::Directory< LocalOrdinal, GlobalOrdinal, NodeType >::isOneToOne ( const Teuchos::Comm< int > &  comm) const
pure virtual

Whether the Directory's input Map is (globally) one to one.

This method should always be treated as a collective on all processes in the given communicator, which must be the same as the input Map's communicator. Not all implementations necessarily communicate.

Implemented in Tpetra::Details::DistributedNoncontiguousDirectory< LocalOrdinal, GlobalOrdinal, NodeType >, Tpetra::Details::DistributedContiguousDirectory< LocalOrdinal, GlobalOrdinal, NodeType >, Tpetra::Details::ContiguousUniformDirectory< LocalOrdinal, GlobalOrdinal, NodeType >, and Tpetra::Details::ReplicatedDirectory< LocalOrdinal, GlobalOrdinal, NodeType >.

template<class LocalOrdinal , class GlobalOrdinal , class NodeType >
virtual LookupStatus Tpetra::Details::Directory< LocalOrdinal, GlobalOrdinal, NodeType >::getEntriesImpl ( const map_type map,
const Teuchos::ArrayView< const GlobalOrdinal > &  globalIDs,
const Teuchos::ArrayView< int > &  nodeIDs,
const Teuchos::ArrayView< LocalOrdinal > &  localIDs,
const bool  computeLIDs 
) const
protectedpure virtual

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