Teko Version of the Day
Loading...
Searching...
No Matches
Teko_NeumannSeriesPreconditionerFactoryDecl.hpp
1/*
2// @HEADER
3//
4// ***********************************************************************
5//
6// Teko: A package for block and physics based preconditioning
7// Copyright 2010 Sandia Corporation
8//
9// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
10// the U.S. Government retains certain rights in this software.
11//
12// Redistribution and use in source and binary forms, with or without
13// modification, are permitted provided that the following conditions are
14// met:
15//
16// 1. Redistributions of source code must retain the above copyright
17// notice, this list of conditions and the following disclaimer.
18//
19// 2. Redistributions in binary form must reproduce the above copyright
20// notice, this list of conditions and the following disclaimer in the
21// documentation and/or other materials provided with the distribution.
22//
23// 3. Neither the name of the Corporation nor the names of the
24// contributors may be used to endorse or promote products derived from
25// this software without specific prior written permission.
26//
27// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
28// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
30// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
31// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
32// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
33// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
34// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
35// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
36// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
37// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38//
39// Questions? Contact Eric C. Cyr (eccyr@sandia.gov)
40//
41// ***********************************************************************
42//
43// @HEADER
44
45*/
46
47#ifndef __Teko_NeumannSeriesPreconditionerFactoryDecl_hpp__
48#define __Teko_NeumannSeriesPreconditionerFactoryDecl_hpp__
49
50#include "Teuchos_ParameterListAcceptor.hpp"
51
52// Thyra includes
53#include "Thyra_PreconditionerFactoryBase.hpp"
54
55// Teko includes
56#include "Teko_Utilities.hpp"
57
58namespace Teko {
59
60using Teuchos::RCP;
61
62template <typename ScalarT>
63class NeumannSeriesPreconditionerFactory
64 : public virtual Thyra::PreconditionerFactoryBase<ScalarT> {
65public:
66
67 NeumannSeriesPreconditionerFactory();
68
70 bool isCompatible(const Thyra::LinearOpSourceBase<ScalarT> &fwdOpSrc) const;
71
73 RCP<Thyra::PreconditionerBase<ScalarT> > createPrec() const;
74
85 void initializePrec(const RCP<const Thyra::LinearOpSourceBase<ScalarT> > & fwdOpSrc,
86 const RCP<const Thyra::MultiVectorBase<ScalarT> > & solnVec,
87 Thyra::PreconditionerBase<ScalarT> * precOp,
88 const Thyra::ESupportSolveUse supportSolveUse) const;
89
98 void initializePrec(const RCP<const Thyra::LinearOpSourceBase<ScalarT> > & fwdOpSrc,
99 Thyra::PreconditionerBase<ScalarT> * precOp,
100 const Thyra::ESupportSolveUse supportSolveUse) const;
101
103 void uninitializePrec(Thyra::PreconditionerBase<ScalarT> * prec,
104 RCP<const Thyra::LinearOpSourceBase<ScalarT> > * fwdOpSrc,
105 Thyra::ESupportSolveUse *supportSolveUse) const;
106
109
111 void setParameterList(Teuchos::RCP<Teuchos::ParameterList> const& paramList);
112
114 Teuchos::RCP<Teuchos::ParameterList> getNonconstParameterList();
115
117 Teuchos::RCP<Teuchos::ParameterList> unsetParameterList();
118
120 Teuchos::RCP<const Teuchos::ParameterList> getParameterList() const;
121
123 Teuchos::RCP<const Teuchos::ParameterList> getValidParameters() const;
125
128
130 std::string description() const;
131
133
134protected:
136 Teuchos::RCP<Teuchos::ParameterList> paramList_;
137
138 int numberOfTerms_;
139 Teko::DiagonalType scalingType_;
140};
141
142} // end namespace Teko
143
144#endif
DiagonalType
Type describing the type of diagonal to construct.