-
Committer:
Alberto Garcia
-
Date:
2019-01-23 11:50:10 UTC
-
Revision ID:
albertog@icmab.es-20190123115010-i0w94jvx5h8kxo55
Attempt to fix the 'missing KB' issue for Ti and similar cases
EXAMPLE: Consider Ti. 3s2 3p6 3d2 4s2 4p0*
4p0* is a polarization orbital, and has to live with 3p6, which is a
semicore orbital. The "ground state configuration" reported by the
atomic routines is:
4s2 3p6 3d2 4f0 (that is, 3p6 is a "valence" orbital)
-- If we specify a full PAO.Basis block (as in the BaTiO3 test in the
Siesta distribution):
Ti 5 1.91
n=3 0 1 E 93.95 5.20
5.69946662616249
1.00000000000000
n=3 1 1 E 95.47 5.20
5.69941339465994
1.00000000000000
n=4 0 2 E 96.47 5.60
6.09996398975307 5.09944363262274
1.00000000000000 1.00000000000000
n=3 2 2 E 46.05 4.95
5.94327035784617 4.70009988294302
1.00000000000000 1.00000000000000
n=4 1 1 E 0.50 1.77
3.05365979938936
1.00000000000000
everything is OK as we spell out all the shells we want.
-- However, if we mark 4s as "polarizable" and leave out the 4p shell:
Ti 4 1.91
n=3 0 1 E 93.95 5.20
5.69946662616249
1.00000000000000
n=3 1 1 E 95.47 5.20
5.69941339465994
1.00000000000000
n=4 0 2 E 96.47 5.60 P 1 # --- P 1 added HERE
6.09996398975307 5.09944363262274
1.00000000000000 1.00000000000000
n=3 2 2 E 46.05 4.95
5.94327035784617 4.70009988294302
1.00000000000000 1.00000000000000
then (apart from the "n" cosmetics in the *.ion file) the program does
not identify 3p as a "semicore state", and thus it does not generate
*two* KB operators for l=1.
This fix is quite ad-hoc, touching the code in several places, and
changing low-level variables (cnfigmx and nsemic), so I am not too
happy about it.
Note also that there is still some debugging output.