56 #include "../../../../Eigen/src/Core/util/NonMPL2.h"
58 #ifndef EIGEN_ITERATION_CONTROLLER_H
59 #define EIGEN_ITERATION_CONTROLLER_H
61 #include "./InternalHeaderCheck.h"
80 double m_resminreach, m_resadd;
90 m_resminreach = 1E50; m_resadd = 0.0;
97 void operator ++(
int) {
m_nit++; m_written =
false; m_resadd +=
m_res; }
98 void operator ++() { (*this)++; }
100 bool first() {
return m_nit == 0; }
103 int noiseLevel()
const {
return m_noise; }
104 void setNoiseLevel(
int n) {
m_noise = n; }
107 double maxResidual()
const {
return m_resmax; }
108 void setMaxResidual(
double r) {
m_resmax = r; }
110 double residual()
const {
return m_res; }
113 void setCallback(
void (*t)(
const IterationController&))
118 size_t iteration()
const {
return m_nit; }
119 void setIteration(
size_t i) {
m_nit = i; }
121 size_t maxIterarions()
const {
return m_maxiter; }
122 void setMaxIterations(
size_t i) {
m_maxiter = i; }
124 double rhsNorm()
const {
return m_rhsn; }
125 void setRhsNorm(
double r) {
m_rhsn = r; }
128 bool converged(
double nr)
132 m_resminreach = (std::min)(m_resminreach,
m_res);
135 template<
typename VectorType>
bool converged(
const VectorType &v)
136 {
return converged(v.squaredNorm()); }
138 bool finished(
double nr)
140 if (m_callback) m_callback(*
this);
148 template <
typename VectorType>
149 bool finished(
const MatrixBase<VectorType> &v)
150 {
return finished(
double(v.squaredNorm())); }
Controls the iterations of the iterative solvers.
Definition: IterationController.h:74
size_t m_maxiter
Max. number of iterations.
Definition: IterationController.h:77
double m_rhsn
Right hand side norm.
Definition: IterationController.h:76
double m_resmax
maximum residual
Definition: IterationController.h:79
size_t m_nit
iteration number
Definition: IterationController.h:81
double m_res
last computed residual
Definition: IterationController.h:82
int m_noise
if noise > 0 iterations are printed
Definition: IterationController.h:78
Namespace containing all symbols from the Eigen library.
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_abs_op< typename Derived::Scalar >, const Derived > abs(const Eigen::ArrayBase< Derived > &x)