D-matrices and $$\mathbf k\cdot \mathbf p$$ models employed by the single-particle Schrödinger solver.

Bases: KPModel

$$\mathbf k \cdot \mathbf p$$ model for an arbitrary material.

Attributes:

d_matrix (4d array) – The D matrix for the material.

Note

This class is used for band structure calculations but not in finite-element modeling. For example, use this class to calculate an effective mass for each band in the bulk material (3D). Default d_matrix is that of free electrons. The D matrix must be given for only one position, i.e., no node indexing is allowed. The D matrix is given in units of $$\hbar^2/m_e$$.

__init__(D=None)

Constructor of the KPModel class.

angular_effective_mass(theta, phi, dk=1768.9252894404003)

Calculate the inverse angular effective mass $$f(\theta,\phi)$$ for given direction.

Parameters:
• theta (float) – Polar angle.

• phi (float) – Azimuthal angle.

• dk (float, optional) – Finite-difference increment in the calculation of derivatives. Default: $$10^{-6}\times 1/a$$, where $$a$$ is the lattice constant of gallium arsenide.

Returns:

1d array – Inverse angular effective mass of each band, in units of $$1/me$$.

Note

Angular effective mass is defined by $$m(\theta,\phi) = \frac{1}{f(\theta,\phi)}$$, where $$f(\theta,\phi) = \frac{me}{\hbar^2} \left.\frac{\partial^2 E}{\partial k_r^2} \right|_{\mathbf k=0}$$, and where $$E$$ is the energy, and $$k_r$$ is the component of the wave vector in the radial direction.

dos_effective_mass()

Computes density-of-states effective mass of each band in the model.

Returns:

1darray – The DOS effective mass for each band in units of $$m_e$$.

energies(k)

Eigenenergies of the k.p model.

Parameters:

k (1d array) – The wave vector.

Returns:

2d array – The $$\mathbf k \cdot \mathbf p$$ Hamiltonian (kinetic term only) evaluated at the input wave vector.

Note

This assumes translational invariance of the system along all three Cartesian directions. In other words, this method gives the $$\mathbf k \cdot \mathbf p$$ Hamiltonian for the bulk material. The dimension of the Hamiltonian is $$N_\mathrm{bands}\times N_\mathrm{bands}$$, where $$N_\mathrm{bands}$$ is the number of bands considered in this $$\mathbf k \cdot \mathbf p$$ model.

hamiltonian(k)

Hamiltonian for a given wave vector and D matrix.

Parameters:

k (1d array) – The wave vector.

Bases: KPModel

Luttinger-Kohn model. This class is used for band structure calculations but not in finite-element modeling. For example, use this class to calculate an effective mass for each band.

Note

Inherits from the KPModel class but uses the D matrix for Luttinger-Kohn.

__init__(gamma_1, gamma_2, gamma_3)

Construct k.p model from Luttinger-Kohn parameters $$gamma_1$$, $$gamma_2$$, and $$gamma_3$$.

Parameters:
• gamma_1 (float) – 1st Luttinger-Kohn parameter.

• gamma_2 (float) – 2nd Luttinger-Kohn parameter.

• gamma_3 (float) – 3rd Luttinger-Kohn parameter.

Compute D matrix for the Luttinger-Kohn (LK) model in a heterojunction according to Foreman. Phys. Rev. B 48, 4964 (1993).

Parameters:
• gamma_1 (1d array) – First LK parameter at each global node.

• gamma_2 (1d array) – Second LK parameter at each global node.

• gamma_3 (1d array) – Third LK parameter at each global node.

Returns:

tuple – The first element is a 5D array representing the D matrix for the LK model at each global node. The second element is a 2D array which is a 6x6 matrix describing energy splittings in bands at k=0. In the four-band model, all the entries of this array are 0.

Note

The first index is the global node or element index. The next two indices of the D matrix are the x, y, z direction indices. The last two indices are the band indices. The D matrix is given in units of $$\hbar^2/m_e$$. This model assumes that the growth direction is along the z axis—in other words, all discontinuities in the Luttinger-Kohn parameters due to, e.g., distinct materials layers, happen along z.

Compute D matrix for the 6 band Luttinger-Kohn (LK) model in a heterojunction according to Foreman. Phys. Rev. B 48, 4964 (1993).

Parameters:
• gamma_1 (1d array) – First LK parameter at each global node.

• gamma_2 (1d array) – Second LK parameter at each global node.

• gamma_3 (1d array) – Third LK parameter at each global node.

• Delta (float) – Spin-orbit splitting. Units: J

Returns:

tuple – The first element is a 5D array representing the D matrix for the LK model at each global node. The second element is a 2D array which is a 6x6 matrix describing energy splittings in bands at k=0. There is a k=0 splitting between of the split-off band characterized by the spin-orbit coupling.

Note

The first index is the global node or element index. The next two indices of the D matrix are the x, y, z direction indices. The last two indices are the band indices. The D matrix is given in units of $$\hbar^2/m_e$$. This model assumes that the growth direction is along the z axis—in other words, all discontinuities in the Luttinger-Kohn parameters due to, e.g., distinct materials layers, happen along z.

Compute D matrix for the Luttinger-Kohn (LK) model in a heterojunction according to Foreman. Phys. Rev. B 48, 4964 (1993). Neglect all band-mixing terms.

Parameters:
• gamma_1 (1d array) – First LK parameter at each global node.

• gamma_2 (1d array) – Second LK parameter at each global node.

• gamma_3 (1d array) – Third LK parameter at each global node.

Returns:

tuple – The first element is a 5D array representing the D matrix for the LK model at each global node. The second element is a 2D array which is a 6x6 matrix describing energy splittings in bands at k=0. In the four-band model, all the entries of this array are 0.

Note

The first index is the global node or element index. The next two indices of the D matrix are the x, y, z direction indices. The last two indices are the band indices. The D matrix is given in units of $$\hbar^2/m_e$$.