![]() |
OGS
|
|
Depth of Anderson acceleration for the Picard iteration, i.e. the number of previous iterates \( m \) retained to accelerate convergence.
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) \).
For \( m \ge 2 \) the next iterate is a mixture of the last \( m \) (damped) steps whose weights minimise the residual \( \|\sum_i \theta_i f_i\| \) subject to \( \sum_i \theta_i = 1 \), which typically reduces the number of iterations for slowly converging fixed-point problems.
The values \( m = 0 \) and \( m = 1 \) are accepted but have no effect: mixing a single stored step yields \( \theta = (1) \) and hence reproduces the plain Picard update \( x_{k+1} = g(x_k) \) (subject to the damping factor). A warning is emitted in that case; omit the anderson subtree to disable the acceleration explicitly.
Whenever the stored steps become (nearly) linearly dependent the mixing weights are not trustworthy. Such an iteration falls back to the plain Picard step and says so with an info message, so the acceleration degrades gracefully instead of amplifying rounding error.
The value must be non-negative. Anderson acceleration is not compatible with linear equation systems (a single Picard step already yields the exact solution); omit the anderson subtree for those.
int