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
IpMa86SolverInterface.hpp
Go to the documentation of this file.
1
// Copyright (C) 2011, Science and Technology Facilities Council
2
// Copyright (C) 2009, Jonathan Hogg <jdh41.at.cantab.net>
3
// Copyright (C) 2004, 2007 International Business Machines and others.
4
// All Rights Reserved.
5
// This code is published under the Eclipse Public License.
6
//
7
// $Id: IpMa86SolverInterface.hpp 2332 2013-06-14 14:05:12Z stefan $
8
//
9
// Authors: Jonathan Hogg STFC 2011-03-14
10
// Jonathan Hogg 2009-07-29
11
// Carl Laird, Andreas Waechter IBM 2004-03-17
12
13
#ifndef __IPMA86SOLVERINTERFACE_HPP__
14
#define __IPMA86SOLVERINTERFACE_HPP__
15
16
#include "
IpSparseSymLinearSolverInterface.hpp
"
17
extern
"C"
18
{
19
#include "
hsl_ma86d.h
"
20
}
21
22
namespace
Ipopt
23
{
24
104
class
Ma86SolverInterface
:
public
SparseSymLinearSolverInterface
105
{
106
private
:
107
enum
order_opts
{
108
ORDER_AUTO
,
109
ORDER_AMD
,
110
ORDER_METIS
111
};
112
113
int
ndim_
;
// Number of dimensions
114
double
*
val_
;
// Storage for variables
115
int
numneg_
;
// Number of negative pivots in last factorization
116
Index
*
order_
;
// Fill reducing permutation
117
void
*
keep_
;
// Stores pointer to factors (only understood by Fortran code!)
118
bool
pivtol_changed_
;
// indicates if pivtol has been changed
119
120
/* Options */
121
struct
ma86_control
control_
;
122
double
umax_
;
123
int
ordering_
;
124
125
public
:
126
127
Ma86SolverInterface
() :
128
val_
(NULL),
keep_
(NULL),
pivtol_changed_
(false)
129
{}
130
~Ma86SolverInterface
();
131
132
static
void
RegisterOptions
(
SmartPtr<RegisteredOptions>
roptions);
133
134
bool
InitializeImpl
(
const
OptionsList
& options,
135
const
std::string& prefix);
136
145
ESymSolverStatus
InitializeStructure
(
Index
dim,
Index
nonzeros,
146
const
Index
* ia,
147
const
Index
* ja);
148
155
double
*
GetValuesArrayPtr
()
156
{
157
return
val_
;
158
}
159
192
ESymSolverStatus
MultiSolve
(
bool
new_matrix,
193
const
Index
* ia,
194
const
Index
* ja,
195
Index
nrhs,
196
double
* rhs_vals,
197
bool
check_NegEVals,
198
Index
numberOfNegEVals);
199
206
Index
NumberOfNegEVals
()
const
207
{
208
return
numneg_
;
209
}
211
212
//* @name Options of Linear solver */
214
220
bool
IncreaseQuality
();
221
225
bool
ProvidesInertia
()
const
226
{
227
return
true
;
228
}
229
233
EMatrixFormat
MatrixFormat
()
const
234
{
235
return
CSR_Format_1_Offset
;
236
}
238
244
bool
ProvidesDegeneracyDetection
()
const
245
{
246
return
false
;
247
}
250
ESymSolverStatus
DetermineDependentRows
(
const
Index
* ia,
251
const
Index
* ja,
252
std::list<Index>& c_deps)
253
{
254
return
SYMSOLVER_FATAL_ERROR
;
255
}
256
};
257
258
}
// namespace Ipopt
259
260
#endif
Generated by
1.8.3.1