Stratimikos Package Browser (Single Doxygen Collection) Version of the Day
Loading...
Searching...
No Matches
Thyra_Amesos2LinearOpWithSolveFactory_decl.hpp
Go to the documentation of this file.
1/*
2// @HEADER
3// ***********************************************************************
4//
5// Stratimikos: Thyra-based strategies for linear solvers
6// Copyright (2006) Sandia Corporation
7//
8// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
9// license for use of this work by or on behalf of the U.S. Government.
10//
11// Redistribution and use in source and binary forms, with or without
12// modification, are permitted provided that the following conditions are
13// met:
14//
15// 1. Redistributions of source code must retain the above copyright
16// notice, this list of conditions and the following disclaimer.
17//
18// 2. Redistributions in binary form must reproduce the above copyright
19// notice, this list of conditions and the following disclaimer in the
20// documentation and/or other materials provided with the distribution.
21//
22// 3. Neither the name of the Corporation nor the names of the
23// contributors may be used to endorse or promote products derived from
24// this software without specific prior written permission.
25//
26// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37//
38// Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov)
39//
40// ***********************************************************************
41// @HEADER
42*/
43
44#ifndef THYRA_AMESOS2_LINEAR_OP_WITH_SOLVE_FACTORY_DECL_HPP
45#define THYRA_AMESOS2_LINEAR_OP_WITH_SOLVE_FACTORY_DECL_HPP
46
47#include "Thyra_LinearOpWithSolveFactoryBase.hpp"
48#include "Thyra_TpetraThyraWrappers.hpp"
50#include "Amesos2.hpp"
51#include "Amesos2_Version.hpp"
52#include "Teuchos_StandardMemberCompositionMacros.hpp"
53#include "Teuchos_StandardCompositionMacros.hpp"
54#include "Trilinos_Details_LinearSolver.hpp"
55#include "Trilinos_Details_LinearSolverFactory.hpp"
57
58namespace Thyra {
59
60template<typename Scalar>
61class Amesos2LinearOpWithSolveFactory : public LinearOpWithSolveFactoryBase<Scalar> {
62public:
67
70
72 static const std::string SolverType_name;
74 static const std::string RefactorizationPolicy_name;
76 static const std::string ThrowOnPreconditionerInput_name;
78 static const std::string Amesos2_Settings_name;
79
81
84
87
91 const Amesos2::ESolverType solverType
92#ifdef HAVE_AMESOS2_KLU2
94#else
95 = Amesos2::LAPACK,
96#endif
97 const Amesos2::ERefactorizationPolicy refactorizationPolicy
99 const bool throwOnPrecInput = true
100 );
101
103
106
108 bool isCompatible( const LinearOpSourceBase<Scalar> &fwdOpSrc ) const;
109
111 Teuchos::RCP<LinearOpWithSolveBase<Scalar> > createOp() const;
112
114 void initializeOp(
115 const Teuchos::RCP<const LinearOpSourceBase<Scalar> > &fwdOpSrc,
116 LinearOpWithSolveBase<Scalar> *Op,
117 const ESupportSolveUse supportSolveUse
118 ) const;
119
121 bool supportsPreconditionerInputType(const EPreconditionerInputType precOpType) const;
122
127 const Teuchos::RCP<const LinearOpSourceBase<Scalar> > &fwdOpSrc,
128 const Teuchos::RCP<const PreconditionerBase<Scalar> > &prec,
129 LinearOpWithSolveBase<Scalar> *Op,
130 const ESupportSolveUse supportSolveUse
131 ) const;
132
137 const Teuchos::RCP<const LinearOpSourceBase<Scalar> > &fwdOpSrc,
138 const Teuchos::RCP<const LinearOpSourceBase<Scalar> > &approxFwdOpSrc,
139 LinearOpWithSolveBase<Scalar> *Op,
140 const ESupportSolveUse supportSolveUse
141 ) const;
142
144 void uninitializeOp(
145 LinearOpWithSolveBase<Scalar> *Op,
146 Teuchos::RCP<const LinearOpSourceBase<Scalar> > *fwdOpSrc,
147 Teuchos::RCP<const PreconditionerBase<Scalar> > *prec,
148 Teuchos::RCP<const LinearOpSourceBase<Scalar> > *approxFwdOpSrc,
149 ESupportSolveUse *supportSolveUse
150 ) const;
151
153
156
158 void setParameterList(Teuchos::RCP<Teuchos::ParameterList> const& paramList);
160 Teuchos::RCP<Teuchos::ParameterList> getNonconstParameterList();
162 Teuchos::RCP<Teuchos::ParameterList> unsetParameterList();
164 Teuchos::RCP<const Teuchos::ParameterList> getParameterList() const;
166 Teuchos::RCP<const Teuchos::ParameterList> getValidParameters() const;
167
169
172
174 std::string description() const;
175
177
178private:
179
180 // /////////////////////////
181 // Private data members
182
186 Teuchos::RCP<Teuchos::ParameterList> paramList_;
187
188 // /////////////////////////
189 // Private member functions
190
191 static Teuchos::RCP<const Teuchos::ParameterList>
193
194};
195
196} // namespace Thyra
197
198#endif // THYRA_AMESOS2_LINEAR_OP_WITH_SOLVE_FACTORY_HPP
Teuchos::RCP< LinearOpWithSolveBase< Scalar > > createOp() const
static Teuchos::RCP< const Teuchos::ParameterList > generateAndGetValidParameters()
Teuchos::RCP< const Teuchos::ParameterList > getParameterList() const
typename Amesos2LinearOpWithSolve< Scalar >::MV MV
void uninitializeOp(LinearOpWithSolveBase< Scalar > *Op, Teuchos::RCP< const LinearOpSourceBase< Scalar > > *fwdOpSrc, Teuchos::RCP< const PreconditionerBase< Scalar > > *prec, Teuchos::RCP< const LinearOpSourceBase< Scalar > > *approxFwdOpSrc, ESupportSolveUse *supportSolveUse) const
typename Amesos2LinearOpWithSolve< Scalar >::MAT MAT
Teuchos::RCP< Teuchos::ParameterList > getNonconstParameterList()
bool isCompatible(const LinearOpSourceBase< Scalar > &fwdOpSrc) const
void initializeOp(const Teuchos::RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
bool supportsPreconditionerInputType(const EPreconditionerInputType precOpType) const
Returns false .
void initializePreconditionedOp(const Teuchos::RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, const Teuchos::RCP< const PreconditionerBase< Scalar > > &prec, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
Throws exception if this->throwOnPrecInput()==true and calls this->initializeOp(fwdOpSrc,...
typename Amesos2LinearOpWithSolve< Scalar >::Solver Solver
void setParameterList(Teuchos::RCP< Teuchos::ParameterList > const &paramList)
typename Amesos2LinearOpWithSolve< Scalar >::ConverterT ConverterT
void initializePreconditionedOp(const Teuchos::RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, const Teuchos::RCP< const LinearOpSourceBase< Scalar > > &approxFwdOpSrc, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
Throws exception if this->throwOnPrecInput()==true and calls this->initializeOp(fwdOpSrc,...
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const
TpetraOperatorVectorExtraction< Scalar > ConverterT
ERefactorizationPolicy
The policy used on refactoring a matrix.
@ REPIVOT_ON_REFACTORIZATION
Completely new pivoting will be used on refactorizations!