ROL
ROL::NewtonKrylov_U< Real > Class Template Reference

Provides the interface to compute optimization steps with projected inexact Newton's method using line search. More...

#include <ROL_NewtonKrylov_U.hpp>

+ Inheritance diagram for ROL::NewtonKrylov_U< Real >:

Classes

class  HessianNK
 
class  PrecondNK
 

Public Member Functions

 NewtonKrylov_U (ParameterList &parlist)
 Constructor.
 
 NewtonKrylov_U (ParameterList &parlist, const Ptr< Krylov< Real > > &krylov, Ptr< Secant< Real > > &secant, const bool computeObj=true)
 Constructor.
 
void compute (Vector< Real > &s, Real &snorm, Real &sdotg, int &iter, int &flag, const Vector< Real > &x, const Vector< Real > &g, Objective< Real > &obj) override
 
void update (const Vector< Real > &x, const Vector< Real > &s, const Vector< Real > &gold, const Vector< Real > &gnew, const Real snorm, const int iter) override
 
std::string printName (void) const override
 
- Public Member Functions inherited from ROL::ROL::DescentDirection_U< Real >
virtual ~DescentDirection_U ()
 
virtual void initialize (const Vector< Real > &x, const Vector< Real > &g)
 
virtual void compute (Vector< Real > &s, Real &snorm, Real &sdotg, int &iter, int &flag, const Vector< Real > &x, const Vector< Real > &g, Objective< Real > &obj)=0
 
virtual void update (const Vector< Real > &x, const Vector< Real > &s, const Vector< Real > &gold, const Vector< Real > &gnew, const Real snorm, const int iter)
 

Private Attributes

Ptr< Secant< Real > > secant_
 Secant object (used for quasi-Newton)
 
Ptr< Krylov< Real > > krylov_
 Krylov solver object (used for inexact Newton)
 
Ptr< LinearOperator< Real > > precond_
 
EKrylov ekv_
 
ESecant esec_
 
bool useSecantPrecond_
 Whether or not a secant approximation is used for preconditioning inexact Newton.
 
std::string krylovName_
 
std::string secantName_
 

Detailed Description

template<typename Real>
class ROL::NewtonKrylov_U< Real >

Provides the interface to compute optimization steps with projected inexact Newton's method using line search.

Definition at line 63 of file ROL_NewtonKrylov_U.hpp.

Constructor & Destructor Documentation

◆ NewtonKrylov_U() [1/2]

template<typename Real>
ROL::NewtonKrylov_U< Real >::NewtonKrylov_U ( ParameterList & parlist)
inline

Constructor.

Standard constructor to build a NewtonKrylovStep object. Algorithmic specifications are passed in through a ROL::ParameterList.

Parameters
[in]parlistis a parameter list containing algorithmic specifications

Definition at line 114 of file ROL_NewtonKrylov_U.hpp.

References ekv_, esec_, krylov_, ROL::KrylovFactory(), krylovName_, precond_, secant_, ROL::SecantFactory(), secantName_, ROL::StringToEKrylov(), ROL::StringToESecant(), and useSecantPrecond_.

◆ NewtonKrylov_U() [2/2]

template<typename Real>
ROL::NewtonKrylov_U< Real >::NewtonKrylov_U ( ParameterList & parlist,
const Ptr< Krylov< Real > > & krylov,
Ptr< Secant< Real > > & secant,
const bool computeObj = true )
inline

Constructor.

Constructor to build a NewtonKrylovStep object with user-defined secant and Krylov objects. Algorithmic specifications are passed in through a ROL::ParameterList.

Parameters
[in]parlistis a parameter list containing algorithmic specifications
[in]krylovis a user-defined Krylov object
[in]secantis a user-defined secant object

Definition at line 142 of file ROL_NewtonKrylov_U.hpp.

References ekv_, esec_, krylov_, ROL::KRYLOV_USERDEFINED, ROL::KrylovFactory(), krylovName_, precond_, secant_, ROL::SECANT_USERDEFINED, ROL::SecantFactory(), secantName_, ROL::StringToEKrylov(), ROL::StringToESecant(), and useSecantPrecond_.

Member Function Documentation

◆ compute()

template<typename Real>
void ROL::NewtonKrylov_U< Real >::compute ( Vector< Real > & s,
Real & snorm,
Real & sdotg,
int & iter,
int & flag,
const Vector< Real > & x,
const Vector< Real > & g,
Objective< Real > & obj )
inlineoverride

◆ update()

template<typename Real>
void ROL::NewtonKrylov_U< Real >::update ( const Vector< Real > & x,
const Vector< Real > & s,
const Vector< Real > & gold,
const Vector< Real > & gnew,
const Real snorm,
const int iter )
inlineoverride

Definition at line 201 of file ROL_NewtonKrylov_U.hpp.

References secant_, and useSecantPrecond_.

◆ printName()

template<typename Real>
std::string ROL::NewtonKrylov_U< Real >::printName ( void ) const
inlineoverridevirtual

Reimplemented from ROL::ROL::DescentDirection_U< Real >.

Definition at line 210 of file ROL_NewtonKrylov_U.hpp.

References krylovName_, secantName_, and useSecantPrecond_.

Member Data Documentation

◆ secant_

template<typename Real>
Ptr<Secant<Real> > ROL::NewtonKrylov_U< Real >::secant_
private

Secant object (used for quasi-Newton)

Definition at line 66 of file ROL_NewtonKrylov_U.hpp.

Referenced by NewtonKrylov_U(), NewtonKrylov_U(), and update().

◆ krylov_

template<typename Real>
Ptr<Krylov<Real> > ROL::NewtonKrylov_U< Real >::krylov_
private

Krylov solver object (used for inexact Newton)

Definition at line 67 of file ROL_NewtonKrylov_U.hpp.

Referenced by compute(), NewtonKrylov_U(), and NewtonKrylov_U().

◆ precond_

template<typename Real>
Ptr<LinearOperator<Real> > ROL::NewtonKrylov_U< Real >::precond_
private

Definition at line 68 of file ROL_NewtonKrylov_U.hpp.

Referenced by NewtonKrylov_U(), and NewtonKrylov_U().

◆ ekv_

template<typename Real>
EKrylov ROL::NewtonKrylov_U< Real >::ekv_
private

Definition at line 70 of file ROL_NewtonKrylov_U.hpp.

Referenced by NewtonKrylov_U(), and NewtonKrylov_U().

◆ esec_

template<typename Real>
ESecant ROL::NewtonKrylov_U< Real >::esec_
private

Definition at line 71 of file ROL_NewtonKrylov_U.hpp.

Referenced by NewtonKrylov_U(), and NewtonKrylov_U().

◆ useSecantPrecond_

template<typename Real>
bool ROL::NewtonKrylov_U< Real >::useSecantPrecond_
private

Whether or not a secant approximation is used for preconditioning inexact Newton.

Definition at line 73 of file ROL_NewtonKrylov_U.hpp.

Referenced by compute(), NewtonKrylov_U(), NewtonKrylov_U(), printName(), and update().

◆ krylovName_

template<typename Real>
std::string ROL::NewtonKrylov_U< Real >::krylovName_
private

Definition at line 75 of file ROL_NewtonKrylov_U.hpp.

Referenced by NewtonKrylov_U(), NewtonKrylov_U(), and printName().

◆ secantName_

template<typename Real>
std::string ROL::NewtonKrylov_U< Real >::secantName_
private

Definition at line 76 of file ROL_NewtonKrylov_U.hpp.

Referenced by NewtonKrylov_U(), NewtonKrylov_U(), and printName().


The documentation for this class was generated from the following file: