xref: /petsc/src/mat/impls/aij/seq/aij.h (revision 6024bd2c273c6b4ac03c2bd49d1968cdcd0f9df3)
1 
2 #if !defined(__AIJ_H)
3 #define __AIJ_H
4 #include "src/mat/impls/csr/inode/inode.h"
5 /*
6   MATSEQAIJ format - Compressed row storage (also called Yale sparse matrix
7   format).  The i[] and j[] arrays start at 0. For example,
8   j[i[k]+p] is the pth column in row k.  Note that the diagonal
9   matrix elements are stored with the rest of the nonzeros (not separately).
10 */
11 
12 typedef struct {
13   MAT_INODE_HEADER;
14   PetscTruth       sorted;           /* if true, rows are sorted by increasing columns */
15   PetscTruth       roworiented;      /* if true, row-oriented input, default */
16   PetscInt         nonew;            /* 1 don't add new nonzeros, -1 generate error on new */
17   PetscTruth       singlemalloc;     /* if true a, i, and j have been obtained with
18                                           one big malloc */
19   PetscTruth       freedata;         /* free the i,j,a data when the matrix is destroyed; true by default */
20   PetscInt         maxnz;            /* allocated nonzeros */
21   PetscInt         *imax;            /* maximum space allocated for each row */
22   PetscInt         *ilen;            /* actual length of each row */
23   PetscInt         reallocs;         /* number of mallocs done during MatSetValues()
24                                         as more values are set than were prealloced */
25   PetscInt         rmax;             /* max nonzeros in any row */
26   PetscScalar      *saved_values;    /* location for stashing nonzero values of matrix */
27   PetscScalar      *idiag,*ssor;     /* inverse of diagonal entries; space for eisen */
28 
29   PetscTruth       keepzeroedrows;   /* keeps matrix structure same in calls to MatZeroRows()*/
30   PetscTruth       ignorezeroentries;
31   ISColoring       coloring;         /* set with MatADSetColoring() used by MatADSetValues() */
32 
33   PetscInt         *xtoy,*xtoyB;     /* map nonzero pattern of X into Y's, used by MatAXPY() */
34   Mat              XtoY;             /* used by MatAXPY() */
35   Mat_CompressedRow compressedrow;   /* use compressed row format */
36 } Mat_SeqAIJ;
37 
38 EXTERN PetscErrorCode MatILUFactorSymbolic_SeqAIJ(Mat,IS,IS,MatFactorInfo*,Mat *);
39 EXTERN PetscErrorCode MatICCFactorSymbolic_SeqAIJ(Mat,IS,MatFactorInfo*,Mat *);
40 EXTERN PetscErrorCode MatCholeskyFactorSymbolic_SeqAIJ(Mat,IS,MatFactorInfo*,Mat*);
41 EXTERN PetscErrorCode MatCholeskyFactorNumeric_SeqAIJ(Mat,MatFactorInfo*,Mat*);
42 EXTERN PetscErrorCode MatDuplicate_SeqAIJ(Mat,MatDuplicateOption,Mat*);
43 EXTERN PetscErrorCode MatMissingDiagonal_SeqAIJ(Mat);
44 EXTERN PetscErrorCode MatMarkDiagonal_SeqAIJ(Mat);
45 
46 EXTERN PetscErrorCode MatMult_SeqAIJ(Mat A,Vec,Vec);
47 EXTERN PetscErrorCode MatMultAdd_SeqAIJ(Mat A,Vec,Vec,Vec);
48 EXTERN PetscErrorCode MatMultTranspose_SeqAIJ(Mat A,Vec,Vec);
49 EXTERN PetscErrorCode MatMultTransposeAdd_SeqAIJ(Mat A,Vec,Vec,Vec);
50 EXTERN PetscErrorCode MatRelax_SeqAIJ(Mat,Vec,PetscReal,MatSORType,PetscReal,PetscInt,PetscInt,Vec);
51 
52 EXTERN PetscErrorCode MatSetColoring_SeqAIJ(Mat,ISColoring);
53 EXTERN PetscErrorCode MatSetValuesAdic_SeqAIJ(Mat,void*);
54 EXTERN PetscErrorCode MatSetValuesAdifor_SeqAIJ(Mat,PetscInt,void*);
55 
56 EXTERN PetscErrorCode MatGetSymbolicTranspose_SeqAIJ(Mat,PetscInt *[],PetscInt *[]);
57 EXTERN PetscErrorCode MatGetSymbolicTransposeReduced_SeqAIJ(Mat,PetscInt,PetscInt,PetscInt *[],PetscInt *[]);
58 EXTERN PetscErrorCode MatRestoreSymbolicTranspose_SeqAIJ(Mat,PetscInt *[],PetscInt *[]);
59 EXTERN PetscErrorCode MatToSymmetricIJ_SeqAIJ(PetscInt,PetscInt*,PetscInt*,PetscInt,PetscInt,PetscInt**,PetscInt**);
60 EXTERN PetscErrorCode MatLUFactorSymbolic_SeqAIJ(Mat,IS,IS,MatFactorInfo*,Mat*);
61 EXTERN PetscErrorCode MatLUFactorNumeric_SeqAIJ(Mat,MatFactorInfo*,Mat*);
62 EXTERN PetscErrorCode MatLUFactor_SeqAIJ(Mat,IS,IS,MatFactorInfo*);
63 EXTERN PetscErrorCode MatSolve_SeqAIJ(Mat,Vec,Vec);
64 EXTERN PetscErrorCode MatSolveAdd_SeqAIJ(Mat,Vec,Vec,Vec);
65 EXTERN PetscErrorCode MatSolveTranspose_SeqAIJ(Mat,Vec,Vec);
66 EXTERN PetscErrorCode MatSolveTransposeAdd_SeqAIJ(Mat,Vec,Vec,Vec);
67 EXTERN PetscErrorCode MatEqual_SeqAIJ(Mat A,Mat B,PetscTruth* flg);
68 EXTERN PetscErrorCode MatFDColoringCreate_SeqAIJ(Mat,ISColoring,MatFDColoring);
69 EXTERN PetscErrorCode MatILUDTFactor_SeqAIJ(Mat,IS,IS,MatFactorInfo*,Mat*);
70 EXTERN PetscErrorCode MatLoad_SeqAIJ(PetscViewer,const MatType,Mat*);
71 EXTERN PetscErrorCode RegisterApplyPtAPRoutines_Private(Mat);
72 EXTERN PetscErrorCode MatMatMult_SeqAIJ_SeqAIJ(Mat,Mat,MatReuse,PetscReal,Mat*);
73 EXTERN PetscErrorCode MatMatMultSymbolic_SeqAIJ_SeqAIJ(Mat,Mat,PetscReal,Mat*);
74 EXTERN PetscErrorCode MatMatMultNumeric_SeqAIJ_SeqAIJ(Mat,Mat,Mat);
75 EXTERN PetscErrorCode MatPtAPSymbolic_SeqAIJ(Mat,Mat,PetscReal,Mat*);
76 EXTERN PetscErrorCode MatPtAPNumeric_SeqAIJ(Mat,Mat,Mat);
77 EXTERN PetscErrorCode MatPtAPSymbolic_SeqAIJ_SeqAIJ(Mat,Mat,PetscReal,Mat*);
78 EXTERN PetscErrorCode MatPtAPNumeric_SeqAIJ_SeqAIJ(Mat,Mat,Mat);
79 EXTERN PetscErrorCode MatMatMultTranspose_SeqAIJ_SeqAIJ(Mat,Mat,MatReuse,PetscReal,Mat*);
80 EXTERN PetscErrorCode MatMatMultTransposeSymbolic_SeqAIJ_SeqAIJ(Mat,Mat,PetscReal,Mat*);
81 EXTERN PetscErrorCode MatMatMultTransposeNumeric_SeqAIJ_SeqAIJ(Mat,Mat,Mat);
82 EXTERN PetscErrorCode MatSetValues_SeqAIJ(Mat,PetscInt,const PetscInt[],PetscInt,const PetscInt[],const PetscScalar[],InsertMode);
83 EXTERN PetscErrorCode MatGetRow_SeqAIJ(Mat,PetscInt,PetscInt*,PetscInt**,PetscScalar**);
84 EXTERN PetscErrorCode MatRestoreRow_SeqAIJ(Mat,PetscInt,PetscInt*,PetscInt**,PetscScalar**);
85 EXTERN PetscErrorCode MatPrintHelp_SeqAIJ(Mat);
86 EXTERN PetscErrorCode MatAXPY_SeqAIJ(const PetscScalar[],Mat,Mat,MatStructure);
87 
88 EXTERN_C_BEGIN
89 EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatConvert_SeqAIJ_SeqSBAIJ(Mat,const MatType,MatReuse,Mat*);
90 EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatConvert_SeqAIJ_SeqBAIJ(Mat,const MatType,MatReuse,Mat*);
91 EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatReorderForNonzeroDiagonal_SeqAIJ(Mat,PetscReal,IS,IS);
92 EXTERN_C_END
93 
94 #endif
95