Actual source code: spooles.h
4: #include private/matimpl.h
8: #include "misc.h"
9: #include "FrontMtx.h"
10: #include "SymbFac.h"
11: #include "MPI/spoolesMPI.h"
14: typedef struct {
15: PetscInt msglvl,pivotingflag,symflag,seed,FrontMtxInfo,typeflag;
16: PetscInt ordering,maxdomainsize,maxzeros,maxsize,
17: patchAndGoFlag,storeids,storevalues;
18: PetscTruth useQR;
19: double tau,toosmall,fudge;
20: FILE *msgFile ;
21: } Spooles_options;
23: typedef struct {
24: /* Followings are used for seq and MPI Spooles */
25: InpMtx *mtxA ; /* coefficient matrix */
26: ETree *frontETree ; /* defines numeric and symbolic factorizations */
27: FrontMtx *frontmtx ; /* numeric L, D, U factor matrices */
28: IV *newToOldIV, *oldToNewIV ; /* permutation vectors */
29: IVL *symbfacIVL ; /* symbolic factorization */
30: SubMtxManager *mtxmanager ; /* working array */
31: MatStructure flg;
32: double cpus[20] ;
33: PetscInt *oldToNew,stats[20];
34: Spooles_options options;
35: Graph *graph;
37: /* Followings are used for MPI Spooles */
38: MPI_Comm comm_spooles; /* communicator to be passed to spooles */
39: IV *ownersIV,*ownedColumnsIV,*vtxmapIV;
40: SolveMap *solvemap;
41: DenseMtx *mtxY, *mtxX;
42: double *entX;
43: PetscInt *rowindX,rstart,firsttag,nmycol;
44: Vec vec_spooles;
45: IS iden,is_petsc;
46: VecScatter scat;
47:
48: PetscTruth CleanUpSpooles,useQR;
49: } Mat_Spooles;
51: EXTERN PetscErrorCode SetSpoolesOptions(Mat, Spooles_options *);
52: EXTERN PetscErrorCode MatFactorInfo_Spooles(Mat,PetscViewer);
54: EXTERN PetscErrorCode MatDestroy_SeqAIJSpooles(Mat);
55: EXTERN PetscErrorCode MatSolve_SeqSpooles(Mat,Vec,Vec);
56: EXTERN PetscErrorCode MatFactorNumeric_SeqSpooles(Mat,Mat,const MatFactorInfo*);
57: EXTERN PetscErrorCode MatView_Spooles(Mat,PetscViewer);
58: EXTERN PetscErrorCode MatAssemblyEnd_SeqAIJSpooles(Mat,MatAssemblyType);
59: EXTERN PetscErrorCode MatLUFactorSymbolic_SeqAIJSpooles(Mat,Mat,IS,IS,const MatFactorInfo*);
60: EXTERN PetscErrorCode MatCholeskyFactorSymbolic_SeqAIJSpooles(Mat,Mat,IS,const MatFactorInfo*);
61: EXTERN PetscErrorCode MatDuplicate_Spooles(Mat,MatDuplicateOption,Mat*);
63: EXTERN PetscErrorCode MatDestroy_MPIAIJSpooles(Mat);
64: EXTERN PetscErrorCode MatSolve_MPISpooles(Mat,Vec,Vec);
65: EXTERN PetscErrorCode MatFactorNumeric_MPISpooles(Mat,Mat,const MatFactorInfo*);
66: EXTERN PetscErrorCode MatAssemblyEnd_MPIAIJSpooles(Mat,MatAssemblyType);
67: EXTERN PetscErrorCode MatLUFactorSymbolic_MPIAIJSpooles(Mat,Mat,IS,IS,const MatFactorInfo*);
69: EXTERN PetscErrorCode MatDestroy_SeqSBAIJSpooles(Mat);
70: EXTERN PetscErrorCode MatGetInertia_SeqSBAIJSpooles(Mat,PetscInt*,PetscInt*,PetscInt*);
71: EXTERN PetscErrorCode MatCholeskyFactorSymbolic_SeqSBAIJSpooles(Mat,Mat,IS,const MatFactorInfo*);
73: EXTERN PetscErrorCode MatCholeskyFactorSymbolic_MPISBAIJSpooles(Mat,Mat,IS,const MatFactorInfo*);
75: EXTERN PetscErrorCode MatConvert_Spooles_Base(Mat,MatType,MatReuse,Mat*);
76: EXTERN PetscErrorCode MatConvert_SeqAIJ_SeqAIJSpooles(Mat,MatType,MatReuse,Mat*);
77: EXTERN PetscErrorCode MatConvert_SeqSBAIJ_SeqSBAIJSpooles(Mat,MatType,MatReuse,Mat*);
78: EXTERN PetscErrorCode MatConvert_MPIAIJ_MPIAIJSpooles(Mat,MatType,MatReuse,Mat*);
79: EXTERN PetscErrorCode MatConvert_MPISBAIJ_MPISBAIJSpooles(Mat,MatType,MatReuse,Mat*);
81: #endif