QuantumATK Forum

General => Future Releases => Topic started by: ziand on January 19, 2012, 20:51

Title: A tutorial on convergence of large (metallic) systems would be nice.
Post by: ziand on January 19, 2012, 20:51
When dealing with large systems, especially large (maybe only in one dimensions) metallic systems, one often encounters convergence problems.

An eEffective ways to improve convergence is to increase the electron temperature. However, this affects the accuracy of the results at some point (very high T_el).
The other approch is called mixing. Right now ATK implements a Pulay mixer for the Hamiltonian. This is okay. What I'm asking for (maybe it is too complicated and only experience on the user side can help) is some sort of tutorial or guidlines how to twist the various parameters in order to systematically find a way out of a non-converging situation.

One has the parameters:
damping_factor, number_of_history_steps, start_mixing_after_step, linear_dependence_threshold and preconditioner.
The last one (preconditioner Kerker) itself has parameters: energy_q0, energy_qmax, maximum_damping

I doubt I'm the only user who is sometimes a bit puzzled which knobs are the most effective ones to twist or in which order one should change them to improve convergence (may it be slower (more tiny steps), but it should stop oscillating and the error should go down down down!!!)

Title: Re: A tutorial on convergence of large (metallic) systems would be nice.
Post by: kstokbro on January 19, 2012, 21:59
We are working on some guidelines and looking into if we can improve the defaults
Some recommendations:
1. Include more history steps, 20 or 30
2. Often it is safe to lower the tolerance, forinstance to 1e-4
3. increase the temperature
4. make sure the meshcutoff is sufficient