<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Dear PETSc-Team,<br>
<br>
I am having a bit of trouble understanding the way the Anderson
mixing method is implemented inPETSc.<br>
<br>
On the corresponding website
(<a class="moz-txt-link-freetext" href="http://www.mcs.anl.gov/petsc/petsc-3.5/docs/manualpages/SNES/SNESAnderson.html">http://www.mcs.anl.gov/petsc/petsc-3.5/docs/manualpages/SNES/SNESAnderson.html</a>)
it says in the <br>
"Option database" section <br>
<br>
X_{update} = X + \beta F<br>
<br>
which looks to me as if the new solution is calculated from the old
solution plus something which depends on the old residual F.<br>
<br>
However, in the "Notes" section it says that the new solution is
found by combining "m previous solutions" which I interpret as the
last m values of X.<br>
<br>
In most other sources on Anderson mixing (e.g. the original one
referd to on the website mentioned above) the update procedure looks
something like <br>
<br>
X^{k+1} = (1-\beta) \sum_{i=0}^{m} \alpha_i^k X^{k-m+1} + \beta
\sum_{i=0}^m \alpha_i^k G(X^{k-m+i}) where G = F + X.<br>
<br>
Therefore, the new value of X is calculated from the last m values
of X and F.<br>
<br>
Unfortunately, I was not able to understand and follow the actual
source code in <a
href="http://www.mcs.anl.gov/petsc/petsc-3.5/src/snes/impls/ngmres/anderson.c.html#SNESAnderson">src/snes/impls/ngmres/anderson.c</a><br>
<br>
Could you please tell me whether the last values of X, F or both are
used in the update scheme of PETSc's Anderson mixing implementation?<br>
<br>
And is \beta used in a "regular line search way" where X^{new} =
X^{old} + \beta* "undamped update" <br>
<br>
or as in the equation above <br>
<br>
X^{new} = (1-\beta) \sum "function of last m X" + \beta \sum
"function of last m G"<br>
<br>
which would explain to me why beta is not set via
-snes_linesearch_damping but using the extra option
-snes_anderson_beta.<br>
<br>
<br>
Thank you very much for your help!<br>
Jonas<br>
</body>
</html>