17#ifndef dealii_sundials_sunlinsol_wrapper_h
18#define dealii_sundials_sunlinsol_wrapper_h
22#ifdef DEAL_II_WITH_SUNDIALS
24# include <sundials/sundials_linearsolver.h>
38 template <
typename VectorType>
39 struct LinearSolverContent;
46 template <
typename VectorType>
53 vmult(VectorType &dst,
const VectorType &src)
const;
55# if DEAL_II_SUNDIALS_VERSION_GTE(6, 0, 0)
86# if DEAL_II_SUNDIALS_VERSION_GTE(6, 0, 0)
101 template <
typename VectorType>
112 vmult(VectorType &dst,
const VectorType &src)
const;
114# if DEAL_II_SUNDIALS_VERSION_GTE(6, 0, 0)
160# if DEAL_II_SUNDIALS_VERSION_GTE(6, 0, 0)
200 template <
typename VectorType>
205 const VectorType & b,
216 template <
typename VectorType>
222 std::exception_ptr & pending_exception
238 std::unique_ptr<LinearSolverContent<VectorType>>
content;
std::unique_ptr< LinearSolverContent< VectorType > > content
SUNLinearSolver sun_linear_solver
LinearSolverWrapper(const LinearSolveFunction< VectorType > &lsolve, std::exception_ptr &pending_exception, SUNContext linsol_ctx)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_SUNDIALS_VERSION_GTE(major, minor, patch)
#define DEAL_II_NAMESPACE_CLOSE
std::function< void(SundialsOperator< VectorType > & op, SundialsPreconditioner< VectorType > &prec, VectorType & x, const VectorType & b, double tol)> LinearSolveFunction
void vmult(VectorType &dst, const VectorType &src) const
SundialsOperator(void *A_data, ATimesFn a_times_fn, SUNContext linsol_ctx)
SundialsPreconditioner(void *P_data, PSolveFn p_solve_fn, SUNContext linsol_ctx, double tol)
void vmult(VectorType &dst, const VectorType &src) const