40        std::vector<GlobalVector*> 
const& x,
 
   41        std::vector<GlobalVector*> 
const& x_prev, 
int const process_id) = 0;
 
   54        std::vector<GlobalVector*>& x,
 
   55        std::vector<GlobalVector*> 
const& x_prev,
 
   56        std::function<
void(
int, 
bool, std::vector<GlobalVector*> 
const&)> 
const&
 
   57            postIterationCallback,
 
   58        int const process_id) = 0;
 
 
   70template <NonlinearSolverTag NLTag>
 
   97        int const recompute_jacobian = 1,
 
   98        double const damping = 1.0,
 
   99        std::optional<double> 
const damping_reduction = std::nullopt)
 
  100        : _linear_solver(linear_solver),
 
  102          _recompute_jacobian(recompute_jacobian),
 
  104          _damping_reduction(damping_reduction)
 
 
  114        _equation_system = &eq;
 
  115        _convergence_criterion = &conv_crit;
 
 
  118    void calculateNonEquilibriumInitialResiduum(
 
  119        std::vector<GlobalVector*> 
const& x,
 
  120        std::vector<GlobalVector*> 
const& x_prev,
 
  121        int const process_id) 
override;
 
  124        std::vector<GlobalVector*>& x,
 
  125        std::vector<GlobalVector*> 
const& x_prev,
 
  126        std::function<
void(
int, 
bool, std::vector<GlobalVector*> 
const&)> 
const&
 
  127            postIterationCallback,
 
  128        int const process_id) 
override;
 
  132        _compensate_non_equilibrium_initial_residuum = value;
 
 
  143    int const _recompute_jacobian = 1;
 
  157    std::size_t _res_id = 0u;            
 
  158    std::size_t _J_id = 0u;              
 
  159    std::size_t _minus_delta_x_id = 0u;  
 
  160    std::size_t _x_new_id =
 
  162    std::size_t _r_neq_id = 0u;  
 
  170    bool _compensate_non_equilibrium_initial_residuum = 
false;
 
 
  193        : _linear_solver(linear_solver), _maxiter(maxiter)
 
 
  203        _equation_system = &eq;
 
  204        _convergence_criterion = &conv_crit;
 
 
  207    void calculateNonEquilibriumInitialResiduum(
 
  208        std::vector<GlobalVector*> 
const& x,
 
  209        std::vector<GlobalVector*> 
const& x_prev,
 
  210        int const process_id) 
override;
 
  213        std::vector<GlobalVector*>& x,
 
  214        std::vector<GlobalVector*> 
const& x_prev,
 
  215        std::function<
void(
int, 
bool, std::vector<GlobalVector*> 
const&)> 
const&
 
  216            postIterationCallback,
 
  217        int const process_id) 
override;
 
  221        _compensate_non_equilibrium_initial_residuum = value;
 
 
  233    std::size_t _A_id = 0u;          
 
  234    std::size_t _rhs_id = 0u;        
 
  235    std::size_t _x_new_id = 0u;  
 
  237    std::size_t _r_neq_id = 0u;  
 
  242    bool _compensate_non_equilibrium_initial_residuum = 
false;
 
 
Global vector based on Eigen vector.
 
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
 
std::optional< double > const _damping_reduction
 
void compensateNonEquilibriumInitialResiduum(bool const value)
 
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
 
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)
 
Status of the non-linear solver.