Thyra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
core
src
interfaces
operator_solve
fundamental
Thyra_PreconditionerFactoryBase_decl.hpp
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Thyra: Interfaces and Support for Abstract Numerical Algorithms
5
// Copyright (2004) 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 (bartlettra@ornl.gov)
38
//
39
// ***********************************************************************
40
// @HEADER
41
42
#ifndef THYRA_PRECONDITIONER_FACTORY_BASE_DECL_HPP
43
#define THYRA_PRECONDITIONER_FACTORY_BASE_DECL_HPP
44
45
#include "Thyra_PreconditionerBase.hpp"
46
#include "Thyra_LinearOpSourceBase.hpp"
47
#include "Teuchos_Describable.hpp"
48
#include "Teuchos_ParameterListAcceptor.hpp"
49
#include "Teuchos_VerboseObject.hpp"
50
51
52
namespace
Thyra {
53
54
62
template
<
class
Scalar>
63
class
PreconditionerFactoryBase
64
:
virtual
public
Teuchos::Describable
,
65
virtual
public
Teuchos::ParameterListAcceptor
,
66
virtual
public
Teuchos::VerboseObject
<PreconditionerFactoryBase<Scalar> >
67
{
68
public
:
69
72
76
virtual
bool
isCompatible
(
const
LinearOpSourceBase<Scalar>
&fwdOpSrc)
const
= 0;
77
87
virtual
RCP<PreconditionerBase<Scalar>
>
createPrec
()
const
= 0;
88
159
virtual
void
initializePrec
(
160
const
RCP
<
const
LinearOpSourceBase<Scalar>
> &fwdOpSrc,
161
PreconditionerBase<Scalar>
*precOp,
162
const
ESupportSolveUse
supportSolveUse =
SUPPORT_SOLVE_UNSPECIFIED
163
)
const
= 0;
164
213
virtual
void
uninitializePrec
(
214
PreconditionerBase<Scalar>
*
prec
,
215
RCP
<
const
LinearOpSourceBase<Scalar>
> *fwdOpSrc = NULL,
216
ESupportSolveUse
*supportSolveUse = NULL
217
)
const
= 0;
218
220
223
230
virtual
bool
applySupportsConj
(EConj conj)
const
;
231
237
virtual
bool
applyTransposeSupportsConj
(EConj conj)
const
;
238
240
241
private
:
242
243
// Not defined and not to be called
244
PreconditionerFactoryBase<Scalar>
&
245
operator=(
const
PreconditionerFactoryBase<Scalar>
&);
246
247
};
248
249
250
}
// namespace Thyra
251
252
253
#endif
// THYRA_PRECONDITIONER_FACTORY_BASE_DECL_HPP
Teuchos::Describable
Teuchos::ParameterListAcceptor
Teuchos::RCP
Teuchos::VerboseObject
Thyra::LinearOpSourceBase
Base interface for objects that can return a linear operator.
Definition
Thyra_LinearOpSourceBase.hpp:58
Thyra::PreconditionerBase
Simple interface class to access a precreated preconditioner as one or more linear operators objects ...
Definition
Thyra_PreconditionerBase.hpp:90
Thyra::PreconditionerFactoryBase
Factory interface for creating preconditioner objects from LinearOpBase objects.
Definition
Thyra_PreconditionerFactoryBase_decl.hpp:67
Thyra::PreconditionerFactoryBase::uninitializePrec
virtual void uninitializePrec(PreconditionerBase< Scalar > *prec, RCP< const LinearOpSourceBase< Scalar > > *fwdOpSrc=NULL, ESupportSolveUse *supportSolveUse=NULL) const =0
Uninitialize a LinearOpBase preconditioner object and return its remembered forward linear operator.
Thyra::PreconditionerFactoryBase::applySupportsConj
virtual bool applySupportsConj(EConj conj) const
Return if precOp->apply() supports the argument conj.
Definition
Thyra_PreconditionerFactoryBase_def.hpp:53
Thyra::PreconditionerFactoryBase::isCompatible
virtual bool isCompatible(const LinearOpSourceBase< Scalar > &fwdOpSrc) const =0
Check that a LinearOpBase object is compatible with *this factory object.
Thyra::PreconditionerFactoryBase::prec
Teuchos::RCP< PreconditionerBase< Scalar > > prec(const PreconditionerFactoryBase< Scalar > &precFactory, const Teuchos::RCP< const LinearOpBase< Scalar > > &fwdOp, const ESupportSolveUse supportSolveUse=SUPPORT_SOLVE_UNSPECIFIED)
Create and initialize a preconditioner from a forward linear operator.
Definition
Thyra_PreconditionerFactoryHelpers.hpp:96
Thyra::PreconditionerFactoryBase::initializePrec
virtual void initializePrec(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, PreconditionerBase< Scalar > *precOp, const ESupportSolveUse supportSolveUse=SUPPORT_SOLVE_UNSPECIFIED) const =0
Initialize a pre-created LinearOpBase preconditioner object given a "compatible" LinearOpBase object.
Thyra::PreconditionerFactoryBase::createPrec
virtual RCP< PreconditionerBase< Scalar > > createPrec() const =0
Create an (uninitialized) LinearOpBase object to be initialized as the preconditioner later in this->...
Thyra::PreconditionerFactoryBase::applyTransposeSupportsConj
virtual bool applyTransposeSupportsConj(EConj conj) const
Return if precOp->solveTranspose() supports the argument conj.
Definition
Thyra_PreconditionerFactoryBase_def.hpp:62
Thyra::ESupportSolveUse
ESupportSolveUse
Enum that specifies how a LinearOpWithSolveBase object will be used for solves after it is constructe...
Definition
Thyra_SolveSupportTypes.hpp:489
Thyra::SUPPORT_SOLVE_UNSPECIFIED
@ SUPPORT_SOLVE_UNSPECIFIED
How the output LOWSB object will be useded for solves in unspecified.
Definition
Thyra_SolveSupportTypes.hpp:490
Generated by
1.17.0