1 #ifndef SPIKE_MONITOR_H
2 #define SPIKE_MONITOR_H
6 #include <cusp/array1d.h>
18 template <
typename SolverVector>
30 Monitor(
const int maxIterations,
34 void init(
const SolverVector& rhs);
36 bool done(
const SolverVector& r);
61 template <
typename SolverVector>
66 m_maxIterations(maxIterations),
67 m_tolerance(tolerance),
76 template <
typename SolverVector>
80 m_rhsNorm = cusp::blas::nrm2(rhs);
87 template <
typename SolverVector>
91 m_rNorm = cusp::blas::nrm2(r);
93 if (m_rNorm <= m_tolerance * m_rhsNorm) m_state = Converged;
94 else if (isnan(m_rNorm)) m_state = Failed;
95 else if (m_iterations > m_maxIterations) m_state = Failed;
96 else m_state = Continue;
98 return m_state != Continue;
void increment(float incr)
Definition: monitor.h:38
SolverValueType getRHSNorm() const
Definition: monitor.h:44
float getNumIterations() const
Definition: monitor.h:42
SolverValueType getRelResidualNorm() const
Definition: monitor.h:46
~Monitor()
Definition: monitor.h:32
SolverValueType getTolerance() const
Definition: monitor.h:43
bool done(const SolverVector &r)
Definition: monitor.h:89
SolverValueType getResidualNorm() const
Definition: monitor.h:45
SolverVector::value_type SolverValueType
Definition: monitor.h:22
bool converged() const
Definition: monitor.h:40
void init(const SolverVector &rhs)
Definition: monitor.h:78
int getMaxIterations() const
Definition: monitor.h:41
State
Definition: monitor.h:24
Monitor(const int maxIterations, const SolverValueType tolerance)
Definition: monitor.h:63