qtcad.device.leverarm module

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

class 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. All units are SI.

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. Please note that if a submesh is provided, the adaptive feature should be disabled.

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

save(filename)

Save the lever arm to a .txt file.

Arg:
filename (str): Path to a text file (extension .txt) where lever

arm will be saved.

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