Broyden algorithm - general info
Broyden algorithm is implemented according prescription provided in the paper:
A. Baran, A. Bulgac, M. M. Forbes, G. Hagen, W. Nazarewicz, N. Schunck, and M. V. Stoitsov, Broyden’s method in nuclear structure calculations, Phys. Rev. C 78, 014318 (2008), (see here for preprint)
st-wslda codes support two types of updating schemes of densities:
- linear mixing, according to formulas (3),
- Broyden mixing, according to prescription given in sec III.B.
Controlling Broyden algorithm
In order to activate the Broyden mixing user must activate following flag in the input file:
broyden                 1        # activate broyden mixing, default=0 (linear mixing)There are two parameters that control mixing parameter (alpha parameter)
linearmixing            0.5      # mixing parameter (alpha) for linear mixing, default=0.5
broydenmixing           0.75     # mixing parameter (alpha) for Broyden mixing, default=0.75We separate these two parameters as in general they may be different. The remaining parameters controlling the Broyden algorithm are:
Mbroyden                5       # number of previous iterations used by Broyden, default=5 
startbroyden            5       # iteration number (it) for which Broyden should be activated,
                                # for it<startbroyden algorithm proceeds with linear mixing 
                                # and used linearmixing value for mixing
                                # NOTE: for it in [startbroyden, startbroyden+Mbroyden] the algorithm
                                #       still continue with linear mixing, and it stores only data
                                # Broyden starts to operate for iteration it = startbroyden+Mbroyden+1
                                # and used broydenmixing value for mixing
                                # default=0
stopbroyden             100     # Broyden is deactivated for iteration it=stopbroyden
                                # starting from iteration it = stopbroyden+1 the algorithm again proceeds
                                # with linear mixing and used linearmixing value for mixing
                                # default=999999
broydenautores          1       # automatic restarts of Broyden algorithm: 0-no, 1-yes (default)
                                # the Broyden is automatically restarted if significant changes 
                                # between two consecutive iterations is detected. 
broydenEmaxchg          0.1     # if the total energy between iteration change by more than broydenEmaxchg [in Effg units]
                                # then Broyden is restarted, (default=0.1)
broydenEdelay           5       # scan energy changes only after broydenEdelay with Broyden has been executed 
                                # typically, just after starting the Broyden energy fluctuations are observed 
                                # which should decay within a few iterations (default=5)
# Recommendation: Use startbroyden and stopbroyden only if Broyden fails to converge. 
#                 According to experience of our collaborators, there are cases (physical problems)
#                 where activating Broyden only for some number of iteration provides the best performance 
# For advanced users 
omega0broyden           0.01    # weight omega_0, see eqn. (6) 
omeganbroyden           1.0     # weight omega_n, see eqn. (6) 
omegakbroyden           1.0     # weight omega_k, see eqn. (6) 
# No significant dependence was found between Broyden performance and values of weights. Default values are recommendedContribution
The Broyden algorithm was implemented by:
- Wojciech Pudełko, Warsaw University of Technology,
 Implementation of Broyden algorithm (engineer thesis, 2020)
 Gabriel Wlazłowski
 Gabriel Wlazłowski