-
Committer:
Alberto Garcia
-
Date:
2019-01-30 13:29:21 UTC
-
mfrom:
(589.1.10 4.0-semic-pol-fix)
-
Revision ID:
albertog@icmab.es-20190130132921-wezhutnzqlxobz7t
Fix some issues with polarization orbitals. Bessel orbs improvements.
A number of issues (mostly cosmetic, or appearing in rare occasions) with
polarization orbitals have been fixed.
* Fix 'n' quantum number for high-l polarization orbitals
When a polarization orbital had angular momentum l greater than the
rest of the the basis, its associated principal quantum number n was
off (it was set to the polarized shell's n).
This error affected the metadata in the .ion files, the wavefunction
files, and the PDOS file, so some analysis operations might have
failed to take into account those orbitals if they were requested
explicitly (e.g., a COOP calculation with 'O_3d' symbols might show
the bug; but not one with 'O_d' or 'O').
* Fix for the case of polarization orbitals having the same l as a
semicore state.
An example: For Ti, the electronic structure is 3s2 3p6 3d2 4s2 4p0*
4p0* is a polarization orbital, and 3p6 can be a semicore orbital.
The outer orbitals for l=0..3 reported by the 'periodic table'
routines for Ti are:
4s2 3p6 3d2 4f0
When using a pseudopotential with 3p6 in the valence (a "semicore"
state), if 4p did not appear explicitly in a PAO.Basis block (i.e.,
with the entry for 4s marked as "polarized"), the program did not
identify 3p as a "semicore state", and thus it did not generate
*two* KB operators for l=1.
This has been fixed, together with the wrong 'n' assignment to the
polarization orbital.
* Improve output of basis specification
Change misleading 'n=' prefix by 'i=' (it is simply an enumeration)
and add a proper symbolic nl identifier at the end of the line.
Some cosmetic and usability improvements have also been made to the
handling of Bessel floating orbitals:
* Extend and clarify the handling of Bessel floating orbitals
For Bessel floating orbitals different 'zetas' correspond to
progressively excited states (more nodes) for a given l.
A user might want to reproduce the basis coverage of a given 'nl'
shell with a suite of bessel functions with increasing number of
nodes, using the 'zeta' mechanism. Up to now, it was only possible to
do this for a single 'n' for each l, and the 'n' quantum number
specified by the user in the (compulsory for Bessel orbitals)
PAO.Basis block was ignored.
This patch enables the specification of multiple 'nl' shells for the
same l, and keeps the user's choice for the 'n' quantum number in
the output files of the program (.ion, .PDOS, etc).
* Enable short-hand for entering rc information in PAO.Basis block
If the number of rc's for a given shell is less than the number of
'zetas', the program will assign the last rc value to the remaining
zetas, rather than stopping with an error. This is particularly
useful for Bessel suites of orbitals.
The same feature works for the (deprecated) contraction factors.
A new test (Tests/bessel-rich) exemplifies this, as well as the
new Bessel extensions.