Tempus  Version of the Day
Time Integration
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Tempus_ExplicitTemplateInstantiation.hpp
Go to the documentation of this file.
1 // @HEADER
2 // ****************************************************************************
3 // Tempus: Copyright (2017) Sandia Corporation
4 //
5 // Distributed under BSD 3-clause license (See accompanying file Copyright.txt)
6 // ****************************************************************************
7 // @HEADER
8 
9 #ifndef Tempus_ExplicitTemplateInstantiation_hpp
10 #define Tempus_ExplicitTemplateInstantiation_hpp
11 
12 #include "Tempus_config.hpp"
13 
14 #define TEMPUS_INSTANTIATE_TEMPLATE_CLASS_TPETRA(name, SC, LO, GO, Node) \
15  template class name<SC, LO, GO, Node>;
16 
17 // Always instantiate on double
18 #define TEMPUS_INSTANTIATE_TEMPLATE_CLASS_ON_DOUBLE(name) \
19  template class name<double>;
20 
21 // Complex not yet supported. Just need to add define to cmake logic
22 #ifdef TEMPUS_BUILD_COMPLEX_SUPPORT
23 #define TEMPUS_INSTANTIATE_TEMPLATE_CLASS_ON_COMPLEX_DOUBLE(name) \
24  template class name<std::complex<double>>;
25 #else
26 #define TEMPUS_INSTANTIATE_TEMPLATE_CLASS_ON_COMPLEX_DOUBLE(name)
27 #endif
28 
29 #define TEMPUS_INSTANTIATE_TEMPLATE_CLASS(name) \
30  TEMPUS_INSTANTIATE_TEMPLATE_CLASS_ON_DOUBLE(name) \
31  TEMPUS_INSTANTIATE_TEMPLATE_CLASS_ON_COMPLEX_DOUBLE(name)
32 
33 #endif