Actual source code: 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: */

 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 */

 29:   PetscTruth       keepzeroedrows;   /* keeps matrix structure same in calls to MatZeroRows()*/
 30:   PetscTruth       ignorezeroentries;
 31:   ISColoring       coloring;         /* set with MatADSetColoring() used by MatADSetValues() */

 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;

 39: EXTERN PetscErrorCode MatSeqAIJSetPreallocation_SeqAIJ(Mat,PetscInt,PetscInt*);
 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);

 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);

 55: EXTERN PetscErrorCode MatSetColoring_SeqAIJ(Mat,ISColoring);
 56: EXTERN PetscErrorCode MatSetValuesAdic_SeqAIJ(Mat,void*);
 57: EXTERN PetscErrorCode MatSetValuesAdifor_SeqAIJ(Mat,PetscInt,void*);

 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 MatEqual_SeqAIJ(Mat A,Mat B,PetscTruth* flg);
 71: EXTERN PetscErrorCode MatFDColoringCreate_SeqAIJ(Mat,ISColoring,MatFDColoring);
 72: EXTERN PetscErrorCode MatILUDTFactor_SeqAIJ(Mat,IS,IS,MatFactorInfo*,Mat*);
 73: EXTERN PetscErrorCode MatLoad_SeqAIJ(PetscViewer, MatType,Mat*);
 74: EXTERN PetscErrorCode RegisterApplyPtAPRoutines_Private(Mat);
 75: EXTERN PetscErrorCode MatMatMult_SeqAIJ_SeqAIJ(Mat,Mat,MatReuse,PetscReal,Mat*);
 76: EXTERN PetscErrorCode MatMatMultSymbolic_SeqAIJ_SeqAIJ(Mat,Mat,PetscReal,Mat*);
 77: EXTERN PetscErrorCode MatMatMultNumeric_SeqAIJ_SeqAIJ(Mat,Mat,Mat);
 78: EXTERN PetscErrorCode MatPtAPSymbolic_SeqAIJ(Mat,Mat,PetscReal,Mat*);
 79: EXTERN PetscErrorCode MatPtAPNumeric_SeqAIJ(Mat,Mat,Mat);
 80: EXTERN PetscErrorCode MatPtAPSymbolic_SeqAIJ_SeqAIJ(Mat,Mat,PetscReal,Mat*);
 81: EXTERN PetscErrorCode MatPtAPNumeric_SeqAIJ_SeqAIJ(Mat,Mat,Mat);
 82: EXTERN PetscErrorCode MatMatMultTranspose_SeqAIJ_SeqAIJ(Mat,Mat,MatReuse,PetscReal,Mat*);
 83: EXTERN PetscErrorCode MatMatMultTransposeSymbolic_SeqAIJ_SeqAIJ(Mat,Mat,PetscReal,Mat*);
 84: EXTERN PetscErrorCode MatMatMultTransposeNumeric_SeqAIJ_SeqAIJ(Mat,Mat,Mat);
 85: EXTERN PetscErrorCode MatSetValues_SeqAIJ(Mat,PetscInt,const PetscInt[],PetscInt,const PetscInt[],const PetscScalar[],InsertMode);
 86: EXTERN PetscErrorCode MatGetRow_SeqAIJ(Mat,PetscInt,PetscInt*,PetscInt**,PetscScalar**);
 87: EXTERN PetscErrorCode MatRestoreRow_SeqAIJ(Mat,PetscInt,PetscInt*,PetscInt**,PetscScalar**);
 88: EXTERN PetscErrorCode MatPrintHelp_SeqAIJ(Mat);
 89: EXTERN PetscErrorCode MatAXPY_SeqAIJ(Mat,PetscScalar,Mat,MatStructure);

 92: EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatConvert_SeqAIJ_SeqSBAIJ(Mat, MatType,MatReuse,Mat*);
 93: EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatConvert_SeqAIJ_SeqBAIJ(Mat, MatType,MatReuse,Mat*);
 94: EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatReorderForNonzeroDiagonal_SeqAIJ(Mat,PetscReal,IS,IS);

 97: #endif