00001 00009 #ifndef _BLOCKDIAG_H_ 00010 #define _BLOCKDIAG_H_ 00011 00012 #include "petscpc.h" 00013 #include "petscvec.h" 00014 00015 namespace ot { 00016 00024 typedef struct { 00025 unsigned int dof; 00026 unsigned int nodeSize; 00027 double **invBlockDiagEntries; 00028 } PC_BlockDiag; 00029 00030 PetscErrorCode PCSetUp_BlockDiag(PC pc); 00031 00032 PetscErrorCode PCApply_BlockDiag(PC pc, Vec x, Vec y); 00033 00034 PetscErrorCode PCDestroy_BlockDiag(PC pc); 00035 00036 PetscErrorCode PCSetFromOptions_BlockDiag(PC pc); 00037 00038 PetscErrorCode PCCreate_BlockDiag(PC pc); 00039 00040 } //end namespace 00041 00042 #endif 00043