MFEMNewtonNonlinearSolver

Overview

Defines and builds an mfem::NewtonSolver to solve nonlinear MFEM equation systems.

This solver requires Jacobian information from the MFEM operator and uses the externally configured MFEM linear solver for the inner linear solves.

By default the full Newton update is applied at each nonlinear iteration. Setting damping_factor to a value below one applies that constant fraction of every update instead, which can keep an update from leaving the region in which the residual is well-behaved at the cost of a slower, linear convergence rate.

Setting line_search = backtracking enables a backtracking line search, which shortens the update only where needed. Starting from the trial step given by damping_factor, the update at the iterate is accepted if it sufficiently reduces the residual norm,

where is line_search_sufficient_decrease. If it does not, the trial step is multiplied by line_search_contraction_factor and tested again, for at most line_search_max_its trial steps. Each trial step costs one residual evaluation. If no trial step satisfies the condition the nonlinear solve is terminated and reported as not converged.

Define this object in the Solvers block.

Input Parameters

  • abs_tol1e-50Absolute nonlinear tolerance.

    Default:1e-50

    C++ Type:Real

    Unit:(no unit assumed)

    Controllable:No

    Description:Absolute nonlinear tolerance.

  • damping_factor1Fraction of the full Newton update applied on each nonlinear iteration, and the first trial step taken when 'line_search' is 'backtracking'.

    Default:1

    C++ Type:Real

    Unit:(no unit assumed)

    Range:damping_factor > 0 & damping_factor <= 1

    Controllable:No

    Description:Fraction of the full Newton update applied on each nonlinear iteration, and the first trial step taken when 'line_search' is 'backtracking'.

  • line_searchnoneLine search used to shorten the Newton update.

    Default:none

    C++ Type:MooseEnum

    Options:none, backtracking

    Controllable:No

    Description:Line search used to shorten the Newton update.

  • line_search_contraction_factor0.5Factor a rejected backtracking trial step is multiplied by to obtain the next one.

    Default:0.5

    C++ Type:Real

    Unit:(no unit assumed)

    Range:line_search_contraction_factor > 0 & line_search_contraction_factor < 1

    Controllable:No

    Description:Factor a rejected backtracking trial step is multiplied by to obtain the next one.

  • line_search_max_its10Maximum number of trial steps taken by the backtracking line search.

    Default:10

    C++ Type:unsigned int

    Range:line_search_max_its > 0

    Controllable:No

    Description:Maximum number of trial steps taken by the backtracking line search.

  • line_search_sufficient_decrease0.0001Coefficient of the sufficient decrease condition the backtracking line search requires of the residual norm.

    Default:0.0001

    C++ Type:Real

    Unit:(no unit assumed)

    Range:line_search_sufficient_decrease >= 0 & line_search_sufficient_decrease < 1

    Controllable:No

    Description:Coefficient of the sufficient decrease condition the backtracking line search requires of the residual norm.

  • max_its1Maximum nonlinear iterations.

    Default:1

    C++ Type:unsigned int

    Controllable:No

    Description:Maximum nonlinear iterations.

  • print_level1Solver verbosity.

    Default:1

    C++ Type:unsigned int

    Controllable:No

    Description:Solver verbosity.

  • rel_tol1e-08Relative nonlinear tolerance.

    Default:1e-08

    C++ Type:Real

    Unit:(no unit assumed)

    Controllable:No

    Description:Relative nonlinear tolerance.

  • use_initial_guessTrueWhether to preserve the current MFEM solution vector as the initial guess for an iterative solver.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether to preserve the current MFEM solution vector as the initial guess for an iterative solver.

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Set the enabled status of the MooseObject.

Advanced Parameters

Input Files