Go to the documentation of this file.
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);
ESymSolverStatus
Enum to report outcome of a linear solve.
virtual bool ProvidesInertia() const =0
Query whether inertia is computed by linear solver.
virtual Index NumberOfNegEVals() const =0
Number of negative eigenvalues detected during last 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.
void operator=(const AugSystemSolver &)
Overloaded Equals Operator.
int Index
Type of all indices of vectors, matrices etc.
Template class for Smart Pointers.
virtual ~AugSystemSolver()
Default destructor.
AugSystemSolver()
Default constructor.
Base class for Solver for the augmented system.
This is the base class for all algorithm strategy objects.
This is the base class for all derived symmetric matrix types.
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.
This class stores a list of user set options.
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)=0
overloaded from AlgorithmStrategyObject
DECLARE_STD_EXCEPTION(SUFFIX_EMPTY)
virtual bool IncreaseQuality()=0
Request to increase quality of solution for next solve.