qtcad.device.leverarm module

Tool to calculate the lever arm of a gate or lead.

class qtcad.device.leverarm.Solver(d, label, voltages, dot_region=None, in_path=None, out_path=None, pot_solver=None, solver_params=None, out_path_digits=3)

Bases: Solver

This class provides a convenient way to get the lever arm of a gate or lead.

Attributes:
  • label (string) – Name of an object or list of objects for which we want the lever arm. The object can correspond either to a boundary (e.g., a gate or Schottky boundary) at which a potential \(\varphi_\mathrm{bias}\) is applied, or a region in which the Fermi level is shifted by \(-e\varphi_\mathrm{bias}\).

  • V (1D array) – Bias voltages.

  • energies (2D array) – Energy eigenvalues for each bias configuration. First index runs over biases and second index over the different eigenenergies.

__init__(d, label, voltages, dot_region=None, in_path=None, out_path=None, pot_solver=None, solver_params=None, out_path_digits=3)

Constructor of the lever arm Solver class.

After construction of the solver object, the non-linear Poisson and Schrödinger’s equations are solved for the specified range of applied potentials.

Parameters:
  • d (device object) – Device for which we want to find the lever arm of some gate or lead.

  • label (string) – Name of an object or list of objects for which we want the lever arm. The object can correspond either to a boundary (e.g., a gate or Schottky boundary) at which a potential \(\varphi_\mathrm{bias}\) is applied, or a region in which the Fermi level is shifted by \(-e\varphi_\mathrm{bias}\).

  • voltages (1d array) – Array of voltages at which the energies will be calculated.

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

  • in_path (string, optional) – Path to the solution to Poisson’s equation (phi, in hdf5 format) for the first applied voltage.

  • out_path (string, optional) – Path where solutions to Poisson’s equation will be saved.

  • 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, or quantum_well modules. If None, the non-linear PoissonSolver is used.

  • solver_params (SolverParams object, optional) – Solver parameters for lever arm solver.

  • out_path_digits (int, optional) – Number of digits on voltage value in output path name

  • geo_file (string or None, optional) – path to .geo_unrolled file containing the geometry of the problem. If geo_file is None then Poisson’s equation is solved over the mesh saved in d, and the mesh is static. If geo_file is not None, adaptive meshing will be used.

Note

The eigenenergies for each bias configuration of the sweep are stored in the energies attribute of this Solver object.

solve(state=0, degree=1)

Polynomial fit of energies - Lever arm.

Parameters:
  • state (int) – Index of energy eigenvalue we want to fit. Default is ground state.

  • degree (int) – Degree of polynomial fit. Default is 1 - linear fit.

Returns:

1d array – Polynomial fit. Coefficients of fit given in decreasing order for degree. Units employed for the fit are J for energy and V for voltage.

class qtcad.device.leverarm.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.