6#include <deal.II/base/parameter_handler.h>
12#include <prismspf/config.h>
53 unsigned int max_criteria = 5)
const;
60 unsigned int max_criteria = 5);
69 for (
const auto &[index, nonlinear_solver_parameters] :
newton_solvers)
72 nonlinear_solver_parameters.step_length > 0.0 &&
73 nonlinear_solver_parameters.step_length <= 1.0,
75 "Step length must be greater than 0.0 and less than or equal to 1.0"));
77 AssertThrow(nonlinear_solver_parameters.tolerance_value > 0,
78 dealii::ExcMessage(
"Tolerance must be greater than 0.0"));
88 <<
"================================================\n"
89 <<
" Nonlinear Solve Parameters\n"
90 <<
"================================================\n";
92 for (
const auto &[index, nonlinear_solver_parameters] :
newton_solvers)
95 <<
"Index: " << index <<
"\n"
96 <<
" Max iterations: " << nonlinear_solver_parameters.max_iterations <<
"\n"
97 <<
" Step length: " << nonlinear_solver_parameters.step_length <<
"\n";
106 dealii::ParameterHandler ¶meter_handler,
107 unsigned int max_criteria)
const
109 for (
unsigned int criterion_id = 0; criterion_id < max_criteria; criterion_id++)
111 std::string subsection_text =
112 "newton solver parameters: " + std::to_string(criterion_id);
113 parameter_handler.enter_subsection(subsection_text);
115 parameter_handler.declare_entry(
118 dealii::Patterns::Anything(),
119 "The ids of the solvers that will use these settings.");
120 parameter_handler.declare_entry(
"max iterations",
122 dealii::Patterns::Integer(1, INT_MAX),
123 "The maximum number of nonlinear solver "
124 "iterations before the loop is stopped.");
131 parameter_handler.declare_entry(
134 dealii::Patterns::Double(DBL_MIN, DBL_MAX),
135 "The value of for the nonlinear solver tolerance.");
154 parameter_handler.declare_entry(
157 dealii::Patterns::Double(0.0),
158 "The constant damping value to be used if the backtrace "
159 "line-search approach isn't used.");
160 parameter_handler.declare_alias(
"tolerance value",
"tolerance");
161 parameter_handler.declare_alias(
"solver_ids",
"solve blocks");
162 parameter_handler.declare_alias(
"solver_ids",
"solve_blocks");
163 parameter_handler.declare_alias(
"solver_ids",
"solve block ids");
164 parameter_handler.declare_alias(
"solver_ids",
"solve_block_ids");
166 parameter_handler.leave_subsection();
172 unsigned int max_criteria)
174 for (
unsigned int criterion_id = 0; criterion_id < max_criteria; criterion_id++)
177 std::string subsection_text =
178 "newton solver parameters: " + std::to_string(criterion_id);
179 parameter_handler.enter_subsection(subsection_text);
181 std::vector<int> solver_ids = dealii::Utilities::string_to_int(
182 dealii::Utilities::split_string_list(parameter_handler.get(
"solver_ids")));
185 static_cast<unsigned int>(parameter_handler.get_integer(
"max iterations"));
187 parameter_handler.get_double(
"step size");
189 parameter_handler.get_double(
"tolerance value");
190 for (
auto solver_id : solver_ids)
193 nonlinear_solver_parameters;
196 parameter_handler.leave_subsection();
200PRISMS_PF_END_NAMESPACE
static dealii::ConditionalOStream & pout_summary()
Log output stream for writing a summary.log file.
Definition conditional_ostreams.cc:35
static const unsigned int iterations
Default iterations.
Definition types.h:67
static const double tolerance
Default tolerance.
Definition types.h:57
Definition conditional_ostreams.cc:20
Struct that holds nonlinear solver parameters.
Definition nonlinear_solve_parameters.h:35
void assign_parameters(dealii::ParameterHandler ¶meter_handler, unsigned int max_criteria=5)
Assign the parameters read from an input file to this object.
Definition nonlinear_solve_parameters.h:171
void validate()
Validate parameters.
Definition nonlinear_solve_parameters.h:67
void declare_parameters(dealii::ParameterHandler ¶meter_handler, unsigned int max_criteria=5) const
Declare the parameters to be read from an input file.
Definition nonlinear_solve_parameters.h:105
std::map< Types::Index, NonlinearSolverParameters > newton_solvers
Definition nonlinear_solve_parameters.h:63
void print_parameter_summary() const
Print parameters to summary.log.
Definition nonlinear_solve_parameters.h:83
Struct that stores relevant nonlinear solve information of a certain field.
Definition nonlinear_solve_parameters.h:20
double step_length
Definition nonlinear_solve_parameters.h:22
double tolerance_value
Definition nonlinear_solve_parameters.h:28
unsigned int max_iterations
Definition nonlinear_solve_parameters.h:25