Tempus  Version of the Day
Time Integration
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros 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 // Always instantiate on double
15 #define TEMPUS_INSTANTIATE_TEMPLATE_CLASS_ON_DOUBLE(name) \
16  template class name<double>;
17 
18 // Complex not yet supported. Just need to add define to cmake logic
19 #ifdef TEMPUS_BUILD_COMPLEX_SUPPORT
20 #define TEMPUS_INSTANTIATE_TEMPLATE_CLASS_ON_COMPLEX_DOUBLE(name) \
21  template class name<std::complex<double>>;
22 #else
23 #define TEMPUS_INSTANTIATE_TEMPLATE_CLASS_ON_COMPLEX_DOUBLE(name)
24 #endif
25 
26 #define TEMPUS_INSTANTIATE_TEMPLATE_CLASS(name) \
27  TEMPUS_INSTANTIATE_TEMPLATE_CLASS_ON_DOUBLE(name) \
28  TEMPUS_INSTANTIATE_TEMPLATE_CLASS_ON_COMPLEX_DOUBLE(name)
29 
30 #endif