mfem::NewtonSolver applying a constant damping factor to the Newton update, optionally shortening it further with a backtracking line search on the residual norm. More...
#include <MFEMNewtonNonlinearSolver.h>
Public Member Functions | |
| DampedNewtonSolver (MPI_Comm comm) | |
| void | SetOperator (const mfem::Operator &op) override |
| void | SetDampingFactor (mfem::real_t damping_factor) |
| Set the fraction of the full Newton update applied. | |
| void | SetBacktracking (unsigned int max_its, mfem::real_t contraction_factor, mfem::real_t sufficient_decrease) |
| Enable a backtracking line search taking at most max_its trial steps, each a factor contraction_factor shorter than the last, accepting the first whose residual norm satisfies the sufficient decrease condition with coefficient sufficient_decrease. | |
| mfem::real_t | ComputeScalingFactor (const mfem::Vector &x, const mfem::Vector &b) const override |
| Return the fraction of the Newton update to apply at the iterate x. | |
Protected Attributes | |
| mfem::real_t | _damping_factor = 1.0 |
| Fraction of the full Newton update applied, and the line search's initial trial step. | |
| unsigned int | _ls_max_its = 0 |
| Maximum number of trial steps taken by the line search; 0 disables backtracking. | |
| mfem::real_t | _ls_contraction_factor = 0.5 |
| Factor a rejected trial step is multiplied by to obtain the next one. | |
| mfem::real_t | _ls_sufficient_decrease = 1.0e-4 |
| Coefficient of the sufficient decrease (Armijo) condition on the residual norm. | |
| mfem::Vector | _ls_x_trial |
| Trial iterate x - t c evaluated by the line search. | |
| mfem::Vector | _ls_r_trial |
| Residual at the trial iterate. | |
mfem::NewtonSolver applying a constant damping factor to the Newton update, optionally shortening it further with a backtracking line search on the residual norm.
Definition at line 22 of file MFEMNewtonNonlinearSolver.h.
|
inline |
Definition at line 25 of file MFEMNewtonNonlinearSolver.h.
|
override |
Return the fraction of the Newton update to apply at the iterate x.
Without backtracking this is the constant damping factor. With backtracking it is the first trial step t, starting from the damping factor, satisfying ||F(x - t c) - b|| <= (1 - sufficient_decrease * t) * ||F(x) - b||, or 0 if no trial step satisfies it, which interrupts the Newton iteration.
Definition at line 42 of file MFEMNewtonNonlinearSolver.C.
| void Moose::MFEM::DampedNewtonSolver::SetBacktracking | ( | unsigned int | max_its, |
| mfem::real_t | contraction_factor, | ||
| mfem::real_t | sufficient_decrease | ||
| ) |
Enable a backtracking line search taking at most max_its trial steps, each a factor contraction_factor shorter than the last, accepting the first whose residual norm satisfies the sufficient decrease condition with coefficient sufficient_decrease.
Definition at line 32 of file MFEMNewtonNonlinearSolver.C.
|
inline |
Set the fraction of the full Newton update applied.
The backtracking line search, when enabled, starts from this trial step.
Definition at line 31 of file MFEMNewtonNonlinearSolver.h.
|
override |
Definition at line 20 of file MFEMNewtonNonlinearSolver.C.
|
protected |
Fraction of the full Newton update applied, and the line search's initial trial step.
Definition at line 51 of file MFEMNewtonNonlinearSolver.h.
Referenced by ComputeScalingFactor(), and SetDampingFactor().
|
protected |
Factor a rejected trial step is multiplied by to obtain the next one.
Definition at line 55 of file MFEMNewtonNonlinearSolver.h.
Referenced by ComputeScalingFactor(), and SetBacktracking().
|
protected |
Maximum number of trial steps taken by the line search; 0 disables backtracking.
Definition at line 53 of file MFEMNewtonNonlinearSolver.h.
Referenced by ComputeScalingFactor(), and SetBacktracking().
|
mutableprotected |
Residual at the trial iterate.
Definition at line 61 of file MFEMNewtonNonlinearSolver.h.
Referenced by ComputeScalingFactor(), and SetOperator().
|
protected |
Coefficient of the sufficient decrease (Armijo) condition on the residual norm.
Definition at line 57 of file MFEMNewtonNonlinearSolver.h.
Referenced by ComputeScalingFactor(), and SetBacktracking().
|
mutableprotected |
Trial iterate x - t c evaluated by the line search.
Definition at line 59 of file MFEMNewtonNonlinearSolver.h.
Referenced by ComputeScalingFactor(), and SetOperator().