Go to the documentation of this file.
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);
ESymSolverStatus
Enum to report outcome of a linear solve.
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.
SmartPtr< MultiVectorMatrix > Vtilde1_
double delta_c_
Most recent value of delta_c from Set method.
Class for Matrices with few columns that consists of Vectors.
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
SmartPtr< const CompoundVectorSpace > compound_sol_vecspace_
Vector space for Compound vectors that capture the entire right hand side and solution vectors .
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
SmartPtr< DiagMatrix > Wdiag_
Hessian Matrix passed to the augmented system solver solving the matrix without the low-rank update.
virtual ~LowRankAugSystemSolver()
Default destructor.
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...
void operator=(const LowRankAugSystemSolver &)
Overloaded Equals Operator.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
TaggedObject::Tag j_d_tag_
Tag for J_d matrix.
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
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_,...
Solver for the augmented system with LowRankUpdateSymMatrix Hessian matrices.
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.
int Index
Type of all indices of vectors, matrices etc.
double delta_x_
Most recent value of delta_x from Set method.
double delta_d_
Most recent value of delta_d from Set method.
SmartPtr< DenseGenMatrix > J1_
SmartPtr< DenseGenMatrix > J2_
Template class for Smart Pointers.
TaggedObject::Tag d_s_tag_
Tag for D_s vector, representing the diagonal matrix D_s.
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
TaggedObject::Tag w_tag_
Tag for W matrix.
Base class for Solver for the augmented system.
SmartPtr< AugSystemSolver > aug_system_solver_
The augmented system solver object that should be used for the factorization of the augmented system ...
This is the base class for all derived symmetric matrix types.
LowRankAugSystemSolver()
Default constructor.
Index num_neg_evals_
Stores the number of negative eigenvalues detected during most recent factorization.
unsigned int Tag
Type for the Tag values.
double w_factor_
Most recent value of W_factor.
This class stores a list of user set options.
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.