Actual source code: spooles.h
1: /* $Id: spooles.h,v 1.46 2001/08/07 03:02:47 balay Exp $ */
5: #include src/mat/matimpl.h
8: EXTERN_C_BEGIN
9: #include "misc.h"
10: #include "FrontMtx.h"
11: #include "SymbFac.h"
12: #include "MPI/spoolesMPI.h"
13: EXTERN_C_END
15: typedef struct {
16: int msglvl,pivotingflag,symflag,seed,FrontMtxInfo,typeflag;
17: int ordering,maxdomainsize,maxzeros,maxsize,
18: patchAndGoFlag,storeids,storevalues;
19: PetscTruth useQR;
20: double tau,toosmall,fudge;
21: FILE *msgFile ;
22: } Spooles_options;
24: typedef struct {
25: /* Followings are used for seq and MPI Spooles */
26: InpMtx *mtxA ; /* coefficient matrix */
27: ETree *frontETree ; /* defines numeric and symbolic factorizations */
28: FrontMtx *frontmtx ; /* numeric L, D, U factor matrices */
29: IV *newToOldIV, *oldToNewIV ; /* permutation vectors */
30: IVL *symbfacIVL ; /* symbolic factorization */
31: SubMtxManager *mtxmanager ; /* working array */
32: MatStructure flg;
33: double cpus[20] ;
34: int *oldToNew,stats[20];
35: Spooles_options options;
36: Graph *graph;
38: /* Followings are used for MPI Spooles */
39: MPI_Comm comm_spooles; /* communicator to be passed to spooles */
40: IV *ownersIV,*ownedColumnsIV,*vtxmapIV;
41: SolveMap *solvemap;
42: DenseMtx *mtxY, *mtxX;
43: double *entX;
44: int *rowindX,rstart,firsttag,nmycol;
45: Vec vec_spooles;
46: IS iden,is_petsc;
47: VecScatter scat;
48:
49: /* A few function pointers for inheritance */
50: int (*MatDuplicate)(Mat,MatDuplicateOption,Mat*);
51: int (*MatCholeskyFactorSymbolic)(Mat,IS,MatFactorInfo*,Mat*);
52: int (*MatLUFactorSymbolic)(Mat,IS,IS,MatFactorInfo*,Mat*);
53: int (*MatView)(Mat,PetscViewer);
54: int (*MatAssemblyEnd)(Mat,MatAssemblyType);
55: int (*MatDestroy)(Mat);
56: int (*MatPreallocate)(Mat,int,int,int*,int,int*);
58: MatType basetype;
59: PetscTruth CleanUpSpooles,useQR;
60: } Mat_Spooles;
62: EXTERN int SetSpoolesOptions(Mat, Spooles_options *);
63: EXTERN int MatFactorInfo_Spooles(Mat,PetscViewer);
65: EXTERN int MatDestroy_SeqAIJSpooles(Mat);
66: EXTERN int MatSolve_SeqAIJSpooles(Mat,Vec,Vec);
67: EXTERN int MatFactorNumeric_SeqAIJSpooles(Mat,Mat*);
68: EXTERN int MatView_SeqAIJSpooles(Mat,PetscViewer);
69: EXTERN int MatAssemblyEnd_SeqAIJSpooles(Mat,MatAssemblyType);
70: EXTERN int MatQRFactorSymbolic_SeqAIJSpooles(Mat,IS,IS,MatFactorInfo*,Mat*);
71: EXTERN int MatLUFactorSymbolic_SeqAIJSpooles(Mat,IS,IS,MatFactorInfo*,Mat*);
72: EXTERN int MatCholeskyFactorSymbolic_SeqAIJSpooles(Mat,IS,MatFactorInfo*,Mat*);
73: EXTERN int MatDuplicate_SeqAIJSpooles(Mat,MatDuplicateOption,Mat*);
75: EXTERN int MatDuplicate_MPIAIJSpooles(Mat,MatDuplicateOption,Mat*);
76: EXTERN int MatDestroy_MPIAIJSpooles(Mat);
77: EXTERN int MatSolve_MPIAIJSpooles(Mat,Vec,Vec);
78: EXTERN int MatFactorNumeric_MPIAIJSpooles(Mat,Mat*);
79: EXTERN int MatAssemblyEnd_MPIAIJSpooles(Mat,MatAssemblyType);
80: EXTERN int MatLUFactorSymbolic_MPIAIJSpooles(Mat,IS,IS,MatFactorInfo*,Mat*);
82: EXTERN int MatDuplicate_SeqSBAIJSpooles(Mat,MatDuplicateOption,Mat*);
83: EXTERN int MatDestroy_SeqSBAIJSpooles(Mat);
84: EXTERN int MatGetInertia_SeqSBAIJSpooles(Mat,int*,int*,int*);
85: EXTERN int MatCholeskyFactorSymbolic_SeqSBAIJSpooles(Mat,IS,MatFactorInfo*,Mat*);
87: EXTERN int MatDuplicate_MPISBAIJSpooles(Mat,MatDuplicateOption,Mat*);
88: EXTERN int MatCholeskyFactorSymbolic_MPISBAIJSpooles(Mat,IS,MatFactorInfo*,Mat*);
89: EXTERN_C_BEGIN
90: EXTERN int MatConvert_Spooles_Base(Mat,const MatType,Mat*);
91: EXTERN int MatConvert_SeqAIJ_SeqAIJSpooles(Mat,const MatType,Mat*);
92: EXTERN int MatConvert_SeqSBAIJ_SeqSBAIJSpooles(Mat,const MatType,Mat*);
93: EXTERN_C_END
94: #endif