xref: /petsc/src/mat/impls/sbaij/seq/sbaij.h (revision c833c1fba4fa478c2fe1b9322362357928f2f531)
173f4d377SMatthew Knepley /* $Id: sbaij.h,v 1.21 2001/08/07 03:03:01 balay Exp $ */
249b5e25fSSatish Balay 
349b5e25fSSatish Balay #if !defined(__SBAIJ_H)
449b5e25fSSatish Balay #define __SBAIJ_H
5*c833c1fbSBarry Smith #include "src/mat/matimpl.h"
66c6c5352SBarry Smith #include "src/mat/impls/baij/seq/baij.h"
749b5e25fSSatish Balay 
849b5e25fSSatish Balay /*
949b5e25fSSatish Balay   MATSEQSBAIJ format - Block compressed row storage. The i[] and j[]
1049b5e25fSSatish Balay   arrays start at 0.
1149b5e25fSSatish Balay */
1249b5e25fSSatish Balay 
1349b5e25fSSatish Balay typedef struct {
146c6c5352SBarry Smith   SEQBAIJHEADER
156c6c5352SBarry Smith 
16a6175056SHong Zhang   int              *inew;        /* pointer to beginning of each row of reordered matrix */
17a6175056SHong Zhang   int              *jnew;        /* column values: jnew + i[k] is start of row k */
18a6175056SHong Zhang   MatScalar        *anew;        /* nonzero diagonal and superdiagonal elements of reordered matrix */
19d59c15a7SBarry Smith   PetscScalar      *solves_work; /* work space used in MatSolves */
20d59c15a7SBarry Smith   int              solves_work_n;/* size of solves_work */
21a58ccc28SHong Zhang   int              *a2anew;        /* map used for symm permutation */
22d36791b2SHong Zhang   PetscTruth       permute;        /* if true, a non-trivial permutation is used for factorization */
23b00f7748SHong Zhang 
24b45a75daSHong Zhang   /* carry MatFactorInfo from symbolic factor to numeric factor */
25b45a75daSHong Zhang   int              factor_levels;
26b45a75daSHong Zhang   PetscReal        factor_damping;
27f4cce38bSHong Zhang   PetscReal        factor_shift;
28b45a75daSHong Zhang   PetscReal        factor_zeropivot;
2949b5e25fSSatish Balay } Mat_SeqSBAIJ;
3049b5e25fSSatish Balay 
3197304618SKris Buschelman EXTERN int MatICCFactorSymbolic_SeqSBAIJ(Mat,IS,MatFactorInfo*,Mat *);
3297304618SKris Buschelman EXTERN int MatDuplicate_SeqSBAIJ(Mat,MatDuplicateOption,Mat*);
3397304618SKris Buschelman EXTERN int MatMarkDiagonal_SeqSBAIJ(Mat);
3449b5e25fSSatish Balay 
3597304618SKris Buschelman EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_1_NaturalOrdering(Mat,Mat*);
3697304618SKris Buschelman EXTERN int MatSolve_SeqSBAIJ_1_NaturalOrdering(Mat,Vec,Vec);
3797304618SKris Buschelman EXTERN int MatSolveTranspose_SeqSBAIJ_1_NaturalOrdering(Mat,Vec,Vec);
38266135f8SHong Zhang 
3997304618SKris Buschelman EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_2_NaturalOrdering(Mat,Mat*);
4097304618SKris Buschelman EXTERN int MatSolve_SeqSBAIJ_2_NaturalOrdering(Mat,Vec,Vec);
4197304618SKris Buschelman EXTERN int MatSolveTranspose_SeqSBAIJ_2_NaturalOrdering(Mat,Vec,Vec);
42266135f8SHong Zhang 
4397304618SKris Buschelman EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_3_NaturalOrdering(Mat,Mat*);
4497304618SKris Buschelman EXTERN int MatSolve_SeqSBAIJ_3_NaturalOrdering(Mat,Vec,Vec);
4597304618SKris Buschelman EXTERN int MatSolveTranspose_SeqSBAIJ_3_NaturalOrdering(Mat,Vec,Vec);
46266135f8SHong Zhang 
4797304618SKris Buschelman EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_4_NaturalOrdering(Mat,Mat*);
4897304618SKris Buschelman EXTERN int MatSolve_SeqSBAIJ_4_NaturalOrdering(Mat,Vec,Vec);
4997304618SKris Buschelman EXTERN int MatSolveTranspose_SeqSBAIJ_4_NaturalOrdering(Mat,Vec,Vec);
50266135f8SHong Zhang 
5197304618SKris Buschelman EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_5_NaturalOrdering(Mat,Mat*);
5297304618SKris Buschelman EXTERN int MatSolve_SeqSBAIJ_5_NaturalOrdering(Mat,Vec,Vec);
5397304618SKris Buschelman EXTERN int MatSolveTranspose_SeqSBAIJ_5_NaturalOrdering(Mat,Vec,Vec);
54266135f8SHong Zhang 
5597304618SKris Buschelman EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_6_NaturalOrdering(Mat,Mat*);
5697304618SKris Buschelman EXTERN int MatSolve_SeqSBAIJ_6_NaturalOrdering(Mat,Vec,Vec);
5797304618SKris Buschelman EXTERN int MatSolveTranspose_SeqSBAIJ_6_NaturalOrdering(Mat,Vec,Vec);
58266135f8SHong Zhang 
5997304618SKris Buschelman EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_7_NaturalOrdering(Mat,Mat*);
6097304618SKris Buschelman EXTERN int MatSolve_SeqSBAIJ_7_NaturalOrdering(Mat,Vec,Vec);
6197304618SKris Buschelman EXTERN int MatSolveTranspose_SeqSBAIJ_7_NaturalOrdering(Mat,Vec,Vec);
6249b5e25fSSatish Balay 
6397304618SKris Buschelman EXTERN int MatCholeskyFactorNumeric_SeqSBAIJ_N_NaturalOrdering(Mat,Mat*);
6497304618SKris Buschelman EXTERN int MatSolve_SeqSBAIJ_N_NaturalOrdering(Mat,Vec,Vec);
65671cb588SHong Zhang 
6697304618SKris Buschelman EXTERN int MatRelax_SeqSBAIJ(Mat,Vec,PetscReal,MatSORType,PetscReal,int,int,Vec);
67f248c16bSBarry Smith EXTERN int MatLoad_SeqSBAIJ(PetscViewer,const MatType,Mat*);
68d06b337dSHong Zhang 
6949b5e25fSSatish Balay #endif
70