xref: /petsc/include/petscmat.h (revision aabeff5590035bf336619cac8ab5f77fcf66f5a6)
1 /*
2      Include file for the matrix component of PETSc
3 */
4 #ifndef __MAT
5 #define __MAT
6 #include "vec.h"
7 
8 typedef struct _Mat*           Mat;
9 typedef struct _MatScatterCtx* MatScatterCtx;
10 
11 
12 extern int MatCreateSequentialDense(int,int,Mat*);
13 extern int MatCreateSequentialAIJ(int,int,int,int *,Mat*);
14 
15 extern int MatShellCreate(int,int,void *,Mat*);
16 extern int MatShellSetMult(Mat,int (*)(void*,Vec,Vec));
17 extern int MatShellSetMultTrans(Mat,int (*)(void*,Vec,Vec));
18 
19 
20 /* ------------------------------------------------------------*/
21 extern int  MatValidMatrix(Mat);
22 
23 extern int MatInsertValues(Mat,Scalar*,int,int*,int,int*);
24 extern int MatAddValues(Mat,Scalar*,int,int*,int,int*);
25 extern int MatBeginAssembly(Mat);
26 extern int MatEndAssembly(Mat);
27 extern int MatSetInsertOption(Mat,int);
28 #define ROW_ORIENTED              1
29 #define COLUMN_ORIENTED           2
30 #define ROWS_SORTED               3
31 #define COLUMNS_SORTED            4
32 #define NO_NEW_NONZERO_LOCATIONS  5
33 #define YES_NEW_NONZERO_LOCATIONS 6
34 
35 extern int MatGetValues(Mat,Scalar*,int,int*,int,int*);
36 extern int MatGetRow(Mat,int,int *,int **,Scalar**);
37 extern int MatRestoreRow(Mat,int,int *,int **,Scalar**);
38 extern int MatGetCol(Mat,int,int *,int **,Scalar**);
39 extern int MatRestoreCol(Mat,int,int *,int **,Scalar**);
40 
41 extern int MatMult(Mat,Vec,Vec);
42 extern int MatMultAdd(Mat,Vec,Vec,Vec);
43 extern int MatMultTrans(Mat,Vec,Vec);
44 extern int MatMultTransAdd(Mat,Vec,Vec,Vec);
45 
46 #define ORDER_NATURAL 0
47 #define ORDER_ND      1
48 #define ORDER_1WD     2
49 #define ORDER_RCM     3
50 #define ORDER_QMD     4
51 extern int MatGetReordering(Mat,int,IS*,IS*);
52 
53 extern int MatLUFactor(Mat,IS,IS);
54 extern int MatCholeskyFactor(Mat,IS);
55 extern int MatLUFactorSymbolic(Mat,IS,IS,Mat*);
56 extern int MatCholeskyFactorSymbolic(Mat,IS,Mat*);
57 extern int MatLUFactorNumeric(Mat,Mat);
58 extern int MatCholeskyFactorNumeric(Mat,Mat);
59 
60 extern int MatSolve(Mat,Vec,Vec);
61 extern int MatSolveAdd(Mat,Vec,Vec,Vec);
62 extern int MatSolveTran(Mat,Vec,Vec);
63 extern int MatSolveTranAdd(Mat,Vec,Vec,Vec);
64 
65 #define SOR_FORWARD_SWEEP      1
66 #define SOR_BACKWARD_SWEEP     2
67 #define SOR_SYMMETRIC_SWEEP    3
68 #define SOR_ZERO_INITIAL_GUESS 4
69 extern int MatRelax(Mat,Vec,double,int,IS,int,Vec);
70 
71 extern int MatCopy(Mat,Mat*);
72 extern int MatView(Mat,Viewer);
73 #include <stdio.h>
74 extern int MatPrintMatlab(Mat,FILE*,char *);
75 extern int  MatNonZeros(Mat,int*);
76 extern int  MatMemoryUsed(Mat,int*);
77 extern int MatGetDiagonal(Mat,Vec);
78 extern int MatTranspose(Mat);
79 extern int MatScale(Mat,Vec,Vec);
80 extern int MatShrink(Mat,int,int*,int,int*);
81 extern int  MatEqual(Mat,Mat);
82 extern int  MatScatterBegin(Mat,IS,IS,Mat,IS,IS,MatScatterCtx*);
83 extern int  MatScatterEnd(Mat,IS,IS,Mat,IS,IS,MatScatterCtx*);
84 extern int  MatScatterAddBegin(Mat,IS,IS,Mat,IS,IS,MatScatterCtx*);
85 extern int  MatScatterAddEnd(Mat,IS,IS,Mat,IS,IS,MatScatterCtx*);
86 extern int MatReOrder(Mat,IS,IS);
87 
88 #define NORM_1         1
89 #define NORM_2         2
90 #define NORM_FROBENIUS 3
91 #define NORM_INFINITY  4
92 extern int MatNorm(Mat,int,double *);
93 
94 extern int MatZeroEntries(Mat);
95 extern int MatZeroRows(Mat);
96 
97 extern int MatCompress(Mat);
98 extern int MatDestroy(Mat);
99 
100 extern int MatCreateInitialMatrix(int,int,Mat*);
101 
102 
103 
104 #endif
105 
106 
107