Amesos2 - Direct Sparse Solver Interfaces Version of the Day
Amesos2_KLU2_FunctionMap.hpp
Go to the documentation of this file.
1// @HEADER
2//
3// ***********************************************************************
4//
5// Amesos2: Templated Direct Sparse Solver Package
6// Copyright 2011 Sandia Corporation
7//
8// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9// the U.S. Government retains certain rights in this software.
10//
11// Redistribution and use in source and binary forms, with or without
12// modification, are permitted provided that the following conditions are
13// met:
14//
15// 1. Redistributions of source code must retain the above copyright
16// notice, this list of conditions and the following disclaimer.
17//
18// 2. Redistributions in binary form must reproduce the above copyright
19// notice, this list of conditions and the following disclaimer in the
20// documentation and/or other materials provided with the distribution.
21//
22// 3. Neither the name of the Corporation nor the names of the
23// contributors may be used to endorse or promote products derived from
24// this software without specific prior written permission.
25//
26// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37//
38// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
39//
40// ***********************************************************************
41//
42// @HEADER
43
52#ifndef AMESOS2_KLU2_FUNCTIONMAP_HPP
53#define AMESOS2_KLU2_FUNCTIONMAP_HPP
54
55// Note since Klu2 is templated we don't use function maps.
56// Includes are still collected here which mirrors setup in other solvers.
57
58#ifdef HAVE_TEUCHOS_COMPLEX
59#include <complex>
60#endif
61
64
65/* External definitions of the KLU2 functions
66 */
67namespace KLU2 {
68#include "klu2_defaults.hpp"
69#include "klu2_analyze.hpp"
70#include "klu2_factor.hpp"
71#include "klu2_solve.hpp"
72#include "klu2_tsolve.hpp"
73#include "klu2_free_symbolic.hpp"
74#include "klu2_free_numeric.hpp"
75} // end namespace KLU2
76
77namespace Amesos2 {
78
79#ifdef HAVE_TEUCHOS_COMPLEX
80 template <>
81 struct FunctionMap<KLU2,Kokkos::complex<double>>
82 {
83 static std::complex<double> * convert_scalar(Kokkos::complex<double> * pData) {
84 return reinterpret_cast<std::complex<double> *>(pData);
85 }
86 };
87
88 // Note that Klu2 does not support complex float so it does not appear here.
89#endif // HAVE_TEUCHOS_COMPLEX
90
91 // if not specialized, then assume generic conversion is fine
92 template <typename scalar_t>
93 struct FunctionMap<KLU2,scalar_t>
94 {
95 static scalar_t * convert_scalar(scalar_t * pData) {
96 return pData; // no conversion necessary
97 }
98 };
99
100} // end namespace Amesos2
101
102#endif // AMESOS2_KLU2_FUNCTIONMAP_HPP
Declaration of Function mapping class for Amesos2.
Provides definition of KLU2 types as well as conversions and type traits.