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