Tempus Version of the Day
Time Integration
Loading...
Searching...
No Matches
Tempus_ExplicitTemplateInstantiation.hpp
Go to the documentation of this file.
1//@HEADER
2// *****************************************************************************
3// Tempus: Time Integration and Sensitivity Analysis Package
4//
5// Copyright 2017 NTESS and the Tempus contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8//@HEADER
9
10#ifndef Tempus_ExplicitTemplateInstantiation_hpp
11#define Tempus_ExplicitTemplateInstantiation_hpp
12
13#include "Tempus_config.hpp"
14
15#define TEMPUS_INSTANTIATE_TEMPLATE_CLASS_TPETRA(name, SC, LO, GO, Node) \
16 template class name<SC, LO, GO, Node>;
17
18// Always instantiate on double
19#define TEMPUS_INSTANTIATE_TEMPLATE_CLASS_ON_DOUBLE(name) \
20 template class name<double>;
21
22// Complex not yet supported. Just need to add define to cmake logic
23#ifdef TEMPUS_BUILD_COMPLEX_SUPPORT
24#define TEMPUS_INSTANTIATE_TEMPLATE_CLASS_ON_COMPLEX_DOUBLE(name) \
25 template class name<std::complex<double>>;
26#else
27#define TEMPUS_INSTANTIATE_TEMPLATE_CLASS_ON_COMPLEX_DOUBLE(name)
28#endif
29
30#define TEMPUS_INSTANTIATE_TEMPLATE_CLASS(name) \
31 TEMPUS_INSTANTIATE_TEMPLATE_CLASS_ON_DOUBLE(name) \
32 TEMPUS_INSTANTIATE_TEMPLATE_CLASS_ON_COMPLEX_DOUBLE(name)
33
34#endif