~siesta-maint/siesta/rel-4.0

Viewing all changes in revision 590.

  • 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.


expand all expand all

Show diffs side-by-side

added added

removed removed

Lines of Context: