9 #ifndef __IP_AUGSYSTEMSOLVER_HPP__
10 #define __IP_AUGSYSTEMSOLVER_HPP__
52 const std::string& prefix) = 0;
83 Index numberOfNegEVals)
85 std::vector<SmartPtr<const Vector> > rhs_xV(1);
87 std::vector<SmartPtr<const Vector> > rhs_sV(1);
89 std::vector<SmartPtr<const Vector> > rhs_cV(1);
91 std::vector<SmartPtr<const Vector> > rhs_dV(1);
93 std::vector<SmartPtr<Vector> > sol_xV(1);
95 std::vector<SmartPtr<Vector> > sol_sV(1);
97 std::vector<SmartPtr<Vector> > sol_cV(1);
99 std::vector<SmartPtr<Vector> > sol_dV(1);
101 return MultiSolve(W, W_factor, D_x, delta_x, D_s, delta_s, J_c, D_c, delta_c,
102 J_d, D_d, delta_d, rhs_xV, rhs_sV, rhs_cV, rhs_dV,
103 sol_xV, sol_sV, sol_cV, sol_dV, check_NegEVals,
132 Index numberOfNegEVals)
146 for (
Index i=0; i<nrhs; i++) {
147 retval =
Solve(W, W_factor, D_x, delta_x, D_s, delta_s, J_c, D_c, delta_c,
149 *rhs_xV[i], *rhs_sV[i], *rhs_cV[i], *rhs_dV[i],
150 *sol_xV[i], *sol_sV[i], *sol_cV[i], *sol_dV[i],
151 check_NegEVals, numberOfNegEVals);
AugSystemSolver()
Default constructor.
virtual ~AugSystemSolver()
Default destructor.
ESymSolverStatus
Enum to report outcome of a linear solve.
This is the base class for all algorithm strategy objects.
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)=0
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)
Set up the augmented system and solve it for a given right hand side.
This is the base class for all derived symmetric matrix types.
Template class for Smart Pointers.
This class stores a list of user set options.
Base class for Solver for the augmented system.
virtual ESymSolverStatus MultiSolve(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, std::vector< SmartPtr< const Vector > > &rhs_xV, std::vector< SmartPtr< const Vector > > &rhs_sV, std::vector< SmartPtr< const Vector > > &rhs_cV, std::vector< SmartPtr< const Vector > > &rhs_dV, std::vector< SmartPtr< Vector > > &sol_xV, std::vector< SmartPtr< Vector > > &sol_sV, std::vector< SmartPtr< Vector > > &sol_cV, std::vector< SmartPtr< Vector > > &sol_dV, bool check_NegEVals, Index numberOfNegEVals)
Like Solve, but for multiple right hand sides.
virtual bool IncreaseQuality()=0
Request to increase quality of solution for next solve.
void operator=(const AugSystemSolver &)
Overloaded Equals Operator.
virtual bool ProvidesInertia() const =0
Query whether inertia is computed by linear solver.
int Index
Type of all indices of vectors, matrices etc.
DECLARE_STD_EXCEPTION(SUFFIX_EMPTY)
virtual Index NumberOfNegEVals() const =0
Number of negative eigenvalues detected during last solve.