4#ifndef linear_solve_parameters_h
5#define linear_solve_parameters_h
7#include <prismspf/config.h>
8#include <prismspf/core/conditional_ostreams.h>
9#include <prismspf/core/type_enums.h>
10#include <prismspf/core/types.h>
14PRISMS_PF_BEGIN_NAMESPACE
23 double tolerance = defaults::tolerance;
26 solverToleranceType tolerance_type = solverToleranceType::RELATIVE_RESIDUAL_CHANGE;
29 unsigned int max_iterations = defaults::iterations;
32 preconditionerType preconditioner = preconditionerType::GMG;
38 double smoothing_range = 15.0;
41 unsigned int smoother_degree = 5;
44 unsigned int eig_cg_n_iterations = 10;
66 std::map<unsigned int, linearSolverParameters> linear_solve;
78 if (!linear_solve.empty())
81 <<
"================================================\n"
82 <<
" Linear Solve Parameters\n"
83 <<
"================================================\n";
85 for (
const auto &[index, linear_solver_parameters] : linear_solve)
88 <<
"Index: " << index <<
"\n"
89 <<
" Tolerance: " << linear_solver_parameters.tolerance <<
"\n"
90 <<
" Type: " << to_string(linear_solver_parameters.tolerance_type) <<
"\n"
91 <<
" Max iterations: " << linear_solver_parameters.max_iterations <<
"\n"
92 <<
" Preconditioner: " << to_string(linear_solver_parameters.preconditioner)
95 if (linear_solver_parameters.preconditioner == preconditionerType::GMG)
98 <<
" Smoothing range: " << linear_solver_parameters.smoothing_range
100 <<
" Smoother degree: " << linear_solver_parameters.smoother_degree
102 <<
" Max eigenvalue CG iterations: "
103 << linear_solver_parameters.eig_cg_n_iterations <<
"\n";
111PRISMS_PF_END_NAMESPACE
static dealii::ConditionalOStream & pout_summary()
Log output stream for writing a summary.log file.
Definition conditional_ostreams.cc:22
Struct that holds linear solver parameters.
Definition linear_solve_parameters.h:51
void postprocess_and_validate()
Postprocess and validate parameters.
Definition linear_solve_parameters.h:70
void print_parameter_summary() const
Print parameters to summary.log.
Definition linear_solve_parameters.h:76
Struct that stores relevant linear solve information of a certain field.
Definition linear_solve_parameters.h:20