[Wien] Multisecant mixer

Laurence Marks L-marks at northwestern.edu
Thu Aug 16 15:17:49 CEST 2007


Dear Wien2k users,

This email is intended to explain a little about the new mixer, which
was part of a collaboration I have with Russell Luke – not a lot, and
a paper on it is being prepared. There are some important things to
know:

a) The algorithm used is new, and while it bears some similarity to
what has been published (in the DFT & minimization literature) it is
not the same. Rather than a straight Broyden method it uses what is
called a "multisecant" approach which has similarities to the Pulay
and DIIS methods as well as Broyden methods. As a consequence it
behaves quite differently, in all cases that we currently know better
or much better. This means that you should not use "conventional
wisdom" for mixing to understand how this mixer will behave.

b) The algorithm is based upon a mathematical analysis of why methods
for solving problems such as mixing can have problems
(ill-conditioning or greedy steps). As a consequence what is called
"charge sloshing" has almost completely disappeared.

c) Unlike the old algorithm (or almost everything out there which we
know of) it has several layers of internal dynamic control of the
steps based upon some established mathematical concepts from the
minimization literature, as well as a new idea. What this means is
that as a user you can just set the "mixing parameter" to some values
(0.1-0.5, generally 0.3 is good) and then let the code control this
for you – you don't have to adjust it. The code will use the value
that you gave as an upper bound for an internal variable, and may in
fact use a smaller value, but never a larger one. If you really,
really, really need to change it to some small value (0.05) you can,
and unlike the old code this is completely safe to do without deleting
the history files. Except for pathological cases such as an isolated
Ni atom where at the solution the problem is singular (and perhaps
discontinuous) you 99.8% do not need to do this.

d) The algorithm sometimes takes a slightly bad step. In general these
steps are not as bad as those taken by the older method, less likely
to cause ghost-bands. It is important to remember that all
minimization or non-linear equation solving algorithms sometimes take
bad steps. If the code takes a bad step don't worry – in most cases
the convergence is much faster after a bad step.

e) There is one new "user parameter" which is the number of history
steps that the code uses, generally somewhere between 6 and 11 is
optimum. Exactly what number is best is problem specific, and it is
totally safe to change it during a run (no need to delete the history
files). At present we do not have a mathematical model for working out
what is the optimum value – maybe we will in the future.

f) There are some special, pathological cases (e.g. an isolated Ni
atom) where, to our knowledge, no existing method will work because of
discontinuities at the solution. For these you have to use some
temperature smearing to eliminate the discontinuities. At some stage
in the future we hope to develop a different algorithm which can
handle these.

g) Last, to our knowledge and based upon tests by several other people
the new mixer is robust and safe. Almost certainly there will be an
exception, and if you run into it please post to the listserver.


-- 
Laurence Marks
Department of Materials Science and Engineering
MSE Rm 2036 Cook Hall
2220 N Campus Drive
Northwestern University
Evanston, IL 60208, USA
Tel: (847) 491-3996 Fax: (847) 491-7820
email: L-marks at northwestern dot edu
Web: www.numis.northwestern.edu
EMM2007 http://ns.crys.ras.ru/EMMM07/
Commission on Electron Diffraction of IUCR
www.numis.northwestern.edu/IUCR_CED


More information about the Wien mailing list