34 std::vector<GlobalVector*>
const& x,
35 std::vector<GlobalVector*>
const& x_prev,
int const process_id) = 0;
48 std::vector<GlobalVector*>& x,
49 std::vector<GlobalVector*>
const& x_prev,
50 std::function<
void(
int, std::vector<GlobalVector*>
const&)>
const&
51 postIterationCallback,
52 int const process_id) = 0;
64template <NonlinearSolverTag NLTag>
89 std::unique_ptr<NewtonStepStrategy>
91 int const recompute_jacobian = 1)
113 void calculateNonEquilibriumInitialResiduum(
114 std::vector<GlobalVector*>
const& x,
115 std::vector<GlobalVector*>
const& x_prev,
116 int const process_id)
override;
119 std::vector<GlobalVector*>& x,
120 std::vector<GlobalVector*>
const& x_prev,
121 std::function<
void(
int, std::vector<GlobalVector*>
const&)>
const&
122 postIterationCallback,
123 int const process_id)
override;
210 int const maxiter,
int const anderson_depth,
211 double const damping)
229 void calculateNonEquilibriumInitialResiduum(
230 std::vector<GlobalVector*>
const& x,
231 std::vector<GlobalVector*>
const& x_prev,
232 int const process_id)
override;
235 std::vector<GlobalVector*>& x,
236 std::vector<GlobalVector*>
const& x_prev,
237 std::function<
void(
int, std::vector<GlobalVector*>
const&)>
const&
238 postIterationCallback,
239 int const process_id)
override;
MathLib::EigenLisLinearSolver GlobalLinearSolver
MathLib::EigenVector GlobalVector
virtual ~NonlinearSolverBase()=default
virtual void calculateNonEquilibriumInitialResiduum(std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, int const process_id)=0
virtual NonlinearSolverStatus solve(std::vector< GlobalVector * > &x, std::vector< GlobalVector * > const &x_prev, std::function< void(int, std::vector< GlobalVector * > const &)> const &postIterationCallback, int const process_id)=0
GlobalLinearSolver & _linear_solver
ConvergenceCriterion * _convergence_criterion
Convergence criterion used to terminate the Newton iteration.
bool _compensate_non_equilibrium_initial_residuum
double _tikhonov_lambda
Tikhonov regularization parameter.
std::size_t _J_id
ID of the Jacobian matrix.
std::size_t _x_new_id
ID of the vector storing .
std::size_t _res_id
ID of the residual vector.
GlobalVector * _r_neq
non-equilibrium initial residuum.
void compensateNonEquilibriumInitialResiduum(bool const value)
NonlinearSystem< NonlinearSolverTag::Newton > System
Type of the nonlinear equation system to be solved.
void setEquationSystem(System &eq, ConvergenceCriterion &conv_crit)
int const _maxiter
maximum number of iterations
int const _recompute_jacobian
Recompute Jacobian every this many steps.
std::unique_ptr< NewtonStepStrategy > _step_strategy
Globalization / step-acceptance strategy (e.g. fixed damping).
void setTikhonovLambda(double const lambda, int const starting_iteration)
NonlinearSolver(GlobalLinearSolver &linear_solver, int const maxiter, std::unique_ptr< NewtonStepStrategy > newton_strategy, int const recompute_jacobian=1)
int _tikhonov_starting_iteration
Starting iteration for Tikhonov regularization.
System * _equation_system
std::size_t _minus_delta_x_id
ID of the vector.
std::size_t _rhs_id
ID of the right-hand side vector.
bool _compensate_non_equilibrium_initial_residuum
GlobalVector * _r_neq
non-equilibrium initial residuum.
void compensateNonEquilibriumInitialResiduum(bool const value)
NonlinearSolver(GlobalLinearSolver &linear_solver, int const maxiter, int const anderson_depth, double const damping)
GlobalLinearSolver & _linear_solver
int const _maxiter
maximum number of iterations
int const _anderson_depth
System * _equation_system
void setEquationSystem(System &eq, ConvergenceCriterion &conv_crit)
std::size_t _A_id
ID of the matrix.
ConvergenceCriterion * _convergence_criterion
NonlinearSystem< NonlinearSolverTag::Picard > System
Type of the nonlinear equation system to be solved.
NonlinearSolverTag
Tag used to specify which nonlinear solver will be used.
Status of the non-linear solver.