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