Tempus  Version of the Day
Time Integration
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Thyra_ReusePreconditionerFactory.hpp
Go to the documentation of this file.
1 // @HEADER
2 // ****************************************************************************
3 // Tempus: Copyright (2017) Sandia Corporation
4 //
5 // Distributed under BSD 3-clause license (See accompanying file Copyright.txt)
6 // ****************************************************************************
7 // @HEADER
8 
9 #ifndef Thyra_ReusePreconditionerFactory_hpp
10 #define Thyra_ReusePreconditionerFactory_hpp
11 
12 #include "Thyra_PreconditionerFactoryBase.hpp"
13 
14 namespace Thyra {
15 
19 template <class Scalar>
21  : virtual public PreconditionerFactoryBase<Scalar> {
22  public:
25 
28 
30  {
31 #ifdef TEUCHOS_DEBUG
33 #endif
34  prec_ = prec;
35  }
36 
37  RCP<PreconditionerBase<Scalar> > getNonconstPreconditioner() { return prec_; }
38 
39  RCP<const PreconditionerBase<Scalar> > getPreconditioner() const
40  {
41  return prec_;
42  }
43 
44  void uninitialize() { prec_ = Teuchos::null; }
45 
48 
49  std::string description() const
50  {
51  std::ostringstream oss;
52  oss << this->Teuchos::Describable::description() << "{"
53  << "prec=";
54  if (!is_null(prec_))
55  oss << prec_->description();
56  else
57  oss << "NULL";
58  oss << "}";
59  return oss.str();
60  }
61 
63 
67 
68  void setParameterList(RCP<ParameterList> const & /* paramList */) {}
69 
70  RCP<ParameterList> getNonconstParameterList() { return Teuchos::null; }
71 
72  RCP<ParameterList> unsetParameterList() { return Teuchos::null; }
73 
74  RCP<const ParameterList> getParameterList() const { return Teuchos::null; }
75 
76  RCP<const ParameterList> getValidParameters() const
77  {
78  return rcp(new ParameterList);
79  }
80 
82 
84 
87 
88  bool isCompatible(const LinearOpSourceBase<Scalar> & /* fwdOpSrc */) const
89  {
90  return false;
91  }
92 
93  RCP<PreconditionerBase<Scalar> > createPrec() const { return prec_; }
94 
96  const RCP<const LinearOpSourceBase<Scalar> > & /* fwdOpSrc */,
97  PreconditionerBase<Scalar> * /* precOp */,
98  const ESupportSolveUse /* supportSolveUse */ =
100  {
101  }
102 
104  RCP<const LinearOpSourceBase<Scalar> > *fwdOpSrc = NULL,
105  ESupportSolveUse *supportSolveUse = NULL) const
106  {
107  }
108 
110 
111  private:
112  // //////////////////////////////
113  // Private data members
114 
115  RCP<PreconditionerBase<Scalar> > prec_;
116 };
117 
122 template <class Scalar>
123 RCP<ReusePreconditionerFactory<Scalar> > reusePreconditionerFactory()
124 {
126 }
127 
132 template <class Scalar>
133 RCP<ReusePreconditionerFactory<Scalar> > reusePreconditionerFactory(
134  const RCP<PreconditionerBase<Scalar> > &prec)
135 {
136  RCP<ReusePreconditionerFactory<Scalar> > fac =
138  fac->initialize(prec);
139  return fac;
140 }
141 
142 } // end namespace Thyra
143 
144 #endif
Concrete PreconditionerFactoryBase subclass that just returns an already created/initialized precondi...
RCP< const ParameterList > getParameterList() const
RCP< ReusePreconditionerFactory< Scalar > > reusePreconditionerFactory(const RCP< PreconditionerBase< Scalar > > &prec)
Nonmember constructor function.
bool is_null(const boost::shared_ptr< T > &p)
void setParameterList(RCP< ParameterList > const &)
ReusePreconditionerFactory()
Construct to uninitialized.
void initialize(const RCP< PreconditionerBase< Scalar > > &prec)
RCP< const ParameterList > getValidParameters() const
Teuchos::RCP< PreconditionerBase< Scalar > > prec(const PreconditionerFactoryBase< Scalar > &precFactory, const Teuchos::RCP< const LinearOpBase< Scalar > > &fwdOp, const ESupportSolveUse supportSolveUse=SUPPORT_SOLVE_UNSPECIFIED)
void initializePrec(const RCP< const LinearOpSourceBase< Scalar > > &, PreconditionerBase< Scalar > *, const ESupportSolveUse=SUPPORT_SOLVE_UNSPECIFIED) const
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
virtual std::string description() const
RCP< ReusePreconditionerFactory< Scalar > > reusePreconditionerFactory()
Nonmember constructor function.
RCP< PreconditionerBase< Scalar > > getNonconstPreconditioner()
ESupportSolveUse
RCP< PreconditionerBase< Scalar > > createPrec() const
RCP< const PreconditionerBase< Scalar > > getPreconditioner() const
bool isCompatible(const LinearOpSourceBase< Scalar > &) const
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
void uninitializePrec(PreconditionerBase< Scalar > *, RCP< const LinearOpSourceBase< Scalar > > *fwdOpSrc=NULL, ESupportSolveUse *supportSolveUse=NULL) const