qtcad.device.multivalley_EMT module

Multi-valley effective-mass theory (EMT) solver.

class qtcad.device.multivalley_EMT.Solver(dvc, valley_locs, bloch_files, mass_tensors, lattice_const, solver_params=None)

Bases: device.core.multivalley_EMT.Solver

Solver that calculates valley-coupled energies and eigenstates using multi-valley effective-mass theory (EMT).

Attributes
  • d (device object) – The device to simulate.

  • val (2D arrays) – Location of each valley in the Brillouin zone.

  • bloch (2D array) – Planewave description of the Bloch amplitudes situated at each valley of val. 3 first columns identify the plane wave component and the next 2 give the real and imaginary part of the associated coeffiecient in the planewave expansion.

  • m_tensors (3D array) – Contains the effective mass tensors corresponding to the valley states determined by self.val and self.bloch.

  • num_states (int) – Number of states to solve for, starting from the lowest eigenvalue.

  • tol (float) – Solver tolerance (stopping criterion). Relative accuracy for eigenvalues.

  • maxiter (int) – Maximum number of iterations.

__init__(dvc, valley_locs, bloch_files, mass_tensors, lattice_const, solver_params=None)

Constructor of the ValleyCoupling class.

Parameters
  • dvc (device object) – The device to simulate.

  • mesh (Mesh object) – Mesh on which the problem is to be solved.

  • valley_loc (2D array) – Location of each valley in the Brillouin zone. First index: valley index. Second index: Cartesian directions (xyz coordinates).

  • bloch_files (list) – List of pathlib Path objects or strings giving the path of files storing the planewave decomposition of the Bloch amplitudes of each valley (one file per valley).

  • mass_tensors (3D array) – Contains the effective mass tensors corresponding to the valley states determined by self.val and self.bloch.

  • lattice_const (float) – The lattice constant \(a\) of the crystal in SI units.

  • solver_params (SolverParams obj or None, optional) – The parameters of the solver.

Note

The first dimension of val, bloch_files, and mass_tensors should be the same. Furthermore, the entries should be associated to the each other, i.e., the state at band extremum val[i] has a periodic Bloch amplitude described in bloch_files[i] and an (inverse) effective mass tensor given by mass_tensors[i]. The files containing the Bloch amplitudes (bloch_files) are text files consisting of five columns. The rows of the files correspond to distinct reciprocal lattice vector components :math`mathbf G`. The first three columns give the coordinates of each reciprocal lattice vector in units of \(2\pi/a\), with \(a\) the lattice constant. The last two columns give the real and imaginary part of the associated coefficient \(A_{\mathbf G}^\nu\) in the plane wave expansion for this valley \(\nu\).

solve()

Solve Schrodinger’s equation including off diagonal elements of the potential.

class qtcad.device.multivalley_EMT.SolverParams(inp_dict=None)

Bases: device.core.multivalley_EMT.SolverParams

Parameters to pass to a multivalley effective-mass theory solver.

Attributes
  • tol (float) – Tolerance to use in a calculation. Default: 0.

  • maxiter (int) – Maximum number of iterations in a self-consistent loop. Default: 100.

  • method (str) – The method to use to solve linear or eigenvalue problems: “direct” or “iterative”. Default: “direct”.

  • num_states (int) – Number of states to solve for, starting from the lowest eigenvalue. Default: 2.

  • approx (None, ‘envelope’, or ‘ff’, optional) – Approximation applied to simplify the matrix-element calculation. ‘envelope’: envelope function approximation ‘ff’: form-factor approximation Default: “ff”.

__init__(inp_dict=None)

Instantiate the SolverParams object.

Parameters

inp_dict (dict, optional) – Dictionary specifying certain solver parameters to be used instead of their default values.