Ipopt
3.11.8
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Algorithm
LinearSolvers
IpTSymLinearSolver.hpp
Go to the documentation of this file.
1
// Copyright (C) 2004, 2007 International Business Machines and others.
2
// All Rights Reserved.
3
// This code is published under the Eclipse Public License.
4
//
5
// $Id: IpTSymLinearSolver.hpp 2206 2013-04-13 15:29:15Z stefan $
6
//
7
// Authors: Carl Laird, Andreas Waechter IBM 2004-03-17
8
9
#ifndef __IPTSYMLINEARSOLVER_HPP__
10
#define __IPTSYMLINEARSOLVER_HPP__
11
12
#include "
IpSymLinearSolver.hpp
"
13
#include "
IpSparseSymLinearSolverInterface.hpp
"
14
#include "
IpTSymScalingMethod.hpp
"
15
#include "
IpSymMatrix.hpp
"
16
#include "
IpTripletToCSRConverter.hpp
"
17
#include <vector>
18
#include <list>
19
20
namespace
Ipopt
21
{
22
33
class
TSymLinearSolver
:
public
SymLinearSolver
34
{
35
public
:
42
TSymLinearSolver
(
SmartPtr<SparseSymLinearSolverInterface>
solver_interface,
43
SmartPtr<TSymScalingMethod>
scaling_method);
44
46
virtual
~TSymLinearSolver
();
48
50
bool
InitializeImpl
(
const
OptionsList
& options,
51
const
std::string& prefix);
52
58
virtual
ESymSolverStatus
MultiSolve
(
const
SymMatrix
&A,
59
std::vector<
SmartPtr<const Vector>
>& rhsV,
60
std::vector<
SmartPtr<Vector>
>& solV,
61
bool
check_NegEVals,
62
Index
numberOfNegEVals);
63
68
virtual
Index
NumberOfNegEVals
()
const
;
70
71
//* @name Options of Linear solver */
73
78
virtual
bool
IncreaseQuality
();
79
83
virtual
bool
ProvidesInertia
()
const
;
85
91
bool
ProvidesDegeneracyDetection
()
const
;
96
ESymSolverStatus
DetermineDependentRows
(
Index
n_rows,
Index
n_cols,
97
Index
n_jac_nz,
98
Number
* jac_c_vals,
99
Index
* jac_c_iRow,
100
Index
* jac_c_jCol,
101
std::list<Index>& c_deps);
103
106
static
void
RegisterOptions
(
SmartPtr<RegisteredOptions>
roptions);
108
109
private
:
119
TSymLinearSolver
();
120
122
TSymLinearSolver
(
const
TSymLinearSolver
&);
123
125
void
operator=
(
const
TSymLinearSolver
&);
127
131
TaggedObject::Tag
atag_
;
132
134
Index
dim_
;
135
139
Index
nonzeros_triplet_
;
143
Index
nonzeros_compressed_
;
145
150
bool
have_structure_
;
153
bool
linear_scaling_on_demand_
;
156
bool
initialized_
;
158
160
SmartPtr<SparseSymLinearSolverInterface>
solver_interface_
;
165
SmartPtr<TSymScalingMethod>
scaling_method_
;
167
double
*
scaling_factors_
;
169
bool
use_scaling_
;
171
bool
just_switched_on_scaling_
;
173
178
Index
*
airn_
;
181
Index
*
ajcn_
;
185
SmartPtr<TripletToCSRConverter>
triplet_to_csr_converter_
;
187
SparseSymLinearSolverInterface::EMatrixFormat
matrix_format_
;
189
194
bool
warm_start_same_structure_
;
196
203
ESymSolverStatus
InitializeStructure
(
const
SymMatrix
& symT_A);
204
207
void
GiveMatrixToSolver
(
bool
new_matrix,
const
SymMatrix
& sym_A);
209
};
210
211
}
// namespace Ipopt
212
#endif
Generated by
1.8.3.1