MueLu  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MueLu_ETI_4arg.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // MueLu: A package for multigrid based preconditioning
4 //
5 // Copyright 2012 NTESS and the MueLu contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef MUELU_ETI_4ARGUMENT_HPP
11 #define MUELU_ETI_4ARGUMENT_HPP
12 
13 // The macro "MUELU_ETI_GROUP" must be defined prior to including this file.
14 
15 // We need to define these typedefs as it is not possible to properly expand
16 // macros with colons in them
17 #include <TpetraCore_config.h>
18 #include <TpetraCore_ETIHelperMacros.h>
19 TPETRA_ETI_MANGLING_TYPEDEFS()
20 #if defined(HAVE_MUELU_EPETRA)
21 #include <Epetra_config.h>
22 #endif
23 
24 #if (defined(HAVE_MUELU_EPETRA) && defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT)))
25 // 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>
26 typedef Tpetra::KokkosCompat::KokkosOpenMPWrapperNode EpetraNode;
27 #elif (defined(HAVE_MUELU_EPETRA) && !defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))
28 // 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>
29 typedef Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode;
30 #endif
31 
32 // Epetra = on, Tpetra = on
33 #if defined(HAVE_MUELU_EPETRA)
34 TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(MUELU_ETI_GROUP)
35 #if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \
36  (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT))))
37 MUELU_ETI_GROUP(double, int, int, EpetraNode)
38 #endif
39 #endif
40 
41 // Epetra = off, Tpetra = on
42 #if !defined(HAVE_MUELU_EPETRA)
43 TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(MUELU_ETI_GROUP)
44 #endif
45 
46 #endif // ifndef MUELU_ETI_4ARGUMENT_HPP
Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode