#include <IpTSymLinearSolver.hpp>
Inheritance diagram for Ipopt::TSymLinearSolver:
Public Member Functions | |
bool | InitializeImpl (const OptionsList &options, const std::string &prefix) |
overloaded from AlgorithmStrategyObject | |
Constructor/Destructor | |
TSymLinearSolver (SmartPtr< SparseSymLinearSolverInterface > solver_interface, SmartPtr< TSymScalingMethod > scaling_method) | |
Constructor. | |
virtual | ~TSymLinearSolver () |
Destructor. | |
Methods for requesting solution of the linear system. | |
virtual ESymSolverStatus | MultiSolve (const SymMatrix &A, std::vector< SmartPtr< const Vector > > &rhsV, std::vector< SmartPtr< Vector > > &solV, bool check_NegEVals, Index numberOfNegEVals) |
Solve operation for multiple right hand sides. | |
virtual Index | NumberOfNegEVals () const |
Number of negative eigenvalues detected during last factorization. | |
virtual bool | IncreaseQuality () |
Request to increase quality of solution for next solve. | |
virtual bool | ProvidesInertia () const |
Query whether inertia is computed by linear solver. | |
Static Public Member Functions | |
static void | RegisterOptions (SmartPtr< RegisteredOptions > roptions) |
Methods for OptionsList. | |
Private Member Functions | |
Default Compiler Generated Methods | |
(Hidden to avoid implicit creation/calling). These methods are not implemented and we do not want the compiler to implement them for us, so we declare them private and do not define them. This ensures that they will not be implicitly created/called. | |
TSymLinearSolver () | |
Default Constructor. | |
TSymLinearSolver (const TSymLinearSolver &) | |
Copy Constructor. | |
void | operator= (const TSymLinearSolver &) |
Overloaded Equals Operator. | |
Internal functions | |
ESymSolverStatus | InitializeStructure (const SymMatrix &symT_A) |
Initialize nonzero structure. | |
void | GiveMatrixToSolver (bool new_matrix, const SymMatrix &sym_A) |
Copy the elements of the matrix in the required format into the array that is provided by the solver interface. | |
Private Attributes | |
SmartPtr< SparseSymLinearSolverInterface > | solver_interface_ |
Strategy Object for an interface to a linear solver. | |
Information about the matrix | |
TaggedObject::Tag | atag_ |
Tag for the incoming matrix. | |
Index | dim_ |
Number of rows and columns of the matrix. | |
Index | nonzeros_triplet_ |
Number of nonzeros of the matrix in triplet format. | |
Index | nonzeros_compressed_ |
Number of nonzeros in compressed format. | |
Initialization flags | |
bool | have_structure_ |
Flag indicating if the internal structures are initialized. | |
bool | linear_scaling_on_demand_ |
Flag indicating whether the scaling objected is to be switched on when increased quality is requested. | |
bool | initialized_ |
Flag indicating if the InitializeStructure method has been called for the linear solver. | |
Stuff for scaling of the linear system. | |
SmartPtr< TSymScalingMethod > | scaling_method_ |
Strategy Object for a method that computes scaling factors for the matrices. | |
double * | scaling_factors_ |
Array storing the scaling factors. | |
bool | use_scaling_ |
Flag indicating whether scaling should be performed. | |
bool | just_switched_on_scaling_ |
Flag indicating whether we just switched on the scaling. | |
information about the matrix. | |
Index * | airn_ |
row indices of matrix in triplet (MA27) format. | |
Index * | ajcn_ |
column indices of matrix in triplet (MA27) format. | |
SmartPtr< TripletToCSRConverter > | triplet_to_csr_converter_ |
Pointer to object for conversion from triplet to compressed format. | |
SparseSymLinearSolverInterface::EMatrixFormat | matrix_format_ |
Flag indicating what matrix data format the solver requires. | |
Algorithmic parameters | |
bool | warm_start_same_structure_ |
Flag indicating whether the TNLP with identical structure has already been solved before. |
This interface includes a call to a method for scaling of the matrix (if given). This class takes in the contructor a pointer to the interface to an actual linear solver, and possibly a pointer to a method for computing scaling factors. It translates the SymMatrix into the format required by the linear solver and calls the solver via the TSymLinearSolverInterface. If a scaling method has been given, the matrix, the right hand side, and the solution are scaled.
Definition at line 32 of file IpTSymLinearSolver.hpp.
Ipopt::TSymLinearSolver::TSymLinearSolver | ( | SmartPtr< SparseSymLinearSolverInterface > | solver_interface, | |
SmartPtr< TSymScalingMethod > | scaling_method | |||
) |
Constructor.
The solver_interface is a pointer to a linear solver for symmetric matrices in triplet format. If scaling_method not NULL, it must be a pointer to a class for computing scaling factors for the matrix.
virtual Ipopt::TSymLinearSolver::~TSymLinearSolver | ( | ) | [virtual] |
Destructor.
Ipopt::TSymLinearSolver::TSymLinearSolver | ( | ) | [private] |
Default Constructor.
Ipopt::TSymLinearSolver::TSymLinearSolver | ( | const TSymLinearSolver & | ) | [private] |
Copy Constructor.
bool Ipopt::TSymLinearSolver::InitializeImpl | ( | const OptionsList & | options, | |
const std::string & | prefix | |||
) | [virtual] |
virtual ESymSolverStatus Ipopt::TSymLinearSolver::MultiSolve | ( | const SymMatrix & | A, | |
std::vector< SmartPtr< const Vector > > & | rhsV, | |||
std::vector< SmartPtr< Vector > > & | solV, | |||
bool | check_NegEVals, | |||
Index | numberOfNegEVals | |||
) | [virtual] |
Solve operation for multiple right hand sides.
For details see the description in the base class SymLinearSolver.
Implements Ipopt::SymLinearSolver.
virtual Index Ipopt::TSymLinearSolver::NumberOfNegEVals | ( | ) | const [virtual] |
Number of negative eigenvalues detected during last factorization.
Returns the number of negative eigenvalues of the most recent factorized matrix.
Implements Ipopt::SymLinearSolver.
virtual bool Ipopt::TSymLinearSolver::IncreaseQuality | ( | ) | [virtual] |
Request to increase quality of solution for next solve.
Ask linear solver to increase quality of solution for the next solve (e.g. increase pivot tolerance). Returns false, if this is not possible (e.g. maximal pivot tolerance already used.)
Implements Ipopt::SymLinearSolver.
virtual bool Ipopt::TSymLinearSolver::ProvidesInertia | ( | ) | const [virtual] |
Query whether inertia is computed by linear solver.
Returns true, if linear solver provides inertia.
Implements Ipopt::SymLinearSolver.
static void Ipopt::TSymLinearSolver::RegisterOptions | ( | SmartPtr< RegisteredOptions > | roptions | ) | [static] |
Methods for OptionsList.
void Ipopt::TSymLinearSolver::operator= | ( | const TSymLinearSolver & | ) | [private] |
Overloaded Equals Operator.
ESymSolverStatus Ipopt::TSymLinearSolver::InitializeStructure | ( | const SymMatrix & | symT_A | ) | [private] |
Initialize nonzero structure.
Set dim_ and nonzeros_, and copy the nonzero structure of symT_A into airn_ and ajcn_
void Ipopt::TSymLinearSolver::GiveMatrixToSolver | ( | bool | new_matrix, | |
const SymMatrix & | sym_A | |||
) | [private] |
Copy the elements of the matrix in the required format into the array that is provided by the solver interface.
Index Ipopt::TSymLinearSolver::dim_ [private] |
Number of nonzeros of the matrix in triplet format.
Note that some elements might appear multiple times in which case the values are added.
Definition at line 120 of file IpTSymLinearSolver.hpp.
Number of nonzeros in compressed format.
This is only computed if the sparse linear solver works with the CSR format.
Definition at line 124 of file IpTSymLinearSolver.hpp.
bool Ipopt::TSymLinearSolver::have_structure_ [private] |
Flag indicating if the internal structures are initialized.
For initialization, this object needs to have seen a matrix
Definition at line 131 of file IpTSymLinearSolver.hpp.
bool Ipopt::TSymLinearSolver::linear_scaling_on_demand_ [private] |
Flag indicating whether the scaling objected is to be switched on when increased quality is requested.
Definition at line 134 of file IpTSymLinearSolver.hpp.
bool Ipopt::TSymLinearSolver::initialized_ [private] |
Flag indicating if the InitializeStructure method has been called for the linear solver.
Definition at line 137 of file IpTSymLinearSolver.hpp.
Strategy Object for an interface to a linear solver.
Definition at line 141 of file IpTSymLinearSolver.hpp.
Strategy Object for a method that computes scaling factors for the matrices.
If NULL, no scaling is performed.
Definition at line 146 of file IpTSymLinearSolver.hpp.
double* Ipopt::TSymLinearSolver::scaling_factors_ [private] |
bool Ipopt::TSymLinearSolver::use_scaling_ [private] |
Flag indicating whether scaling should be performed.
Definition at line 150 of file IpTSymLinearSolver.hpp.
bool Ipopt::TSymLinearSolver::just_switched_on_scaling_ [private] |
Flag indicating whether we just switched on the scaling.
Definition at line 152 of file IpTSymLinearSolver.hpp.
Index* Ipopt::TSymLinearSolver::airn_ [private] |
row indices of matrix in triplet (MA27) format.
Definition at line 159 of file IpTSymLinearSolver.hpp.
Index* Ipopt::TSymLinearSolver::ajcn_ [private] |
column indices of matrix in triplet (MA27) format.
Definition at line 162 of file IpTSymLinearSolver.hpp.
Pointer to object for conversion from triplet to compressed format.
This is only required if the linear solver works with the compressed representation.
Definition at line 166 of file IpTSymLinearSolver.hpp.
Flag indicating what matrix data format the solver requires.
Definition at line 168 of file IpTSymLinearSolver.hpp.
bool Ipopt::TSymLinearSolver::warm_start_same_structure_ [private] |
Flag indicating whether the TNLP with identical structure has already been solved before.
Definition at line 175 of file IpTSymLinearSolver.hpp.