Author Topic: Basis set range  (Read 9147 times)

0 Members and 1 Guest are viewing this topic.

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5405
  • Country: dk
  • Reputation: 89
    • View Profile
    • QuantumATK at Synopsys
Basis set range
« on: March 26, 2010, 09:12 »
One of the distinct features of ATK (or, more correctly, the SIESTA method) is the use of localized numerical orbitals basis sets.

Each basis set orbital has a finite range, beyond which it is identically zero. This gives sparse matrices which saves a lot of memory, esp. for large two-probe calculations, and makes ATK efficient in describing systems with abrupt interfaces, defects, and vacuum.

Knowing the basis set range can be important in many situations, e.g. if you are trying to figure out how long the electrodes need to be. And sometimes you want to increase the basis set range, if there e.g. is a vacuum gap in the system that needs to be bridged.

Now, in 2010.xx, the basis set range is specified explicitly. So, you just set the range to whatever you want. Of course, one should be careful and not make it deviate wildly from the default, atomic-like value, since that compromises the quality of the basis set.

In 2008.10 and earlier versions, on the other hand, the basis set range was implicitly defined via the energy shift, which is the difference in energy between the basis orbital and the true atomic orbital from which the basis orbital is derived. The atomic orbital has infinite range with an exponential tail, so the energy difference arises from imposing a hard cut-off radius.

The attached scripts provide some utilities that allows you to compute the basis set radius for given basis set parameters.

As an example of how to use these functions, attached is also a plot showing the radius of the carbon SingleZeta (LDA.PZ) basis set, as a function of the energy shift. Note the logscale on the horizontal axis; the shift goes exponentially with the radius (and not opposite!).