Thyra Version of the Day
Loading...
Searching...
No Matches
Thyra_NonlinearSolverBase.hpp
1// @HEADER
2// *****************************************************************************
3// Thyra: Interfaces and Support for Abstract Numerical Algorithms
4//
5// Copyright 2004 NTESS and the Thyra contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef THYRA_NONLINEAR_SOLVER_BASE_HPP
11#define THYRA_NONLINEAR_SOLVER_BASE_HPP
12
13#include "Thyra_LinearOpWithSolveBase.hpp"
14#include "Thyra_ModelEvaluator.hpp"
15#include "Teuchos_Describable.hpp"
16#include "Teuchos_VerboseObject.hpp"
17#include "Teuchos_ParameterListAcceptor.hpp"
18
19
20namespace Thyra {
21
22
42template <class Scalar>
44 : virtual public Teuchos::Describable
45 , virtual public Teuchos::VerboseObject<NonlinearSolverBase<Scalar> >
46 , virtual public Teuchos::ParameterListAcceptor
47{
48public:
49
52
60 virtual void setModel(
61 const RCP<const ModelEvaluator<Scalar> > &model
62 ) = 0;
63
66
88 const SolveCriteria<Scalar> *solveCriteria = NULL,
89 VectorBase<Scalar> *delta = NULL
90 ) = 0;
91
93
96
101 virtual bool supportsCloning() const;
102
124
131
137 virtual bool is_W_current() const;
138
155 get_nonconst_W( const bool forceUpToDate = false );
156
165
175 virtual void set_W_is_current(bool W_is_current);
176
178
179private:
180
181 // Not defined and not to be called
183 operator=(const NonlinearSolverBase<Scalar>&);
184
185};
186
187
192template <class Scalar>
194 NonlinearSolverBase<Scalar> &nonlinearSolver,
196 const SolveCriteria<Scalar> *solveCriteria = NULL,
197 VectorBase<Scalar> *delta = NULL
198 )
199{
200 return nonlinearSolver.solve(x,solveCriteria,delta);
201}
202
203
204// ///////////////////////////////
205// Implementations
206
207template <class Scalar>
209{
210 return false;
211}
212
213template <class Scalar>
219
220template <class Scalar>
226
227template <class Scalar>
229{
230 return false;
231}
232
233template <class Scalar>
236{
237 return Teuchos::null;
238}
239
240template <class Scalar>
246
247template <class Scalar>
249{
251 true, std::logic_error,
252 "Error, the subclass object described as " << this->description() << " did not"
253 " override this function!"
254 );
255}
256
257
258} // namespace Thyra
259
260
261#endif // THYRA_NONLINEAR_SOLVER_BASE_HPP
Pure abstract base interface for evaluating a stateless "model" that can be mapped into a number of d...
Base class for all nonlinear equation solvers.
virtual void set_W_is_current(bool W_is_current)
Set if *get_W() is current with respect to *get_current_x().
virtual RCP< const VectorBase< Scalar > > get_current_x() const
Return the current value of the solution x as computed in the last solve() operation if supported.
virtual RCP< NonlinearSolverBase< Scalar > > cloneNonlinearSolver() const
Clone the solver algorithm if supported.
virtual RCP< const ModelEvaluator< Scalar > > getModel() const =0
Get the model that defines the nonlinear equations.
virtual SolveStatus< Scalar > solve(VectorBase< Scalar > *x, const SolveCriteria< Scalar > *solveCriteria=NULL, VectorBase< Scalar > *delta=NULL)=0
Solve a set of nonlinear equations from a given starting point.
const SolveStatus< Scalar > solve(NonlinearSolverBase< Scalar > &nonlinearSolver, VectorBase< Scalar > *x, const SolveCriteria< Scalar > *solveCriteria=NULL, VectorBase< Scalar > *delta=NULL)
virtual RCP< LinearOpWithSolveBase< Scalar > > get_nonconst_W(const bool forceUpToDate=false)
Get a nonconst RCP to the Jacobian if available.
virtual RCP< const LinearOpWithSolveBase< Scalar > > get_W() const
Get a const RCP to the Jacobian if available.
virtual void setModel(const RCP< const ModelEvaluator< Scalar > > &model)=0
Set the model that defines the nonlinear equations.
virtual bool is_W_current() const
Returns true if *get_W() is current with respect to *get_current_x().
virtual bool supportsCloning() const
Return if this solver object supports cloning or not.
Abstract interface for finite-dimensional dense vectors.
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
T_To & dyn_cast(T_From &from)
Simple struct that defines the requested solution criteria for a solve.
Simple struct for the return status from a solve.