Main Page
Namespaces
Classes
Files
File List
File Members
build
buildd
coinor-ipopt-3.10.2
Ipopt
src
Algorithm
LinearSolvers
IpSymLinearSolver.hpp
Go to the documentation of this file.
1
// Copyright (C) 2004, 2006 International Business Machines and others.
2
// All Rights Reserved.
3
// This code is published under the Eclipse Public License.
4
//
5
// $Id: IpSymLinearSolver.hpp 1861 2010-12-21 21:34:47Z andreasw $
6
//
7
// Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8
9
#ifndef __IPSYMLINEARSOLVER_HPP__
10
#define __IPSYMLINEARSOLVER_HPP__
11
12
#include "
IpUtils.hpp
"
13
#include "
IpSymMatrix.hpp
"
14
#include "
IpAlgStrategy.hpp
"
15
#include <vector>
16
17
namespace
Ipopt
18
{
19
21
enum
ESymSolverStatus
{
23
SYMSOLVER_SUCCESS
,
25
SYMSOLVER_SINGULAR
,
27
SYMSOLVER_WRONG_INERTIA
,
30
SYMSOLVER_CALL_AGAIN
,
33
SYMSOLVER_FATAL_ERROR
34
};
35
50
class
SymLinearSolver
:
public
AlgorithmStrategyObject
51
{
52
public
:
55
SymLinearSolver
()
56
{}
57
58
virtual
~SymLinearSolver
()
59
{}
61
63
virtual
bool
InitializeImpl
(
const
OptionsList
& options,
64
const
std::string& prefix) = 0;
65
80
virtual
ESymSolverStatus
MultiSolve
(
const
SymMatrix
&A,
81
std::vector<
SmartPtr<const Vector>
>& rhsV,
82
std::vector<
SmartPtr<Vector>
>& solV,
83
bool
check_NegEVals,
84
Index
numberOfNegEVals)=0;
85
89
ESymSolverStatus
Solve
(
const
SymMatrix
&A,
90
const
Vector
& rhs,
Vector
& sol,
91
bool
check_NegEVals,
92
Index
numberOfNegEVals)
93
{
94
std::vector<SmartPtr<const Vector> > rhsV(1);
95
rhsV[0] = &rhs;
96
std::vector<SmartPtr<Vector> > solV(1);
97
solV[0] = /
98
return
MultiSolve
(A, rhsV, solV, check_NegEVals,
99
numberOfNegEVals);
100
}
101
108
virtual
Index
NumberOfNegEVals
()
const
=0;
110
111
//* @name Options of Linear solver */
113
118
virtual
bool
IncreaseQuality
() =0;
119
123
virtual
bool
ProvidesInertia
()
const
=0;
125
};
126
127
128
}
// namespace Ipopt
129
130
#endif
Generated on Fri Jun 29 2012 06:35:13 by
1.8.1.1