Xpetra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Xpetra_ETI_4arg.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Xpetra: A linear algebra interface package
4 //
5 // Copyright 2012 NTESS and the Xpetra contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef XPETRA_ETI_4ARGUMENT_HPP
11 #define XPETRA_ETI_4ARGUMENT_HPP
12 
13 // The macro "XPETRA_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 #if defined(HAVE_XPETRA_TPETRA)
18 #include <TpetraCore_config.h>
19 #include <TpetraCore_ETIHelperMacros.h>
20 TPETRA_ETI_MANGLING_TYPEDEFS()
21 #endif
22 #if defined(HAVE_XPETRA_EPETRA)
23 #include <Epetra_config.h>
24 #endif
25 
26 #if (defined(HAVE_XPETRA_EPETRA) && defined(EPETRA_HAVE_OMP) && (!defined(HAVE_XPETRA_TPETRA) || !defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT)))
27 // 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>
28 typedef Tpetra::KokkosCompat::KokkosOpenMPWrapperNode EpetraNode;
29 #elif (defined(HAVE_XPETRA_EPETRA) && !defined(EPETRA_HAVE_OMP) && (!defined(HAVE_XPETRA_TPETRA) || !defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))
30 // 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>
31 typedef Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode;
32 #endif
33 
34 // Epetra = on, Tpetra = off
35 #if defined(HAVE_XPETRA_EPETRA) && !defined(HAVE_XPETRA_TPETRA)
36 XPETRA_ETI_GROUP(double, int, int, EpetraNode)
37 #endif
38 
39 // Epetra = on, Tpetra = on
40 #if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_TPETRA)
41 TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XPETRA_ETI_GROUP)
42 #if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \
43  (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT))))
44 XPETRA_ETI_GROUP(double, int, int, EpetraNode)
45 #endif
46 
47 #endif
48 
49 // Epetra = off, Tpetra = on
50 #if !defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_TPETRA)
51 TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XPETRA_ETI_GROUP)
52 #endif
53 
54 #endif // ifndef XPETRA_ETI_4ARGUMENT_HPP
Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode