HotbitDirectory

class HotbitDirectory(path)

Constructor for the Hotbit directory parser.

Parameters:path (str) – The path of the directory to read files from.
fillingMethod(element)
Parameters:element (PeriodicTableElement) – The element for which to query the filling method.
Returns:The method used for setting up the initial occupation for the given element.
Return type:SphericalSymmetric | Anisotropic
onsiteSpinOrbitSplit(element)

Query the onsite spin-orbit split energies for a given element.

Parameters:element (PeriodicTableElement) – The element for which to query the spin-orbit split energies.
Returns:The onsite spin-orbit split for this element.
Return type:PhysicalQuantity of type energy
onsiteSpinSplit(element)

Query the onsite spin-split energies for a given element.

Parameters:element (PeriodicTableElement) – The element for which to query the spin splits.
Returns:The onsite spin-split energies for this element as a square matrix of size n where n is the number of subshells of the given element.
Return type:PhysicalQuantity of type energy
pairPotentials(configuration)

Query function for getting the pair potentials.

Parameters:configuration (MoleculeConfiguration | BulkConfiguration | DeviceConfiguration | SurfaceConfiguration) – The configuration defining which elements to load.
Returns:The pair-potentials.
Return type:list of PairPotential
setFillingMethod(element, filling_method)

Set the method used for setting up the initial occupation for the given element.

Parameters:
  • element (PeriodicTableElement) – The element for which to set the filling method.
  • filling_method (SphericalSymmetric | Anisotropic) – The method used for setting up the initial occupation.
setOnsiteSpinOrbitSplit(element, split)

Set the onsite spin-orbit split energies for a given element in the configuration.

Parameters:
  • element (PeriodicTableElement) – The element for which to set the spin-orbit splits.
  • split (PhysicalQuantity of type energy) – The onsite spin-split energies for this element as a square matrix of size n where n is the number of subshells of the given element.
setOnsiteSpinSplit(element, split)

Set the onsite spin split energies for a given element in the configuration.

Parameters:
  • element (PeriodicTableElement) – The element for which to set the spin splits.
  • split (PhysicalQuantity of type energy) – The on-site spin-split energies for each subshell pair of the element.
setVacuumLevel(element, vacuum_level)

Set the energy shift of the vacuum level for a given element.

Parameters:
  • element (PeriodicTableElement) – The element for which to set the energy shift of the vacuum level.
  • vacuum_level (PhysicalQuantity of type energy) – The energy shift of the vacuum level.
table(configuration)

Query function for getting the SlaterKosterTable representation of the parameter files in the directory.

Parameters:configuration (MoleculeConfiguration | BulkConfiguration | DeviceConfiguration | SurfaceConfiguration) – The configuration defining which elements to load.
Returns:A SlaterKosterTable instance representing the parameter files in the directory.
Return type:SlaterKosterTable
vacuumLevel(element)
Parameters:element (PeriodicTableElement) – The element for which to query the energy shift of the vacuum level.
Returns:The energy shift of the vacuum level for the given element.
Return type:PhysicalQuantity of type energy

Usage Examples

Set up a self-consistent tight-binding calculation using parameters in the format developed by the Hotbit consortium.

# Set up a graphene crystal
bulk_configuration = BulkConfiguration(
    bravais_lattice=Hexagonal(2.4612*Angstrom, 6.709*Angstrom),
    elements=[Carbon, Carbon],
    cartesian_coordinates=[[ 0.        ,  0.        ,  0.        ],
                         [ 1.2306    ,  0.71050145,  0.        ]]*Angstrom
    )

# setup slater-koster calculator with hotbit parameters

basis_set = HotbitDirectory("hotbit/standard")

pair_potentials = HotbitDirectory("hotbit/standard")

numerical_accuracy_parameters = NumericalAccuracyParameters(
    k_point_sampling=(4, 4, 1) )

calculator = SlaterKosterCalculator(
    basis_set=basis_set,
    pair_potentials=pair_potentials,
    numerical_accuracy_parameters=numerical_accuracy_parameters,
    )
bulk_configuration.setCalculator(calculator)

initial_velocity = MaxwellBoltzmannDistribution(
        temperature=1000.0*Kelvin
    )

method = NVEVelocityVerlet(
        time_step=1.0*femtoSecond,
        initial_velocity=initial_velocity
    )

molecular_dynamics = MolecularDynamics(
        bulk_configuration,
        constraints=[],
        trajectory_filename='trajectory.nc',
        steps=50,
        log_interval=1,
        method=method
    )


Notes

  • Details about the Hotbit parameters can be found at the website of the Hotbit consortium.
  • To perform a spin-polarized calculation with the DFTB parameters you must use the atomic spin-polarization splitting \(W\) from the built-in database (see Spin polarization).