xref: /petsc/include/petscmat.h (revision 8c819ef214cd8c0b6bd3ceeeb0404fcd3864b7e9)
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