33 std::vector<GlobalVector*>
const& x,
34 std::vector<GlobalVector*>
const& x_prev,
int const process_id) = 0;
47 std::vector<GlobalVector*>& x,
48 std::vector<GlobalVector*>
const& x_prev,
49 std::function<
void(
int,
bool, std::vector<GlobalVector*>
const&)>
const&
50 postIterationCallback,
51 int const process_id) = 0;
63template <NonlinearSolverTag NLTag>
90 int const recompute_jacobian = 1,
91 double const damping = 1.0,
92 std::optional<double>
const damping_reduction = std::nullopt)
111 void calculateNonEquilibriumInitialResiduum(
112 std::vector<GlobalVector*>
const& x,
113 std::vector<GlobalVector*>
const& x_prev,
114 int const process_id)
override;
117 std::vector<GlobalVector*>& x,
118 std::vector<GlobalVector*>
const& x_prev,
119 std::function<
void(
int,
bool, std::vector<GlobalVector*>
const&)>
const&
120 postIterationCallback,
121 int const process_id)
override;
200 void calculateNonEquilibriumInitialResiduum(
201 std::vector<GlobalVector*>
const& x,
202 std::vector<GlobalVector*>
const& x_prev,
203 int const process_id)
override;
206 std::vector<GlobalVector*>& x,
207 std::vector<GlobalVector*>
const& x_prev,
208 std::function<
void(
int,
bool, std::vector<GlobalVector*>
const&)>
const&
209 postIterationCallback,
210 int const process_id)
override;
MathLib::EigenLisLinearSolver GlobalLinearSolver
MathLib::EigenVector GlobalVector
virtual ~NonlinearSolverBase()=default
virtual NonlinearSolverStatus solve(std::vector< GlobalVector * > &x, std::vector< GlobalVector * > const &x_prev, std::function< void(int, bool, std::vector< GlobalVector * > const &)> const &postIterationCallback, int const process_id)=0
virtual void calculateNonEquilibriumInitialResiduum(std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, int const process_id)=0
GlobalLinearSolver & _linear_solver
ConvergenceCriterion * _convergence_criterion
std::optional< double > const _damping_reduction
bool _compensate_non_equilibrium_initial_residuum
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)
NonlinearSolver(GlobalLinearSolver &linear_solver, int const maxiter, int const recompute_jacobian=1, double const damping=1.0, std::optional< double > const damping_reduction=std::nullopt)
int const _maxiter
maximum number of iterations
int const _recompute_jacobian
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
const int _maxiter
maximum number of iterations
GlobalVector * _r_neq
non-equilibrium initial residuum.
void compensateNonEquilibriumInitialResiduum(bool const value)
GlobalLinearSolver & _linear_solver
System * _equation_system
NonlinearSolver(GlobalLinearSolver &linear_solver, const int maxiter)
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.
std::pair< std::unique_ptr< NonlinearSolverBase >, NonlinearSolverTag > createNonlinearSolver(GlobalLinearSolver &linear_solver, BaseLib::ConfigTree const &config)
Status of the non-linear solver.