xref: /petsc/src/mat/impls/sbaij/seq/sbaij.h (revision 6c6c5352cdaa6aa3a8bd2967d4dd73a4e9ba1251)
173f4d377SMatthew Knepley /* $Id: sbaij.h,v 1.21 2001/08/07 03:03:01 balay Exp $ */
249b5e25fSSatish Balay 
349b5e25fSSatish Balay #include "src/mat/matimpl.h"
449b5e25fSSatish Balay 
549b5e25fSSatish Balay #if !defined(__SBAIJ_H)
649b5e25fSSatish Balay #define __SBAIJ_H
7*6c6c5352SBarry Smith #include "src/mat/impls/baij/seq/baij.h"
849b5e25fSSatish Balay 
949b5e25fSSatish Balay /*
1049b5e25fSSatish Balay   MATSEQSBAIJ format - Block compressed row storage. The i[] and j[]
1149b5e25fSSatish Balay   arrays start at 0.
1249b5e25fSSatish Balay */
1349b5e25fSSatish Balay 
1449b5e25fSSatish Balay typedef struct {
15*6c6c5352SBarry Smith   SEQBAIJHEADER
16*6c6c5352SBarry Smith 
17a6175056SHong Zhang   int              *inew;        /* pointer to beginning of each row of reordered matrix */
18a6175056SHong Zhang   int              *jnew;        /* column values: jnew + i[k] is start of row k */
19a6175056SHong Zhang   MatScalar        *anew;        /* nonzero diagonal and superdiagonal elements of reordered matrix */
20d59c15a7SBarry Smith   PetscScalar      *solves_work; /* work space used in MatSolves */
21d59c15a7SBarry Smith   int              solves_work_n;/* size of solves_work */
22a58ccc28SHong Zhang   int              *a2anew;        /* map used for symm permutation */
23d36791b2SHong Zhang   PetscTruth       permute;        /* if true, a non-trivial permutation is used for factorization */
24b00f7748SHong Zhang 
25b45a75daSHong Zhang   /* carry MatFactorInfo from symbolic factor to numeric factor */
26b45a75daSHong Zhang   int              factor_levels;
27b45a75daSHong Zhang   PetscReal        factor_damping;
28f4cce38bSHong Zhang   PetscReal        factor_shift;
29b45a75daSHong Zhang   PetscReal        factor_zeropivot;
3049b5e25fSSatish Balay } Mat_SeqSBAIJ;
3149b5e25fSSatish Balay 
3297304618SKris Buschelman EXTERN int MatICCFactorSymbolic_SeqSBAIJ(Mat,IS,MatFactorInfo*,Mat *);
3397304618SKris Buschelman EXTERN int MatDuplicate_SeqSBAIJ(Mat,MatDuplicateOption,Mat*);
3497304618SKris Buschelman EXTERN int MatMarkDiagonal_SeqSBAIJ(Mat);
3549b5e25fSSatish Balay 
3697304618SKris Buschelman EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_1_NaturalOrdering(Mat,Mat*);
3797304618SKris Buschelman EXTERN int MatSolve_SeqSBAIJ_1_NaturalOrdering(Mat,Vec,Vec);
3897304618SKris Buschelman EXTERN int MatSolveTranspose_SeqSBAIJ_1_NaturalOrdering(Mat,Vec,Vec);
39266135f8SHong Zhang 
4097304618SKris Buschelman EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_2_NaturalOrdering(Mat,Mat*);
4197304618SKris Buschelman EXTERN int MatSolve_SeqSBAIJ_2_NaturalOrdering(Mat,Vec,Vec);
4297304618SKris Buschelman EXTERN int MatSolveTranspose_SeqSBAIJ_2_NaturalOrdering(Mat,Vec,Vec);
43266135f8SHong Zhang 
4497304618SKris Buschelman EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_3_NaturalOrdering(Mat,Mat*);
4597304618SKris Buschelman EXTERN int MatSolve_SeqSBAIJ_3_NaturalOrdering(Mat,Vec,Vec);
4697304618SKris Buschelman EXTERN int MatSolveTranspose_SeqSBAIJ_3_NaturalOrdering(Mat,Vec,Vec);
47266135f8SHong Zhang 
4897304618SKris Buschelman EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_4_NaturalOrdering(Mat,Mat*);
4997304618SKris Buschelman EXTERN int MatSolve_SeqSBAIJ_4_NaturalOrdering(Mat,Vec,Vec);
5097304618SKris Buschelman EXTERN int MatSolveTranspose_SeqSBAIJ_4_NaturalOrdering(Mat,Vec,Vec);
51266135f8SHong Zhang 
5297304618SKris Buschelman EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_5_NaturalOrdering(Mat,Mat*);
5397304618SKris Buschelman EXTERN int MatSolve_SeqSBAIJ_5_NaturalOrdering(Mat,Vec,Vec);
5497304618SKris Buschelman EXTERN int MatSolveTranspose_SeqSBAIJ_5_NaturalOrdering(Mat,Vec,Vec);
55266135f8SHong Zhang 
5697304618SKris Buschelman EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_6_NaturalOrdering(Mat,Mat*);
5797304618SKris Buschelman EXTERN int MatSolve_SeqSBAIJ_6_NaturalOrdering(Mat,Vec,Vec);
5897304618SKris Buschelman EXTERN int MatSolveTranspose_SeqSBAIJ_6_NaturalOrdering(Mat,Vec,Vec);
59266135f8SHong Zhang 
6097304618SKris Buschelman EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_7_NaturalOrdering(Mat,Mat*);
6197304618SKris Buschelman EXTERN int MatSolve_SeqSBAIJ_7_NaturalOrdering(Mat,Vec,Vec);
6297304618SKris Buschelman EXTERN int MatSolveTranspose_SeqSBAIJ_7_NaturalOrdering(Mat,Vec,Vec);
6349b5e25fSSatish Balay 
6497304618SKris Buschelman EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_N_NaturalOrdering(Mat,Mat*);
6597304618SKris Buschelman EXTERN int MatSolve_SeqSBAIJ_N_NaturalOrdering(Mat,Vec,Vec);
66671cb588SHong Zhang 
6797304618SKris Buschelman EXTERN int MatRelax_SeqSBAIJ(Mat,Vec,PetscReal,MatSORType,PetscReal,int,int,Vec);
68f248c16bSBarry Smith EXTERN int MatLoad_SeqSBAIJ(PetscViewer,const MatType,Mat*);
69d06b337dSHong Zhang 
7049b5e25fSSatish Balay #endif
71