Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

The Device Builder is HQS' solution for simulating large-scale devices at the microscopic level. It uses the Slater-Koster tight-binding approach to describe the electronic structure of devices of millions of atoms, perfectly suited to study (random) alloys, for example. Based on simple characteristics of the device, e.g., the distribution profile of a random alloy and external gate potentials and or magnetic fields, it provides highly efficient implementations for the Hamiltonian of the device.

Landau levels in Silicon

Applications

The Hamiltonian operators provided by the Device Builder are perfectly suited to inter-operate with other HQS software components for addressing question from materials science, for example Qolossal to study optical and electronic properties of devices at the nano- to microscale.

Getting started

To install the Device Builder simply run

hqstage install device-builder

Have a look at the examples section for ideas on how to get started using the Device Builder and hints about setting up HQStage

Features

The Device Builder provides the following functionalities:

  • Hamiltonian and velocity operators based on Slater-Koster parameters
  • Memory-efficient implementations of the Hamiltonian and velocity operators for large systems.
  • GPU-accelerated implementation of the Hamiltonian and velocity operators.
  • Support for electric and magnetic fields and harmonic confinement potential.
  • Database of Slater-Koster parameters.

For an overview over classes and functions provided by the device builder have a look at the API documentation

Examples

Jupyter notebooks providing a hands-on introduction to the usage of the Device Builder are provided as part of the examples for the HQS Qolossal module. To download examples for your HQS modules simply run

hqstage download-examples

and follow instructions provided by executing the command above in your shell. Information on how-to setup HQStage can be found here.

Units

The Device Builder uses a unit system in which electron volt (eV), Ångstrom, the bare electron mass, and the elementary charge to numerically taken to be 1. Numerical values of other physical constants follow from this choice of units. For example, the reduced Planck constant in this unit system is given by

Slater-Koster parameter

Slater-Koster parameters are a compact representation of atomic energies and inter-atomic hopping amplitudes. Since hopping amplitudes involve two atoms, they are define for each pair of atoms. Typically an explicit parametrization depends also on the reference crystal structure, but variations around the reference crystal structure is be accounted for by the general symmetry properties of atomic orbitals. Additionally, some Slater-Koster parameters also provide a correction the length-dependence scaling of the hopping amplitudes, which is otherwise taken to decay with the inverse distance squared.

The Device Builder currently comes with a small library of Slater-Koster parameters covering semi-conductors, such as Silicon and Gallium Arsenide. Moreover, it contains parameters for Silicon/Germanium random alloys, which provide hopping amplitudes for all combinations of bonds, Si-Si, Si-Ge, Ge-Si and Ge-Ge, while the Slater-Koster parameters for III-V semiconductors only provide hopping amplitudes between the anion and cation.

Furthermore, the Silicon/Germanium parameters implement a so-called "crystal field" corrections, lifting the degeneracy of the atomic energies based on its nearest neighbors, as outlined in the reference publication.

The SlaterKosterTuning model provided by the Device Builder can be used to tune the parameters of the Slater-Koster method. It contains the following properties:

  • constituents: Defines the constituents of the device as a string containing atomic species separated by dashes, e.g., 'Si-Ge'. Only works for species, which are supported by the Device Builder. Supported constituents can be queried using the get_supported_slater_koster_parameters function of the Device Builder Python module.
  • onsite_correction: Enables or disables the crystal field correction terms in the Slater-Koster model if present in the Slater-Koster parameters.
  • length_dependent_hopping: Enables or disables the length-dependent hopping terms in the Slater-Koster model. If disabled, all bonds are taking at the equilibrium value, ignoring the actual distance implied by the periodic structure. This is useful for the description of random alloys, where the bond length implied by the periodic structure does not take into account the differences in bond length when relaxing the position of a concrete instance of a random alloy. Think of it as a "poor man's" relaxation of the atomic positions.
  • bloch_vector: Sets the Bloch vector for the simulation, which by default is set to Γ (0, 0, 0). Has only an effect on lattice vector directions which are treated with periodic boundary conditions.
  • distance_precision: Sets the precision for which two displacement vectors are considered equal.
  • joint_probability_discretization: Sets the discretization for the joint probability distribution.
  • enforce_complex_type: Enforces the use of complex wave functions.

NOTE: distance_precision and joint_probability_discretization control the decomposition of the Hamiltonian into "blocks", which affects the trade-off between efficiency and accurancy of the simulation.

External potentials

The Device Builder supports the application of the following external fields to the simulation:

  1. Constant electric field: Defined by its magnitude (in V / Angstrom) and direction.
  2. Constant Magnetic field: Defined by its magnitude (in Tesla) and direction. Moreover, we implemented three gauges for the vector potential entering the Hamiltonian: "minimal", "planar", and "symmetric".
  3. Confinement potential: Defined by its (symmetric) 3 x 3 stiffness matrix (in eV / Angstom^2).

Gauges

To understand the three different gauges for the vector potential, we start bye the "symmetric" gauge, which is defined by

In the equation above we have re-written the vector product as application of a anti-symmetric matrix, , which allows us to motivate the alternative gauges by changing this matrix.

The "planar" gauge is defined by

which implies that the vector potential only depends on the coordinates and .

Finally, the "minimal" gauge is given by

where the vector potential still depends on the coordinates and in the general case, but only on if the magnetic field is in the plane.

While the different gauges do not affect the result for physical quantities, the simulation size can be reduced if the vector potential, entering the Hamiltonian via the Peierl's substitution, only depends on the coordinate , for example when considering a magnetic field along the axis in the "minimal" gauge.