Teko  Version of the Day
 All Classes Files Functions Variables Pages
Teko_LU2x2DiagonalStrategy.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_LU2x2DiagonalStrategy_hpp__
11 #define __Teko_LU2x2DiagonalStrategy_hpp__
12 
13 #include "Teko_LU2x2Strategy.hpp"
14 
15 // Teuchos includes
16 #include "Teuchos_Time.hpp"
17 
18 namespace Teko {
19 
30  public:
33 
35  LU2x2DiagonalStrategy(const Teuchos::RCP<InverseFactory>& invFA,
36  const Teuchos::RCP<InverseFactory>& invS);
37 
40 
42  virtual const Teko::LinearOp getHatInvA00(const Teko::BlockedLinearOp& A,
43  BlockPreconditionerState& state) const;
44 
46  virtual const Teko::LinearOp getTildeInvA00(const Teko::BlockedLinearOp& A,
47  BlockPreconditionerState& state) const;
48 
51  virtual const Teko::LinearOp getInvS(const Teko::BlockedLinearOp& A,
52  BlockPreconditionerState& state) const;
53 
65  virtual void initializeFromParameterList(const Teuchos::ParameterList& settings,
66  const InverseLibrary& invLib);
67 
68  protected:
71  static void buildTimers();
72 
79  void initializeState(const Teko::BlockedLinearOp& A, BlockPreconditionerState& state) const;
80 
81  // how to invert the matrices
82  Teuchos::RCP<InverseFactory> invFactoryA00_; // for \tilde{A_00}\f$
83  Teuchos::RCP<InverseFactory> invFactoryS_;
84 
85  DiagonalType a00InverseType_;
86 
87  static Teuchos::RCP<Teuchos::Time> initTimer_;
88  static Teuchos::RCP<Teuchos::Time> invSTimer_;
89  static Teuchos::RCP<Teuchos::Time> invA00Timer_;
90  static Teuchos::RCP<Teuchos::Time> opsTimer_;
91 };
92 
93 } // end namespace Teko
94 
95 #endif
virtual const Teko::LinearOp getTildeInvA00(const Teko::BlockedLinearOp &A, BlockPreconditionerState &state) const
Strategy for computing and in the LU2x2PreconditionerFactory. Uses the diagonal of to build ...
An implementation of a state object for block preconditioners.
Abstract strategy for computing inv(F) and inv(S) in the LU2x2PreconditionerFactory.
void initializeState(const Teko::BlockedLinearOp &A, BlockPreconditionerState &state) const
virtual const Teko::LinearOp getHatInvA00(const Teko::BlockedLinearOp &A, BlockPreconditionerState &state) const
virtual ~LU2x2DiagonalStrategy()
Destructor (does nothing)
virtual const Teko::LinearOp getInvS(const Teko::BlockedLinearOp &A, BlockPreconditionerState &state) const
virtual void initializeFromParameterList(const Teuchos::ParameterList &settings, const InverseLibrary &invLib)
This function builds the internals of the state from a parameter list.