Skip to content

Using the tight binding module from Python

Lars Pastewka edited this page Oct 2, 2015 · 11 revisions
Calculations without charge self-consistency

Atomistica's ASE interface exposes a simplified interface to the tight-binding module that can be used for calculations that do not require charge self-consistency.

from atomistica import TightBinding
...
c = TightBinding(width=0.01)
a.set_calculator(c)
...

The parameter width determines the electronic temperature. There is an additional parameter database_folder that can be used to specify the location of the Slaster-Koster database. The default is to use the current folder.

Charge self-consistent calculations

For self-consistent calculations the native Atomistica interface needs to be used to piece together tight-binding and Coulomb solvers. The Coulomb solver consists of a long-ranged and a short-ranged part. Currently only direct summation is supported for the long-ranged part. The short ranged part can be used to specify either Slater or Gaussian charges.

from atomistica import Atomistica
from atomistica.native import TightBinding, DirectCoulomb, SlaterCharges

c = Atomistica([TightBinding(SolverLAPACK=dict(electronic_T = 0.01),
                             SCC=dict(dq_crit=1e-4,
                                      mixing=0.1,
                                      andersen_memory=4,
                                      maximum_iterations=250,
                                      log=True)),
                DirectCoulomb(),
                SlaterCharges(cutoff=10.0)],
               avgn=1000)
a.set_calculator(c)

In the above example SolverLAPACK can be replaced by SolverCP (with an empty dictionary because it does not take any parameters). SolverCP is an implementation of the canonical purification solver by Palser & Manolopoulos implemented for dense matrices and non-orthogonal systems. For dense matrices, LAPACK is generally faster than canonical purification.

Clone this wiki locally