39 std::vector<GlobalVector*>
const& x,
40 std::vector<GlobalVector*>
const& x_prev,
int const process_id) = 0;
53 std::vector<GlobalVector*>& x,
54 std::vector<GlobalVector*>
const& x_prev,
55 std::function<
void(
int, std::vector<GlobalVector*>
const&)>
const&
56 postIterationCallback,
57 int const process_id) = 0;
69 template <NonlinearSolverTag NLTag>
92 double const damping = 1.0)
93 : _linear_solver(linear_solver), _maxiter(maxiter), _damping(damping)
103 _equation_system = &eq;
104 _convergence_criterion = &conv_crit;
108 std::vector<GlobalVector*>
const& x,
109 std::vector<GlobalVector*>
const& x_prev,
110 int const process_id)
override;
113 std::vector<GlobalVector*>& x,
114 std::vector<GlobalVector*>
const& x_prev,
115 std::function<
void(
int, std::vector<GlobalVector*>
const&)>
const&
116 postIterationCallback,
117 int const process_id)
override;
121 _compensate_non_equilibrium_initial_residuum = value;
139 std::size_t _res_id = 0u;
140 std::size_t _J_id = 0u;
141 std::size_t _minus_delta_x_id = 0u;
142 std::size_t _x_new_id =
144 std::size_t _r_neq_id = 0u;
152 bool _compensate_non_equilibrium_initial_residuum =
false;
175 : _linear_solver(linear_solver), _maxiter(maxiter)
185 _equation_system = &eq;
186 _convergence_criterion = &conv_crit;
190 std::vector<GlobalVector*>
const& x,
191 std::vector<GlobalVector*>
const& x_prev,
192 int const process_id)
override;
195 std::vector<GlobalVector*>& x,
196 std::vector<GlobalVector*>
const& x_prev,
197 std::function<
void(
int, std::vector<GlobalVector*>
const&)>
const&
198 postIterationCallback,
199 int const process_id)
override;
203 _compensate_non_equilibrium_initial_residuum = value;
215 std::size_t _A_id = 0u;
216 std::size_t _rhs_id = 0u;
217 std::size_t _x_new_id = 0u;
219 std::size_t _r_neq_id = 0u;
224 bool _compensate_non_equilibrium_initial_residuum =
false;
Global vector based on Eigen vector.
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
NonlinearSolver(GlobalLinearSolver &linear_solver, int const maxiter, double const damping=1.0)
void compensateNonEquilibriumInitialResiduum(bool const value)
void setEquationSystem(System &eq, ConvergenceCriterion &conv_crit)
int const _maxiter
maximum number of iterations
const int _maxiter
maximum number of iterations
void compensateNonEquilibriumInitialResiduum(bool const value)
GlobalLinearSolver & _linear_solver
NonlinearSolver(GlobalLinearSolver &linear_solver, const int maxiter)
void setEquationSystem(System &eq, ConvergenceCriterion &conv_crit)
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)
void calculateNonEquilibriumInitialResiduum(std::vector< std::unique_ptr< ProcessData >> const &per_process_data, std::vector< GlobalVector * > process_solutions, std::vector< GlobalVector * > const &process_solutions_prev)
Status of the non-linear solver.