16 #ifndef dealii__solver_richardson_h 17 #define dealii__solver_richardson_h 20 #include <deal.II/base/config.h> 21 #include <deal.II/base/logstream.h> 22 #include <deal.II/lac/solver.h> 23 #include <deal.II/lac/solver_control.h> 24 #include <deal.II/base/subscriptor.h> 26 DEAL_II_NAMESPACE_OPEN
60 template <
class VectorType = Vector<
double> >
110 template<
typename MatrixType,
typename PreconditionerType>
112 solve (
const MatrixType &A,
115 const PreconditionerType &precondition);
120 template<
typename MatrixType,
typename PreconditionerType>
122 Tsolve (
const MatrixType &A,
125 const PreconditionerType &precondition);
140 const VectorType &d)
const;
146 virtual typename VectorType::value_type
criterion();
171 typename VectorType::value_type
res;
179 template <
class VectorType>
186 use_preconditioned_residual(use_preconditioned_residual)
190 template <
class VectorType>
201 template <
class VectorType>
211 template <
class VectorType>
216 template <
class VectorType>
217 template <
typename MatrixType,
typename PreconditionerType>
222 const PreconditionerType &precondition)
226 double last_criterion = -std::numeric_limits<double>::max();
228 unsigned int iter = 0;
238 deallog.
push(
"Richardson");
249 precondition.vmult(d,r);
287 template <
class VectorType>
288 template <
typename MatrixType,
typename PreconditionerType>
293 const PreconditionerType &precondition)
296 double last_criterion = -std::numeric_limits<double>::max();
298 unsigned int iter = 0;
308 deallog.
push(
"RichardsonT");
319 precondition.Tvmult(d,r);
352 template <
class VectorType>
357 const VectorType &)
const 362 template <
class VectorType>
363 inline typename VectorType::value_type
374 template <
class VectorType>
383 DEAL_II_NAMESPACE_CLOSE
bool use_preconditioned_residual
void set_omega(const double om=1.)
virtual void print_vectors(const unsigned int step, const VectorType &x, const VectorType &r, const VectorType &d) const
AdditionalData additional_data
#define AssertThrow(cond, exc)
SolverRichardson(SolverControl &cn, VectorMemory< VectorType > &mem, const AdditionalData &data=AdditionalData())
Stop iteration, goal reached.
VectorType::value_type res
VectorMemory< VectorType > & memory
boost::signals2::signal< SolverControl::State(const unsigned int iteration, const double check_value, const VectorType ¤t_iterate), StateCombiner > iteration_status
void solve(const MatrixType &A, VectorType &x, const VectorType &b, const PreconditionerType &precondition)
void push(const std::string &text)
void Tsolve(const MatrixType &A, VectorType &x, const VectorType &b, const PreconditionerType &precondition)
virtual ~SolverRichardson()
AdditionalData(const double omega=1, const bool use_preconditioned_residual=false)
virtual VectorType::value_type criterion()