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 the prescription given in sec III.B.
Controlling the Broyden algorithm
In order to activate the Broyden mixing user must activate the following flag in the input file:
broyden 1 # activate broyden mixing, default=0 (linear mixing)
There are two parameters that control the 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 because, in general, they may differ. 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 iterations changes 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 the experience of our collaborators, there are cases (physical problems)
# where activating Broyden only for some number of iterations 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)