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:
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:
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.