Teko Version of the Day
Loading...
Searching...
No Matches
Teko_ProbingPreconditionerFactory.hpp
1// @HEADER
2// *****************************************************************************
3// Teko: A package for block and physics based preconditioning
4//
5// Copyright 2010 NTESS and the Teko contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef __Teko_ProbingPreconditionerFactory_hpp__
11#define __Teko_ProbingPreconditionerFactory_hpp__
12
13#include "Teko_PreconditionerState.hpp"
14#include "Teko_PreconditionerFactory.hpp"
15#include "Teko_ConfigDefs.hpp"
16
17#include "Tpetra_CrsGraph.hpp"
18#include "Tpetra_CrsMatrix.hpp"
19
20namespace Teko {
21
28 public:
30
31
35
37
40 LinearOp buildPreconditionerOperator(LinearOp& lo, PreconditionerState& state) const override;
41
43 void initializeFromParameterList(const Teuchos::ParameterList& pl) override;
44
45 void setGraphOperator(const Teko::LinearOp& graphOp);
46 void setGraph(const Teuchos::RCP<const Tpetra::CrsGraph<LO, GO, NT> >& graph);
47
48 void setInverseFactory(const Teuchos::RCP<Teko::InverseFactory>& invFactory) {
49 invFactory_ = invFactory;
50 }
51
52 protected:
53 Teuchos::RCP<const Tpetra::CrsGraph<LO, GO, NT> > graph_;
54 Teuchos::RCP<Teko::InverseFactory> invFactory_;
55
56 private:
57 Teuchos::RCP<Tpetra::CrsMatrix<ST, LO, GO, NT> > probe(const LinearOp& lo) const;
58};
59
60} // end namespace Teko
61
62#endif
Abstract class which block preconditioner factories in Teko should be based on.
An implementation of a state object preconditioners.
Preconditioner factory that builds a probing approximation to an operator and then "inverts" it as re...
LinearOp buildPreconditionerOperator(LinearOp &lo, PreconditionerState &state) const override
void initializeFromParameterList(const Teuchos::ParameterList &pl) override
Initialize from a parameter list.