OGS
[tag] damping

Under-relaxation (damping) coefficient for the Picard iteration.

Here \( x_k \) is the current iterate and \( g \) is the Picard fixed-point map, i.e. \( g(x_k) \) is the solution of the linearized system \( A(x_k)\,x = b(x_k) \) (the result of one linear solve); a converged iteration is a fixed point \( x = g(x) \).

The default value 1.0 gives a non-damped Picard iteration \( x_{k+1} = g(x_k) \). Values of the damping factor \( \beta \) in the range (0, 1] provide under-relaxation for stabilization: the update is computed as \( x_{k+1} = (1-\beta)\,x_k + \beta\,g(x_k) \). This parameter applies to both plain Picard iteration (when the anderson subtree is omitted) and Anderson-accelerated Picard iteration.

A damping factor other than 1.0 is rejected with a fatal error on a linear equation system: a single non-damped Picard step already yields the exact solution there, so the damped iterate would be accepted as converged but wrong. The same holds for the anderson subtree.

Note on convergence checks: damping scales the increment by \( \beta \), i.e. \( x_{k+1} - x_k = \beta\,(g(x_k) - x_k) \). A delta-x convergence criterion therefore sees an increment reduced by \( \beta \) and may report convergence prematurely for small \( \beta \). Tighten the delta-x tolerance accordingly, or prefer a residual-based criterion, which is evaluated on the iterate before damping is applied and is unaffected by the damping factor.

Additional info

From NumLib/ODESolver/CreateNonlinearSolver.cpp line 34

  • This is an optional parameter.
  • This parameter has a default value of 1.0.
  • Data type: double
  • Expanded tag path: nonlinear_solvers.nonlinear_solver.Picard.damping
  • Go to source code: → ogs/ogs/6.5.9

Used in the following test data files

Used in no end-to-end test cases.