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 PetscTruth ilu_preserve_row_sums; 27 PetscReal lu_dtcol; 28 PetscReal lu_shift; /* Manteuffel shift switch, fraction */ 29 PetscReal lu_shift_fraction; 30 PetscScalar *saved_values; /* location for stashing nonzero values of matrix */ 31 PetscScalar *idiag,*ssor; /* inverse of diagonal entries; space for eisen */ 32 33 PetscTruth keepzeroedrows; /* keeps matrix structure same in calls to MatZeroRows()*/ 34 PetscTruth ignorezeroentries; 35 ISColoring coloring; /* set with MatADSetColoring() used by MatADSetValues() */ 36 37 PetscInt *xtoy,*xtoyB; /* map nonzero pattern of X into Y's, used by MatAXPY() */ 38 Mat XtoY; /* used by MatAXPY() */ 39 Mat_CompressedRow compressedrow; /* use compressed row format */ 40 } Mat_SeqAIJ; 41 42 EXTERN PetscErrorCode MatILUFactorSymbolic_SeqAIJ(Mat,IS,IS,MatFactorInfo*,Mat *); 43 EXTERN PetscErrorCode MatICCFactorSymbolic_SeqAIJ(Mat,IS,MatFactorInfo*,Mat *); 44 EXTERN PetscErrorCode MatCholeskyFactorSymbolic_SeqAIJ(Mat,IS,MatFactorInfo*,Mat*); 45 EXTERN PetscErrorCode MatCholeskyFactorNumeric_SeqAIJ(Mat,MatFactorInfo*,Mat*); 46 EXTERN PetscErrorCode MatDuplicate_SeqAIJ(Mat,MatDuplicateOption,Mat*); 47 EXTERN PetscErrorCode MatMissingDiagonal_SeqAIJ(Mat); 48 EXTERN PetscErrorCode MatMarkDiagonal_SeqAIJ(Mat); 49 50 EXTERN PetscErrorCode MatMult_SeqAIJ(Mat A,Vec,Vec); 51 EXTERN PetscErrorCode MatMultAdd_SeqAIJ(Mat A,Vec,Vec,Vec); 52 EXTERN PetscErrorCode MatMultTranspose_SeqAIJ(Mat A,Vec,Vec); 53 EXTERN PetscErrorCode MatMultTransposeAdd_SeqAIJ(Mat A,Vec,Vec,Vec); 54 EXTERN PetscErrorCode MatRelax_SeqAIJ(Mat,Vec,PetscReal,MatSORType,PetscReal,PetscInt,PetscInt,Vec); 55 56 EXTERN PetscErrorCode MatSetColoring_SeqAIJ(Mat,ISColoring); 57 EXTERN PetscErrorCode MatSetValuesAdic_SeqAIJ(Mat,void*); 58 EXTERN PetscErrorCode MatSetValuesAdifor_SeqAIJ(Mat,PetscInt,void*); 59 60 EXTERN PetscErrorCode MatGetSymbolicTranspose_SeqAIJ(Mat,PetscInt *[],PetscInt *[]); 61 EXTERN PetscErrorCode MatGetSymbolicTransposeReduced_SeqAIJ(Mat,PetscInt,PetscInt,PetscInt *[],PetscInt *[]); 62 EXTERN PetscErrorCode MatRestoreSymbolicTranspose_SeqAIJ(Mat,PetscInt *[],PetscInt *[]); 63 EXTERN PetscErrorCode MatToSymmetricIJ_SeqAIJ(PetscInt,PetscInt*,PetscInt*,PetscInt,PetscInt,PetscInt**,PetscInt**); 64 EXTERN PetscErrorCode MatLUFactorSymbolic_SeqAIJ(Mat,IS,IS,MatFactorInfo*,Mat*); 65 EXTERN PetscErrorCode MatLUFactorNumeric_SeqAIJ(Mat,MatFactorInfo*,Mat*); 66 EXTERN PetscErrorCode MatLUFactor_SeqAIJ(Mat,IS,IS,MatFactorInfo*); 67 EXTERN PetscErrorCode MatSolve_SeqAIJ(Mat,Vec,Vec); 68 EXTERN PetscErrorCode MatSolveAdd_SeqAIJ(Mat,Vec,Vec,Vec); 69 EXTERN PetscErrorCode MatSolveTranspose_SeqAIJ(Mat,Vec,Vec); 70 EXTERN PetscErrorCode MatSolveTransposeAdd_SeqAIJ(Mat,Vec,Vec,Vec); 71 EXTERN PetscErrorCode MatEqual_SeqAIJ(Mat A,Mat B,PetscTruth* flg); 72 EXTERN PetscErrorCode MatFDColoringCreate_SeqAIJ(Mat,ISColoring,MatFDColoring); 73 EXTERN PetscErrorCode MatILUDTFactor_SeqAIJ(Mat,MatFactorInfo*,IS,IS,Mat*); 74 EXTERN PetscErrorCode MatLoad_SeqAIJ(PetscViewer,const MatType,Mat*); 75 EXTERN PetscErrorCode RegisterApplyPtAPRoutines_Private(Mat); 76 EXTERN PetscErrorCode MatMatMult_SeqAIJ_SeqAIJ(Mat,Mat,MatReuse,PetscReal,Mat*); 77 EXTERN PetscErrorCode MatMatMultSymbolic_SeqAIJ_SeqAIJ(Mat,Mat,PetscReal,Mat*); 78 EXTERN PetscErrorCode MatMatMultNumeric_SeqAIJ_SeqAIJ(Mat,Mat,Mat); 79 EXTERN PetscErrorCode MatPtAPSymbolic_SeqAIJ(Mat,Mat,PetscReal,Mat*); 80 EXTERN PetscErrorCode MatPtAPNumeric_SeqAIJ(Mat,Mat,Mat); 81 EXTERN PetscErrorCode MatPtAPSymbolic_SeqAIJ_SeqAIJ(Mat,Mat,PetscReal,Mat*); 82 EXTERN PetscErrorCode MatPtAPNumeric_SeqAIJ_SeqAIJ(Mat,Mat,Mat); 83 EXTERN PetscErrorCode MatMatMultTranspose_SeqAIJ_SeqAIJ(Mat,Mat,MatReuse,PetscReal,Mat*); 84 EXTERN PetscErrorCode MatMatMultTransposeSymbolic_SeqAIJ_SeqAIJ(Mat,Mat,PetscReal,Mat*); 85 EXTERN PetscErrorCode MatMatMultTransposeNumeric_SeqAIJ_SeqAIJ(Mat,Mat,Mat); 86 EXTERN PetscErrorCode MatSetValues_SeqAIJ(Mat,PetscInt,const PetscInt[],PetscInt,const PetscInt[],const PetscScalar[],InsertMode); 87 EXTERN PetscErrorCode MatGetRow_SeqAIJ(Mat,PetscInt,PetscInt*,PetscInt**,PetscScalar**); 88 EXTERN PetscErrorCode MatRestoreRow_SeqAIJ(Mat,PetscInt,PetscInt*,PetscInt**,PetscScalar**); 89 EXTERN PetscErrorCode MatPrintHelp_SeqAIJ(Mat); 90 EXTERN PetscErrorCode MatAXPY_SeqAIJ(const PetscScalar[],Mat,Mat,MatStructure); 91 92 EXTERN_C_BEGIN 93 EXTERN PetscErrorCode MatConvert_SeqAIJ_SeqSBAIJ(Mat,const MatType,MatReuse,Mat*); 94 EXTERN PetscErrorCode MatConvert_SeqAIJ_SeqBAIJ(Mat,const MatType,MatReuse,Mat*); 95 EXTERN PetscErrorCode MatReorderForNonzeroDiagonal_SeqAIJ(Mat,PetscReal,IS,IS); 96 EXTERN_C_END 97 98 #endif 99