MueLu  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 #if defined(HAVE_MUELU_TPETRA)
9 # include <TpetraCore_config.h>
10 # include <TpetraCore_ETIHelperMacros.h>
11 TPETRA_ETI_MANGLING_TYPEDEFS()
12 #endif
13 #if defined(HAVE_MUELU_EPETRA)
14 # include <Epetra_config.h>
15 #endif
16 
17 #if (defined(HAVE_MUELU_EPETRA) && defined(EPETRA_HAVE_OMP) && (!defined(HAVE_MUELU_TPETRA) || !defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT)))
18  // 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>
19  typedef Kokkos::Compat::KokkosOpenMPWrapperNode EpetraNode;
20 #elif (defined(HAVE_MUELU_EPETRA) && !defined(EPETRA_HAVE_OMP) && (!defined(HAVE_MUELU_TPETRA) || !defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))
21  // 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>
22  typedef Kokkos::Compat::KokkosSerialWrapperNode EpetraNode;
23 #endif
24 
25 // Epetra = on, Tpetra = off
26 #if defined(HAVE_MUELU_EPETRA) && !defined(HAVE_MUELU_TPETRA)
27  MUELU_ETI_GROUP(int,int,EpetraNode)
28 #endif
29 
30 // Epetra = on, Tpetra = on
31 #if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_TPETRA)
32  TPETRA_INSTANTIATE_LGN(MUELU_ETI_GROUP)
33 #if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \
34  (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT))))
35  MUELU_ETI_GROUP(int,int,EpetraNode)
36 # endif
37 
38 #endif
39 
40 // Epetra = off, Tpetra = on
41 #if !defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_TPETRA)
42  TPETRA_INSTANTIATE_LGN(MUELU_ETI_GROUP)
43 #endif
44 
45 #endif //ifndef MUELU_ETI_3ARGUMENT_HPP
Kokkos::Compat::KokkosSerialWrapperNode EpetraNode
#define MUELU_ETI_GROUP(SC, LO, GO, NO)