Tpetra parallel linear algebra Version of the Day
Loading...
Searching...
No Matches
Tpetra_Directory_decl.hpp
1// @HEADER
2// ***********************************************************************
3//
4// Tpetra: Templated Linear Algebra Services Package
5// Copyright (2008) Sandia Corporation
6//
7// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8// the U.S. Government retains certain rights in this software.
9//
10// Redistribution and use in source and binary forms, with or without
11// modification, are permitted provided that the following conditions are
12// met:
13//
14// 1. Redistributions of source code must retain the above copyright
15// notice, this list of conditions and the following disclaimer.
16//
17// 2. Redistributions in binary form must reproduce the above copyright
18// notice, this list of conditions and the following disclaimer in the
19// documentation and/or other materials provided with the distribution.
20//
21// 3. Neither the name of the Corporation nor the names of the
22// contributors may be used to endorse or promote products derived from
23// this software without specific prior written permission.
24//
25// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36//
37// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38//
39// ************************************************************************
40// @HEADER
41
42#ifndef TPETRA_DIRECTORY_DECL_HPP
43#define TPETRA_DIRECTORY_DECL_HPP
44
45#include "Tpetra_ConfigDefs.hpp"
46#include "Tpetra_Map_decl.hpp"
48#include "Tpetra_TieBreak.hpp"
49#include <Teuchos_Describable.hpp>
50
51namespace Tpetra {
52
123 template<class LocalOrdinal,
124 class GlobalOrdinal,
125 class Node>
126 class Directory : public Teuchos::Describable {
127 public:
130
132
133
138 Directory ();
139
141 ~Directory ();
142
144 void initialize (const map_type& map);
145
147 void
150
152 bool initialized () const;
153
172
173
175
177 std::string description () const;
178
180
182
210 const Teuchos::ArrayView<const GlobalOrdinal>& globalIDs,
211 const Teuchos::ArrayView<int>& nodeIDs) const;
212
250 const Teuchos::ArrayView<const GlobalOrdinal>& globalIDs,
251 const Teuchos::ArrayView<int>& nodeIDs,
252 const Teuchos::ArrayView<LocalOrdinal>& localIDs) const;
253
260 bool isOneToOne (const map_type& map) const;
261
263 private:
270 typedef ::Tpetra::Details::Directory<LocalOrdinal, GlobalOrdinal, Node> base_type;
271
276 const base_type* impl_;
277
280
281 template <class LO, class GO, class N> friend class Directory;
282
286 }; // class Directory
287
288} // namespace Tpetra
289
290#endif // TPETRA_DIRECTORY_DECL_HPP
291
Declaration of implementation details of Tpetra::Directory.
Declaration of the Tpetra::Map class and related nonmember constructors.
Interface for breaking ties in ownership.
Struct that holds views of the contents of a CrsMatrix.
Computes the local ID and process ID corresponding to given global IDs.
Interface for breaking ties in ownership.
Implement mapping from global ID to process ID and local ID.
std::string description() const
A one-line human-readable description of this object.
bool isOneToOne(const map_type &map) const
Whether the Directory's input Map is (globally) one to one.
LookupStatus getDirectoryEntries(const map_type &map, const Teuchos::ArrayView< const GlobalOrdinal > &globalIDs, const Teuchos::ArrayView< int > &nodeIDs) const
Given a global ID list, return the list of their owning process IDs.
LookupStatus getDirectoryEntries(const map_type &map, const Teuchos::ArrayView< const GlobalOrdinal > &globalIDs, const Teuchos::ArrayView< int > &nodeIDs, const Teuchos::ArrayView< LocalOrdinal > &localIDs) const
Given a global ID list, return a list of their owning process IDs and their corresponding local IDs.
Map< LocalOrdinal, GlobalOrdinal, Node > map_type
Type of the Map specialization to give to the constructor.
void initialize(const map_type &map)
Initialize the Directory with its Map.
bool initialized() const
Whether the Directory is initialized.
void initialize(const map_type &map, const Tpetra::Details::TieBreak< LocalOrdinal, GlobalOrdinal > &tieBreak)
Initialize the Directory, with its Map and a TieBreak object.
A parallel distribution of indices over processes.
Namespace Tpetra contains the class and methods constituting the Tpetra library.
LookupStatus
Return status of Map remote index lookup (getRemoteIndexList()).