ROL
Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
ROL::PrimalDualSystemStep< Real > Class Template Reference

Provides the interface to compute approximate solutions to 2x2 block systems arising from primal-dual interior point methods. More...

#include <ROL_PrimalDualSystemStep.hpp>

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

Public Member Functions

 PrimalDualSystemStep (ROL::ParameterList &parlist, const ROL::Ptr< Krylov< Real > > &krylov, const ROL::Ptr< Secant< Real > > &secant, ROL::Ptr< V > &scratch1)
 
 PrimalDualSystemStep (ROL::ParameterList &parlist, ROL::Ptr< V > &scratch1_)
 
void initialize (V &x, const V &g, V &res, const V &c, OBJ &obj, CON &con, BND &bnd, AS &algo_state)
 Initialize step with equality constraint. More...
 
void compute (V &s, const V &x, const V &res, OBJ &obj, CON &con, BND &bnd, AS &algo_state)
 Compute step (equality constraints). More...
 
void update (V &x, V &res, const V &s, OBJ &obj, CON &con, BND &bnd, AS &algo_state)
 Update step, if successful (equality constraints). More...
 
- Public Member Functions inherited from ROL::Step< Real >
virtual ~Step ()
 
 Step (void)
 
virtual void initialize (Vector< Real > &x, const Vector< Real > &g, Objective< Real > &obj, BoundConstraint< Real > &con, AlgorithmState< Real > &algo_state)
 Initialize step with bound constraint. More...
 
virtual void initialize (Vector< Real > &x, const Vector< Real > &s, const Vector< Real > &g, Objective< Real > &obj, BoundConstraint< Real > &con, AlgorithmState< Real > &algo_state)
 Initialize step with bound constraint. More...
 
virtual void initialize (Vector< Real > &x, const Vector< Real > &g, Vector< Real > &l, const Vector< Real > &c, Objective< Real > &obj, Constraint< Real > &con, AlgorithmState< Real > &algo_state)
 Initialize step with equality constraint. More...
 
virtual void compute (Vector< Real > &s, const Vector< Real > &x, Objective< Real > &obj, BoundConstraint< Real > &bnd, AlgorithmState< Real > &algo_state)
 Compute step. More...
 
virtual void update (Vector< Real > &x, const Vector< Real > &s, Objective< Real > &obj, BoundConstraint< Real > &bnd, AlgorithmState< Real > &algo_state)
 Update step, if successful. More...
 
virtual void compute (Vector< Real > &s, const Vector< Real > &x, const Vector< Real > &l, Objective< Real > &obj, Constraint< Real > &con, AlgorithmState< Real > &algo_state)
 Compute step (equality constraints). More...
 
virtual void update (Vector< Real > &x, Vector< Real > &l, const Vector< Real > &s, Objective< Real > &obj, Constraint< Real > &con, AlgorithmState< Real > &algo_state)
 Update step, if successful (equality constraints). More...
 
virtual std::string printHeader (void) const
 Print iterate header. More...
 
virtual std::string printName (void) const
 Print step name. More...
 
virtual std::string print (AlgorithmState< Real > &algo_state, bool printHeader=false) const
 Print iterate status. More...
 
const ROL::Ptr< const StepState< Real > > getStepState (void) const
 Get state for step object. More...
 
void reset (const Real searchSize=1.0)
 Get state for step object. More...
 

Private Types

typedef Vector< Real > V
 
typedef PartitionedVector< Real > PV
 
typedef Objective< Real > OBJ
 
typedef BoundConstraint< Real > BND
 
typedef Constraint< Real > CON
 
typedef AlgorithmState< Real > AS
 
typedef SchurComplement< Real > SCHUR
 
typedef PrimalDualInteriorPointBlock11 OP11
 
typedef PrimalDualInteriorPointBlock12 OP12
 
typedef PrimalDualInteriorPointBlock21 OP21
 
typedef PrimalDualInteriorPointBlock22 OP22
 

Private Member Functions

ROL::Ptr< PVrepartition (V &x)
 
ROL::Ptr< const PVrepartition (const V &x)
 

Private Attributes

ROL::Ptr< Secant< Real > > secant_
 
ROL::Ptr< Krylov< Real > > krylov_
 
ROL::Ptr< Vscratch1_
 
ROL::Ptr< Vscratch_
 
ROL::Ptr< OP11A_
 
ROL::Ptr< OP12B_
 
ROL::Ptr< OP21C_
 
ROL::Ptr< OP22D_
 
ROL::Ptr< SCHURschur_
 
ROL::Ptr< OPop_
 
int iterKrylov_
 Number of Krylov iterations (used for inexact Newton) More...
 
int flagKrylov_
 Termination flag for Krylov method (used for inexact Newton) More...
 
int verbosity_
 Verbosity level. More...
 
bool useSecantPrecond_
 
bool useSchurComplement_
 

Static Private Attributes

static const size_type OPT = 0
 
static const size_type EQUAL = 1
 
static const size_type LOWER = 2
 
static const size_type UPPER = 3
 
static const size_type OPTMULT = 0
 
static const size_type BNDMULT = 1
 

Additional Inherited Members

- Protected Member Functions inherited from ROL::Step< Real >
ROL::Ptr< StepState< Real > > getState (void)
 

Detailed Description

template<class Real>
class ROL::PrimalDualSystemStep< Real >

Provides the interface to compute approximate solutions to 2x2 block systems arising from primal-dual interior point methods.

Note that as we do not need an additional Lagrange multiplier for the primal dual system, the vector expected to be passed in its place is the primal-dual residual

Definition at line 65 of file ROL_PrimalDualSystemStep.hpp.

Member Typedef Documentation

◆ V

template<class Real >
typedef Vector<Real> ROL::PrimalDualSystemStep< Real >::V
private

Definition at line 67 of file ROL_PrimalDualSystemStep.hpp.

◆ PV

template<class Real >
typedef PartitionedVector<Real> ROL::PrimalDualSystemStep< Real >::PV
private

Definition at line 68 of file ROL_PrimalDualSystemStep.hpp.

◆ OBJ

template<class Real >
typedef Objective<Real> ROL::PrimalDualSystemStep< Real >::OBJ
private

Definition at line 69 of file ROL_PrimalDualSystemStep.hpp.

◆ BND

template<class Real >
typedef BoundConstraint<Real> ROL::PrimalDualSystemStep< Real >::BND
private

Definition at line 70 of file ROL_PrimalDualSystemStep.hpp.

◆ CON

template<class Real >
typedef Constraint<Real> ROL::PrimalDualSystemStep< Real >::CON
private

Definition at line 71 of file ROL_PrimalDualSystemStep.hpp.

◆ AS

template<class Real >
typedef AlgorithmState<Real> ROL::PrimalDualSystemStep< Real >::AS
private

Definition at line 72 of file ROL_PrimalDualSystemStep.hpp.

◆ SCHUR

template<class Real >
typedef SchurComplement<Real> ROL::PrimalDualSystemStep< Real >::SCHUR
private

Definition at line 73 of file ROL_PrimalDualSystemStep.hpp.

◆ OP11

template<class Real >
typedef PrimalDualInteriorPointBlock11 ROL::PrimalDualSystemStep< Real >::OP11
private

Definition at line 75 of file ROL_PrimalDualSystemStep.hpp.

◆ OP12

template<class Real >
typedef PrimalDualInteriorPointBlock12 ROL::PrimalDualSystemStep< Real >::OP12
private

Definition at line 76 of file ROL_PrimalDualSystemStep.hpp.

◆ OP21

template<class Real >
typedef PrimalDualInteriorPointBlock21 ROL::PrimalDualSystemStep< Real >::OP21
private

Definition at line 77 of file ROL_PrimalDualSystemStep.hpp.

◆ OP22

template<class Real >
typedef PrimalDualInteriorPointBlock22 ROL::PrimalDualSystemStep< Real >::OP22
private

Definition at line 78 of file ROL_PrimalDualSystemStep.hpp.

Constructor & Destructor Documentation

◆ PrimalDualSystemStep() [1/2]

template<class Real >
ROL::PrimalDualSystemStep< Real >::PrimalDualSystemStep ( ROL::ParameterList &  parlist,
const ROL::Ptr< Krylov< Real > > &  krylov,
const ROL::Ptr< Secant< Real > > &  secant,
ROL::Ptr< V > &  scratch1 
)
inline

◆ PrimalDualSystemStep() [2/2]

template<class Real >
ROL::PrimalDualSystemStep< Real >::PrimalDualSystemStep ( ROL::ParameterList &  parlist,
ROL::Ptr< V > &  scratch1_ 
)
inline

Member Function Documentation

◆ repartition() [1/2]

template<class Real >
ROL::Ptr<PV> ROL::PrimalDualSystemStep< Real >::repartition ( V x)
inlineprivate

◆ repartition() [2/2]

template<class Real >
ROL::Ptr<const PV> ROL::PrimalDualSystemStep< Real >::repartition ( const V x)
inlineprivate

◆ initialize()

template<class Real >
void ROL::PrimalDualSystemStep< Real >::initialize ( V x,
const V g,
V l,
const V c,
OBJ obj,
CON con,
BND bnd,
AS algo_state 
)
inlinevirtual

◆ compute()

template<class Real >
void ROL::PrimalDualSystemStep< Real >::compute ( V s,
const V x,
const V l,
OBJ obj,
CON con,
BND bnd,
AS algo_state 
)
inlinevirtual

◆ update()

template<class Real >
void ROL::PrimalDualSystemStep< Real >::update ( V x,
V l,
const V s,
OBJ obj,
CON con,
BND bnd,
AS algo_state 
)
inlinevirtual

Update step, if successful (equality constraints).

Reimplemented from ROL::Step< Real >.

Definition at line 224 of file ROL_PrimalDualSystemStep.hpp.

References ROL::Step< Real >::getState().

Member Data Documentation

◆ OPT

template<class Real >
const size_type ROL::PrimalDualSystemStep< Real >::OPT = 0
staticprivate

◆ EQUAL

template<class Real >
const size_type ROL::PrimalDualSystemStep< Real >::EQUAL = 1
staticprivate

◆ LOWER

template<class Real >
const size_type ROL::PrimalDualSystemStep< Real >::LOWER = 2
staticprivate

◆ UPPER

template<class Real >
const size_type ROL::PrimalDualSystemStep< Real >::UPPER = 3
staticprivate

◆ OPTMULT

template<class Real >
const size_type ROL::PrimalDualSystemStep< Real >::OPTMULT = 0
staticprivate

◆ BNDMULT

template<class Real >
const size_type ROL::PrimalDualSystemStep< Real >::BNDMULT = 1
staticprivate

◆ secant_

template<class Real >
ROL::Ptr<Secant<Real> > ROL::PrimalDualSystemStep< Real >::secant_
private

Definition at line 93 of file ROL_PrimalDualSystemStep.hpp.

◆ krylov_

template<class Real >
ROL::Ptr<Krylov<Real> > ROL::PrimalDualSystemStep< Real >::krylov_
private

Definition at line 94 of file ROL_PrimalDualSystemStep.hpp.

◆ scratch1_

template<class Real >
ROL::Ptr<V> ROL::PrimalDualSystemStep< Real >::scratch1_
private

◆ scratch_

template<class Real >
ROL::Ptr<V> ROL::PrimalDualSystemStep< Real >::scratch_
private

Definition at line 96 of file ROL_PrimalDualSystemStep.hpp.

◆ A_

template<class Real >
ROL::Ptr<OP11> ROL::PrimalDualSystemStep< Real >::A_
private

◆ B_

template<class Real >
ROL::Ptr<OP12> ROL::PrimalDualSystemStep< Real >::B_
private

◆ C_

template<class Real >
ROL::Ptr<OP21> ROL::PrimalDualSystemStep< Real >::C_
private

◆ D_

template<class Real >
ROL::Ptr<OP22> ROL::PrimalDualSystemStep< Real >::D_
private

◆ schur_

template<class Real >
ROL::Ptr<SCHUR> ROL::PrimalDualSystemStep< Real >::schur_
private

◆ op_

template<class Real >
ROL::Ptr<OP> ROL::PrimalDualSystemStep< Real >::op_
private

◆ iterKrylov_

template<class Real >
int ROL::PrimalDualSystemStep< Real >::iterKrylov_
private

Number of Krylov iterations (used for inexact Newton)

Definition at line 106 of file ROL_PrimalDualSystemStep.hpp.

◆ flagKrylov_

template<class Real >
int ROL::PrimalDualSystemStep< Real >::flagKrylov_
private

Termination flag for Krylov method (used for inexact Newton)

Definition at line 107 of file ROL_PrimalDualSystemStep.hpp.

◆ verbosity_

template<class Real >
int ROL::PrimalDualSystemStep< Real >::verbosity_
private

Verbosity level.

Definition at line 108 of file ROL_PrimalDualSystemStep.hpp.

◆ useSecantPrecond_

template<class Real >
bool ROL::PrimalDualSystemStep< Real >::useSecantPrecond_
private

Definition at line 110 of file ROL_PrimalDualSystemStep.hpp.

◆ useSchurComplement_

template<class Real >
bool ROL::PrimalDualSystemStep< Real >::useSchurComplement_
private

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