22 #ifndef __HERMES_COMMON_PICARD_MATRIX_SOLVER_H_
23 #define __HERMES_COMMON_PICARD_MATRIX_SOLVER_H_
32 template<
typename Scalar>
39 void use_overloaded_damping_factor_condition(
bool onOff);
41 #pragma region anderson-public
42 void use_Anderson_acceleration(
bool to_set);
47 void set_num_last_vector_used(
int num);
51 void set_anderson_beta(
double beta);
55 virtual double update_solution_return_change_norm(Scalar* linear_system_solution);
58 virtual void init_solving(Scalar*& coeff_vec);
61 virtual void deinit_solving();
65 virtual void solve_linear_system();
68 virtual double calculate_residual_norm();
70 virtual bool damping_factor_condition();
77 inline std::string
getClassName()
const {
return "PicardMatrixSolver"; }
79 bool damping_factor_condition_overloaded;
80 #pragma region anderson-private
82 int num_last_vectors_used;
93 void deinit_anderson();
96 void handle_previous_vectors();
98 void calculate_anderson_coeffs();
General namespace for the Hermes library.
Scalar * previous_Anderson_sln_vector
Previous solution (linear combination coming from Anderson).
Base class for defining interface for nonlinear solvers.
Scalar ** previous_vectors
To store num_last_vectors_used last coefficient vectors.
std::string getClassName() const
State querying helpers.
Scalar * anderson_coeffs
To store num_last_vectors_used - 1 Anderson coefficients.
General nonlinear solver functionality.