Actual source code: baij.h
4: #include 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: PetscScalar *saved_values; \
19: \
20: Mat sbaijMat; /* mat in sbaij format */ \
21: \
22: PetscInt setvalueslen; /* only used for single precision */ \
23: MatScalar *setvaluescopy; /* area double precision values in MatSetValuesXXX() are copied \
24: before calling MatSetValuesXXX_SeqBAIJ_MatScalar() */ \
25: \
26: PetscTruth pivotinblocks; /* pivot inside factorization of each diagonal block */ \
27: \
28: PetscScalar *idiag; /* inverse of block diagonal */ \
29: PetscTruth idiagvalid /* if above has correct/current values */
32: typedef struct {
33: SEQAIJHEADER(PetscScalar);
34: SEQBAIJHEADER;
35: } Mat_SeqBAIJ;
38: EXTERN PetscErrorCode MatSeqBAIJSetPreallocation_SeqBAIJ(Mat,PetscInt,PetscInt,PetscInt*);
40: EXTERN PetscErrorCode MatILUFactorSymbolic_SeqBAIJ(Mat,IS,IS,MatFactorInfo*,Mat *);
41: EXTERN PetscErrorCode MatICCFactorSymbolic_SeqBAIJ(Mat,IS,MatFactorInfo*,Mat *);
42: EXTERN PetscErrorCode MatCholeskyFactorSymbolic_SeqBAIJ(Mat,IS,MatFactorInfo*,Mat*);
43: EXTERN PetscErrorCode MatCholeskyFactorNumeric_SeqBAIJ_N(Mat,MatFactorInfo*,Mat*);
44: EXTERN PetscErrorCode MatCholeskyFactorNumeric_SeqBAIJ_N_NaturalOrdering(Mat,MatFactorInfo*,Mat*);
45: EXTERN PetscErrorCode MatDuplicate_SeqBAIJ(Mat,MatDuplicateOption,Mat*);
46: EXTERN PetscErrorCode MatMissingDiagonal_SeqBAIJ(Mat);
47: EXTERN PetscErrorCode MatMarkDiagonal_SeqBAIJ(Mat);
49: EXTERN PetscErrorCode MatLUFactorSymbolic_SeqBAIJ(Mat,IS,IS,MatFactorInfo*,Mat*);
50: EXTERN PetscErrorCode MatLUFactor_SeqBAIJ(Mat,IS,IS,MatFactorInfo*);
51: EXTERN PetscErrorCode MatIncreaseOverlap_SeqBAIJ(Mat,PetscInt,IS*,PetscInt);
52: EXTERN PetscErrorCode MatGetSubMatrix_SeqBAIJ(Mat,IS,IS,PetscInt,MatReuse,Mat*);
53: EXTERN PetscErrorCode MatGetSubMatrices_SeqBAIJ(Mat,PetscInt,const IS[],const IS[],MatReuse,Mat*[]);
54: EXTERN PetscErrorCode MatMultTranspose_SeqBAIJ(Mat,Vec,Vec);
55: EXTERN PetscErrorCode MatMultTransposeAdd_SeqBAIJ(Mat,Vec,Vec,Vec);
56: EXTERN PetscErrorCode MatScale_SeqBAIJ(Mat,PetscScalar);
57: EXTERN PetscErrorCode MatNorm_SeqBAIJ(Mat,NormType,PetscReal *);
58: EXTERN PetscErrorCode MatEqual_SeqBAIJ(Mat,Mat,PetscTruth*);
59: EXTERN PetscErrorCode MatGetDiagonal_SeqBAIJ(Mat,Vec);
60: EXTERN PetscErrorCode MatDiagonalScale_SeqBAIJ(Mat,Vec,Vec);
61: EXTERN PetscErrorCode MatGetInfo_SeqBAIJ(Mat,MatInfoType,MatInfo *);
62: EXTERN PetscErrorCode MatZeroEntries_SeqBAIJ(Mat);
64: EXTERN PetscErrorCode MatSeqBAIJ_UpdateFactorNumeric_NaturalOrdering(Mat);
65: EXTERN PetscErrorCode MatSeqBAIJ_UpdateSolvers(Mat);
67: EXTERN PetscErrorCode MatSolve_SeqBAIJ_Update(Mat,Vec,Vec);
68: EXTERN PetscErrorCode MatSolve_SeqBAIJ_1(Mat,Vec,Vec);
69: EXTERN PetscErrorCode MatSolve_SeqBAIJ_1_NaturalOrdering(Mat,Vec,Vec);
70: EXTERN PetscErrorCode MatSolve_SeqBAIJ_2(Mat,Vec,Vec);
71: EXTERN PetscErrorCode MatSolve_SeqBAIJ_2_NaturalOrdering(Mat,Vec,Vec);
72: EXTERN PetscErrorCode MatSolve_SeqBAIJ_3(Mat,Vec,Vec);
73: EXTERN PetscErrorCode MatSolve_SeqBAIJ_3_NaturalOrdering(Mat,Vec,Vec);
74: EXTERN PetscErrorCode MatSolve_SeqBAIJ_4(Mat,Vec,Vec);
75: EXTERN PetscErrorCode MatSolve_SeqBAIJ_4_NaturalOrdering(Mat,Vec,Vec);
76: #if defined(PETSC_HAVE_SSE)
77: EXTERN PetscErrorCode MatSolve_SeqBAIJ_4_SSE_Demotion(Mat,Vec,Vec);
78: EXTERN PetscErrorCode MatSolve_SeqBAIJ_4_NaturalOrdering_SSE_Demotion(Mat,Vec,Vec);
79: EXTERN PetscErrorCode MatSolve_SeqBAIJ_4_NaturalOrdering_SSE_Demotion_usj(Mat,Vec,Vec);
80: #endif
81: EXTERN PetscErrorCode MatSolve_SeqBAIJ_5(Mat,Vec,Vec);
82: EXTERN PetscErrorCode MatSolve_SeqBAIJ_5_NaturalOrdering(Mat,Vec,Vec);
83: EXTERN PetscErrorCode MatSolve_SeqBAIJ_6(Mat,Vec,Vec);
84: EXTERN PetscErrorCode MatSolve_SeqBAIJ_6_NaturalOrdering(Mat,Vec,Vec);
85: EXTERN PetscErrorCode MatSolve_SeqBAIJ_7(Mat,Vec,Vec);
86: EXTERN PetscErrorCode MatSolve_SeqBAIJ_7_NaturalOrdering(Mat,Vec,Vec);
87: EXTERN PetscErrorCode MatSolve_SeqBAIJ_N(Mat,Vec,Vec);
89: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_Update(Mat,Vec,Vec);
90: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_1(Mat,Vec,Vec);
91: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_1_NaturalOrdering(Mat,Vec,Vec);
92: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_2(Mat,Vec,Vec);
93: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_2_NaturalOrdering(Mat,Vec,Vec);
94: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_3(Mat,Vec,Vec);
95: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_3_NaturalOrdering(Mat,Vec,Vec);
96: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_4(Mat,Vec,Vec);
97: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_4_NaturalOrdering(Mat,Vec,Vec);
98: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_5(Mat,Vec,Vec);
99: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_5_NaturalOrdering(Mat,Vec,Vec);
100: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_6(Mat,Vec,Vec);
101: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_6_NaturalOrdering(Mat,Vec,Vec);
102: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_7(Mat,Vec,Vec);
103: EXTERN PetscErrorCode MatSolveTranspose_SeqBAIJ_7_NaturalOrdering(Mat,Vec,Vec);
105: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_1(Mat,MatFactorInfo*,Mat*);
106: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_2(Mat,MatFactorInfo*,Mat*);
107: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_2_NaturalOrdering(Mat,MatFactorInfo*,Mat*);
108: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_3(Mat,MatFactorInfo*,Mat*);
109: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering(Mat,MatFactorInfo*,Mat*);
110: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_4(Mat,MatFactorInfo*,Mat*);
111: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_4_NaturalOrdering(Mat,MatFactorInfo*,Mat*);
112: #if defined(PETSC_HAVE_SSE)
113: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_4_NaturalOrdering_SSE(Mat,MatFactorInfo*,Mat*);
114: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_4_NaturalOrdering_SSE_usj(Mat,MatFactorInfo*,Mat*);
115: #else
116: #endif
117: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_5(Mat,MatFactorInfo*,Mat*);
118: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_5_NaturalOrdering(Mat,MatFactorInfo*,Mat*);
119: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_6(Mat,MatFactorInfo*,Mat*);
120: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_6_NaturalOrdering(Mat,MatFactorInfo*,Mat*);
121: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_7(Mat,MatFactorInfo*,Mat*);
122: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_7_NaturalOrdering(Mat,MatFactorInfo*,Mat*);
123: EXTERN PetscErrorCode MatLUFactorNumeric_SeqBAIJ_N(Mat,MatFactorInfo*,Mat*);
125: EXTERN PetscErrorCode MatMult_SeqBAIJ_1(Mat,Vec,Vec);
126: EXTERN PetscErrorCode MatMult_SeqBAIJ_2(Mat,Vec,Vec);
127: EXTERN PetscErrorCode MatMult_SeqBAIJ_3(Mat,Vec,Vec);
128: EXTERN PetscErrorCode MatMult_SeqBAIJ_4(Mat,Vec,Vec);
129: EXTERN PetscErrorCode MatMult_SeqBAIJ_5(Mat,Vec,Vec);
130: EXTERN PetscErrorCode MatMult_SeqBAIJ_6(Mat,Vec,Vec);
131: EXTERN PetscErrorCode MatMult_SeqBAIJ_7(Mat,Vec,Vec);
132: EXTERN PetscErrorCode MatMult_SeqBAIJ_N(Mat,Vec,Vec);
134: EXTERN PetscErrorCode MatMultAdd_SeqBAIJ_1(Mat,Vec,Vec,Vec);
135: EXTERN PetscErrorCode MatMultAdd_SeqBAIJ_2(Mat,Vec,Vec,Vec);
136: EXTERN PetscErrorCode MatMultAdd_SeqBAIJ_3(Mat,Vec,Vec,Vec);
137: EXTERN PetscErrorCode MatMultAdd_SeqBAIJ_4(Mat,Vec,Vec,Vec);
138: EXTERN PetscErrorCode MatMultAdd_SeqBAIJ_5(Mat,Vec,Vec,Vec);
139: EXTERN PetscErrorCode MatMultAdd_SeqBAIJ_6(Mat,Vec,Vec,Vec);
140: EXTERN PetscErrorCode MatMultAdd_SeqBAIJ_7(Mat,Vec,Vec,Vec);
141: EXTERN PetscErrorCode MatMultAdd_SeqBAIJ_N(Mat,Vec,Vec,Vec);
142: EXTERN PetscErrorCode MatLoad_SeqBAIJ(PetscViewer, MatType,Mat*);
144: #endif