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::ContiguousUniformDirectory< LocalOrdinal, GlobalOrdinal, NodeType > Class Template Reference

Implementation of Directory for a contiguous, uniformly distributed Map. More...

#include <Tpetra_DirectoryImpl_decl.hpp>

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

Public Member Functions

bool isOneToOne (const Teuchos::Comm< int > &) const override
 Whether the Directory's input Map is (globally) one to one. 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
 
Implementation of Teuchos::Describable.
std::string description () const override
 A one-line human-readable description of this object. More...
 

Protected Member Functions

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 override
 Find process IDs and (optionally) local IDs for the given global IDs. More...
 

Detailed Description

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

Implementation of Directory for a contiguous, uniformly distributed Map.

The Map may have any number of processes starting with one. Since the entries are uniformly distributed over the processes, this implementation of Directory can compute which process owns a GID (and the GID's corresponding LID) in $O(1)$ space and time.

Definition at line 179 of file Tpetra_DirectoryImpl_decl.hpp.

Member Function Documentation

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

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.

Implements Tpetra::Details::Directory< LocalOrdinal, GlobalOrdinal, NodeType >.

Definition at line 193 of file Tpetra_DirectoryImpl_decl.hpp.

template<class LO , class GO , class NT >
std::string Tpetra::Details::ContiguousUniformDirectory< LO, GO, NT >::description ( ) const
override

A one-line human-readable description of this object.

Definition at line 116 of file Tpetra_DirectoryImpl_def.hpp.

template<class LocalOrdinal , class GlobalOrdinal , class NodeType >
LookupStatus Tpetra::Details::ContiguousUniformDirectory< LO, GO, NT >::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
overrideprotectedvirtual

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

Implements Tpetra::Details::Directory< LocalOrdinal, GlobalOrdinal, NodeType >.

Definition at line 130 of file Tpetra_DirectoryImpl_def.hpp.

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
inherited

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.


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