Author Topic: scfdamp  (Read 9050 times)

Turboooo

  • Jr. Member
  • **
  • Posts: 19
  • Karma: +0/-0
scfdamp
« on: January 25, 2014, 01:34:01 PM »
Dear all,
I have a question about scfdamp. If I choose $scfdamp 0.7, does this means that I take 30% of the new Fock-operator +70 old Fock-operator or does this means I take 100% new Fock-operator +70% old Fock-operator?

I am confused, because it is possible to choose a scfdamping above 1.0.

Greetings
Turboooo

uwe

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 560
  • Karma: +0/-0
Re: scfdamp
« Reply #1 on: January 28, 2014, 11:34:42 AM »
Hi Turboooo,

DIIS is a bit more complicated than just taking a linear combination of new and old Fock matrices. What DIIS does is to extrapolate a guess for a good density which can be used in the next SCF iteration. For that it calculates so called error vectors of previous steps of the SCF procedure, linearly combines them and minimizes the result. There are several different ways to define the error vector, see the Turbomole documentation or http://www.cosmologic.de/data/DOK_HTML/node336.html (search for scfdiis) or search the internet for DIIS and Pulay.

DIIS will extrapolate new coefficients, but how good this guess is depends on the 'history' of the previous SCF steps.
A high value of $scfdamp will follow DIIS only a very short way, a low value of the damping factor will trust the new extrapolated coefficients. If you start from guess orbitals, the DIIS error will be much larger than later on, when your energy is almost converged. Therefore $scfdamp starts with a higher value and reduces it in each step if the energy goes down (plus some other criteria) or increases the damping factor otherwise.

Typical cases where $scfdamp should be set to high or very high numbers at the beginning (5, 10 20, ...) is whenever the start orbitals are bad or when the occupation changes during the SCF procedure - which can be the case if you use $fermi.

Regards,

Uwe
« Last Edit: January 29, 2014, 10:04:43 AM by uwe »

Addiw7

  • Jr. Member
  • **
  • Posts: 10
  • Karma: +0/-0
Re: scfdamp
« Reply #2 on: December 12, 2017, 11:04:14 AM »
Dear Uwe,

Could you explain what you mean by
A high value of $scfdamp will follow DIIS only a very short way, a low value of the damping factor will trust the new extrapolated coefficients.
, please?
So does the high value of $scfdamp mean that DIIS won't include a lot of old Fock matrices in creating the error
vector?

Best wishes,
Dawid

uwe

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 560
  • Karma: +0/-0
Re: scfdamp
« Reply #3 on: December 13, 2017, 11:07:36 AM »
Hello,

Quote
So does the high value of $scfdamp mean that DIIS won't include a lot of old Fock matrices in creating the error

the number of included Fock matrices does not change. DIIS is done in the same manner, but how much of the DIIS predicted coefficients are added to the Fock matrix, which comes out of the usual SCF procedure, is determined by this damping factor. Instead of simply adding Fock + DIIS (in a symbolic way of notation), it is Fock + 1/[damping factor] * DIIS. Well, actually the denominator is (1+damping factor) to have full DIIS with a damping factor of zero...

 Regards,

Uwe