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