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
Inexact
IpIterativePardisoSolverInterface.hpp
Go to the documentation of this file.
1
// Copyright (C) 2008 International Business Machines and others.
2
// All Rights Reserved.
3
// This code is published under the Eclipse Public License.
4
//
5
// $Id: IpIterativePardisoSolverInterface.hpp 2442 2013-11-26 11:32:00Z stefan $
6
//
7
// Authors: Andreas Waechter IBM 2008-09-18
8
// based on IpPardisoSolverInterface.hpp rev 1119
9
10
11
#ifndef __IPITERATIVEPARDISOSOLVERINTERFACE_HPP__
12
#define __IPITERATIVEPARDISOSOLVERINTERFACE_HPP__
13
14
#include "
IpSparseSymLinearSolverInterface.hpp
"
15
#include "
IpInexactCq.hpp
"
16
#include "
IpIterativeSolverTerminationTester.hpp
"
17
18
namespace
Ipopt
19
{
20
25
class
IterativePardisoSolverInterface
:
public
SparseSymLinearSolverInterface
26
{
27
public
:
31
IterativePardisoSolverInterface
(
IterativeSolverTerminationTester
& normal_tester,
32
IterativeSolverTerminationTester
& pd_tester);
33
35
virtual
~IterativePardisoSolverInterface
();
37
39
bool
InitializeImpl
(
const
OptionsList
& options,
40
const
std::string& prefix);
41
42
46
virtual
ESymSolverStatus
InitializeStructure
(
Index
dim,
Index
nonzeros,
47
const
Index
*ia,
48
const
Index
*ja);
49
52
virtual
double
*
GetValuesArrayPtr
();
53
55
virtual
ESymSolverStatus
MultiSolve
(
bool
new_matrix,
56
const
Index
* ia,
57
const
Index
* ja,
58
Index
nrhs,
59
double
* rhs_vals,
60
bool
check_NegEVals,
61
Index
numberOfNegEVals);
62
66
virtual
Index
NumberOfNegEVals
()
const
;
68
69
//* @name Options of Linear solver */
71
73
virtual
bool
IncreaseQuality
();
74
78
virtual
bool
ProvidesInertia
()
const
79
{
80
return
true
;
81
}
85
EMatrixFormat
MatrixFormat
()
const
86
{
87
return
CSR_Format_1_Offset
;
88
}
90
93
static
void
RegisterOptions
(
SmartPtr<RegisteredOptions>
roptions);
95
96
private
:
106
IterativePardisoSolverInterface
();
107
109
IterativePardisoSolverInterface
(
const
IterativePardisoSolverInterface
&);
110
112
void
operator=
(
const
IterativePardisoSolverInterface
&);
114
118
Index
dim_
;
119
121
Index
nonzeros_
;
122
124
double
*
a_
;
126
130
Index
negevals_
;
132
136
enum
PardisoMatchingStrategy
137
{
138
COMPLETE
,
139
COMPLETE2x2
,
140
CONSTRAINT
141
};
143
PardisoMatchingStrategy
match_strat_
;
146
bool
have_symbolic_factorization_
;
149
bool
pardiso_redo_symbolic_fact_only_if_inertia_wrong_
;
153
bool
pardiso_repeated_perturbation_means_singular_
;
156
bool
skip_inertia_check_
;
158
Index
pardiso_max_droptol_corrections_
;
160
163
Index
pardiso_max_iter_
;
164
Number
pardiso_iter_relative_tol_
;
165
Index
pardiso_iter_coarse_size_
;
166
Index
pardiso_iter_max_levels_
;
167
Number
pardiso_iter_dropping_factor_
;
168
Number
pardiso_iter_dropping_schur_
;
169
Index
pardiso_iter_max_row_fill_
;
170
Number
pardiso_iter_inverse_norm_factor_
;
171
172
Index
normal_pardiso_max_iter_
;
173
Number
normal_pardiso_iter_relative_tol_
;
174
Index
normal_pardiso_iter_coarse_size_
;
175
Index
normal_pardiso_iter_max_levels_
;
176
Number
normal_pardiso_iter_dropping_factor_
;
177
Number
normal_pardiso_iter_dropping_schur_
;
178
Index
normal_pardiso_iter_max_row_fill_
;
179
Number
normal_pardiso_iter_inverse_norm_factor_
;
181
183
Number
decr_factor_
;
184
187
Number
pardiso_iter_dropping_factor_used_
;
188
Number
pardiso_iter_dropping_schur_used_
;
189
Number
normal_pardiso_iter_dropping_factor_used_
;
190
Number
normal_pardiso_iter_dropping_schur_used_
;
192
197
bool
initialized_
;
199
203
void
**
PT_
;
206
ipfint
MAXFCT_
;
208
ipfint
MNUM_
;
210
ipfint
MTYPE_
;
212
ipfint
*
IPARM_
;
214
double
*
DPARM_
;
216
ipfint
MSGLVL_
;
218
221
Index
debug_last_iter_
;
222
Index
debug_cnt_
;
224
229
ESymSolverStatus
SymbolicFactorization
(
const
Index
* ia,
230
const
Index
* ja);
231
234
ESymSolverStatus
Factorization
(
const
Index
* ia,
235
const
Index
* ja,
236
bool
check_NegEVals,
237
Index
numberOfNegEVals);
238
241
ESymSolverStatus
Solve
(
const
Index
* ia,
242
const
Index
* ja,
243
Index
nrhs,
244
double
*rhs_vals);
246
248
InexactData
&
InexData
()
249
{
250
InexactData
& inexact_data =
251
static_cast<
InexactData
&
>
(
IpData
().
AdditionalData
());
252
DBG_ASSERT
(dynamic_cast<InexactData*>(&
IpData
().AdditionalData()));
253
return
inexact_data;
254
}
255
257
InexactCq
&
InexCq
()
258
{
259
InexactCq
& inexact_cq =
260
static_cast<
InexactCq
&
>
(
IpCq
().
AdditionalCq
());
261
DBG_ASSERT
(dynamic_cast<InexactCq*>(&
IpCq
().AdditionalCq()));
262
return
inexact_cq;
263
}
264
266
SmartPtr<IterativeSolverTerminationTester>
normal_tester_
;
267
269
SmartPtr<IterativeSolverTerminationTester>
pd_tester_
;
270
271
};
272
273
}
// namespace Ipopt
274
#endif
Generated by
1.8.3.1