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