Actual source code: petscmatelemental.h
1: #pragma once
3: #include <petscmat.h>
5: /* SUBMANSEC = Mat */
7: #if defined(PETSC_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 defined(PETSC_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