DSDP
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
src
sdp
dsdpsdp.h
Go to the documentation of this file.
1
#ifndef __TAO_DSDPSDP_H
2
#define __TAO_DSDPSDP_H
3
8
#include "
dsdpschurmat.h
"
9
#include "
dsdpbasictypes.h
"
10
#include "
dsdpvec.h
"
11
12
#include "
sdpconevec.h
"
13
#include "
dsdpdatamat.h
"
14
#include "
dsdpdualmat.h
"
15
#include "
dsdpxmat.h
"
16
#include "
dsdpdsmat.h
"
17
#include "
dsdplanczos.h
"
18
19
typedef
enum
{ SDPCONEEXIST=1, SDPCONESETUP1=2 } SDPConeStatus;
20
25
typedef
struct
{
26
int
m;
27
int
*nnzblocks;
28
int
**nzblocks;
29
int
*ttnzmat;
30
int
**nnzmats;
31
int
**idA;
32
int
*idAP;
33
}
DSDPDataTranspose
;
34
39
typedef
struct
{
40
int
maxnnzmats;
41
int
nnzmats;
42
int
*nzmat;
43
DSDPDataMat
*A;
44
double
r;
/* Multiple of Identity added to S to make it psd */
45
double
scl;
46
}
DSDPBlockData
;
47
52
typedef
struct
{
53
54
DSDPBlockData
ADATA;
55
DSDPLanczosStepLength
Lanczos;
/* For Lanczos steplength routine */
56
57
int
n;
/* Dimensions */
58
double
gammamu;
/* Scale Barrier, used only by user option */
59
double
bmu;
/* For LMI, not used */
60
char
format;
/* Packed Symmetric, Full Symmetric, Lower,Upper */
61
int
nnz;
62
SDPConeStatus status;
63
64
SDPConeVec
W;
65
SDPConeVec
W2;
66
DSDPIndex IS;
67
68
DSDPDualMat
S;
/* Dual variable matrices */
69
DSDPDualMat
SS;
/* Compute primal variable matrices */
70
DSDPDSMat
DS;
/* Dual variable step matrices */
71
DSDPVMat
T;
/* Work Array and Primal variable matrice X */
72
73
}
SDPblk
;
74
80
struct
SDPCone_C
{
81
int
keyid;
82
83
/* Dimensions */
84
int
m, nn;
85
86
/* Data in block format */
87
int
nblocks;
88
SDPblk
*blk;
89
90
/* Transpose of Data */
91
DSDPDataTranspose
ATR;
92
93
/* Work space */
94
DSDPVec
Work, Work2;
95
96
/* Current Solution */
97
DSDPVec
YY,YX,DYX;
98
double
xmakermu;
99
100
int
optype;
101
DSDP
dsdp;
102
};
103
104
#define SDPCONEKEY 5438
105
#define SDPConeValid(a) {if (!(a)||((a)->keyid!=SDPCONEKEY)){ DSDPSETERR(101,"DSDPERROR: Invalid SDPCone object\n");}}
106
107
#define DSDPCHKBLOCKERR(a,b); { if (b){ DSDPSETERR1(b,"Block Number: %d,\n",a);} }
108
#define DSDPCHKVARERR(a,b); { if (b){ DSDPSETERR1(b,"Variable Number: %d,\n",a);} }
109
110
extern
int
DSDPSetDataMatZero
(
DSDPDataMat
*);
111
112
#include "
dsdp5.h
"
113
114
#ifdef __cplusplus
115
extern
"C"
{
116
#endif
117
118
/* Operations on the Data */
119
extern
int
DSDPBlockDataInitialize
(
DSDPBlockData
*);
120
extern
int
DSDPBlockDataAllocate
(
DSDPBlockData
*,
int
);
121
extern
int
DSDPBlockAddDataMatrix
(
DSDPBlockData
*,
int
,
struct
DSDPDataMat_Ops
*,
void
*);
122
extern
int
DSDPBlockSetDataMatrix
(
DSDPBlockData
*,
int
,
struct
DSDPDataMat_Ops
*,
void
*);
123
extern
int
DSDPBlockRemoveDataMatrix
(
DSDPBlockData
*,
int
);
124
extern
int
DSDPBlockDataMarkNonzeroMatrices
(
DSDPBlockData
*,
int
*);
125
extern
int
DSDPBlockDataRowSparsity
(
DSDPBlockData
*,
int
,
int
[],
int
[],
int
);
126
extern
int
DSDPBlockASum
(
DSDPBlockData
*,
double
,
DSDPVec
,
DSDPVMat
);
127
extern
int
DSDPBlockADot
(
DSDPBlockData
*,
double
,
DSDPVec
,
DSDPVMat
,
DSDPVec
);
128
extern
int
DSDPBlockvAv
(
DSDPBlockData
*,
double
,
DSDPVec
,
SDPConeVec
,
DSDPVec
);
129
extern
int
DSDPBlockDataDestroy
(
DSDPBlockData
*);
130
extern
int
DSDPBlockCheck(
DSDPBlockData
*,
SDPConeVec
,
DSDPVMat
);
131
extern
int
DSDPBlockANorm2(
DSDPBlockData
*,
DSDPVec
,
int
);
132
extern
int
DSDPBlockView
(
DSDPBlockData
*);
133
extern
int
DSDPBlockView2
(
DSDPBlockData
*);
134
extern
int
DSDPBlockCountNonzeroMatrices
(
DSDPBlockData
*,
int
*);
135
extern
int
DSDPBlockGetMatrix
(
DSDPBlockData
*,
int
,
int
*,
double
*,
DSDPDataMat
*);
136
extern
int
DSDPBlockFactorData
(
DSDPBlockData
*,
DSDPVMat
,
SDPConeVec
);
137
extern
int
DSDPBlockTakeDownData
(
DSDPBlockData
*);
138
extern
int
DSDPBlockDataRank(
DSDPBlockData
*,
int
*,
int
);
139
140
extern
int
DSDPBlockTakeDown
(
SDPblk
*);
141
extern
int
DSDPBlockInitialize
(
SDPblk
*);
142
143
extern
int
DSDPBlockEventInitialize(
void
);
144
extern
int
DSDPBlockEventZero(
void
);
145
146
extern
int
DSDPDataMatCheck
(
DSDPDataMat
,
SDPConeVec
,DSDPIndex,
DSDPVMat
);
147
148
/* Operations on the Transpose of the Data */
149
extern
int
DSDPDataTransposeInitialize
(
DSDPDataTranspose
*);
150
extern
int
DSDPDataTransposeTakeDown
(
DSDPDataTranspose
*);
151
extern
int
DSDPDataTransposeSetup
(
DSDPDataTranspose
*,
SDPblk
*,
int
,
int
);
152
153
extern
int
DSDPUseDefaultDualMatrix(
SDPCone
);
154
155
extern
int
SDPConeSetup
(
SDPCone
,
DSDPVec
);
156
extern
int
SDPConeSetup2
(
SDPCone
,
DSDPVec
,
DSDPSchurMat
);
157
extern
int
SDPConeComputeHessian
(
SDPCone
,
double
,
DSDPSchurMat
,
DSDPVec
,
DSDPVec
);
158
extern
int
SDPConeMultiply
(
SDPCone
,
int
,
double
,
DSDPVec
,
DSDPVec
,
DSDPVec
);
159
extern
int
SDPConeComputeRHS
(
SDPCone
,
int
,
double
,
DSDPVec
,
DSDPVec
,
DSDPVec
);
160
extern
int
SDPConeComputeXX
(
SDPCone
,
int
,
DSDPVec
,
double
,
DSDPDualMat
,
DSDPVMat
);
161
extern
int
SDPConeDestroy
(
SDPCone
);
162
163
extern
int
SDPConeCheckJ
(
SDPCone
,
int
);
164
extern
int
SDPConeCheckN
(
SDPCone
,
int
,
int
);
165
extern
int
SDPConeCheckM
(
SDPCone
,
int
);
166
extern
int
SDPConeCheckStorageFormat
(
SDPCone
,
int
,
char
);
167
168
169
extern
int
SDPConeComputeSS
(
SDPCone
,
int
,
DSDPVec
,
DSDPVMat
);
170
extern
int
SDPConeComputeXDot
(
SDPCone
,
int
,
DSDPVec
,
DSDPVMat
,
DSDPVec
,
double
*,
double
*,
double
*);
171
extern
int
SDPConeComputeX3
(
SDPCone
,
int
,
double
,
DSDPVec
,
DSDPVec
,
DSDPVMat
);
172
173
/* extern int DSDPPrintSDPA(TAO_DSDP *); */
174
extern
int
DSDPMakeVMat
(
char
,
int
,
DSDPVMat
*);
175
extern
int
DSDPMakeVMatWithArray
(
char
,
double
[],
int
,
int
,
DSDPVMat
*);
176
177
extern
int
DSDPSetDualMatrix(
SDPCone
sdpcone,
int
(*createdualmatrix)(
DSDPBlockData
*,
DSDPVec
,
DSDPVMat
,
DSDPVec
,
DSDPVec
,
DSDPDualMat
*,
DSDPDualMat
*,
DSDPDSMat
*,
void
*),
void
*);
178
179
extern
int
DSDPAddSDP
(
DSDP
,
SDPCone
);
180
#ifdef __cplusplus
181
}
182
#endif
183
184
extern
int
SDPConeSetRIdentity
(
SDPCone
,
int
,
int
,
double
);
185
extern
int
DSDPDualMatEventInitialize(
void
);
186
extern
int
DSDPVMatEventInitialize(
void
);
187
extern
int
DSDPDualMatEventZero(
void
);
188
extern
int
DSDPVMatEventZero(
void
);
189
190
#endif
Generated on Sun May 27 2012 21:02:52 for DSDP by
1.8.1