DSDP
dsdpschurmat.h
Go to the documentation of this file.
1 #if !defined(__DSDP_SCHURMATRIXOPERATIONS_H)
2 #define __DSDP_SCHURMATRIXOPERATIONS_H
3 
9 #include "dsdpvec.h"
10 #include "dsdpbasictypes.h"
11 #include "dsdpcg.h"
12 
13 
14 typedef struct {
15  int *var;
16  int nvars;
17  int nmaxvars;
18  double *fval;
19  double *fdual;
20  double *xout;
21 } FixedVariables;
22 
23 typedef struct {
24  FixedVariables fv;
25  DSDPVec rhs3,dy3;
26  double dd,r;
27  int m;
28 } DSDPSchurInfo;
29 
36  void* data;
37  struct DSDPSchurMat_Ops *dsdpops;
38  DSDPSchurInfo* schur;
39 };
40 
50 
51 
52 #ifdef __cplusplus
53 extern "C" {
54 #endif
55 
56 extern int DSDPSchurMatSetData(DSDPSchurMat*,struct DSDPSchurMat_Ops*, void*);
57 
62 extern int DSDPSchurMatShiftDiagonal(DSDPSchurMat, double);
65 extern int DSDPSchurMatMultR(DSDPSchurMat, DSDPVec, DSDPVec);
70 extern int DSDPSchurMatView(DSDPSchurMat);
71 extern int DSDPSchurMatSetR(DSDPSchurMat, double);
72 
74 extern int DSDPSchurMatAddRow(DSDPSchurMat, int, double, DSDPVec);
75 
76 extern int DSDPSchurMatVariableCompute(DSDPSchurMat, int, double*);
77 extern int DSDPSchurMatVariableComputeC(DSDPSchurMat, double*);
78 extern int DSDPSchurMatVariableComputeR(DSDPSchurMat, double*);
79 extern int DSDPSchurMatAddDiagonalElement(DSDPSchurMat, int, double);
80 extern int DSDPSchurMatAddC(DSDPSchurMat,int,double);
81 extern int DSDPSchurMatAddR(DSDPSchurMat,int,double);
82 
85 
87 
88 extern int DSDPZeroFixedVariables( DSDPSchurMat, DSDPVec);
89 extern int DSDPApplyFixedVariables( DSDPSchurMat, DSDPVec);
90 extern int DSDPIsFixed( DSDPSchurMat, int, DSDPTruth*);
91 extern int DSDPInitializeFixedVariable( FixedVariables *);
92 extern int DSDPAddFixedVariable( DSDPSchurMat, int, double);
93 
94 #ifdef __cplusplus
95 }
96 #endif
97 
98 #endif
99 
100 
DSDPSchurMatView
int DSDPSchurMatView(DSDPSchurMat)
Print the matrix.
Definition: dsdpschurmat.c:376
DSDPSchurMatSolve
int DSDPSchurMatSolve(DSDPSchurMat, DSDPVec, DSDPVec)
Solve the linear system.
Definition: dsdpschurmat.c:466
DSDPSchurMatVariableCompute
int DSDPSchurMatVariableCompute(DSDPSchurMat, int, double *)
Determine with the cone should compute this diagonal element of M and RHS.
Definition: dsdpschurmatadd.c:120
DSDPSchurMatAddDiagonal
int DSDPSchurMatAddDiagonal(DSDPSchurMat, DSDPVec)
Add elements to a row of the Schur matrix.
Definition: dsdpschurmatadd.c:272
DSDPSchurMatRowColumnScaling
int DSDPSchurMatRowColumnScaling(DSDPSchurMat, int, DSDPVec, int *)
Get the scaling and nonzero pattern of each column in this row of the matrix.
Definition: dsdpschurmatadd.c:33
DSDPSchurMatZeroEntries
int DSDPSchurMatZeroEntries(DSDPSchurMat)
Zero all element in the matrix.
Definition: dsdpschurmat.c:97
DSDPVec
struct DSDPVec_C DSDPVec
This object hold m+2 variables: a scaling of C, the y variables, and r.
Definition: dsdpvec.h:25
dsdpcg.h
Internal data structure for CG method.
DSDPSchurMatSetup
int DSDPSchurMatSetup(DSDPSchurMat, DSDPVec)
Set up the data structure.
Definition: dsdpschurmat.c:352
dsdpvec.h
Vector operations used by the solver.
DSDPTruth
DSDPTruth
Boolean variables.
Definition: dsdpbasictypes.h:19
DSDPSchurMatAddR
int DSDPSchurMatAddR(DSDPSchurMat, int, double)
Add an element to the Schur matrix correponding the variable r.
Definition: dsdpschurmatadd.c:198
DSDPSchurMatVariableComputeR
int DSDPSchurMatVariableComputeR(DSDPSchurMat, double *)
Add an element to the Schur matrix correponding the variable r.
Definition: dsdpschurmatadd.c:181
dsdpbasictypes.h
Solver, solution types, termination codes,.
DSDPSchurMatDiagonalScaling
int DSDPSchurMatDiagonalScaling(DSDPSchurMat, DSDPVec)
Get the scaling and nonzero pattern of each diagonal element of the matrix.
Definition: dsdpschurmatadd.c:235
DSDPSchurMatReducePVec
int DSDPSchurMatReducePVec(DSDPSchurMat, DSDPVec)
Collect elements of the vector.
Definition: dsdpschurmat.c:307
DSDPSchurMatAssemble
int DSDPSchurMatAssemble(DSDPSchurMat)
Final assembly of M.
Definition: dsdpschurmat.c:174
DSDPSchurMatAddRow
int DSDPSchurMatAddRow(DSDPSchurMat, int, double, DSDPVec)
Add elements to a row of the Schur matrix.
Definition: dsdpschurmatadd.c:76
DSDPSchurMatRowScaling
int DSDPSchurMatRowScaling(DSDPSchurMat, DSDPVec)
Identify which rows on on this processor.
Definition: dsdpschurmat.c:399
DSDPSchurMatInParallel
int DSDPSchurMatInParallel(DSDPSchurMat, DSDPTruth *)
Determine whether M is computed in parallel.
Definition: dsdpschurmat.c:149
DSDPSchurMatAddDiagonalElement
int DSDPSchurMatAddDiagonalElement(DSDPSchurMat, int, double)
Determine with the cone should compute this diagonal element of M and RHS.
Definition: dsdpschurmatadd.c:157
DSDPSchurMatShiftDiagonal
int DSDPSchurMatShiftDiagonal(DSDPSchurMat, double)
Add a scalar to each diagonal element of the matrix.
Definition: dsdpschurmat.c:120
DSDPSchurMatDestroy
int DSDPSchurMatDestroy(DSDPSchurMat *)
Free the memory in the data structure.
Definition: dsdpschurmat.c:414
DSDPSchurMatInitialize
int DSDPSchurMatInitialize(DSDPSchurMat *)
Initialize pointers to null.
Definition: dsdpschurmat.c:79
DSDPSchurMatSetR
int DSDPSchurMatSetR(DSDPSchurMat, double)
Set up the data structure.
Definition: dsdpschurmat.c:338
DSDPSchurMat_C
Schur complement matrix whose solution is the Newton direction.
Definition: dsdpschurmat.h:35
DSDPSchurMatMultiply
int DSDPSchurMatMultiply(DSDPSchurMat, DSDPVec, DSDPVec)
Multiply M by a vector. y = M x.
Definition: dsdpschurmat.c:231
DSDPSchurMatFactor
int DSDPSchurMatFactor(DSDPSchurMat, DSDPTruth *)
Factor M.
Definition: dsdpschurmat.c:196