|
|
|
# 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)](https://link.aps.org/doi/10.1103/PhysRevC.78.014318), ([see here for preprint](https://arxiv.org/abs/0805.4446))
|
|
|
|
|
|
|
|
`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:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
broyden 1 # activate broyden mixing, default=0 (linear mixing)
|
|
|
|
```
|
|
|
|
There are two parameters that control mixing parameter (alpha parameter)
|
|
|
|
```bash
|
|
|
|
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:
|
|
|
|
```bash
|
|
|
|
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,<br/> Implementation of Broyden algorithm (engineer thesis, 2020) |
|
|
|
\ No newline at end of file |