Comment 4 for bug 1834949

Revision history for this message
Nick Papior (nickpapior) wrote :

Dear Peter,

1) I can't see in your input that you actually specify the initial linear mixing to 0? In fact, in all of your provided outputs you are actually requesting the following:

# When you specify SCF.Mixer.Weight, you are "overwriting" DM.MixingWeight
SCF.Mixer.Weight 0.3
SCF.Mix.First false

This means that you are doing an initial Linear mixing of 1! The mix first = false, means that there will be no mixing and this is why you see the big jump. (no mixing means output == new input).

If you want a smaller initial linear mixing you should do:
%block SCF.Mixers
  Pulay
%endblock SCF.Mixers

%block SCF.Mixer.Pulay
  # Mixing method
  method pulay
  variant stable

  # Mixing options
  weight 0.3000
  weight.linear 0.0001 # this determines the initial linear mixing if SCF.Mix.First is true
  history 8
%endblock SCF.Mixer.Pulay

2) As for using the expert routines, this is good! Perhaps you may be interested in doing something like:
# A negative number *adds* the given number to the number of eigenstates calculated, so it is easier
# to *control* since it is an offset independent on from the apparent number of states.
NumberOfEigenstates -10
Also, you should probably compile with elpa as that should give you some 10% faster diagonalization (I would assume). NumberOfEigenstates should also work with the ELPA-driver.
One thing to note. In your largest calculation I am wondering whether you would actually get a slightly better performance by decreasing your # of cores. You have roughly 6 orbitals per core, which means their individual workload is very (extremely!) low. My suspicion is that you could try and halve the number of cores at a very low cost in time (but huge saving in CPUTIME). This of course requires you to test this.

3) My patch should only have an effect when you have SCF.Mix.First true, so that is why you don't see any difference.

4) You write "when i use linear mixing, history=0 and coefficient=0, the dH does actually diverge. This should not happen..", I don't know what you mean with coefficient=0? Is it mixing weight?
Could you provide the input for this? My suspicion is that you are still having a finite mixing weight.

5) The history is not needed in linear, as you correctly note. So it does not matter. The main problem here is that in all your (shown) outputs your first step is using a mixing weight of 1 which effectively is a *hard* kick if you are restarting from a non-converged solution (as in your case).
I would suggest you try SCF.Mix.First true and run without my code modification, and with my code modification. However, I have heard from others that *perhaps* the SCF.Mix.First true is not the best for SOC. This is still somewhat a mystery to me.

6) I will patch 4.1 and later to disable the print-out of DM mixing weight.