Xpetra Version of the Day
Loading...
Searching...
No Matches
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>
20TPETRA_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>
28typedef 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>
31typedef Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode;
32#endif
33
34// Epetra = on, Tpetra = off
35#if defined(HAVE_XPETRA_EPETRA) && !defined(HAVE_XPETRA_TPETRA)
36XPETRA_ETI_GROUP(double, int, int, EpetraNode)
37#endif
38
39// Epetra = on, Tpetra = on
40#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_TPETRA)
41TPETRA_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))))
44XPETRA_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)
51TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XPETRA_ETI_GROUP)
52#endif
53
54#endif // ifndef XPETRA_ETI_4ARGUMENT_HPP
Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode
Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode