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