42 #ifndef TPETRA_BLOCKMAP_DECL_HPP
43 #define TPETRA_BLOCKMAP_DECL_HPP
48 #include <Tpetra_ConfigDefs.hpp>
50 #include <Tpetra_Map.hpp>
77 class TPETRA_DEPRECATED
BlockMap :
public Teuchos::Describable {
79 typedef LocalOrdinal local_ordinal_type;
80 typedef GlobalOrdinal global_ordinal_type;
81 typedef Node node_type;
90 LocalOrdinal blockSize,
91 GlobalOrdinal indexBase,
92 const Teuchos::RCP<
const Teuchos::Comm<int> > &comm,
93 const Teuchos::RCP<Node> &node = defaultArgNode<node_type> ());
97 size_t numLocalBlocks,
98 LocalOrdinal blockSize,
99 GlobalOrdinal indexBase,
100 const Teuchos::RCP<
const Teuchos::Comm<int> > &comm,
101 const Teuchos::RCP<Node> &node = defaultArgNode<node_type> ());
106 const Teuchos::ArrayView<const GlobalOrdinal>& myGlobalBlockIDs,
107 const Teuchos::ArrayView<const GlobalOrdinal>& myFirstGlobalPointInBlocks,
108 const Teuchos::ArrayView<const LocalOrdinal>& myBlockSizes,
109 const GlobalOrdinal indexBase,
110 const Teuchos::RCP<
const Teuchos::Comm<int> > &comm,
111 const Teuchos::RCP<Node> &node = defaultArgNode<node_type> ());
118 BlockMap (
const Teuchos::RCP<const point_map_type>& pointMap,
119 const Teuchos::ArrayView<const GlobalOrdinal>& myGlobalBlockIDs,
120 const Teuchos::ArrayView<const LocalOrdinal>& myBlockSizes);
132 BlockMap (
const Teuchos::RCP<const point_map_type>& pointMap,
133 const Teuchos::ArrayView<const GlobalOrdinal>& myGlobalBlockIDs,
134 const Teuchos::ArrayView<const LocalOrdinal>& myBlockSizes,
135 const Teuchos::RCP<Node>& node);
153 size_t getNodeNumBlocks()
const;
156 Teuchos::ArrayView<const GlobalOrdinal> getNodeBlockIDs()
const;
159 bool isBlockSizeConstant()
const;
162 Teuchos::ArrayRCP<const LocalOrdinal> getNodeFirstPointInBlocks()
const;
168 Teuchos::ArrayRCP<const LocalOrdinal> getNodeFirstPointInBlocks_Device()
const;
173 GlobalOrdinal getGlobalBlockID(LocalOrdinal localBlockID)
const;
178 LocalOrdinal getLocalBlockID(GlobalOrdinal globalBlockID)
const;
184 LocalOrdinal getLocalBlockSize(LocalOrdinal localBlockID)
const;
190 LocalOrdinal getFirstLocalPointInLocalBlock(LocalOrdinal localBlockID)
const;
196 GlobalOrdinal getFirstGlobalPointInLocalBlock(LocalOrdinal localBlockID)
const;
200 getRemoteBlockInfo (
const Teuchos::ArrayView<const GlobalOrdinal>& GBIDs,
201 const Teuchos::ArrayView<GlobalOrdinal>& firstGlobalPointInBlocks,
202 const Teuchos::ArrayView<LocalOrdinal>& blockSizes)
const;
207 initWithPointMap (
const Teuchos::RCP<const point_map_type>& pointMap,
208 const Teuchos::ArrayView<const GlobalOrdinal>& myGlobalBlockIDs,
209 const Teuchos::ArrayView<const LocalOrdinal>& blockSizes,
210 const Teuchos::RCP<Node>& node);
212 void setup_noncontig_mapping();
214 Teuchos::RCP<const point_map_type> pointMap_;
216 Teuchos::Array<GlobalOrdinal> myGlobalBlockIDs_;
217 Teuchos::ArrayRCP<LocalOrdinal> pbuf_firstPointInBlock_;
218 Teuchos::ArrayRCP<const LocalOrdinal> view_firstPointInBlock_;
219 bool blockIDsAreContiguous_;
220 LocalOrdinal constantBlockSize_;
224 std::map<GlobalOrdinal,LocalOrdinal> map_global_to_local_;
228 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
229 Teuchos::RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
234 typedef Map<LocalOrdinal, GlobalOrdinal, Node> point_map_type;
237 const GST numGlobalElems = Teuchos::OrdinalTraits<GST>::invalid ();
238 const GlobalOrdinal indexBase = blockMap.
getPointMap ()->getIndexBase ();
239 RCP<const Teuchos::Comm<int> > comm = blockMap.
getPointMap ()->getComm ();
240 RCP<Node> node = blockMap.
getPointMap ()->getNode ();
244 return rcp (
new point_map_type (numGlobalElems, blockMap.
getNodeBlockIDs (),
245 indexBase, comm, node));
250 #endif // ! TPETRA_BLOCKMAP_DECL_HPP
Block-entry counterpart to Tpetra::Map.
KokkosClassic::DefaultNode::DefaultNodeType node_type
Default value of Node template parameter.
int global_ordinal_type
Default value of GlobalOrdinal template parameter.
int local_ordinal_type
Default value of LocalOrdinal template parameter.
size_t global_size_t
Global size_t object.
Teuchos::RCP< const point_map_type > getPointMap() const
Return this block Map's point-entry Map.
Describes a parallel distribution of objects over processes.
Teuchos::ArrayView< const GlobalOrdinal > getNodeBlockIDs() const
Return array-view of block-ids for this local processor.