31 const double tolerance,
32 const bool m_log_history,
33 const bool m_log_result)
37 , initial_val(
numbers::signaling_nan<double>())
38 , lvalue(
numbers::signaling_nan<double>())
39 , lstep(
numbers::invalid_unsigned_int)
40 , check_failure(
false)
41 , relative_failure_residual(0)
43 , m_log_history(m_log_history)
45 , m_log_result(m_log_result)
46 , history_data_enabled(
false)
155const std::vector<double> &
162 "The SolverControl object was asked for the solver history "
163 "data, but there is no data. Possibly you requested the data before the "
233 const bool m_log_history,
234 const bool m_log_result)
237 , reduced_tol(
numbers::signaling_nan<double>())
243 , reduce(
numbers::signaling_nan<double>())
244 , reduced_tol(
numbers::signaling_nan<double>())
319 const double tolerance,
320 const bool m_log_history,
321 const bool m_log_result)
351 const unsigned int n,
352 const double tolerance,
353 const unsigned int n_consecutive_iterations,
354 const bool m_log_history,
355 const bool m_log_result)
357 , n_consecutive_iterations(n_consecutive_iterations)
358 , n_converged_iterations(0)
361 ExcMessage(
"n_consecutive_iterations should be positive"));
368 , n_consecutive_iterations(1)
369 , n_converged_iterations(0)
397 ExcMessage(
"steps should be ascending integers."));
ConsecutiveControl & operator=(const SolverControl &c)
ConsecutiveControl(const unsigned int maxiter=100, const double tolerance=1.e-10, const unsigned int n_consecutive_iterations=2, const bool log_history=false, const bool log_result=false)
unsigned int n_consecutive_iterations
unsigned int n_converged_iterations
virtual State check(const unsigned int step, const double check_value) override
virtual State check(const unsigned int step, const double check_value) override
IterationNumberControl(const unsigned int maxiter=100, const double tolerance=1e-12, const bool log_history=false, const bool log_result=true)
double set_reduction(const double)
void parse_parameters(ParameterHandler ¶m)
virtual State check(const unsigned int step, const double check_value) override
static void declare_parameters(ParameterHandler ¶m)
ReductionControl & operator=(const SolverControl &c)
ReductionControl(const unsigned int maxiter=100, const double tolerance=1.e-10, const double reduce=1.e-2, const bool log_history=false, const bool log_result=true)
static void declare_parameters(ParameterHandler ¶m)
double average_reduction() const
const std::vector< double > & get_history_data() const
unsigned int last_step() const
double last_value() const
unsigned int m_log_frequency
unsigned int log_frequency(unsigned int)
virtual State check(const unsigned int step, const double check_value)
void enable_history_data()
double step_reduction(unsigned int step) const
std::vector< double > history_data
double relative_failure_residual
unsigned int set_max_steps(const unsigned int)
double set_tolerance(const double)
SolverControl(const unsigned int n=100, const double tol=1.e-10, const bool log_history=false, const bool log_result=true)
double initial_value() const
void parse_parameters(ParameterHandler ¶m)
double final_reduction() const
@ iterate
Continue iteration.
@ success
Stop iteration, goal reached.
@ failure
Stop iteration, goal not reached.
bool history_data_enabled
Subscriptor & operator=(const Subscriptor &)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
static ::ExceptionBase & ExcInternalError()
static ::ExceptionBase & ExcHistoryDataRequired()
static ::ExceptionBase & ExcIndexRange(std::size_t arg1, std::size_t arg2, std::size_t arg3)
static ::ExceptionBase & ExcMessage(std::string arg1)
#define AssertThrow(cond, exc)
bool is_nan(const double x)
::VectorizedArray< Number, width > pow(const ::VectorizedArray< Number, width > &, const Number p)