Actual source code: baij.h

 4:  #include private/matimpl.h
 5:  #include ../src/mat/impls/aij/seq/aij.h


  8: /*  
  9:   MATSEQBAIJ format - Block compressed row storage. The i[] and j[] 
 10:   arrays start at 0.
 11: */

 13: /* This header is shared by the SeqSBAIJ matrix */
 14: #define SEQBAIJHEADER \
 15:   PetscInt         bs2;              /*  square of block size */                                     \
 16:   PetscInt         mbs,nbs;          /* rows/bs, columns/bs */                                       \
 17:   PetscScalar      *mult_work;       /* work array for matrix vector product*/                       \
 18:   MatScalar        *saved_values;                                                                    \
 19:                                                                                                      \
 20:   Mat              sbaijMat;         /* mat in sbaij format */                                       \
 21:                                                                                                      \
 22:   PetscTruth       pivotinblocks;    /* pivot inside factorization of each diagonal block */         \
 23:                                                                                                      \
 24:   MatScalar        *idiag;           /* inverse of block diagonal  */                                \
 25:   PetscTruth       idiagvalid       /* if above has correct/current values */


 28: typedef struct {
 29:   SEQAIJHEADER(MatScalar);
 30:   SEQBAIJHEADER;
 31: } Mat_SeqBAIJ;

 34: EXTERN PetscErrorCode MatSeqBAIJSetPreallocation_SeqBAIJ(Mat,PetscInt,PetscInt,PetscInt*);
 36: EXTERN PetscErrorCode MatILUFactorSymbolic_SeqBAIJ(Mat,Mat,IS,IS,const MatFactorInfo*);
 37: EXTERN PetscErrorCode MatICCFactorSymbolic_SeqBAIJ(Mat,Mat,IS,const MatFactorInfo*);
 38: EXTERN PetscErrorCode MatCholeskyFactorSymbolic_SeqBAIJ(Mat,Mat,IS,const MatFactorInfo*);
 39: EXTERN PetscErrorCode MatCholeskyFactorNumeric_SeqBAIJ_N(Mat,Mat,const MatFactorInfo*);
 40: EXTERN PetscErrorCode MatCholeskyFactorNumeric_SeqBAIJ_N_NaturalOrdering(Mat,Mat,const MatFactorInfo*);
 41: EXTERN PetscErrorCode MatDuplicate_SeqBAIJ(Mat,MatDuplicateOption,Mat*);
 42: EXTERN PetscErrorCode MatMissingDiagonal_SeqBAIJ(Mat,PetscTruth*,PetscInt*);
 43: EXTERN PetscErrorCode MatMarkDiagonal_SeqBAIJ(Mat);

 45: EXTERN PetscErrorCode MatLUFactorSymbolic_SeqBAIJ(Mat,Mat,IS,IS,const MatFactorInfo*);
 46: EXTERN PetscErrorCode MatLUFactor_SeqBAIJ(Mat,IS,IS,const MatFactorInfo*);
 47: EXTERN PetscErrorCode MatIncreaseOverlap_SeqBAIJ(Mat,PetscInt,IS*,PetscInt);
 48: EXTERN PetscErrorCode MatGetSubMatrix_SeqBAIJ(Mat,IS,IS,PetscInt,MatReuse,Mat*);
 49: EXTERN PetscErrorCode MatGetSubMatrices_SeqBAIJ(Mat,PetscInt,const IS[],const IS[],MatReuse,Mat*[]);
 50: EXTERN PetscErrorCode MatMultTranspose_SeqBAIJ(Mat,Vec,Vec);
 51: EXTERN PetscErrorCode MatMultTransposeAdd_SeqBAIJ(Mat,Vec,Vec,Vec);
 52: EXTERN PetscErrorCode MatScale_SeqBAIJ(Mat,PetscScalar);
 53: EXTERN PetscErrorCode MatNorm_SeqBAIJ(Mat,NormType,PetscReal *);
 54: EXTERN PetscErrorCode MatEqual_SeqBAIJ(Mat,Mat,PetscTruth*);
 55: EXTERN PetscErrorCode MatGetDiagonal_SeqBAIJ(Mat,Vec);
 56: EXTERN PetscErrorCode MatDiagonalScale_SeqBAIJ(Mat,Vec,Vec);
 57: EXTERN PetscErrorCode MatGetInfo_SeqBAIJ(Mat,MatInfoType,MatInfo *);
 58: EXTERN PetscErrorCode MatZeroEntries_SeqBAIJ(Mat);

 60: EXTERN PetscErrorCode MatSeqBAIJ_UpdateFactorNumeric_NaturalOrdering(Mat);

 62: EXTERN PetscErrorCode MatSolve_SeqBAIJ_1(Mat,Vec,Vec);
 63: EXTERN PetscErrorCode MatSolve_SeqBAIJ_1_NaturalOrdering(Mat,Vec,Vec);
 64: EXTERN PetscErrorCode MatSolve_SeqBAIJ_2(Mat,Vec,Vec);
 65: EXTERN PetscErrorCode MatSolve_SeqBAIJ_2_NaturalOrdering(Mat,Vec,Vec);
 66: EXTERN PetscErrorCode MatSolve_SeqBAIJ_3(Mat,Vec,Vec);
 67: EXTERN PetscErrorCode MatSolve_SeqBAIJ_3_NaturalOrdering(Mat,Vec,Vec);
 68: EXTERN PetscErrorCode MatSolve_SeqBAIJ_4(Mat,Vec,Vec);
 69: EXTERN PetscErrorCode MatSolve_SeqBAIJ_4_NaturalOrdering(Mat,Vec,Vec);
 70: #if defined(PETSC_HAVE_SSE)
 71: EXTERN PetscErrorCode MatSolve_SeqBAIJ_4_SSE_Demotion(Mat,Vec,Vec);
 72: EXTERN PetscErrorCode MatSolve_SeqBAIJ_4_NaturalOrdering_SSE_Demotion(Mat,Vec,Vec);
 73: EXTERN PetscErrorCode MatSolve_SeqBAIJ_4_NaturalOrdering_SSE_Demotion_usj(Mat,Vec,Vec);
 74: #endif
 75: EXTERN PetscErrorCode MatSolve_SeqBAIJ_5(Mat,Vec,Vec);
 76: EXTERN PetscErrorCode MatSolve_SeqBAIJ_5_NaturalOrdering(Mat,Vec,Vec);
 77: EXTERN PetscErrorCode MatSolve_SeqBAIJ_6(Mat,Vec,Vec);
 78: EXTERN PetscErrorCode MatSolve_SeqBAIJ_6_NaturalOrdering(Mat,Vec,Vec);
 79: EXTERN PetscErrorCode MatSolve_SeqBAIJ_7(Mat,Vec,Vec);
 80: EXTERN PetscErrorCode MatSolve_SeqBAIJ_7_NaturalOrdering(Mat,Vec,Vec);
 81: EXTERN PetscErrorCode MatSolve_SeqBAIJ_N(Mat,Vec,Vec);

 83: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_Update(Mat,Vec,Vec);
 84: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_1(Mat,Vec,Vec);
 85: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_1_NaturalOrdering(Mat,Vec,Vec);
 86: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_2(Mat,Vec,Vec);
 87: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_2_NaturalOrdering(Mat,Vec,Vec);
 88: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_3(Mat,Vec,Vec);
 89: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_3_NaturalOrdering(Mat,Vec,Vec);
 90: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_4(Mat,Vec,Vec);
 91: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_4_NaturalOrdering(Mat,Vec,Vec);
 92: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_5(Mat,Vec,Vec);
 93: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_5_NaturalOrdering(Mat,Vec,Vec);
 94: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_6(Mat,Vec,Vec);
 95: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_6_NaturalOrdering(Mat,Vec,Vec);
 96: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_7(Mat,Vec,Vec);
 97: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_7_NaturalOrdering(Mat,Vec,Vec);

 99: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_1(Mat,Mat,const MatFactorInfo*);
100: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_2(Mat,Mat,const MatFactorInfo*);
101: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_2_NaturalOrdering(Mat,Mat,const MatFactorInfo*);
102: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_3(Mat,Mat,const MatFactorInfo*);
103: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering(Mat,Mat,const MatFactorInfo*);
104: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_4(Mat,Mat,const MatFactorInfo*);
105: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_4_NaturalOrdering(Mat,Mat,const MatFactorInfo*);
106: #if defined(PETSC_HAVE_SSE)
107: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_4_NaturalOrdering_SSE(Mat,Mat,const MatFactorInfo*);
108: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_4_NaturalOrdering_SSE_usj(Mat,Mat,const MatFactorInfo*);
109: #else
110: #endif
111: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_5(Mat,Mat,const MatFactorInfo*);
112: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_5_NaturalOrdering(Mat,Mat,const MatFactorInfo*);
113: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_6(Mat,Mat,const MatFactorInfo*);
114: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_6_NaturalOrdering(Mat,Mat,const MatFactorInfo*);
115: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_7(Mat,Mat,const MatFactorInfo*);
116: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_7_NaturalOrdering(Mat,Mat,const MatFactorInfo*);
117: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_N(Mat,Mat,const MatFactorInfo*);

119: EXTERN PetscErrorCode MatMult_SeqBAIJ_1(Mat,Vec,Vec);
120: EXTERN PetscErrorCode MatMult_SeqBAIJ_2(Mat,Vec,Vec);
121: EXTERN PetscErrorCode MatMult_SeqBAIJ_3(Mat,Vec,Vec);
122: EXTERN PetscErrorCode MatMult_SeqBAIJ_4(Mat,Vec,Vec);
123: EXTERN PetscErrorCode MatMult_SeqBAIJ_5(Mat,Vec,Vec);
124: EXTERN PetscErrorCode MatMult_SeqBAIJ_6(Mat,Vec,Vec);
125: EXTERN PetscErrorCode MatMult_SeqBAIJ_7(Mat,Vec,Vec);
126: EXTERN PetscErrorCode MatMult_SeqBAIJ_N(Mat,Vec,Vec);

128: EXTERN PetscErrorCode MatMultAdd_SeqBAIJ_1(Mat,Vec,Vec,Vec);
129: EXTERN PetscErrorCode MatMultAdd_SeqBAIJ_2(Mat,Vec,Vec,Vec);
130: EXTERN PetscErrorCode MatMultAdd_SeqBAIJ_3(Mat,Vec,Vec,Vec);
131: EXTERN PetscErrorCode MatMultAdd_SeqBAIJ_4(Mat,Vec,Vec,Vec);
132: EXTERN PetscErrorCode MatMultAdd_SeqBAIJ_5(Mat,Vec,Vec,Vec);
133: EXTERN PetscErrorCode MatMultAdd_SeqBAIJ_6(Mat,Vec,Vec,Vec);
134: EXTERN PetscErrorCode MatMultAdd_SeqBAIJ_7(Mat,Vec,Vec,Vec);
135: EXTERN PetscErrorCode MatMultAdd_SeqBAIJ_N(Mat,Vec,Vec,Vec);
136: EXTERN PetscErrorCode MatLoad_SeqBAIJ(PetscViewer, const MatType,Mat*);

138: #endif