Go to the documentation of this file.
7 #ifndef __IP_AUGSYSTEMSOLVER_HPP__
8 #define __IP_AUGSYSTEMSOLVER_HPP__
52 const std::string& prefix
85 Index numberOfNegEVals
88 std::vector<SmartPtr<const Vector> > rhs_xV(1);
90 std::vector<SmartPtr<const Vector> > rhs_sV(1);
92 std::vector<SmartPtr<const Vector> > rhs_cV(1);
94 std::vector<SmartPtr<const Vector> > rhs_dV(1);
96 std::vector<SmartPtr<Vector> > sol_xV(1);
98 std::vector<SmartPtr<Vector> > sol_sV(1);
100 std::vector<SmartPtr<Vector> > sol_cV(1);
102 std::vector<SmartPtr<Vector> > sol_dV(1);
104 return MultiSolve(W, W_factor, D_x, delta_x, D_s, delta_s, J_c, D_c, delta_c, J_d, D_d, delta_d, rhs_xV, rhs_sV,
105 rhs_cV, rhs_dV, sol_xV, sol_sV, sol_cV, sol_dV, check_NegEVals, numberOfNegEVals);
135 Index numberOfNegEVals
150 for(
Index i = 0; i < nrhs; i++ )
152 retval = Solve(W, W_factor, D_x, delta_x, D_s, delta_s, J_c, D_c, delta_c, J_d, D_d, delta_d, *rhs_xV[i],
153 *rhs_sV[i], *rhs_cV[i], *rhs_dV[i], *sol_xV[i], *sol_sV[i], *sol_cV[i], *sol_dV[i], check_NegEVals,
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.
This file contains a base class for all exceptions and a set of macros to help with exceptions.
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.
AugSystemSolver(const AugSystemSolver &)
Copy Constructor.
void operator=(const AugSystemSolver &)
Default Assignment Operator.
int Index
Type of all indices of vectors, matrices etc.
Template class for Smart Pointers.
virtual ~AugSystemSolver()
Destructor.
AugSystemSolver()
Default constructor.
@ SYMSOLVER_SUCCESS
Successful solve.
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.
DECLARE_STD_EXCEPTION(FATAL_ERROR_IN_LINEAR_SOLVER)
This class stores a list of user set options.
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)=0
overloaded from AlgorithmStrategyObject
virtual bool IncreaseQuality()=0
Request to increase quality of solution for next solve.