Ifpack2 Templated Preconditioning Package  Version 1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Ifpack2_LinePartitioner_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_LINEPARTITIONER_DECL_HPP
11 #define IFPACK2_LINEPARTITIONER_DECL_HPP
12 
13 #include "Ifpack2_ConfigDefs.hpp"
14 #include "Ifpack2_OverlappingPartitioner.hpp"
15 #include "Teuchos_ScalarTraits.hpp"
16 #include "Tpetra_MultiVector.hpp"
17 
18 namespace Ifpack2 {
19 
21 
42 
44  template<class GraphType,class Scalar>
45 class LinePartitioner : public OverlappingPartitioner<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 Tpetra::RowGraph<local_ordinal_type, global_ordinal_type, node_type> row_graph_type;
51  typedef typename Teuchos::ScalarTraits<Scalar>::magnitudeType magnitude_type;
52  typedef Tpetra::MultiVector<magnitude_type,local_ordinal_type, global_ordinal_type, node_type> multivector_type;
53 
54  typedef typename row_graph_type::nonconst_global_inds_host_view_type nonconst_global_inds_host_view_type;
55  typedef typename row_graph_type::nonconst_local_inds_host_view_type nonconst_local_inds_host_view_type;
56 
59 
61  virtual ~LinePartitioner();
62 
65 
67  void computePartitions();
68 
69 private:
70  // Useful functions
71  int Compute_Blocks_AutoLine(Teuchos::ArrayView<local_ordinal_type> blockIndices) const;
72  void local_automatic_line_search(int NumEqns, Teuchos::ArrayView <local_ordinal_type> blockIndices, local_ordinal_type last, local_ordinal_type next, local_ordinal_type LineID, double tol, Teuchos::Array<local_ordinal_type> itemp, Teuchos::Array<magnitude_type> dtemp) const;
73 
74 
75 
76  // User data
77  int NumEqns_;
79  double threshold_;
80 
81 };
82 
83 }// namespace Ifpack2
84 
85 #endif // IFPACK2_LINEPARTITIONER_DECL_HPP
LinePartitioner(const Teuchos::RCP< const row_graph_type > &graph)
Constructor.
Definition: Ifpack2_LinePartitioner_def.hpp:27
void computePartitions()
Compute the partitions.
Definition: Ifpack2_LinePartitioner_def.hpp:53
virtual ~LinePartitioner()
Destructor.
Definition: Ifpack2_LinePartitioner_def.hpp:33
Create overlapping partitions of a local graph.
Definition: Ifpack2_OverlappingPartitioner_decl.hpp:45
void setPartitionParameters(Teuchos::ParameterList &List)
Set the partitioner&#39;s parameters (none for linear partitioning).
Definition: Ifpack2_LinePartitioner_def.hpp:39
Ifpack2::LinePartitioner: A class to define partitions into a set of lines.
Definition: Ifpack2_LinePartitioner_decl.hpp:45