Teko  Version of the Day
 All Classes Files Functions Variables Pages
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_Config.h"
14 
15 #ifdef Teko_ENABLE_Isorropia
16 
17 // Teko includes
18 #include "Teko_PreconditionerState.hpp"
19 #include "Teko_PreconditionerFactory.hpp"
20 
21 // Isorropia includes
22 #include "Isorropia_EpetraProber.hpp"
23 
24 namespace Teko {
25 
31 class ProbingPreconditionerFactory : public virtual Teko::PreconditionerFactory {
32  public:
34 
35 
38  ProbingPreconditionerFactory();
39 
41 
44  LinearOp buildPreconditionerOperator(LinearOp& lo, PreconditionerState& state) const;
45 
47  virtual void initializeFromParameterList(const Teuchos::ParameterList& pl);
48 
49  void setGraphOperator(const Teko::LinearOp& graphOp);
50  void setGraph(const Teuchos::RCP<const Epetra_CrsGraph>& graph);
51 
52  void setProberList(const Teuchos::ParameterList& list);
53 
54  void setInverseFactory(const Teuchos::RCP<Teko::InverseFactory>& invFactory) {
55  invFactory_ = invFactory;
56  }
57 
58  protected:
60  Teuchos::RCP<Isorropia::Epetra::Prober> prober;
61  Teuchos::RCP<Teko::InverseFactory> invFactory_;
62 };
63 
64 } // end namespace Teko
65 
66 #endif
67 #endif
Abstract class which block preconditioner factories in Teko should be based on.