1#ifndef _RHEOLEF_SOLVER_H
2#define _RHEOLEF_SOLVER_H
179#include "rheolef/csr.h"
180#include "rheolef/solver_option.h"
188template <
class T,
class M>
class solver_basic;
190template <
class T,
class M>
205 virtual determinant_type
det()
const;
206 virtual std::string
name()
const;
214template <
class T,
class M>
222template <
class T,
class M>
228 return new_macro (rep(*
this));
230template <
class T,
class M>
237template <
class T,
class M>
244template <
class T,
class M>
249 error_macro (name() <<
": undefined set_preconditioner() member function");
251template <
class T,
class M>
256 error_macro (name() <<
": undefined det() member function");
263template <
class T,
class M = rheo_default_memory_model>
298template <
class T,
class M>
304template <
class T,
class M>
310template <
class T,
class M>
315 if (base::data().initialized()) {
316 base::data().update_values (a);
321template <
class T,
class M>
326 return base::data().option();
328template <
class T,
class M>
333 base::data().set_preconditioner (sa);
335template <
class T,
class M>
340 return base::data().det();
342template <
class T,
class M>
347 return base::data().solve (b);
349template <
class T,
class M>
354 return base::data().trans_solve (b);
356template <
class T,
class M>
361 return base::data().initialized();
363template <
class T,
class M>
368 return base::data().name();
see the csr page for the full documentation
virtual determinant_type det() const
virtual void set_preconditioner(const solver_basic< T, M > &)
virtual std::string name() const
solver_abstract_rep(const solver_option &opt)
virtual ~solver_abstract_rep()
virtual vec< T, M > solve(const vec< T, M > &b) const
virtual vec< T, M > trans_solve(const vec< T, M > &b) const
const solver_option & option() const
csr< T, M >::size_type size_type
virtual void update_values(const csr< T, M > &a)
solver_abstract_rep(const solver_abstract_rep &x)
virtual bool initialized() const
virtual solver_abstract_rep< T, M > * clone() const
static solver_abstract_rep< T, M > * make_solver_ptr(const csr< T, M > &a, const solver_option &opt)
rep::determinant_type determinant_type
void set_preconditioner(const solver_basic< T, M > &)
determinant_type det() const
solver_basic(const csr< T, M > &a, const solver_option &opt=solver_option())
void update_values(const csr< T, M > &a)
vec< T, M > solve(const vec< T, M > &b) const
vec< T, M > trans_solve(const vec< T, M > &b) const
const solver_option & option() const
solver_abstract_rep< T, M > rep
smart_pointer_clone< rep > base
see the solver_option page for the full documentation
see the vec page for the full documentation
solver_basic< Float > solver
#define error_macro(message)
This file is part of Rheolef.