qtcad.device.leverarm_matrix module
Tool to calculate the lever arm matrix of a multiple dot system.
- class qtcad.device.leverarm_matrix.Solver(dvc, labels, potentials, dot_region=None, pot_solver=None, solver_params=None)
Bases:
Solver
This class provides a convenient way to calculate the lever arm matrix of a device containing multiple gates.
- Attributes:
dvc (Device) – The device for which we want to find the lever arm matrix.
subdvc (Device or SubDevice) – The subdevice over which Schrödinger’s equation is solved. By default, solve over the entire device.
labels (list) – List of names of objects for which we want the lever arm. The object can correspond either to a boundary at which a potential \(\varphi_{a}\) is applied, or a region in which the Fermi level is shifted by \(-e\varphi_{a}\).
potentials (1d array) – Applied potential on each object in reference configuration.
dot_region (string, SubMesh or list) – Submesh corresponding to the dot region, or string or list of strings labeling region of the device (Gmsh physical groups), or list of tuples defining two corners of a box where the dot is defined and the Schrodinger calculation will be performed. If None, use the entire device.
pot_solver (Solver object or None, optional) – Solver that will solve for the electric/confinement potential. Possible options are the Solver objects from the
poisson
,schrodinger_poisson
, orquantum_well
modules. If None, the Non-Linear PoissonSolver is used.pot_solver_params (SolverParams object) – Parameters to pass to the solver that solves for the electric/confinement potential.
schrod_params (SolverParams object) – Solver parameters for Schrodinger solver.
_submesh (SubMesh) – The submesh over which we solve Schrodinger’s equation, if any.
- __init__(dvc, labels, potentials, dot_region=None, pot_solver=None, solver_params=None)
Constructor of the lever arm matrix solver.
- Parameters:
dvc (Device) – The device for which we want to find the lever arm matrix.
labels (list) – List of names of objects for which we want the lever arm. The object can correspond either to a boundary at which a potential \(\varphi_{a}\) is applied, or a region in which the Fermi level is shifted by \(-e\varphi_{a}\).
potentials (1d array) – Applied potential on each object in reference configuration.
pot_solver (Solver object or None, optional) – Solver that will solve for the electric/confinement potential. Possible options are the Solver objects from the
poisson
,schrodinger_poisson
, orquantum_well
modules. If None, the Non-Linear PoissonSolver is used.dot_region (string, SubMesh or list) – Submesh corresponding to the dot region, or string or list of strings labeling region of the device (Gmsh physical groups), or list of tuples defining two corners of a box where the dot is defined and the Schrodinger calculation will be performed. If None, use the entire device.
solver_params (SolverParams object, optional) – Solver parameters for lever arm solver.
- get_ref_device()
Gets the Device object over which Poisson was solved in the reference configuration.
- Returns:
Device – The Device object with Poison solved in the reference configuration.
Note
Must be called after running the
solve
method.
- get_ref_subdevice()
Gets the SubDevice object over which Schrödinger was solved in the reference configuration.
- Returns:
SubDevice – The SubDevice object with Schrödinger solved in the reference configuration.
Note
Must be called after running the
solve
method.
- set_ref_potentials(potentials, verbose=True)
Sets the gate potentials in the reference configuration, and solves Poisson and Schrödinger again under updated biases.
- Parameters:
potentials (1d array) – Applied potential on each object in reference configuration.
verbose (bool, optional) – Verbosity level. Default:True.
- Returns:
1d array – The energies in the reference configuration in SI units (Joules). 2d array: The wave functions in the reference configuration in SI units (\(\mathrm{m}^-3\)). First index: global node. Second index: eigenvalue index.
- solve(bias_increment=1e-06, ref_only=False)
Calculates the lever arm matrix.
- Parameters:
bias_increment (float, optional) – The bias increment to apply to each gate to calculate the lever arm matrix by finite difference. Default: 1e-6.
ref_only (bool, optional) – If True, only solves Poisson and Schrodinger in the reference configuration and skips the lever arm calculation. Default: False.
- Returns:
2D array – The lever arm matrix. The first index labels single-particle eigenstates. The second index labels gates or leads.
- class qtcad.device.leverarm_matrix.SolverParams(inp_dict=None)
Bases:
SolverParams
Parameters to pass to a lever arm solver.
- Attributes:
pot_solver_params (SolverParams object) – Parameters to pass to the solver that solves for the electric/confinement potential.
schrod_solver_params (SolverParams object) – Parameters to pass to the Schrodinger solver.
pot_args (list) – Arguments to pass to the solver that solves for the electric/confinement potential.
pot_kwargs (dict) – Keyword arguments to pass to the solver that solves for the electric/confinement potential.
- __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.