MueLu Version of the Day
Loading...
Searching...
No Matches
MueLu_ETI_3arg.hpp
Go to the documentation of this file.
1#ifndef MUELU_ETI_3ARGUMENT_HPP
2#define MUELU_ETI_3ARGUMENT_HPP
3
4// The macro "MUELU_ETI_GROUP" must be defined prior to including this file.
5
6// We need to define these typedefs as it is not possible to properly expand
7// macros with colons in them
8#include <TpetraCore_config.h>
9#include <TpetraCore_ETIHelperMacros.h>
10TPETRA_ETI_MANGLING_TYPEDEFS()
11#if defined(HAVE_MUELU_EPETRA)
12# include <Epetra_config.h>
13#endif
14
15#if (defined(HAVE_MUELU_EPETRA) && defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT)))
16 // Epetra is enabled with OpenMP node, but Tpetra is a) not enabled, or b) is not instantiated on OpenMP, or c) is not instantiated on OpenMP with <double,int,int>
17 typedef Tpetra::KokkosCompat::KokkosOpenMPWrapperNode EpetraNode;
18#elif (defined(HAVE_MUELU_EPETRA) && !defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))
19 // Epetra is enabled with Serial node, but Tpetra is a) not enabled, or b) is not instantiated on Serial, or c) is not instantiated on Serial with <double,int,int>
20 typedef Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode;
21#endif
22
23// Epetra = on, Tpetra = on
24#if defined(HAVE_MUELU_EPETRA)
25 TPETRA_INSTANTIATE_LGN(MUELU_ETI_GROUP)
26# if((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \
27 (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT))))
29# endif
30#endif
31
32// Epetra = off, Tpetra = on
33#if !defined(HAVE_MUELU_EPETRA)
34 TPETRA_INSTANTIATE_LGN(MUELU_ETI_GROUP)
35#endif
36
37#endif //ifndef MUELU_ETI_3ARGUMENT_HPP
#define MUELU_ETI_GROUP(SC, LO, GO, NO)
Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode