ROL
|
Provides the interface to apply a linear operator. More...
#include <ROL_LinearOperator.hpp>
Public Member Functions | |
virtual | ~LinearOperator () |
virtual void | update (const Vector< Real > &x, bool flag=true, int iter=-1) |
Update linear operator. More... | |
virtual void | apply (Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const =0 |
Apply linear operator. More... | |
virtual void | applyInverse (Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const |
Apply inverse of linear operator. More... | |
virtual void | applyAdjoint (Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const |
Apply adjoint of linear operator. More... | |
virtual void | applyAdjointInverse (Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const |
Apply adjoint of the inverse linear operator. More... | |
Provides the interface to apply a linear operator.
ROL's linear operator interface is designed to interface with ROL's Krylov methods. These linear operators often represent projected Hessians or preconditioners. The basic operator interace, to be implemented by the user, requires:
The user may also implement:
Definition at line 37 of file ROL_LinearOperator.hpp.
|
inlinevirtual |
Definition at line 40 of file ROL_LinearOperator.hpp.
|
inlinevirtual |
Update linear operator.
This function updates the linear operator at new iterations.
[in] | x | is the new iterate. |
[in] | flag | is true if the iterate has changed. |
[in] | iter | is the outer algorithm iterations count. |
Reimplemented in ROL::InteriorPoint::PrimalDualSymmetrizer< Real >, ROL::InteriorPoint::PrimalDualSymmetrizer< Real >, ROL::PrimalDualInteriorPointBlock22< Real >, ROL::PrimalDualInteriorPointBlock21< Real >, ROL::NullSpaceOperator< Real >, ROL::StdLinearOperator< Real >, ROL::LinearOperatorSum< Real >, ROL::LinearOperatorProduct< Real >, ROL::PrimalDualInteriorPointBlock11< Real >, ROL::RangeSpaceOperator< Real >, ROL::BlockOperator2Determinant< Real >, and ROL::DiagonalOperator< Real >.
Definition at line 49 of file ROL_LinearOperator.hpp.
|
pure virtual |
Apply linear operator.
This function applies the linear operator to a vector.
[out] | Hv | is the output vector. |
[in] | v | is the input vector. |
[in] | tol | is a tolerance for inexact linear operator application. |
Implemented in ROL::InteriorPoint::PrimalDualSymmetrizer< Real >, ROL::InteriorPoint::PrimalDualSymmetrizer< Real >, ROL::PrimalDualInteriorPointBlock22< Real >, ROL::BoundFletcher< Real >::AugSystemPrecond, ROL::BoundFletcher< Real >::AugSystemNonSym, ROL::PrimalDualActiveSetStep< Real >::PrecondPD, ROL::BoundFletcher< Real >::AugSystemSym, ROL::TypeB::PrimalDualActiveSetAlgorithm< Real >::PrecondPDAS_Poly, ROL::PrimalDualInteriorPointBlock21< Real >, ROL::Secant< Real >, ROL::PrimalDualActiveSetStep< Real >::HessianPD, ROL::TypeB::PrimalDualActiveSetAlgorithm< Real >::HessianPDAS_Poly, ROL::Fletcher< Real >::AugSystemPrecond, ROL::PrimalDualInteriorPointBlock12< Real >, ROL::ProjectedNewtonKrylovStep< Real >::PrecondPNK, ROL::TypeB::PrimalDualActiveSetAlgorithm< Real >::PrecondPDAS, ROL::TypeB::NewtonKrylovAlgorithm< Real >::PrecondPNK, ROL::Fletcher< Real >::AugSystem, ROL::FletcherObjectiveE< Real >::AugSystemPrecond, ROL::SemismoothNewtonProjection< Real >::Precond, IdentityOperator< Real >, ROL::NullSpaceOperator< Real >, ROL::SemismoothNewtonProjection< Real >::Jacobian, ROL::TypeB::PrimalDualActiveSetAlgorithm< Real >::HessianPDAS, ROL::FletcherObjectiveE< Real >::AugSystem, ROL::StdLinearOperator< Real >, ROL::TypeB::NewtonKrylovAlgorithm< Real >::HessianPNK, ROL::NewtonKrylovStep< Real >::PrecondNK, ROL::ProjectedNewtonKrylovStep< Real >::HessianPNK, ROL::HouseholderReflector< Real >, ROL::LinearOperatorSum< Real >, ROL::PrimalDualInteriorPointBlock11< Real >, ROL::NewtonKrylov_U< Real >::PrecondNK, ROL::NewtonKrylovStep< Real >::HessianNK, ROL::LinearOperatorProduct< Real >, TridiagonalToeplitzOperator< Real >, TridiagonalToeplitzOperator< Real >, ROL::BlockOperator2< Real >, ROL::BlockOperator2Determinant< Real >, ROL::NewtonKrylov_U< Real >::HessianNK, ROL::RangeSpaceOperator< Real >, ROL::DiagonalOperator< Real >, ROL::BlockOperator< Real >, ROL::LinearOperatorFromConstraint< Real >, ROL::AugmentedSystemOperator< Real >, ROL::DyadicOperator< Real >, ROL::AugmentedSystemPrecOperator< Real >, Identity< Real >, Identity< Real >, ROL::IdentityOperator< Real >, and ROL::NullOperator< Real >.
Referenced by ROL::LinearOperator< Real >::applyAdjoint(), ROL::Lanczos< Real >::iterate(), ROL::ConjugateGradients< Real >::run(), ROL::ConjugateResiduals< Real >::run(), ROL::BiCGSTAB< Real >::run(), ROL::GMRES< Real >::run(), and ROL::details::MINRES< Real >::run().
|
inlinevirtual |
Apply inverse of linear operator.
This function applies the inverse of linear operator to a vector.
[out] | Hv | is the output vector. |
[in] | v | is the input vector. |
[in] | tol | is a tolerance for inexact linear operator application. |
Reimplemented in ROL::InteriorPoint::PrimalDualSymmetrizer< Real >, ROL::InteriorPoint::PrimalDualSymmetrizer< Real >, ROL::PrimalDualInteriorPointBlock22< Real >, ROL::BoundFletcher< Real >::AugSystemPrecond, ROL::PrimalDualInteriorPointBlock21< Real >, ROL::PrimalDualActiveSetStep< Real >::PrecondPD, ROL::TypeB::PrimalDualActiveSetAlgorithm< Real >::PrecondPDAS_Poly, ROL::Secant< Real >, ROL::PrimalDualInteriorPointBlock12< Real >, ROL::Fletcher< Real >::AugSystemPrecond, ROL::ProjectedNewtonKrylovStep< Real >::PrecondPNK, ROL::TypeB::PrimalDualActiveSetAlgorithm< Real >::PrecondPDAS, ROL::StdLinearOperator< Real >, ROL::TypeB::NewtonKrylovAlgorithm< Real >::PrecondPNK, ROL::FletcherObjectiveE< Real >::AugSystemPrecond, ROL::SemismoothNewtonProjection< Real >::Precond, ROL::NullSpaceOperator< Real >, ROL::PrimalDualInteriorPointBlock11< Real >, ROL::HouseholderReflector< Real >, TridiagonalToeplitzOperator< Real >, TridiagonalToeplitzOperator< Real >, ROL::NewtonKrylovStep< Real >::PrecondNK, ROL::LinearOperatorSum< Real >, ROL::LinearOperatorProduct< Real >, ROL::NewtonKrylov_U< Real >::PrecondNK, ROL::BlockOperator2< Real >, ROL::BlockOperator2Determinant< Real >, ROL::AugmentedSystemOperator< Real >, ROL::RangeSpaceOperator< Real >, ROL::DiagonalOperator< Real >, ROL::LinearOperatorFromConstraint< Real >, ROL::AugmentedSystemPrecOperator< Real >, ROL::DyadicOperator< Real >, ROL::IdentityOperator< Real >, and ROL::NullOperator< Real >.
Definition at line 67 of file ROL_LinearOperator.hpp.
References ROL::Vector< Real >::set().
Referenced by ROL::LinearOperator< Real >::applyAdjointInverse(), ROL::ConjugateGradients< Real >::run(), ROL::ConjugateResiduals< Real >::run(), ROL::BiCGSTAB< Real >::run(), and ROL::GMRES< Real >::run().
|
inlinevirtual |
Apply adjoint of linear operator.
This function applies the adjoint of a linear operator to a vector. Default behavior assumes operator is self-adjoint.
[out] | Hv | is the output vector. |
[in] | v | is the input vector. |
[in] | tol | is a tolerance for inexact linear operator application. |
Reimplemented in ROL::NullSpaceOperator< Real >, ROL::StdLinearOperator< Real >, ROL::AugmentedSystemOperator< Real >, ROL::RangeSpaceOperator< Real >, and ROL::AugmentedSystemPrecOperator< Real >.
Definition at line 80 of file ROL_LinearOperator.hpp.
References ROL::LinearOperator< Real >::apply().
|
inlinevirtual |
Apply adjoint of the inverse linear operator.
This function applies the adjoint of the inverse linear operator to a vector. Default behavior assumes operator is self-adjoint.
[out] | Hv | is the output vector. |
[in] | v | is the input vector. |
[in] | tol | is a tolerance for inexact linear operator application. |
Reimplemented in ROL::StdLinearOperator< Real >, ROL::NullSpaceOperator< Real >, ROL::AugmentedSystemOperator< Real >, ROL::RangeSpaceOperator< Real >, and ROL::AugmentedSystemPrecOperator< Real >.
Definition at line 93 of file ROL_LinearOperator.hpp.
References ROL::LinearOperator< Real >::applyInverse().