Stratimikos Version of the Day
Loading...
Searching...
No Matches
Thyra_AztecOOLinearOpWithSolveFactory.hpp
1// @HEADER
2// ***********************************************************************
3//
4// Stratimikos: Thyra-based strategies for linear solvers
5// Copyright (2006) Sandia Corporation
6//
7// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8// license for use of this work by or on behalf of the U.S. Government.
9//
10// Redistribution and use in source and binary forms, with or without
11// modification, are permitted provided that the following conditions are
12// met:
13//
14// 1. Redistributions of source code must retain the above copyright
15// notice, this list of conditions and the following disclaimer.
16//
17// 2. Redistributions in binary form must reproduce the above copyright
18// notice, this list of conditions and the following disclaimer in the
19// documentation and/or other materials provided with the distribution.
20//
21// 3. Neither the name of the Corporation nor the names of the
22// contributors may be used to endorse or promote products derived from
23// this software without specific prior written permission.
24//
25// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36//
37// Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov)
38//
39// ***********************************************************************
40// @HEADER
41
42#ifndef THYRA_AZTECOO_LINEAR_OP_WITH_SOLVE_FACTORY_HPP
43#define THYRA_AZTECOO_LINEAR_OP_WITH_SOLVE_FACTORY_HPP
44
45#include "Thyra_LinearOpWithSolveFactoryBase.hpp"
46#include "Thyra_EpetraOperatorViewExtractorBase.hpp"
47#include "Teuchos_StandardMemberCompositionMacros.hpp"
48#include "Teuchos_StandardCompositionMacros.hpp"
49
50
51namespace Teuchos { class ParameterList; }
52
53
54namespace Thyra {
55
56
79class AztecOOLinearOpWithSolveFactory : public LinearOpWithSolveFactoryBase<double> {
80public:
81
84
87 Teuchos::RCP<Teuchos::ParameterList> const& paramList = Teuchos::null
88 );
89
98 STANDARD_COMPOSITION_MEMBERS( EpetraOperatorViewExtractorBase, epetraFwdOpViewExtractor );
99
101
105 bool acceptsPreconditionerFactory() const;
108 const Teuchos::RCP<PreconditionerFactoryBase<double> > &precFactory,
109 const std::string &precFactoryName
110 );
112 Teuchos::RCP<PreconditionerFactoryBase<double> > getPreconditionerFactory() const;
115 Teuchos::RCP<PreconditionerFactoryBase<double> > *precFactory,
116 std::string *precFactoryName
117 );
119 bool isCompatible( const LinearOpSourceBase<double> &fwdOpSrc ) const;
121 Teuchos::RCP<LinearOpWithSolveBase<double> > createOp() const;
123 void initializeOp(
124 const Teuchos::RCP<const LinearOpSourceBase<double> > &fwdOpSrc,
125 LinearOpWithSolveBase<double> *Op,
126 const ESupportSolveUse supportSolveUse
127 ) const;
130 const Teuchos::RCP<const LinearOpSourceBase<double> > &fwdOpSrc,
131 LinearOpWithSolveBase<double> *Op
132 ) const;
134 void uninitializeOp(
135 LinearOpWithSolveBase<double> *Op,
136 Teuchos::RCP<const LinearOpSourceBase<double> > *fwdOpSrc,
137 Teuchos::RCP<const PreconditionerBase<double> > *prec,
138 Teuchos::RCP<const LinearOpSourceBase<double> > *approxFwdOpSrc,
139 ESupportSolveUse *supportSolveUse
140 ) const;
142 bool supportsPreconditionerInputType(const EPreconditionerInputType precOpType) const;
145 const Teuchos::RCP<const LinearOpSourceBase<double> > &fwdOpSrc,
146 const Teuchos::RCP<const PreconditionerBase<double> > &prec,
147 LinearOpWithSolveBase<double> *Op,
148 const ESupportSolveUse supportSolveUse
149 ) const;
152 const Teuchos::RCP<const LinearOpSourceBase<double> > &fwdOpSrc,
153 const Teuchos::RCP<const LinearOpSourceBase<double> > &approxFwdOpSrc,
154 LinearOpWithSolveBase<double> *Op,
155 const ESupportSolveUse supportSolveUse
156 ) const;
158
161
163 void setParameterList(Teuchos::RCP<Teuchos::ParameterList> const& paramList);
165 Teuchos::RCP<Teuchos::ParameterList> getNonconstParameterList();
167 Teuchos::RCP<Teuchos::ParameterList> unsetParameterList();
169 Teuchos::RCP<const Teuchos::ParameterList> getParameterList() const;
171 Teuchos::RCP<const Teuchos::ParameterList> getValidParameters() const;
172
174
177
179 std::string description() const;
180
182
183private:
184
185 // /////////////////////////
186 // Private data members
187
188 Teuchos::RCP<PreconditionerFactoryBase<double> > precFactory_;
189 std::string precFactoryName_;
190 Teuchos::RCP<Teuchos::ParameterList> thisValidParamList_;
191 Teuchos::RCP<Teuchos::ParameterList> paramList_;
192
193 int defaultFwdMaxIterations_;
194 double defaultFwdTolerance_;
195 int defaultAdjMaxIterations_;
196 double defaultAdjTolerance_;
197 bool outputEveryRhs_;
198
199 bool useAztecPrec_;
200
201 // /////////////////////////
202 // Private member functions
203
204 static Teuchos::RCP<const Teuchos::ParameterList> generateAndGetValidParameters();
205 void updateThisValidParamList();
206
207 void initializeOp_impl(
208 const Teuchos::RCP<const LinearOpSourceBase<double> > &fwdOpSrc,
209 const Teuchos::RCP<const PreconditionerBase<double> > &prec,
210 const Teuchos::RCP<const LinearOpSourceBase<double> > &approxFwdOpSrc,
211 const bool reusePrec,
212 LinearOpWithSolveBase<double> *Op
213 ) const;
214
215};
216
218
219} // namespace Thyra
220
221#endif // THYRA_AZTECOO_LINEAR_OP_WITH_SOLVE_FACTORY_HPP
LinearOpWithSolveFactoryBase subclass implemented in terms of AztecOO.
void unsetPreconditionerFactory(Teuchos::RCP< PreconditionerFactoryBase< double > > *precFactory, std::string *precFactoryName)
bool isCompatible(const LinearOpSourceBase< double > &fwdOpSrc) const
void setParameterList(Teuchos::RCP< Teuchos::ParameterList > const &paramList)
Teuchos::RCP< PreconditionerFactoryBase< double > > getPreconditionerFactory() const
void initializeApproxPreconditionedOp(const Teuchos::RCP< const LinearOpSourceBase< double > > &fwdOpSrc, const Teuchos::RCP< const LinearOpSourceBase< double > > &approxFwdOpSrc, LinearOpWithSolveBase< double > *Op, const ESupportSolveUse supportSolveUse) const
STANDARD_COMPOSITION_MEMBERS(EpetraOperatorViewExtractorBase, epetraFwdOpViewExtractor)
Set the strategy object used to extract an Epetra_Operator view of an input forward operator.
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const
void initializeOp(const Teuchos::RCP< const LinearOpSourceBase< double > > &fwdOpSrc, LinearOpWithSolveBase< double > *Op, const ESupportSolveUse supportSolveUse) const
void initializeAndReuseOp(const Teuchos::RCP< const LinearOpSourceBase< double > > &fwdOpSrc, LinearOpWithSolveBase< double > *Op) const
void setPreconditionerFactory(const Teuchos::RCP< PreconditionerFactoryBase< double > > &precFactory, const std::string &precFactoryName)
void uninitializeOp(LinearOpWithSolveBase< double > *Op, Teuchos::RCP< const LinearOpSourceBase< double > > *fwdOpSrc, Teuchos::RCP< const PreconditionerBase< double > > *prec, Teuchos::RCP< const LinearOpSourceBase< double > > *approxFwdOpSrc, ESupportSolveUse *supportSolveUse) const
Teuchos::RCP< Teuchos::ParameterList > getNonconstParameterList()
Teuchos::RCP< Teuchos::ParameterList > unsetParameterList()
bool supportsPreconditionerInputType(const EPreconditionerInputType precOpType) const
Teuchos::RCP< LinearOpWithSolveBase< double > > createOp() const
Teuchos::RCP< const Teuchos::ParameterList > getParameterList() const
void initializePreconditionedOp(const Teuchos::RCP< const LinearOpSourceBase< double > > &fwdOpSrc, const Teuchos::RCP< const PreconditionerBase< double > > &prec, LinearOpWithSolveBase< double > *Op, const ESupportSolveUse supportSolveUse) const

Generated for Stratimikos by doxygen 1.9.6