Teko  Version of the Day
 All Classes Files Functions Variables Pages
Teko_GaussSeidelPreconditionerFactory.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_GaussSeidelPreconditionerFactory_hpp__
11 #define __Teko_GaussSeidelPreconditionerFactory_hpp__
12 
13 #include "Teuchos_RCP.hpp"
14 
15 #include "Teko_BlockPreconditionerFactory.hpp"
16 #include "Teko_BlockInvDiagonalStrategy.hpp"
17 #include "Teko_Utilities.hpp"
18 
19 namespace Teko {
20 
21 typedef enum { GS_UseLowerTriangle, GS_UseUpperTriangle } TriSolveType;
22 
66  public:
68 
69 
73  GaussSeidelPreconditionerFactory(TriSolveType solveType, const LinearOp& invD0,
74  const LinearOp& invD1);
75 
80  GaussSeidelPreconditionerFactory(TriSolveType solveType,
81  const RCP<const BlockInvDiagonalStrategy>& strategy);
82 
86 
88 
95  LinearOp buildPreconditionerOperator(BlockedLinearOp& blo, BlockPreconditionerState& state) const;
96 
97  protected:
99 
101  Teuchos::RCP<const BlockInvDiagonalStrategy> invOpsStrategy_;
102  TriSolveType solveType_;
103 
105  virtual void initializeFromParameterList(const Teuchos::ParameterList& pl);
106 };
107 
108 } // end namespace Teko
109 
110 #endif
virtual LinearOp buildPreconditionerOperator(BlockedLinearOp &blo, BlockPreconditionerState &state) const =0
Function that is called to build the preconditioner for the linear operator that is passed in...
Abstract class which block preconditioner factories in Teko should be based on.
A factory that creates a block Gauss Seidel preconditioner. The user must specify the solvers (or pre...
An implementation of a state object for block preconditioners.
Teuchos::RCP< const BlockInvDiagonalStrategy > invOpsStrategy_
some members
LinearOp buildPreconditionerOperator(BlockedLinearOp &blo, BlockPreconditionerState &state) const
Create the Gauss-Seidel preconditioner operator.
virtual void initializeFromParameterList(const Teuchos::ParameterList &pl)
Initialize from a parameter list.