[gpaw-users] Convergance Issues with B3LYP and PBE0 functionals
Jens Jørgen Mortensen
jensj at fysik.dtu.dk
Tue Mar 22 09:02:23 CET 2011
On Mon, 2011-03-21 at 13:36 -0400, Andrew Long wrote:
> I've been running into the "gpaw.KohnShamConvergenceError: Did not
> converge!" issue trying to use the PBE0 and B3LYP functionals on a
> 1x1x1 unit cell of LaMnO3 and I was wondering if anyone had any tips
> for me, if you've had similar issues, or if people are seeing
> convergence faster than I am (well over 300 iterations). Also, I
> apologize that this is long and has a lot of raw data to parse
> through, but I figured it would be best to be complete in giving
> examples of the issues.
>
>
> Note before starting: I've run the exact same structure in GPAW with
> xc='PBE' and been able to find an appropriate lattice constant for
> LaMnO3, so my structure should be fine (using default eigensolver,
> gpts = (32,32,32), kpts=(12,12,12), and nbands = 38), and that
> converged in 65 iterations.
>
>
> Setup generation for BLYP files:
> I created the BLYP files using the gpaw-setup string `gpaw-setup
> --exact-exchange -f BLYP La Mn O`, and I've added the directory for
> these files to my GPAW_SETUP_PATH.
>
>
> Calculation Parameters:
> I've tried varying several different parameters to just converge the
> a=4 Angstrom cubic LaMnO3 unit cell. I've tried using both the
> rmm-diis and cg eigensolvers, I'm now using nbands = -15 (to ensure an
> appropriate number of empty bands, this might need to be higher/I'm
> running calculations with more empty bands to check this now), and
> gpts in [32,40,48,56,64] (kpt sampling is unsupported for hybrid
> functionals).
Could you try to do a simple PBE calculation with only the gamma point?
That could be the problem.
There is some code in the latest development version of GPAW that can do
non-selfconsistent PBE0 with k-point sampling.
Jens Jørgen
> It seems that the rmm-diis solver is converging the PBE0 calculations
> better than the cg, as in 300 iterations at 32 gpts,
>
>
> xc='PBE0', Eigensolver = rmm-diis, gpts=(32,32,32) grep on 'iter:'
> from output txt file:
> iter: 294 17:18:17 -4.0 -3.3 -268670.68734 0 4
> iter: 295 17:35:51 -4.1 -3.3 -268670.68991 0 4
> iter: 296 17:53:06 -4.2 -3.4 -268670.69695 0 4
> iter: 297 18:07:30 -4.3 -3.5 -268670.69772 0 4
> iter: 298 18:21:42 -4.3 -3.6 -268670.69917 0 4
> iter: 299 18:37:00 -4.1 -3.7 -268670.70235 0 4
> iter: 300 18:51:06 -4.7 -3.9 -268670.70431 0 3
>
>
> xc='PBE0', Eigensolver = cg, gpts=(32,32,32) grep on 'iter:' from
> output txt file:
> iter: 294 23:33:26 +0.7 -1.1 -268668.31406 0 7
> iter: 295 23:45:39 +0.8 -1.1 -268674.86126 0 8
> iter: 296 23:57:30 +1.3 -0.8 -268693.73136 0 6
> iter: 297 00:09:26 +1.4 -0.8 -268673.48216 0 7
> iter: 298 00:21:28 +0.7 -0.8 -268663.46448 0 8
> iter: 299 00:32:53 +1.1 -0.9 -268665.24148 0 8
> iter: 300 00:44:17 +0.8 -1.2 -268667.46744 0 7
>
>
> Even still, the PBE0 with rmm-diis has not reached the convergence
> criteria in 300 iterations, although it is certainly approaching it
> better than the cg solver. If others using hybrid functionals have
> noticed this, then I guess I'm just stuck running extremely long
> number of iteration calculations, but this seemed abnormal.
>
>
> B3LYP has some much bigger issues, namely that it occasionally
> diverges, and the conjugate gradient solver seems to cause this
> divergence to happen almost immediately with almost no chance of
> returning to stable values.
>
>
> xc='B3LYP', Eigensolver = rmm-diis, gpts=(32,32,32) grep on 'iter:'
> from output txt file
> iter: 294 20:31:19 +1.3 -1.0 -268766.37986 0 8
> iter: 295 20:43:42 +0.6 -0.5 -268766.01134 0 7
> iter: 296 20:55:58 +0.3 -0.5 -268729.09616 0 7
> iter: 297 21:08:27 +11.9 -0.5 -22638322.11476 0 9
> iter: 298 21:23:06 +11.9 -0.1 -15204779.31868 0 9
> iter: 299 21:36:55 +12.0 -0.2 -11321250.78445 0 9
> iter: 300 21:50:42 +5.9 -0.4 -269415.17823 0 11
>
>
> xc='B3LYP', Eigensolver = cg, gpts=(32,32,32) grep on 'iter:' from
> output txt file
> iter: 26 17:10:17 +1.5 -0.5 -268972.15494 0 7
> iter: 27 17:23:58 +1.5 -0.4 -268769.43458 0 8
> iter: 28 17:38:25 +10.0 -0.5 -12946072.36830 0 9
> iter: 29 17:59:36 +10.2 +0.2 -29325678.97489 0 9
> iter: 30 18:24:48 +3.5 +0.3 -267327.36211 0 9
> iter: 31 18:43:15 +12.1 -0.1 -79931041.86473 0 9
> iter: 32 19:08:54 +11.6 +0.1 -41043447.56353 0 9
> iter: 33 19:32:13 +12.7 +0.1 -185879403.34907 0 9
>
>
> The xc=B3LYP with rmm-diis looks like it might fully converge at
> gpts=40, though this calculation has not finished yet so I'm unsure of
> whether it will (been running for almost 100 hours and at 209
> iterations):
> iter: 205 11:26:21 -4.9 -3.8 -268696.15484 0 3
> iter: 206 11:52:16 -4.7 -3.8 -268696.15383 0 3
> iter: 207 12:17:03 -4.9 -3.8 -268696.15325 0 3
> iter: 208 12:39:00 -5.0 -3.9 -268696.15316 0 4
> iter: 209 13:01:48 -4.9 -4.2 -268696.15376 0 3
>
>
> I'm also unsure of what happened but for gpts=[40,48,56] with
> rmm-diis, I see energy spikes that come back and stabilize. I don't
> know if these trends exist in the gpts=64 case, as 100 hours has only
> resulted in ~60 iterations. This seemed extremely abnormal, as I don't
> see any of these peaks in the PBE0, meaning something with B3LYP is
> specifically causing this.
> xc='B3LYP', Eigensolver = rmm-diis, gpts=(40,40,40) grep on 'iter:'
> from output txt file
> iter: 36 03:07:54 +1.0 -0.6 -268748.34025 0 8
> iter: 37 03:31:07 +9.6 -0.7 -1316167.90156 0 10
> iter: 38 03:57:22 +7.6 -0.3 -313190.14697 0 7
> iter: 39 04:25:28 +1.9 -0.3 -268634.10803 0 9
>
>
> xc='B3LYP', Eigensolver = rmm-diis, gpts=(48,48,48) grep on 'iter:'
> from output txt file
> iter: 54 12:31:59 +0.4 -0.8 -268709.67470 0 7
> iter: 55 13:22:54 +8.4 -0.9 -312728.04233 0 8
> iter: 56 14:30:57 +5.6 -0.3 -268946.26055 0 6
> ...
> iter: 67 01:31:01 +1.8 -0.3 -268679.04502 0 9
> iter: 68 02:15:58 +9.1 -0.3 -447263.27650 0 9
> iter: 69 03:10:37 +8.8 -0.4 -362153.71279 0 8
> iter: 70 04:19:19 +7.0 -0.3 -274627.59113 0 8
>
>
> xc='B3LYP', Eigensolver = rmm-diis, gpts=(56,56,56) grep on 'iter:'
> from output txt file
> iter: 76 18:30:07 +0.7 -0.8 -268682.77118 0 6
> iter: 77 19:30:04 +9.9 -0.8 -1090384.83029 0 10
> iter: 78 20:35:55 +2.0 -0.2 -268620.74846 0 10
> iter: 79 21:41:14 +1.4 -0.7 -268718.26284 0 7
>
>
>
>
> If anyone has some ideas or sees some issues I'd be extremely
> grateful. I'm wondering if others have noticed that hybrid functionals
> take a much higher number of iterations to converge, or if my results
> are seemingly abnormal. Also, I think I've setup the gpaw setup files
> properly for B3LYP/PBE0 (don't need anything except for defaults from
> the setup package for PBE0 and need to generate BLYP files with exact
> exchange for B3LYP), but if I could get confirmation that this is
> correct, that'll also narrow down my range of possible issues.
>
>
> Thank you so much for taking the time to read through this,
> Andy Long
>
>
> _______________________________________________
> gpaw-users mailing list
> gpaw-users at listserv.fysik.dtu.dk
> https://listserv.fysik.dtu.dk/mailman/listinfo/gpaw-users
More information about the gpaw-users
mailing list