Ifpack2 Templated Preconditioning Package Version 1.0
Loading...
Searching...
No Matches
Ifpack2_OverlappingPartitioner_decl.hpp
1// @HEADER
2// *****************************************************************************
3// Ifpack2: Templated Object-Oriented Algebraic Preconditioner Package
4//
5// Copyright 2009 NTESS and the Ifpack2 contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef IFPACK2_OVERLAPPINGPARTITIONER_DECL_HPP
11#define IFPACK2_OVERLAPPINGPARTITIONER_DECL_HPP
12
13#include "Ifpack2_ConfigDefs.hpp"
14#include "Ifpack2_Partitioner.hpp"
15#include "Tpetra_RowGraph.hpp"
16
17namespace Ifpack2 {
18
44template <class GraphType>
45class OverlappingPartitioner : public Partitioner<GraphType> {
46 public:
47 typedef typename GraphType::local_ordinal_type local_ordinal_type;
48 typedef typename GraphType::global_ordinal_type global_ordinal_type;
49 typedef typename GraphType::node_type node_type;
50 typedef typename GraphType::nonconst_global_inds_host_view_type nonconst_global_inds_host_view_type;
51 typedef typename GraphType::nonconst_local_inds_host_view_type nonconst_local_inds_host_view_type;
52
53 typedef Tpetra::RowGraph<local_ordinal_type, global_ordinal_type, node_type> row_graph_type;
54
56 OverlappingPartitioner(const Teuchos::RCP<const row_graph_type>& graph);
57
60
66 int numLocalParts() const;
67
69 int overlappingLevel() const;
70
74 local_ordinal_type operator()(const local_ordinal_type MyRow) const;
75
77 local_ordinal_type
78 operator()(const local_ordinal_type i, const local_ordinal_type j) const;
79
81 size_t numRowsInPart(const local_ordinal_type Part) const;
82
84 void rowsInPart(const local_ordinal_type Part, Teuchos::ArrayRCP<local_ordinal_type>& List) const;
85
87 virtual Teuchos::ArrayView<const local_ordinal_type>
89
91
96 virtual void setParameters(Teuchos::ParameterList& List);
97
99
103 virtual void setPartitionParameters(Teuchos::ParameterList& List) = 0;
104
106 virtual void compute();
107
109 virtual void computePartitions() = 0;
110
112 virtual void computeOverlappingPartitions();
113
115 virtual bool isComputed() const;
116
118 virtual std::ostream& print(std::ostream& os) const;
119
121
122
124 std::string description() const;
125
127 void describe(Teuchos::FancyOStream& out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const;
128
130
131 protected:
138
144 Teuchos::Array<local_ordinal_type> Partition_;
145
151 Teuchos::Array<Teuchos::ArrayRCP<local_ordinal_type> > Parts_;
152
154 Teuchos::RCP<const row_graph_type> Graph_;
155
158
161
164
170}; // class Ifpack2::OverlappingPartitioner
171
172} // namespace Ifpack2
173
174#endif // IFPACK2_OVERLAPPINGPARTITIONER_DECL_HPP
Create overlapping partitions of a local graph.
Definition Ifpack2_OverlappingPartitioner_decl.hpp:45
Teuchos::Array< local_ordinal_type > Partition_
Mapping from local row to partition number.
Definition Ifpack2_OverlappingPartitioner_decl.hpp:144
size_t numRowsInPart(const local_ordinal_type Part) const
the number of rows contained in the given partition.
Definition Ifpack2_OverlappingPartitioner_def.hpp:83
bool verbose_
If true, information are reported to stdout.
Definition Ifpack2_OverlappingPartitioner_decl.hpp:163
virtual std::ostream & print(std::ostream &os) const
Prints basic information on iostream. This function is used by operator<<.
Definition Ifpack2_OverlappingPartitioner_def.hpp:399
virtual void compute()
Computes the partitions. Returns 0 if successful.
Definition Ifpack2_OverlappingPartitioner_def.hpp:156
virtual void setParameters(Teuchos::ParameterList &List)
Set all the parameters for the partitioner.
Definition Ifpack2_OverlappingPartitioner_def.hpp:115
virtual bool isComputed() const
Returns true if partitions have been computed successfully.
Definition Ifpack2_OverlappingPartitioner_def.hpp:392
int OverlappingLevel_
Level of overlap.
Definition Ifpack2_OverlappingPartitioner_decl.hpp:157
virtual void computeOverlappingPartitions()
Computes the partitions. Returns 0 if successful.
Definition Ifpack2_OverlappingPartitioner_def.hpp:207
int numLocalParts() const
Number of computed local partitions.
Definition Ifpack2_OverlappingPartitioner_def.hpp:36
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const
Print the object with some verbosity level to an FancyOStream object.
Definition Ifpack2_OverlappingPartitioner_def.hpp:422
Teuchos::RCP< const row_graph_type > Graph_
The graph to be partitioned.
Definition Ifpack2_OverlappingPartitioner_decl.hpp:154
virtual void setPartitionParameters(Teuchos::ParameterList &List)=0
Set all the parameters for the partitioner.
bool IsComputed_
If true, the graph has been successfully partitioned.
Definition Ifpack2_OverlappingPartitioner_decl.hpp:160
Teuchos::Array< Teuchos::ArrayRCP< local_ordinal_type > > Parts_
Mapping from partition to all rows it contains.
Definition Ifpack2_OverlappingPartitioner_decl.hpp:151
void rowsInPart(const local_ordinal_type Part, Teuchos::ArrayRCP< local_ordinal_type > &List) const
Fill List with the local indices of the rows in the (overlapping) partition Part.
Definition Ifpack2_OverlappingPartitioner_def.hpp:96
virtual void computePartitions()=0
Computes the partitions. Returns 0 if successful.
int overlappingLevel() const
The number of levels of overlap.
Definition Ifpack2_OverlappingPartitioner_def.hpp:41
int NumLocalParts_
Number of local subgraphs.
Definition Ifpack2_OverlappingPartitioner_decl.hpp:137
bool maintainSparsity_
If true, only add row to partition (block) if doing so won't add new columns to the column map.
Definition Ifpack2_OverlappingPartitioner_decl.hpp:169
virtual ~OverlappingPartitioner()
Destructor.
Definition Ifpack2_OverlappingPartitioner_def.hpp:33
virtual Teuchos::ArrayView< const local_ordinal_type > nonOverlappingPartition() const
A view of the local indices of the nonoverlapping partitions of each local row.
Definition Ifpack2_OverlappingPartitioner_def.hpp:108
std::string description() const
Return a simple one-line description of this object.
Definition Ifpack2_OverlappingPartitioner_def.hpp:408
local_ordinal_type operator()(const local_ordinal_type MyRow) const
Local index of the nonoverlapping partition of the given row.
Definition Ifpack2_OverlappingPartitioner_def.hpp:48
Ifpack2::Partitioner:
Definition Ifpack2_Partitioner.hpp:146
Preconditioners and smoothers for Tpetra sparse matrices.
Definition Ifpack2_AdditiveSchwarz_decl.hpp:40