dsdpschurmat.h
Go to the documentation of this file.00001 #if !defined(__DSDP_SCHURMATRIXOPERATIONS_H)
00002 #define __DSDP_SCHURMATRIXOPERATIONS_H
00003
00009 #include "dsdpvec.h"
00010 #include "dsdpbasictypes.h"
00011 #include "dsdpcg.h"
00012
00013
00014 typedef struct {
00015 int *var;
00016 int nvars;
00017 int nmaxvars;
00018 double *fval;
00019 double *fdual;
00020 double *xout;
00021 } FixedVariables;
00022
00023 typedef struct {
00024 FixedVariables fv;
00025 DSDPVec rhs3,dy3;
00026 double dd,r;
00027 int m;
00028 } DSDPSchurInfo;
00029
00035 struct DSDPSchurMat_C{
00036 void* data;
00037 struct DSDPSchurMat_Ops *dsdpops;
00038 DSDPSchurInfo* schur;
00039 };
00040
00049 typedef struct DSDPSchurMat_C DSDPSchurMat;
00050
00051
00052 #ifdef __cplusplus
00053 extern "C" {
00054 #endif
00055
00056 extern int DSDPSchurMatSetData(DSDPSchurMat*,struct DSDPSchurMat_Ops*, void*);
00057
00058 extern int DSDPSchurMatInitialize(DSDPSchurMat*);
00059 extern int DSDPSchurMatSetup(DSDPSchurMat, DSDPVec);
00060 extern int DSDPSchurMatZeroEntries(DSDPSchurMat);
00061 extern int DSDPSchurMatInParallel(DSDPSchurMat, DSDPTruth*);
00062 extern int DSDPSchurMatShiftDiagonal(DSDPSchurMat, double);
00063 extern int DSDPSchurMatAssemble(DSDPSchurMat);
00064 extern int DSDPSchurMatMultiply(DSDPSchurMat, DSDPVec, DSDPVec);
00065 extern int DSDPSchurMatMultR(DSDPSchurMat, DSDPVec, DSDPVec);
00066 extern int DSDPSchurMatReducePVec(DSDPSchurMat, DSDPVec);
00067 extern int DSDPSchurMatFactor(DSDPSchurMat,DSDPTruth*);
00068 extern int DSDPSchurMatSolve(DSDPSchurMat, DSDPVec, DSDPVec);
00069 extern int DSDPSchurMatDestroy(DSDPSchurMat*);
00070 extern int DSDPSchurMatView(DSDPSchurMat);
00071 extern int DSDPSchurMatSetR(DSDPSchurMat, double);
00072
00073 extern int DSDPSchurMatRowColumnScaling(DSDPSchurMat,int, DSDPVec,int*);
00074 extern int DSDPSchurMatAddRow(DSDPSchurMat, int, double, DSDPVec);
00075
00076 extern int DSDPSchurMatVariableCompute(DSDPSchurMat, int, double*);
00077 extern int DSDPSchurMatVariableComputeC(DSDPSchurMat, double*);
00078 extern int DSDPSchurMatVariableComputeR(DSDPSchurMat, double*);
00079 extern int DSDPSchurMatAddDiagonalElement(DSDPSchurMat, int, double);
00080 extern int DSDPSchurMatAddC(DSDPSchurMat,int,double);
00081 extern int DSDPSchurMatAddR(DSDPSchurMat,int,double);
00082
00083 extern int DSDPSchurMatDiagonalScaling(DSDPSchurMat, DSDPVec);
00084 extern int DSDPSchurMatAddDiagonal(DSDPSchurMat, DSDPVec);
00085
00086 extern int DSDPSchurMatRowScaling(DSDPSchurMat, DSDPVec);
00087
00088 extern int DSDPZeroFixedVariables( DSDPSchurMat, DSDPVec);
00089 extern int DSDPApplyFixedVariables( DSDPSchurMat, DSDPVec);
00090 extern int DSDPIsFixed( DSDPSchurMat, int, DSDPTruth*);
00091 extern int DSDPInitializeFixedVariable( FixedVariables *);
00092 extern int DSDPAddFixedVariable( DSDPSchurMat, int, double);
00093
00094 #ifdef __cplusplus
00095 }
00096 #endif
00097
00098 #endif
00099
00100