1 /* 2 Include file for the matrix component of PETSc 3 */ 4 #ifndef __MAT_PACKAGE 5 #define __MAT_PACKAGE 6 7 #if !defined(IS_PACKAGE) 8 is.h must be included before mat.h 9 #endif 10 #if !defined(VEC_COMPONENT) 11 vec.h must be included before mat.h 12 #endif 13 14 typedef struct _Mat* Mat; 15 typedef double* MatScalar; 16 typedef struct _MatScatterCtx* MatScatterCtx; 17 18 extern int MatCreateSequentialDense ANSI_ARGS((int,int,Mat *)); 19 extern int MatCreateSequentialAIJ ANSI_ARGS((int,int,Mat *)); 20 21 extern int MatValidMatrix ANSI_ARGS((Mat)); 22 23 extern int MatInsertValues ANSI_ARGS((Mat,MatScalar,int,int*,int,int*)); 24 extern int MatAddValues ANSI_ARGS((Mat,MatScalar,int,int*,int,int*)); 25 extern int MatBeginAssembly ANSI_ARGS((Mat)); 26 extern int MatEndAssembly ANSI_ARGS((Mat)); 27 28 extern int MatGetValues ANSI_ARGS((Mat,MatScalar,int,int*,int,int*)); 29 extern int MatGetRow ANSI_ARGS((Mat,int,int *,int **,MatScalar *)); 30 extern int MatRestoreRow ANSI_ARGS((Mat,int,int *,int **,MatScalar *)); 31 extern int MatGetCol ANSI_ARGS((Mat,int,int *,int **,MatScalar *)); 32 extern int MatRestoreCol ANSI_ARGS((Mat,int,int *,int **,MatScalar *)); 33 34 extern int MatMult ANSI_ARGS((Mat,Vec,Vec)); 35 extern int MatMultAdd ANSI_ARGS((Mat,Vec,Vec,Vec)); 36 extern int MatMultTran ANSI_ARGS((Mat,Vec,Vec)); 37 extern int MatMultTranAdd ANSI_ARGS((Mat,Vec,Vec,Vec)); 38 39 extern int MatLUFactor ANSI_ARGS((Mat)); 40 extern int MatCholeskyFactor ANSI_ARGS((Mat)); 41 extern int MatSolve ANSI_ARGS((Mat,Vec,Vec)); 42 extern int MatSolveAdd ANSI_ARGS((Mat,Vec,Vec,Vec)); 43 extern int MatSolveTran ANSI_ARGS((Mat,Vec,Vec)); 44 extern int MatSolveTranAdd ANSI_ARGS((Mat,Vec,Vec,Vec)); 45 46 extern int MatRelax ANSI_ARGS((Mat,Vec,double,int,Vec)); 47 extern int MatRelaxForward ANSI_ARGS((Mat,Vec,double,Vec)); 48 extern int MatRelaxBackward ANSI_ARGS((Mat,Vec,double,Vec)); 49 50 extern int MatCopy ANSI_ARGS((Mat,Mat *)); 51 extern int MatView ANSI_ARGS((Mat,void*)); 52 extern int MatPrintMatlab ANSI_ARGS((Mat,FILE*,char *)); 53 extern int MatNonZeros ANSI_ARGS((Mat)); 54 extern int MatMemoryUsed ANSI_ARGS((Mat)); 55 extern int MatGetDiagonal ANSI_ARGS((Mat,Vec *)); 56 extern int MatTranspose ANSI_ARGS((Mat)); 57 extern int MatScale ANSI_ARGS((Mat,Vec,Vec)); 58 extern int MatShrink ANSI_ARGS((Mat,int,int*,int,int*)); 59 extern int MatEqual ANSI_ARGS((Mat,Mat)); 60 extern int MatGetSubMatrix ANSI_ARGS((Mat,IS,IS,Mat *)); 61 extern int MatSetSubMatrix ANSI_ARGS((Mat,Mat,IS,IS)); 62 extern int MatReOrder ANSI_ARGS((Mat,IS,IS)); 63 64 #define NORM_1 1 65 #define NORM_2 2 66 #define NORM_FROBENIUS 3 67 #define NORM_INFINITY 4 68 extern int MatNorm ANSI_ARGS((Mat,int,double *)); 69 70 extern int MatDestroy ANSI_ARGS((Mat)); 71 #endif 72 73 74