Page 1 of 1

Uncertain free energy in noncollinear calculation

Posted: Wed Jan 22, 2020 2:40 pm
by rolando_saniz1
Dear VASP team,

We started running AFM noncollinear calculations recently. SCF runs seemed to finish OK, but when we ran a geometry optimization with the same calculational parameters, we saw that the energies in the first cycle started to diverge from those in the SCF run, although they should be (nearly) identical. The difference in energy starts to appear shortly after the first 5 iterations, and tends to grow, approaching 1 eV at the 38th iteration, way too much. Our SCF INCAR file is quite simple, and reads

ENCUT = 400
LREAL = Auto
LHFCALC = .TRUE.
HFSCREEN = 0.2
ALGO = All
TIME = 0.4
PRECFOCK = N
ISMEAR = 0
SIGMA = 0.01
EDIFF = 1.E-5
NBANDS = 140
NPAR = 70
KPAR = 8
LMAXMIX = 6

ISPIN = 2
LNONCOLLINEAR=.TRUE.
MAGMOM = 0 1 1 0 1 -1 0 -1 1 0 -1 -1 24*0
AMIX = 0.2
BMIX = 0.00001
AMIX_MAG = 0.8
BMIX_MAG = 0.00001
LORBIT = 11

The geometry optimization INCAR file differs only in the pertinent parameters (apart from NELMIN, but that is irrelevant here)

> NELMIN = 5
> NELM = 250
> EDIFFG = -0.01
> ISIF = 3
> NSW = 150
> IBRION = 2

You can see (hopefully) in the plot below how the free energies start to diverge with the iteration number. Does this mean that noncollinear calculations cannot be run using KPAR? Maybe k-point parallelization has not been fully tested with noncollinear calculations? We don't see what else could the problem be. Any clarifying comments are most welcome!

Rolando
energy_noncollinear.jpg

Re: Uncertain free energy in noncollinear calculation

Posted: Thu Jan 23, 2020 9:15 am
by martin.schlipf
There is always a bit of randomness, due to the random setup of the wave functions. The one you see seems on the larger end, but it is hard to say for sure without having a deeper look into the system.
There are two things you can test to verify that there is a bug.
1) Run the calculation multiple times with the same setup (i.e., don't activate IBRION) to see if there is also a variation among the "normal" scf runs
2) Generate a random wave function and stop, then starting from this wavefunction run once with and once without setting IBRION.