MueLu Version of the Day
Loading...
Searching...
No Matches
MueLu_EpetraOperator.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// MueLu: A package for multigrid based preconditioning
4//
5// Copyright 2012 NTESS and the MueLu contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef MUELU_EPETRAOPERATOR_HPP
11#define MUELU_EPETRAOPERATOR_HPP
12
14
15#include <Epetra_Operator.h>
16#include "MueLu_Hierarchy.hpp"
17// TODO: Kokkos headers
18
19#if defined(HAVE_MUELU_SERIAL) and defined(HAVE_MUELU_EPETRA)
20
21namespace MueLu {
22
27class EpetraOperator : public Epetra_Operator {
28 typedef double SC;
29 typedef int LO;
30 typedef int GO;
31 typedef Xpetra::EpetraNode NO;
32
33 typedef Xpetra::Matrix<SC, LO, GO, NO> Matrix;
34 typedef MueLu::Hierarchy<SC, LO, GO, NO> Hierarchy;
36
37 public:
39
40
42 EpetraOperator(const RCP<Hierarchy>& H)
43 : Hierarchy_(H) {}
44
46 virtual ~EpetraOperator() {}
47
49
50 int SetUseTranspose(bool /* UseTransposeBool */) { return -1; }
51
53
54
56
64 int Apply(const Epetra_MultiVector& /* X */, Epetra_MultiVector& /* Y */) const { return -1; }
65
67
78 int ApplyInverse(const Epetra_MultiVector& X, Epetra_MultiVector& Y) const;
79
81 /* Returns the quantity \f$ \| A \|_\infty\f$ such that
82 \f[\| A \|_\infty = \max_{1\lei\lem} \sum_{j=1}^n |a_{ij}| \f].
83
84 \warning This method must not be called unless HasNormInf() returns true.
85 */
86 double NormInf() const { return 0; }
88
90
91
93 const char* Label() const { return "MueLu::Hierarchy"; }
94
96 bool UseTranspose() const { return false; }
97
99 bool HasNormInf() const { return 0; }
100
102 const Epetra_Comm& Comm() const;
103
105 const Epetra_Map& OperatorDomainMap() const;
106
108 const Epetra_Map& OperatorRangeMap() const;
109
111
113
114
116 RCP<Hierarchy> GetHierarchy() const { return Hierarchy_; }
117
119
120 private:
121 RCP<Hierarchy> Hierarchy_;
122};
123
124} // namespace MueLu
125
126#endif // HAVE_MUELU_EPETRA and HAVE_MUELU_SERIAL
127
128#endif // MUELU_EPETRAOPERATOR_HPP
Provides methods to build a multigrid hierarchy and apply multigrid cycles.
MueLu utility class.
Namespace for MueLu classes and methods.