10 #ifndef __IP_LOWRANKSSAUGSYSTEMSOLVER_HPP__
11 #define __IP_LOWRANKSSAUGSYSTEMSOLVER_HPP__
43 const std::string& prefix);
70 Index numberOfNegEVals);
213 const Vector& proto_rhs_x,
214 const Vector& proto_rhs_s,
215 const Vector& proto_rhs_c,
216 const Vector& proto_rhs_d);
SmartPtr< CompoundMatrix > J_c_ext_
Extended Jac_c to include expanded_vu_.
TaggedObject::Tag w_tag_
Tag for W matrix.
void operator=(const LowRankSSAugSystemSolver &)
Overloaded Equals Operator.
ESymSolverStatus
Enum to report outcome of a linear solve.
LowRankSSAugSystemSolver()
Default constructor.
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.
TaggedObject::Tag j_d_tag_
Tag for J_d matrix.
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
SmartPtr< CompoundVectorSpace > y_c_ext_space_
Extended vector space for y_c.
TaggedObject::Tag d_s_tag_
Tag for D_s vector, representing the diagonal matrix D_s.
Index num_neg_evals_
Stores the number of negative eigenvalues detected during most recent factorization.
Solver for the augmented system with LowRankUpdateSymMatrix Hessian matrices.
double delta_s_
Most recent value of delta_s from Set method.
ESymSolverStatus UpdateExtendedData(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 &proto_rhs_x, const Vector &proto_rhs_s, const Vector &proto_rhs_c, const Vector &proto_rhs_d)
Method for updating the factorization, including J1_, J2_, Vtilde1_, Utilde2, Wdiag_, compound_sol_vecspace_.
This is the base class for all derived symmetric matrix types.
Template class for Smart Pointers.
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
This class stores a list of user set options.
Base class for Solver for the augmented system.
Index max_rank_
Maximal rank of low rank Hessian update.
virtual ~LowRankSSAugSystemSolver()
Default destructor.
double delta_d_
Most recent value of delta_d from Set method.
double w_factor_
Most recent value of W_factor.
double delta_x_
Most recent value of delta_x from Set method.
int Index
Type of all indices of vectors, matrices etc.
Index negEvalsCorrection_
Number of components in V, so that it can be used to correct the inertia.
unsigned int Tag
Type for the Tag values.
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
TaggedObject::Tag d_x_tag_
Tag for D_x vector, representing the diagonal matrix D_x.
SmartPtr< CompoundVector > D_c_ext_
Extended D_c diagonal.
bool first_call_
Flag indicating if this is the first call.
SmartPtr< AugSystemSolver > aug_system_solver_
The augmented system solver object that should be used for the factorization of the augmented system ...
SmartPtr< DiagMatrix > Wdiag_
Hessian Matrix passed to the augmented system solver solving the matrix without the low-rank update...
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
bool AugmentedSystemRequiresChange(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)
Method that compares the tags of the data for the matrix with those from the previous call...
SmartPtr< ExpandedMultiVectorMatrix > expanded_vu_
Artifical rows for Jac_c part for low rank data.
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)
Set up the augmented system and solve it for a given right hand side.
double delta_c_
Most recent value of delta_c from Set method.