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, poisson_params=None, schrod_params=None, out_path_digits=3, geo_file=None)

Bases: device.core.leverarm.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, poisson_params=None, schrod_params=None, out_path_digits=3, geo_file=None)

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 (list or None, optional) – List of region labels forming the submesh where the dot is defined and the Schrodinger calculation will be performed. Each label must be a string. If None, uses 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.

  • poisson_params (SolverParams object, optional) – Solver parameters for Poisson solver.

  • schrod_params (SolverParams object, optional) – Solver parameters for Schrodinger 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.