Class that converts the an augmented system with compound restoration pieces into a smaller "pivoted" system to be solved with an existing AugSystemSolver. More...
#include <IpAugRestoSystemSolver.hpp>
Public Member Functions | |
bool | InitializeImpl (const OptionsList &options, const std::string &prefix) |
overloaded from AlgorithmStrategyObject | |
virtual ESymSolverStatus | Solve (const SymMatrix *W, double W_factor, const Vector *D_x, double delta_x, const Vector *D_s, double delta_s, const Matrix *J_c, const Vector *D_c, double delta_c, const Matrix *J_d, const Vector *D_d, double delta_d, const Vector &rhs_x, const Vector &rhs_s, const Vector &rhs_c, const Vector &rhs_d, Vector &sol_x, Vector &sol_s, Vector &sol_c, Vector &sol_d, bool check_NegEVals, Index numberOfNegEVals) |
Translate the augmented system (in the full space of the restoration variables) into the smaller space of the original variables. | |
virtual Index | NumberOfNegEVals () const |
Returns the number of negative eigenvalues from the original augmented system call. | |
virtual bool | ProvidesInertia () const |
Query whether inertia is computed by linear solver. | |
virtual bool | IncreaseQuality () |
Request to increase quality of solution for next solve. | |
Constructors/Destructors | |
AugRestoSystemSolver (AugSystemSolver &orig_aug_solver, bool skip_orig_aug_solver_init=true) | |
Constructor. | |
virtual | ~AugRestoSystemSolver () |
Default destructor. | |
Private Member Functions | |
Default Compiler Generated Methods | |
AugRestoSystemSolver () | |
Default Constructor. | |
AugRestoSystemSolver (const AugRestoSystemSolver &) | |
Copy Constructor. | |
void | operator= (const AugRestoSystemSolver &) |
Overloaded Equals Operator. | |
Methods to calculate the cached quantities | |
SmartPtr< const Vector > | Neg_Omega_c_plus_D_c (const SmartPtr< const Vector > &sigma_tilde_n_c_inv, const SmartPtr< const Vector > &sigma_tilde_p_c_inv, const Vector *D_c, const Vector &any_vec_in_c) |
Sigma tilde is the sum of Sigma and delta_x times the identity. | |
SmartPtr< const Vector > | Neg_Omega_d_plus_D_d (const Matrix &Pd_L, const SmartPtr< const Vector > &sigma_tilde_n_d_inv, const Matrix &neg_Pd_U, const SmartPtr< const Vector > &sigma_tilde_p_d_inv, const Vector *D_d, const Vector &any_vec_in_d) |
Sigma tilde is the sum of Sigma and delta_x times the identity. | |
SmartPtr< const Vector > | Sigma_tilde_n_c_inv (const SmartPtr< const Vector > &sigma_tilde_n_c, Number delta_x, const Vector &any_vec_in_n_c) |
Sigma tilde is the sum of Sigma and delta_x times the identity. | |
SmartPtr< const Vector > | Sigma_tilde_p_c_inv (const SmartPtr< const Vector > &sigma_tilde_p_c, Number delta_x, const Vector &any_vec_in_p_c) |
Sigma tilde is the sum of Sigma and delta_x times the identity. | |
SmartPtr< const Vector > | Sigma_tilde_n_d_inv (const SmartPtr< const Vector > &sigma_tilde_n_d, Number delta_x, const Vector &any_vec_in_n_d) |
Sigma tilde is the sum of Sigma and delta_x times the identity. | |
SmartPtr< const Vector > | Sigma_tilde_p_d_inv (const SmartPtr< const Vector > &sigma_tilde_p_d, Number delta_x, const Vector &any_vec_in_p_d) |
Sigma tilde is the sum of Sigma and delta_x times the identity. | |
SmartPtr< const Vector > | D_x_plus_wr_d (const SmartPtr< const Vector > &CD_x0, Number factor, const Vector &wr_d) |
Sigma tilde is the sum of Sigma and delta_x times the identity. | |
SmartPtr< const Vector > | Rhs_cR (const Vector &rhs_c, const SmartPtr< const Vector > &sigma_tilde_n_c_inv, const Vector &rhs_n_c, const SmartPtr< const Vector > &sigma_tilde_p_c_inv, const Vector &rhs_p_c) |
Sigma tilde is the sum of Sigma and delta_x times the identity. | |
SmartPtr< const Vector > | Rhs_dR (const Vector &rhs_d, const SmartPtr< const Vector > &sigma_tilde_n_d_inv, const Vector &rhs_n_d, const Matrix &pd_L, const SmartPtr< const Vector > &sigma_tilde_p_d_inv, const Vector &rhs_p_d, const Matrix &pd_U) |
Sigma tilde is the sum of Sigma and delta_x times the identity. | |
Private Attributes | |
SmartPtr< AugSystemSolver > | orig_aug_solver_ |
bool | skip_orig_aug_solver_init_ |
Caches for some of the necessary calculated quantities | |
CachedResults< SmartPtr< Vector > > | neg_omega_c_plus_D_c_cache_ |
CachedResults< SmartPtr< Vector > > | neg_omega_d_plus_D_d_cache_ |
CachedResults< SmartPtr< Vector > > | sigma_tilde_n_c_inv_cache_ |
CachedResults< SmartPtr< Vector > > | sigma_tilde_p_c_inv_cache_ |
CachedResults< SmartPtr< Vector > > | sigma_tilde_n_d_inv_cache_ |
CachedResults< SmartPtr< Vector > > | sigma_tilde_p_d_inv_cache_ |
CachedResults< SmartPtr< Vector > > | d_x_plus_wr_d_cache_ |
CachedResults< SmartPtr< Vector > > | rhs_cR_cache_ |
CachedResults< SmartPtr< Vector > > | rhs_dR_cache_ |
Class that converts the an augmented system with compound restoration pieces into a smaller "pivoted" system to be solved with an existing AugSystemSolver.
This is really a decorator that changes the behavior of the AugSystemSolver to account for the known structure of the restoration phase.
Definition at line 23 of file IpAugRestoSystemSolver.hpp.
Ipopt::AugRestoSystemSolver::AugRestoSystemSolver | ( | AugSystemSolver & | orig_aug_solver, | |
bool | skip_orig_aug_solver_init = true | |||
) |
Constructor.
Here, orig_aug_solver is the object for solving the original augmented system. The flag skip_orig_aug_solver_init indicates, if the initialization call (to Initialize) should be skipped; this flag will usually be true, so that the symbolic factorization of the main algorithm will be used.
virtual Ipopt::AugRestoSystemSolver::~AugRestoSystemSolver | ( | ) | [virtual] |
Default destructor.
Ipopt::AugRestoSystemSolver::AugRestoSystemSolver | ( | ) | [private] |
Default Constructor.
Ipopt::AugRestoSystemSolver::AugRestoSystemSolver | ( | const AugRestoSystemSolver & | ) | [private] |
Copy Constructor.
bool Ipopt::AugRestoSystemSolver::InitializeImpl | ( | const OptionsList & | options, | |
const std::string & | prefix | |||
) |
overloaded from AlgorithmStrategyObject
virtual ESymSolverStatus Ipopt::AugRestoSystemSolver::Solve | ( | const SymMatrix * | W, | |
double | W_factor, | |||
const Vector * | D_x, | |||
double | delta_x, | |||
const Vector * | D_s, | |||
double | delta_s, | |||
const Matrix * | J_c, | |||
const Vector * | D_c, | |||
double | delta_c, | |||
const Matrix * | J_d, | |||
const Vector * | D_d, | |||
double | delta_d, | |||
const Vector & | rhs_x, | |||
const Vector & | rhs_s, | |||
const Vector & | rhs_c, | |||
const Vector & | rhs_d, | |||
Vector & | sol_x, | |||
Vector & | sol_s, | |||
Vector & | sol_c, | |||
Vector & | sol_d, | |||
bool | check_NegEVals, | |||
Index | numberOfNegEVals | |||
) | [virtual] |
Translate the augmented system (in the full space of the restoration variables) into the smaller space of the original variables.
virtual Index Ipopt::AugRestoSystemSolver::NumberOfNegEVals | ( | ) | const [inline, virtual] |
Returns the number of negative eigenvalues from the original augmented system call.
Definition at line 76 of file IpAugRestoSystemSolver.hpp.
virtual bool Ipopt::AugRestoSystemSolver::ProvidesInertia | ( | ) | const [inline, virtual] |
Query whether inertia is computed by linear solver.
Returns true, if linear solver provides inertia.
Definition at line 84 of file IpAugRestoSystemSolver.hpp.
virtual bool Ipopt::AugRestoSystemSolver::IncreaseQuality | ( | ) | [inline, virtual] |
Request to increase quality of solution for next solve.
Ask underlying linear solver to increase quality of solution for the next solve (e.g. increase pivot tolerance). Returns false, if this is not possible (e.g. maximal pivot tolerance already used.)
Definition at line 95 of file IpAugRestoSystemSolver.hpp.
void Ipopt::AugRestoSystemSolver::operator= | ( | const AugRestoSystemSolver & | ) | [private] |
Overloaded Equals Operator.
SmartPtr<const Vector> Ipopt::AugRestoSystemSolver::Neg_Omega_c_plus_D_c | ( | const SmartPtr< const Vector > & | sigma_tilde_n_c_inv, | |
const SmartPtr< const Vector > & | sigma_tilde_p_c_inv, | |||
const Vector * | D_c, | |||
const Vector & | any_vec_in_c | |||
) | [private] |
Sigma tilde is the sum of Sigma and delta_x times the identity.
SmartPtr<const Vector> Ipopt::AugRestoSystemSolver::Neg_Omega_d_plus_D_d | ( | const Matrix & | Pd_L, | |
const SmartPtr< const Vector > & | sigma_tilde_n_d_inv, | |||
const Matrix & | neg_Pd_U, | |||
const SmartPtr< const Vector > & | sigma_tilde_p_d_inv, | |||
const Vector * | D_d, | |||
const Vector & | any_vec_in_d | |||
) | [private] |
Sigma tilde is the sum of Sigma and delta_x times the identity.
SmartPtr<const Vector> Ipopt::AugRestoSystemSolver::Sigma_tilde_n_c_inv | ( | const SmartPtr< const Vector > & | sigma_tilde_n_c, | |
Number | delta_x, | |||
const Vector & | any_vec_in_n_c | |||
) | [private] |
Sigma tilde is the sum of Sigma and delta_x times the identity.
SmartPtr<const Vector> Ipopt::AugRestoSystemSolver::Sigma_tilde_p_c_inv | ( | const SmartPtr< const Vector > & | sigma_tilde_p_c, | |
Number | delta_x, | |||
const Vector & | any_vec_in_p_c | |||
) | [private] |
Sigma tilde is the sum of Sigma and delta_x times the identity.
SmartPtr<const Vector> Ipopt::AugRestoSystemSolver::Sigma_tilde_n_d_inv | ( | const SmartPtr< const Vector > & | sigma_tilde_n_d, | |
Number | delta_x, | |||
const Vector & | any_vec_in_n_d | |||
) | [private] |
Sigma tilde is the sum of Sigma and delta_x times the identity.
SmartPtr<const Vector> Ipopt::AugRestoSystemSolver::Sigma_tilde_p_d_inv | ( | const SmartPtr< const Vector > & | sigma_tilde_p_d, | |
Number | delta_x, | |||
const Vector & | any_vec_in_p_d | |||
) | [private] |
Sigma tilde is the sum of Sigma and delta_x times the identity.
SmartPtr<const Vector> Ipopt::AugRestoSystemSolver::D_x_plus_wr_d | ( | const SmartPtr< const Vector > & | CD_x0, | |
Number | factor, | |||
const Vector & | wr_d | |||
) | [private] |
Sigma tilde is the sum of Sigma and delta_x times the identity.
SmartPtr<const Vector> Ipopt::AugRestoSystemSolver::Rhs_cR | ( | const Vector & | rhs_c, | |
const SmartPtr< const Vector > & | sigma_tilde_n_c_inv, | |||
const Vector & | rhs_n_c, | |||
const SmartPtr< const Vector > & | sigma_tilde_p_c_inv, | |||
const Vector & | rhs_p_c | |||
) | [private] |
Sigma tilde is the sum of Sigma and delta_x times the identity.
SmartPtr<const Vector> Ipopt::AugRestoSystemSolver::Rhs_dR | ( | const Vector & | rhs_d, | |
const SmartPtr< const Vector > & | sigma_tilde_n_d_inv, | |||
const Vector & | rhs_n_d, | |||
const Matrix & | pd_L, | |||
const SmartPtr< const Vector > & | sigma_tilde_p_d_inv, | |||
const Vector & | rhs_p_d, | |||
const Matrix & | pd_U | |||
) | [private] |
Sigma tilde is the sum of Sigma and delta_x times the identity.
CachedResults< SmartPtr<Vector> > Ipopt::AugRestoSystemSolver::neg_omega_c_plus_D_c_cache_ [private] |
Definition at line 121 of file IpAugRestoSystemSolver.hpp.
CachedResults< SmartPtr<Vector> > Ipopt::AugRestoSystemSolver::neg_omega_d_plus_D_d_cache_ [private] |
Definition at line 122 of file IpAugRestoSystemSolver.hpp.
Definition at line 123 of file IpAugRestoSystemSolver.hpp.
Definition at line 124 of file IpAugRestoSystemSolver.hpp.
Definition at line 125 of file IpAugRestoSystemSolver.hpp.
Definition at line 126 of file IpAugRestoSystemSolver.hpp.
Definition at line 127 of file IpAugRestoSystemSolver.hpp.
Definition at line 128 of file IpAugRestoSystemSolver.hpp.
Definition at line 129 of file IpAugRestoSystemSolver.hpp.
SmartPtr<AugSystemSolver> Ipopt::AugRestoSystemSolver::orig_aug_solver_ [private] |
Definition at line 191 of file IpAugRestoSystemSolver.hpp.
bool Ipopt::AugRestoSystemSolver::skip_orig_aug_solver_init_ [private] |
Definition at line 192 of file IpAugRestoSystemSolver.hpp.