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