00001 #include "dsdpbasictypes.h"
00002 #if !defined(__DSDP_SCHURMATRICES_H)
00003 #define __DSDP_SCHURMATRICES_H
00004
00011 struct DSDPSchurMat_Ops{
00012 int id;
00013 int (*matzero)(void*);
00014 int (*matrownonzeros)(void*,int,double*,int*,int);
00015 int (*mataddrow)(void*,int,double,double[],int);
00016 int (*mataddelement)(void*,int,double);
00017 int (*matadddiagonal)(void*,double[],int);
00018 int (*matshiftdiagonal)(void*,double);
00019 int (*matassemble)(void*);
00020 int (*matscaledmultiply)(void*,double[],double[],int);
00021 int (*matmultr)(void*,double[],double[],int);
00022 int (*matfactor)(void*,int*);
00023 int (*matsolve)(void*,double[],double[],int);
00024 int (*matsetup)(void*,int);
00025 int (*pmatwhichdiag)(void*,double[],int);
00026 int (*pmatonprocessor)(void*,int,int*);
00027 int (*pmatlocalvariables)(void*,double[],int);
00028 int (*pmatreduction)(void*,double[],int);
00029 int (*pmatdistributed)(void*,int*);
00030 int (*matdestroy)(void*);
00031 int (*matview)(void*);
00032 const char *matname;
00033 };
00034
00035 extern int DSDPSetSchurMatOps(DSDP,struct DSDPSchurMat_Ops*,void*);
00036 extern int DSDPSchurMatOpsInitialize(struct DSDPSchurMat_Ops*);
00037 extern int DSDPSparsityInSchurMat(DSDP,int,int[],int);
00038 #endif
00039
00040