1: #pragma once 3: #include <petscmat.h> 5: /* SUBMANSEC = Mat */ 7: #if PetscDefined(HAVE_ELEMENTAL) && defined(__cplusplus) 8: #if defined(__clang__) 9: #pragma clang diagnostic push 10: #pragma clang diagnostic ignored "-Wunknown-warning-option" 11: #pragma clang diagnostic ignored "-Wunused-parameter" 12: #pragma clang diagnostic ignored "-Wunused-but-set-variable" 13: #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" 14: #pragma clang diagnostic ignored "-Wextra-semi" 15: #elif defined(__GNUC__) || defined(__GNUG__) 16: #pragma GCC diagnostic push 17: #pragma GCC diagnostic ignored "-Wunused-parameter" 18: #pragma GCC diagnostic ignored "-Wunused-but-set-variable" 19: #pragma GCC diagnostic ignored "-Wextra-semi" 20: #endif 21: #include <El.hpp> 22: #if defined(__clang__) 23: #pragma clang diagnostic pop 24: #elif defined(__GNUC__) || defined(__GNUG__) 25: #pragma GCC diagnostic pop 26: #endif 27: #if PetscDefined(USE_COMPLEX) 28: typedef El::Complex<PetscReal> PetscElemScalar; 29: #else 30: /*MC 31: PetscElemScalar - Scalar datatype used when interfacing PETSc to the Elemental dense linear algebra library through `MATELEMENTAL` 33: Level: developer 35: Note: 36: When PETSc is configured with complex scalars, `PetscElemScalar` is `El::Complex<PetscReal>` so that PETSc complex values can be passed to Elemental without conversion. 37: In the real case it is the same as `PetscScalar`. 39: .seealso: `PetscScalar`, `MATELEMENTAL`, `MatSetType()` 40: M*/ 41: typedef PetscScalar PetscElemScalar; 42: #endif 43: #endif