Amesos2 - Direct Sparse Solver Interfaces Version of the Day
Amesos2_KLU2_TypeMap.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Amesos2: Templated Direct Sparse Solver Package
4//
5// Copyright 2011 NTESS and the Amesos2 contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
19#ifndef AMESOS2_KLU2_TYPEMAP_HPP
20#define AMESOS2_KLU2_TYPEMAP_HPP
21
22#include <functional>
23#ifdef HAVE_TEUCHOS_COMPLEX
24#include <complex>
25#endif
26
27#include <Teuchos_as.hpp>
28#ifdef HAVE_TEUCHOS_COMPLEX
29#include <Teuchos_SerializationTraits.hpp>
30#endif
31
32#include "Amesos2_TypeMap.hpp"
33
34namespace KLU2 {
35
36#include "klu2_ext.hpp" // for Dtype_t declaration
37
38} // end namespace KLU
39
40namespace Amesos2 {
41
42template <class, class> class KLU2;
43
44/* Specialize the Amesos2::TypeMap struct for KLU2 types
45 * TODO: Mostly dummy assignments as KLU2 is templated. Remove if possible.
46 *
47 * \cond KLU2_type_specializations
48 */
49template <>
50struct TypeMap<KLU2,float>
51{
52 typedef float dtype;
53 typedef float type;
54};
55
56template <>
57struct TypeMap<KLU2,double>
58{
59 typedef double dtype;
60 typedef double type;
61};
62
63#ifdef HAVE_TEUCHOS_COMPLEX
64
65template <>
66struct TypeMap<KLU2,std::complex<float> >
67{
68 typedef std::complex<double> dtype;
69 typedef Kokkos::complex<double> type;
70};
71
72template <>
73struct TypeMap<KLU2,std::complex<double> >
74{
75 typedef std::complex<double> dtype;
76 typedef Kokkos::complex<double> type;
77};
78
79template <>
80struct TypeMap<KLU2,Kokkos::complex<float> >
81{
82 typedef std::complex<double> dtype;
83 typedef Kokkos::complex<double> type;
84};
85
86template <>
87struct TypeMap<KLU2,Kokkos::complex<double> >
88{
89 typedef std::complex<double> dtype;
90 typedef Kokkos::complex<double> type;
91};
92
93#endif // HAVE_TEUCHOS_COMPLEX
94
95/* \endcond KLU2_type_specializations */
96
97
98} // end namespace Amesos2
99
100#endif // AMESOS2_SUPERLU_TYPEMAP_HPP