Xpetra Version of the Day
Loading...
Searching...
No Matches
Xpetra_ETI_3arg.hpp
Go to the documentation of this file.
1#ifndef XPETRA_ETI_3ARGUMENT_HPP
2#define XPETRA_ETI_3ARGUMENT_HPP
3
4// The macro "XPETRA_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_XPETRA_TPETRA)
9# include <TpetraCore_config.h>
10# include <TpetraCore_ETIHelperMacros.h>
11TPETRA_ETI_MANGLING_TYPEDEFS()
12#endif
13#if defined(HAVE_XPETRA_EPETRA)
14# include <Epetra_config.h>
15#endif
16
17#if (defined(HAVE_XPETRA_EPETRA) && defined(EPETRA_HAVE_OMP) && (!defined(HAVE_XPETRA_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>
20#elif (defined(HAVE_XPETRA_EPETRA) && !defined(EPETRA_HAVE_OMP) && (!defined(HAVE_XPETRA_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>
23#endif
24
25// Epetra = on, Tpetra = off
26#if defined(HAVE_XPETRA_EPETRA) && !defined(HAVE_XPETRA_TPETRA)
27 XPETRA_ETI_GROUP(int,int,EpetraNode)
28#endif
29
30// Epetra = on, Tpetra = on
31#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_TPETRA)
32 TPETRA_INSTANTIATE_LGN(XPETRA_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 XPETRA_ETI_GROUP(int,int,EpetraNode)
36# endif
37
38#endif
39
40// Epetra = off, Tpetra = on
41#if !defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_TPETRA)
42 TPETRA_INSTANTIATE_LGN(XPETRA_ETI_GROUP)
43#endif
44
45#endif //ifndef XPETRA_ETI_3ARGUMENT_HPP
Kokkos::Compat::KokkosSerialWrapperNode EpetraNode