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.75
We 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
# Recommendation: Use startbroyden and stopbroyden only if Broyden fails to converge.
# According 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 recommended
Contribution
The Broyden algorithm was implemented by:
- Wojciech Pudełko, Warsaw University of Technology,
Implementation of Broyden algorithm (engineer thesis, 2020)