1: #if !defined(_matcliqueimpl_h) 2: #define _matcliqueimpl_h 4: #include <El.hpp> 5: #include <petsc/private/matimpl.h> 7: #if defined(PETSC_USE_COMPLEX) 8: typedef El::Complex<PetscReal> PetscElemScalar; 9: #else 10: typedef PetscScalar PetscElemScalar; 11: #endif 13: typedef struct { 14: MatStructure matstruc; 15: PetscBool CleanUp; /* Boolean indicating if we call Elue clean step */ 16: MPI_Comm comm; /* MPI communicator */ 17: PetscInt cutoff; /* maximum size of leaf node */ 18: PetscInt numDistSeps; /* number of distributed separators to try */ 19: PetscInt numSeqSeps; /* number of sequential separators to try */ 21: El::DistSparseMatrix<PetscElemScalar> *cmat; /* Elue sparse matrix */ 22: El::DistMap *inverseMap; 23: El::DistMultiVec<PetscElemScalar> *rhs; 24: } Mat_SparseElemental; 26: #endif