44 #ifndef AMESOS2_UMFPACK_FUNCTIONMAP_HPP 45 #define AMESOS2_UMFPACK_FUNCTIONMAP_HPP 47 #ifdef HAVE_TEUCHOS_COMPLEX 52 #include "Amesos2_Umfpack_TypeMap.hpp" 63 umfpack_di_solve(
int,
const int *,
const int *,
const double *,
double *,
64 const double *,
void *,
const double *,
double *);
66 umfpack_di_numeric(
const int *,
const int *,
const double *,
void *,
67 void **,
const double Control [UMFPACK_CONTROL],
68 double Info [UMFPACK_INFO]);
70 umfpack_di_symbolic(
int,
int,
const int *,
const int *,
const double *,
71 void **,
const double Control [UMFPACK_CONTROL],
72 double Info [UMFPACK_INFO]);
74 #ifdef HAVE_TEUCHOS_COMPLEX 77 umfpack_zi_solve(
int,
const int *,
const int *,
const double *,
78 const double *,
double *,
double *,
const double *,
const double *,
79 void *,
const double Control [UMFPACK_CONTROL],
80 double Info [UMFPACK_INFO]);
82 umfpack_zi_numeric(
const int *,
const int *,
const double *,
83 const double *,
void *,
void **,
const double Control [UMFPACK_CONTROL],
84 double Info [UMFPACK_INFO]);
86 umfpack_zi_symbolic(
int,
int,
const int *,
const int *,
87 const double *,
const double *,
void **,
88 const double Control [UMFPACK_CONTROL],
89 double Info [UMFPACK_INFO]);
91 umfpack_zi_defaults(
double Control [UMFPACK_CONTROL]);
93 umfpack_zi_free_numeric(
void **);
95 umfpack_zi_free_symbolic(
void **);
96 #endif // HAVE_TEUCHOS_COMPLEX 110 struct FunctionMap<Umfpack,double>
112 typedef TypeMap<Umfpack,double> type_map;
118 static int umfpack_solve(
126 const double Control [UMFPACK_CONTROL],
127 double Info [UMFPACK_INFO])
129 return UMFPACK::umfpack_di_solve(sys, Ap, Ai, Ax, X, B, Numeric, Control, Info);
132 static int umfpack_numeric(
138 const double Control [UMFPACK_CONTROL],
139 double Info [UMFPACK_INFO])
141 return UMFPACK::umfpack_di_numeric(Ap, Ai, Ax, Symbolic, Numeric, Control, Info);
144 static int umfpack_symbolic(
151 const double Control [UMFPACK_CONTROL],
152 double Info [UMFPACK_INFO])
154 return UMFPACK::umfpack_di_symbolic(n_row, n_col, Ap, Ai, Ax, Symbolic, Control, Info);
157 static void umfpack_defaults(
158 double Control [UMFPACK_CONTROL])
160 UMFPACK::umfpack_di_defaults(Control);
163 static void umfpack_free_numeric(
void **Numeric)
165 return UMFPACK::umfpack_di_free_numeric(Numeric);
168 static void umfpack_free_symbolic(
void **Symbolic)
170 return UMFPACK::umfpack_di_free_symbolic(Symbolic);
175 #ifdef HAVE_TEUCHOS_COMPLEX 178 struct FunctionMap<Umfpack,
std::complex<double>>
180 typedef TypeMap<Umfpack,std::complex<double>> type_map;
186 static double * stdComplexToUmfpackDoubleConversion(
187 const std::complex<double> v [ ])
189 return (
double*)(&v[0]);
192 static int umfpack_solve(
196 const std::complex<double> Ax [ ],
197 std::complex<double> X [ ],
198 const std::complex<double> B [ ],
200 const double Control [UMFPACK_CONTROL],
201 double Info [UMFPACK_INFO])
203 return UMFPACK::umfpack_zi_solve(sys, Ap, Ai,
204 stdComplexToUmfpackDoubleConversion(Ax), NULL,
205 stdComplexToUmfpackDoubleConversion(X), NULL,
206 stdComplexToUmfpackDoubleConversion(B), NULL,
207 Numeric, Control, Info);
210 static int umfpack_numeric(
213 const std::complex<double> Ax [ ],
216 const double Control[UMFPACK_CONTROL],
217 double Info[UMFPACK_INFO])
219 return UMFPACK::umfpack_zi_numeric(Ap, Ai, stdComplexToUmfpackDoubleConversion(Ax), NULL, Symbolic, Numeric, Control, Info);
222 static int umfpack_symbolic(
227 const std::complex<double> Ax [ ],
229 const double Control [UMFPACK_CONTROL],
230 double Info [UMFPACK_INFO])
232 return UMFPACK::umfpack_zi_symbolic(n_row, n_col, Ap, Ai, stdComplexToUmfpackDoubleConversion(Ax), NULL, Symbolic, Control, Info);
235 static void umfpack_defaults(
double Control [UMFPACK_CONTROL])
237 UMFPACK::umfpack_zi_defaults(Control);
240 static void umfpack_free_numeric(
void **Numeric)
242 UMFPACK::umfpack_zi_free_numeric(Numeric);
245 static void umfpack_free_symbolic(
void **Symbolic)
247 UMFPACK::umfpack_zi_free_symbolic(Symbolic);
251 #endif // HAVE_TEUCHOS_COMPLEX 258 #endif // AMESOS2_UMFPACK_FUNCTIONMAP_HPP Declaration of Function mapping class for Amesos2.
Definition: Amesos2_AbstractConcreteMatrixAdapter.hpp:48
Definition: Amesos2_Umfpack_FunctionMap.hpp:54