17 #ifndef __deal2__solver_richardson_h 18 #define __deal2__solver_richardson_h 21 #include <deal.II/base/config.h> 22 #include <deal.II/base/logstream.h> 23 #include <deal.II/lac/solver.h> 24 #include <deal.II/lac/solver_control.h> 25 #include <deal.II/base/subscriptor.h> 54 template <
class VECTOR = Vector<
double> >
109 template<
class MATRIX,
class PRECONDITIONER>
114 const PRECONDITIONER &precondition);
119 template<
class MATRIX,
class PRECONDITIONER>
124 const PRECONDITIONER &precondition);
144 const VECTOR &d)
const;
151 virtual typename VECTOR::value_type
criterion();
186 typename VECTOR::value_type
res;
194 template <
class VECTOR>
201 use_preconditioned_residual(use_preconditioned_residual)
205 template <
class VECTOR>
216 template <
class VECTOR>
226 template <
class VECTOR>
231 template <
class VECTOR>
232 template <
class MATRIX,
class PRECONDITIONER>
237 const PRECONDITIONER &precondition)
249 deallog.
push(
"Richardson");
260 precondition.vmult(d,r);
291 this->
control().last_value()));
296 template <
class VECTOR>
297 template <
class MATRIX,
class PRECONDITIONER>
302 const PRECONDITIONER &precondition)
314 deallog.
push(
"RichardsonT");
325 precondition.Tvmult(d,r);
350 this->
control().last_value()));
355 template <
class VECTOR>
360 const VECTOR &)
const 365 template <
class VECTOR>
366 inline typename VECTOR::value_type
377 template <
class VECTOR>
386 DEAL_II_NAMESPACE_CLOSE
VectorMemory< VECTOR > & memory
void Tvmult(VECTOR &u, const VECTOR &v) const
SolverRichardson(SolverControl &cn, VectorMemory< VECTOR > &mem, const AdditionalData &data=AdditionalData())
virtual State check(const unsigned int step, const double check_value)
void vmult(VECTOR &u, const VECTOR &v) const
AdditionalData(const double omega=1, const bool use_preconditioned_residual=false)
#define AssertThrow(cond, exc)
void solve(const MATRIX &A, VECTOR &x, const VECTOR &b, const PRECONDITIONER &precondition)
void Tsolve(const MATRIX &A, VECTOR &x, const VECTOR &b, const PRECONDITIONER &precondition)
AdditionalData additional_data
SolverControl & control() const
Stop iteration, goal reached.
bool use_preconditioned_residual
void push(const std::string &text)
virtual ~SolverRichardson()
void set_omega(const double om=1.)
virtual VECTOR::value_type criterion()
virtual void print_vectors(const unsigned int step, const VECTOR &x, const VECTOR &r, const VECTOR &d) const