<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>