Teko Version of the Day
Loading...
Searching...
No Matches
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
18namespace 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
An implementation of a state object for block preconditioners.
virtual const Teko::LinearOp getInvS(const Teko::BlockedLinearOp &A, BlockPreconditionerState &state) const
virtual const Teko::LinearOp getTildeInvA00(const Teko::BlockedLinearOp &A, BlockPreconditionerState &state) const
virtual ~LU2x2DiagonalStrategy()
Destructor (does nothing).
virtual const Teko::LinearOp getHatInvA00(const Teko::BlockedLinearOp &A, BlockPreconditionerState &state) const
void initializeState(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.
Abstract strategy for computing inv(F) and inv(S) in the LU2x2PreconditionerFactory.