xref: /petsc/src/mat/impls/sbaij/seq/sbaij.h (revision 6c6c5352cdaa6aa3a8bd2967d4dd73a4e9ba1251)
1 /* $Id: sbaij.h,v 1.21 2001/08/07 03:03:01 balay Exp $ */
2 
3 #include "src/mat/matimpl.h"
4 
5 #if !defined(__SBAIJ_H)
6 #define __SBAIJ_H
7 #include "src/mat/impls/baij/seq/baij.h"
8 
9 /*
10   MATSEQSBAIJ format - Block compressed row storage. The i[] and j[]
11   arrays start at 0.
12 */
13 
14 typedef struct {
15   SEQBAIJHEADER
16 
17   int              *inew;        /* pointer to beginning of each row of reordered matrix */
18   int              *jnew;        /* column values: jnew + i[k] is start of row k */
19   MatScalar        *anew;        /* nonzero diagonal and superdiagonal elements of reordered matrix */
20   PetscScalar      *solves_work; /* work space used in MatSolves */
21   int              solves_work_n;/* size of solves_work */
22   int              *a2anew;        /* map used for symm permutation */
23   PetscTruth       permute;        /* if true, a non-trivial permutation is used for factorization */
24 
25   /* carry MatFactorInfo from symbolic factor to numeric factor */
26   int              factor_levels;
27   PetscReal        factor_damping;
28   PetscReal        factor_shift;
29   PetscReal        factor_zeropivot;
30 } Mat_SeqSBAIJ;
31 
32 EXTERN int MatICCFactorSymbolic_SeqSBAIJ(Mat,IS,MatFactorInfo*,Mat *);
33 EXTERN int MatDuplicate_SeqSBAIJ(Mat,MatDuplicateOption,Mat*);
34 EXTERN int MatMarkDiagonal_SeqSBAIJ(Mat);
35 
36 EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_1_NaturalOrdering(Mat,Mat*);
37 EXTERN int MatSolve_SeqSBAIJ_1_NaturalOrdering(Mat,Vec,Vec);
38 EXTERN int MatSolveTranspose_SeqSBAIJ_1_NaturalOrdering(Mat,Vec,Vec);
39 
40 EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_2_NaturalOrdering(Mat,Mat*);
41 EXTERN int MatSolve_SeqSBAIJ_2_NaturalOrdering(Mat,Vec,Vec);
42 EXTERN int MatSolveTranspose_SeqSBAIJ_2_NaturalOrdering(Mat,Vec,Vec);
43 
44 EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_3_NaturalOrdering(Mat,Mat*);
45 EXTERN int MatSolve_SeqSBAIJ_3_NaturalOrdering(Mat,Vec,Vec);
46 EXTERN int MatSolveTranspose_SeqSBAIJ_3_NaturalOrdering(Mat,Vec,Vec);
47 
48 EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_4_NaturalOrdering(Mat,Mat*);
49 EXTERN int MatSolve_SeqSBAIJ_4_NaturalOrdering(Mat,Vec,Vec);
50 EXTERN int MatSolveTranspose_SeqSBAIJ_4_NaturalOrdering(Mat,Vec,Vec);
51 
52 EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_5_NaturalOrdering(Mat,Mat*);
53 EXTERN int MatSolve_SeqSBAIJ_5_NaturalOrdering(Mat,Vec,Vec);
54 EXTERN int MatSolveTranspose_SeqSBAIJ_5_NaturalOrdering(Mat,Vec,Vec);
55 
56 EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_6_NaturalOrdering(Mat,Mat*);
57 EXTERN int MatSolve_SeqSBAIJ_6_NaturalOrdering(Mat,Vec,Vec);
58 EXTERN int MatSolveTranspose_SeqSBAIJ_6_NaturalOrdering(Mat,Vec,Vec);
59 
60 EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_7_NaturalOrdering(Mat,Mat*);
61 EXTERN int MatSolve_SeqSBAIJ_7_NaturalOrdering(Mat,Vec,Vec);
62 EXTERN int MatSolveTranspose_SeqSBAIJ_7_NaturalOrdering(Mat,Vec,Vec);
63 
64 EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_N_NaturalOrdering(Mat,Mat*);
65 EXTERN int MatSolve_SeqSBAIJ_N_NaturalOrdering(Mat,Vec,Vec);
66 
67 EXTERN int MatRelax_SeqSBAIJ(Mat,Vec,PetscReal,MatSORType,PetscReal,int,int,Vec);
68 EXTERN int MatLoad_SeqSBAIJ(PetscViewer,const MatType,Mat*);
69 
70 #endif
71