Teko Version of the Day
Loading...
Searching...
No Matches
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
19namespace Teko {
20
21typedef 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
Abstract class which block preconditioner factories in Teko should be based on.
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.
An implementation of a state object for block preconditioners.
LinearOp buildPreconditionerOperator(BlockedLinearOp &blo, BlockPreconditionerState &state) const
Create the Gauss-Seidel preconditioner operator.
Teuchos::RCP< const BlockInvDiagonalStrategy > invOpsStrategy_
some members
GaussSeidelPreconditionerFactory(TriSolveType solveType, const LinearOp &invD0, const LinearOp &invD1)
virtual void initializeFromParameterList(const Teuchos::ParameterList &pl)
Initialize from a parameter list.