Residual-based inexact Newton¶
openpfc/solvers/newton.hpp composes matrix-free GMRES with a nonlinear
model. Supply residual(x,r), linearize(x), jacobian(v,Jv) and
precondition(r,z,iteration). The same vector-operations contract used by
Krylov keeps the algorithm independent of the discretization.
The model also supplies begin_trial(x), accept_trial(x) and
reject_trial(). These hooks manage reversible iterate caches. Permanent
material history stays with the caller, which commits an increment only
after independent physical admission. A Jacobian action must read unchanged
committed history. Rejected trials preserve the accepted vector; residual
exceptions reject the open trial before propagating.
The forcing criterion is ||J*s+R|| <= eta*||R||, verified using the true
linear residual. Adaptive forcing implements Eisenstat and Walker’s
choice 2 with its safeguard, gamma 0.9 and power 2 by default. Set
adaptive_forcing=false and initial_forcing to the fixed linear tolerance
for a tight-Newton comparison. linear.absolute_tolerance is deliberately
ignored inside Newton, so it cannot bypass the forcing criterion.
Armijo backtracking requires residual decrease. Nonlinear convergence uses an explicitly evaluated residual with the same relative/absolute target for fixed and adaptive forcing. A loose linear solve cannot establish nonlinear convergence. Results report forcing, rejected trials, step lengths, linear admission, residual calls and linearization costs.
finite_strain_fft/inexact.hpp supplies solve_nonlinear_increment.
It starts at the accepted deformation plus the prescribed macroscopic
step and solves projected equilibrium. This uses a residual target rather
than the correction-based stopping rule of solve_increment; callers
should record that distinction when comparing drivers.
The FFT adapter collectively admits local stress and tangent evaluations before projection. A constitutive exception propagates on every rank; peers never continue into an FFT collective while one rank unwinds. Pass the same communicator used by the projector. Generic distributed models must likewise synchronize local failures before their collective actions.
The forcing algorithm is standard, based on Eisenstat and Walker, SIAM J. Sci. Comput. 17 (1996), 16–32.