MueLu Version of the Day
Loading...
Searching...
No Matches
MueLu_ETI_4arg_Xpetra.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_5ARGUMENT_HPP
11#define MUELU_ETI_5ARGUMENT_HPP
12
13// The macros "MUELU_ETI_GROUP_EPETRA" and "MUELU_ETI_GROUP_TPETRA" 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>
19TPETRA_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>
26typedef 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>
29typedef Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode;
30#endif
31
32// Epetra = on, Tpetra = on
33#if defined(HAVE_MUELU_EPETRA)
34TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(MUELU_ETI_GROUP_TPETRA)
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))))
37MUELU_ETI_GROUP_EPETRA(double, int, int, EpetraNode)
38#endif
39#endif
40
41// Epetra = off, Tpetra = on
42#if !defined(HAVE_MUELU_EPETRA)
43TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(MUELU_ETI_GROUP_TPETRA)
44#endif
45
46#endif // ifndef MUELU_ETI_4ARGUMENT_HPP
Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode
Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode