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 MatSeqAIJSetPreallocation_SeqAIJ(Mat,PetscInt,PetscInt*); 39 EXTERN PetscErrorCode MatILUFactorSymbolic_SeqAIJ(Mat,IS,IS,MatFactorInfo*,Mat *); 40 EXTERN PetscErrorCode MatICCFactorSymbolic_SeqAIJ(Mat,IS,MatFactorInfo*,Mat *); 41 EXTERN PetscErrorCode MatCholeskyFactorSymbolic_SeqAIJ(Mat,IS,MatFactorInfo*,Mat*); 42 EXTERN PetscErrorCode MatCholeskyFactorNumeric_SeqAIJ(Mat,MatFactorInfo*,Mat*); 43 EXTERN PetscErrorCode MatDuplicate_SeqAIJ(Mat,MatDuplicateOption,Mat*); 44 EXTERN PetscErrorCode MatMissingDiagonal_SeqAIJ(Mat); 45 EXTERN PetscErrorCode MatMarkDiagonal_SeqAIJ(Mat); 46 47 EXTERN PetscErrorCode MatMult_SeqAIJ(Mat A,Vec,Vec); 48 EXTERN PetscErrorCode MatMultAdd_SeqAIJ(Mat A,Vec,Vec,Vec); 49 EXTERN PetscErrorCode MatMultTranspose_SeqAIJ(Mat A,Vec,Vec); 50 EXTERN PetscErrorCode MatMultTransposeAdd_SeqAIJ(Mat A,Vec,Vec,Vec); 51 EXTERN PetscErrorCode MatRelax_SeqAIJ(Mat,Vec,PetscReal,MatSORType,PetscReal,PetscInt,PetscInt,Vec); 52 53 EXTERN PetscErrorCode MatSetColoring_SeqAIJ(Mat,ISColoring); 54 EXTERN PetscErrorCode MatSetValuesAdic_SeqAIJ(Mat,void*); 55 EXTERN PetscErrorCode MatSetValuesAdifor_SeqAIJ(Mat,PetscInt,void*); 56 57 EXTERN PetscErrorCode MatGetSymbolicTranspose_SeqAIJ(Mat,PetscInt *[],PetscInt *[]); 58 EXTERN PetscErrorCode MatGetSymbolicTransposeReduced_SeqAIJ(Mat,PetscInt,PetscInt,PetscInt *[],PetscInt *[]); 59 EXTERN PetscErrorCode MatRestoreSymbolicTranspose_SeqAIJ(Mat,PetscInt *[],PetscInt *[]); 60 EXTERN PetscErrorCode MatToSymmetricIJ_SeqAIJ(PetscInt,PetscInt*,PetscInt*,PetscInt,PetscInt,PetscInt**,PetscInt**); 61 EXTERN PetscErrorCode MatLUFactorSymbolic_SeqAIJ(Mat,IS,IS,MatFactorInfo*,Mat*); 62 EXTERN PetscErrorCode MatLUFactorNumeric_SeqAIJ(Mat,MatFactorInfo*,Mat*); 63 EXTERN PetscErrorCode MatLUFactor_SeqAIJ(Mat,IS,IS,MatFactorInfo*); 64 EXTERN PetscErrorCode MatSolve_SeqAIJ(Mat,Vec,Vec); 65 EXTERN PetscErrorCode MatSolveAdd_SeqAIJ(Mat,Vec,Vec,Vec); 66 EXTERN PetscErrorCode MatSolveTranspose_SeqAIJ(Mat,Vec,Vec); 67 EXTERN PetscErrorCode MatSolveTransposeAdd_SeqAIJ(Mat,Vec,Vec,Vec); 68 EXTERN PetscErrorCode MatEqual_SeqAIJ(Mat A,Mat B,PetscTruth* flg); 69 EXTERN PetscErrorCode MatFDColoringCreate_SeqAIJ(Mat,ISColoring,MatFDColoring); 70 EXTERN PetscErrorCode MatILUDTFactor_SeqAIJ(Mat,IS,IS,MatFactorInfo*,Mat*); 71 EXTERN PetscErrorCode MatLoad_SeqAIJ(PetscViewer,const MatType,Mat*); 72 EXTERN PetscErrorCode RegisterApplyPtAPRoutines_Private(Mat); 73 EXTERN PetscErrorCode MatMatMult_SeqAIJ_SeqAIJ(Mat,Mat,MatReuse,PetscReal,Mat*); 74 EXTERN PetscErrorCode MatMatMultSymbolic_SeqAIJ_SeqAIJ(Mat,Mat,PetscReal,Mat*); 75 EXTERN PetscErrorCode MatMatMultNumeric_SeqAIJ_SeqAIJ(Mat,Mat,Mat); 76 EXTERN PetscErrorCode MatPtAPSymbolic_SeqAIJ(Mat,Mat,PetscReal,Mat*); 77 EXTERN PetscErrorCode MatPtAPNumeric_SeqAIJ(Mat,Mat,Mat); 78 EXTERN PetscErrorCode MatPtAPSymbolic_SeqAIJ_SeqAIJ(Mat,Mat,PetscReal,Mat*); 79 EXTERN PetscErrorCode MatPtAPNumeric_SeqAIJ_SeqAIJ(Mat,Mat,Mat); 80 EXTERN PetscErrorCode MatMatMultTranspose_SeqAIJ_SeqAIJ(Mat,Mat,MatReuse,PetscReal,Mat*); 81 EXTERN PetscErrorCode MatMatMultTransposeSymbolic_SeqAIJ_SeqAIJ(Mat,Mat,PetscReal,Mat*); 82 EXTERN PetscErrorCode MatMatMultTransposeNumeric_SeqAIJ_SeqAIJ(Mat,Mat,Mat); 83 EXTERN PetscErrorCode MatSetValues_SeqAIJ(Mat,PetscInt,const PetscInt[],PetscInt,const PetscInt[],const PetscScalar[],InsertMode); 84 EXTERN PetscErrorCode MatGetRow_SeqAIJ(Mat,PetscInt,PetscInt*,PetscInt**,PetscScalar**); 85 EXTERN PetscErrorCode MatRestoreRow_SeqAIJ(Mat,PetscInt,PetscInt*,PetscInt**,PetscScalar**); 86 EXTERN PetscErrorCode MatPrintHelp_SeqAIJ(Mat); 87 EXTERN PetscErrorCode MatAXPY_SeqAIJ(const PetscScalar[],Mat,Mat,MatStructure); 88 89 EXTERN_C_BEGIN 90 EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatConvert_SeqAIJ_SeqSBAIJ(Mat,const MatType,MatReuse,Mat*); 91 EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatConvert_SeqAIJ_SeqBAIJ(Mat,const MatType,MatReuse,Mat*); 92 EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatReorderForNonzeroDiagonal_SeqAIJ(Mat,PetscReal,IS,IS); 93 EXTERN_C_END 94 95 #endif 96