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_C_BEGIN 39 EXTERN PetscErrorCode MatSeqAIJSetPreallocation_SeqAIJ(Mat,PetscInt,PetscInt*); 40 EXTERN_C_END 41 EXTERN PetscErrorCode MatILUFactorSymbolic_SeqAIJ(Mat,IS,IS,MatFactorInfo*,Mat *); 42 EXTERN PetscErrorCode MatICCFactorSymbolic_SeqAIJ(Mat,IS,MatFactorInfo*,Mat *); 43 EXTERN PetscErrorCode MatCholeskyFactorSymbolic_SeqAIJ(Mat,IS,MatFactorInfo*,Mat*); 44 EXTERN PetscErrorCode MatCholeskyFactorNumeric_SeqAIJ(Mat,MatFactorInfo*,Mat*); 45 EXTERN PetscErrorCode MatDuplicate_SeqAIJ(Mat,MatDuplicateOption,Mat*); 46 EXTERN PetscErrorCode MatMissingDiagonal_SeqAIJ(Mat); 47 EXTERN PetscErrorCode MatMarkDiagonal_SeqAIJ(Mat); 48 49 EXTERN PetscErrorCode MatMult_SeqAIJ(Mat A,Vec,Vec); 50 EXTERN PetscErrorCode MatMultAdd_SeqAIJ(Mat A,Vec,Vec,Vec); 51 EXTERN PetscErrorCode MatMultTranspose_SeqAIJ(Mat A,Vec,Vec); 52 EXTERN PetscErrorCode MatMultTransposeAdd_SeqAIJ(Mat A,Vec,Vec,Vec); 53 EXTERN PetscErrorCode MatRelax_SeqAIJ(Mat,Vec,PetscReal,MatSORType,PetscReal,PetscInt,PetscInt,Vec); 54 55 EXTERN PetscErrorCode MatSetColoring_SeqAIJ(Mat,ISColoring); 56 EXTERN PetscErrorCode MatSetValuesAdic_SeqAIJ(Mat,void*); 57 EXTERN PetscErrorCode MatSetValuesAdifor_SeqAIJ(Mat,PetscInt,void*); 58 59 EXTERN PetscErrorCode MatGetSymbolicTranspose_SeqAIJ(Mat,PetscInt *[],PetscInt *[]); 60 EXTERN PetscErrorCode MatGetSymbolicTransposeReduced_SeqAIJ(Mat,PetscInt,PetscInt,PetscInt *[],PetscInt *[]); 61 EXTERN PetscErrorCode MatRestoreSymbolicTranspose_SeqAIJ(Mat,PetscInt *[],PetscInt *[]); 62 EXTERN PetscErrorCode MatToSymmetricIJ_SeqAIJ(PetscInt,PetscInt*,PetscInt*,PetscInt,PetscInt,PetscInt**,PetscInt**); 63 EXTERN PetscErrorCode MatLUFactorSymbolic_SeqAIJ(Mat,IS,IS,MatFactorInfo*,Mat*); 64 EXTERN PetscErrorCode MatLUFactorNumeric_SeqAIJ(Mat,MatFactorInfo*,Mat*); 65 EXTERN PetscErrorCode MatLUFactor_SeqAIJ(Mat,IS,IS,MatFactorInfo*); 66 EXTERN PetscErrorCode MatSolve_SeqAIJ(Mat,Vec,Vec); 67 EXTERN PetscErrorCode MatSolveAdd_SeqAIJ(Mat,Vec,Vec,Vec); 68 EXTERN PetscErrorCode MatSolveTranspose_SeqAIJ(Mat,Vec,Vec); 69 EXTERN PetscErrorCode MatSolveTransposeAdd_SeqAIJ(Mat,Vec,Vec,Vec); 70 EXTERN PetscErrorCode MatMatSolve_SeqAIJ(Mat,Mat,Mat); 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,IS,IS,MatFactorInfo*,Mat*); 74 EXTERN PetscErrorCode MatLoad_SeqAIJ(PetscViewer, 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(Mat,PetscScalar,Mat,MatStructure); 91 92 EXTERN_C_BEGIN 93 EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatConvert_SeqAIJ_SeqSBAIJ(Mat, MatType,MatReuse,Mat*); 94 EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatConvert_SeqAIJ_SeqBAIJ(Mat, MatType,MatReuse,Mat*); 95 EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatReorderForNonzeroDiagonal_SeqAIJ(Mat,PetscReal,IS,IS); 96 EXTERN_C_END 97 98 #endif 99