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