Actual source code: spooles.h
petsc-3.3-p7 2013-05-11
4: #include <petsc-private/matimpl.h>
7: EXTERN_C_BEGIN
8: #include <misc.h>
9: #include <FrontMtx.h>
10: #include <SymbFac.h>
11: #include <MPI/spoolesMPI.h>
12: EXTERN_C_END
14: typedef struct {
15: PetscInt msglvl,pivotingflag,symflag,seed,FrontMtxInfo,typeflag;
16: PetscInt ordering,maxdomainsize,maxzeros,maxsize,
17: patchAndGoFlag,storeids,storevalues;
18: PetscBool 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: PetscBool 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*);
74: EXTERN_C_BEGIN
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*);
80: EXTERN_C_END
81: #endif