9 #ifndef __IP_LOWRANKAUGSYSTEMSOLVER_HPP__
10 #define __IP_LOWRANKAUGSYSTEMSOLVER_HPP__
38 const std::string& prefix);
65 Index numberOfNegEVals);
199 const Vector& proto_rhs_x,
200 const Vector& proto_rhs_s,
201 const Vector& proto_rhs_c,
202 const Vector& proto_rhs_d,
204 Index numberOfNegEVals);
222 const Vector& proto_rhs_x,
223 const Vector& proto_rhs_s,
224 const Vector& proto_rhs_c,
225 const Vector& proto_rhs_d,
232 Index numberOfNegEVals);
double delta_c_
Most recent value of delta_c from Set method.
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
ESymSolverStatus
Enum to report outcome of a linear solve.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
SmartPtr< DenseGenMatrix > J2_
TaggedObject::Tag d_x_tag_
Tag for D_x vector, representing the diagonal matrix D_x.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
SmartPtr< DenseGenMatrix > J1_
TaggedObject::Tag d_s_tag_
Tag for D_s vector, representing the diagonal matrix D_s.
SmartPtr< AugSystemSolver > aug_system_solver_
The augmented system solver object that should be used for the factorization of the augmented system ...
LowRankAugSystemSolver()
Default constructor.
TaggedObject::Tag w_tag_
Tag for W matrix.
double w_factor_
Most recent value of W_factor.
This is the base class for all derived symmetric matrix types.
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.
Template class for Smart Pointers.
This class stores a list of user set options.
Base class for Solver for the augmented system.
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
ESymSolverStatus SolveMultiVector(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, const MultiVectorMatrix &V, const SmartPtr< const Matrix > &P_LM, SmartPtr< MultiVectorMatrix > &V_x, SmartPtr< MultiVectorMatrix > &Vtilde1, SmartPtr< MultiVectorMatrix > &Vtilde1_x, bool check_NegEVals, Index numberOfNegEVals)
Method for solving the augmented system without low-rank update for multiple right hand sides that ar...
Solver for the augmented system with LowRankUpdateSymMatrix Hessian matrices.
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
Index num_neg_evals_
Stores the number of negative eigenvalues detected during most recent factorization.
virtual ~LowRankAugSystemSolver()
Default destructor.
TaggedObject::Tag j_d_tag_
Tag for J_d matrix.
Class for Matrices with few columns that consists of Vectors.
SmartPtr< MultiVectorMatrix > Vtilde1_
int Index
Type of all indices of vectors, matrices etc.
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...
unsigned int Tag
Type for the Tag values.
SmartPtr< const CompoundVectorSpace > compound_sol_vecspace_
Vector space for Compound vectors that capture the entire right hand side and solution vectors ...
void operator=(const LowRankAugSystemSolver &)
Overloaded Equals Operator.
SmartPtr< MultiVectorMatrix > Utilde2_
ESymSolverStatus UpdateFactorization(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, bool check_NegEVals, Index numberOfNegEVals)
Method for updating the factorization, including J1_, J2_, Vtilde1_, Utilde2, Wdiag_, compound_sol_vecspace_.
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_s_
Most recent value of delta_s from Set method.
double delta_x_
Most recent value of delta_x from Set method.
SmartPtr< DiagMatrix > Wdiag_
Hessian Matrix passed to the augmented system solver solving the matrix without the low-rank update...
double delta_d_
Most recent value of delta_d from Set method.