xref: /petsc/include/petscmat.h (revision e78c158d3e892157a2f28f9e3058d5e1a81a32a3)
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,Mat*);
14 
15 /* ------------------------------------------------------------*/
16 extern int  MatValidMatrix(Mat);
17 
18 extern int MatInsertValues(Mat,Scalar*,int,int*,int,int*);
19 extern int MatAddValues(Mat,Scalar*,int,int*,int,int*);
20 extern int MatBeginAssembly(Mat);
21 extern int MatEndAssembly(Mat);
22 extern int MatSetInsertOption(Mat,int);
23 #define ROW_ORIENTED              1
24 #define COLUMN_ORIENTED           2
25 #define ROWS_SORTED               3
26 #define COLUMNS_SORTED            4
27 #define NO_NEW_NONZERO_LOCATIONS  5
28 #define YES_NEW_NONZERO_LOCATIONS 6
29 
30 extern int MatGetValues(Mat,Scalar*,int,int*,int,int*);
31 extern int MatGetRow(Mat,int,int *,int **,Scalar**);
32 extern int MatRestoreRow(Mat,int,int *,int **,Scalar**);
33 extern int MatGetCol(Mat,int,int *,int **,Scalar**);
34 extern int MatRestoreCol(Mat,int,int *,int **,Scalar**);
35 
36 extern int MatMult(Mat,Vec,Vec);
37 extern int MatMultAdd(Mat,Vec,Vec,Vec);
38 extern int MatMultTrans(Mat,Vec,Vec);
39 extern int MatMultTransAdd(Mat,Vec,Vec,Vec);
40 
41 #define ORDER_NATURAL 0
42 #define ORDER_ND      1
43 #define ORDER_1WD     2
44 #define ORDER_RCM     3
45 #define ORDER_QMD     4
46 extern int MatGetReordering(Mat,int,IS*,IS*);
47 
48 extern int MatLUFactor(Mat,IS,IS);
49 extern int MatCholeskyFactor(Mat,IS);
50 extern int MatLUFactorSymbolic(Mat,IS,IS,Mat*);
51 extern int MatCholeskyFactorSymbolic(Mat,IS,Mat*);
52 extern int MatLUFactorNumeric(Mat,Mat);
53 extern int MatCholeskyFactorNumeric(Mat,Mat);
54 
55 extern int MatSolve(Mat,Vec,Vec);
56 extern int MatSolveAdd(Mat,Vec,Vec,Vec);
57 extern int MatSolveTran(Mat,Vec,Vec);
58 extern int MatSolveTranAdd(Mat,Vec,Vec,Vec);
59 
60 #define SOR_FORWARD_SWEEP      1
61 #define SOR_BACKWARD_SWEEP     2
62 #define SOR_SYMMETRIC_SWEEP    3
63 #define SOR_ZERO_INITIAL_GUESS 4
64 extern int MatRelax(Mat,Vec,double,int,IS,int,Vec);
65 
66 extern int MatCopy(Mat,Mat*);
67 extern int MatView(Mat,Viewer);
68 #include <stdio.h>
69 extern int MatPrintMatlab(Mat,FILE*,char *);
70 extern int  MatNonZeros(Mat,int*);
71 extern int  MatMemoryUsed(Mat,int*);
72 extern int MatGetDiagonal(Mat,Vec);
73 extern int MatTranspose(Mat);
74 extern int MatScale(Mat,Vec,Vec);
75 extern int MatShrink(Mat,int,int*,int,int*);
76 extern int  MatEqual(Mat,Mat);
77 extern int  MatGetSubMatrix(Mat,IS,IS);
78 extern int MatSetSubMatrix(Mat,Mat,IS,IS);
79 extern int MatReOrder(Mat,IS,IS);
80 
81 #define NORM_1         1
82 #define NORM_2         2
83 #define NORM_FROBENIUS 3
84 #define NORM_INFINITY  4
85 extern int MatNorm(Mat,int,double *);
86 
87 extern int MatZeroEntries(Mat);
88 extern int MatZeroRows(Mat);
89 
90 extern int MatCompress(Mat);
91 extern int MatDestroy(Mat);
92 
93 extern int MatCreateInitialMatrix(int,int,Mat*);
94 
95 
96 
97 #endif
98 
99 
100