qtcad.transport.lead module

Class containing properties and wavefunction for a lead.

class qtcad.transport.lead.Lead(fermi_lvl_shift, mu, T, pos='L')

Bases: Lead

Lead object.

Attributes:
  • fermi_lvl_shift (float) – Shift in the lead Fermi energy caused by an applied voltage bias.

  • mu (float) – Fermi energy that respects doping level. The actual chemical potential is mu+fermi_lvl_shift

  • kT (float) – Temperature in enegy units (Boltzmann constant times temperature in Kelvin).

  • pos (character) – ‘L’ or ‘R’, indicates whether the lead on left or right side.

  • broadening_func (float) – The uniform rate to use for the broadening function in the featureless approximation (in Hz).

__init__(fermi_lvl_shift, mu, T, pos='L')

Constructor for lead.

Parameters:
  • fermi_lvl_shift (scalar) – shift in lead Fermi energy due to an applied voltage

  • mu (scalar) – chemical potential of lead

  • T (scalar) – Temperature of lead

  • pos (string; ‘L’ or ‘R’) – determines if the lead is on the left or right of dot.

plot_V(*directions, path=None)

Produces a plot of the potential

Parameters:
  • directions (strings) – any number of inputs chosen from ‘x’, ‘y’, or ‘z’. Each subplot will contain a plot for each direction.

  • path (string) – path to save the plot. If None, the plot will be displayed.

plot_lead_wf(E, lead_state_y, lead_state_z, *directions, add_potential=True, path=None)

Produces a plot of the potential

Parameters:
  • E (float) – energy of the lead wavefunction.

  • lead_state_1 (int) – quantum number for confinement along first perpendicular direction

  • lead_state_2 (int) – quantum number for confinement along second perpendicular direction

  • directions (strings) – any number of inputs chosen from ‘x’, ‘y’, or ‘z’. Each subplot will contain a plot for each direction.

  • add_potential (bool) – if True will add the potential to the plot. If False, only the wavefunction will be plotted.

  • path (string) – path to save the plot. If None, the plot will be displayed.

class qtcad.transport.lead.WKBLead(d, dot_region, intersection, direction, lead_region=None, extra_region=None, channel=None, pos='L', mass=9.1093837015e-31, linecut_res=None, n1=1, n2=1, fermi_lvl_shift=0, mu=0, T=None)

Bases: WKBLead

Lead object where the wavefunction is approximated using the WKB approximation in one direction and is assumed to be confined in the other 2 directions.

Attributes:
  • lead_device (device object) – Contains the mesh over which the lead wavefunction will be defined (includes the lead and dot regions).

  • intersection (tuple) – x, y, and z coordinate of the point of intersection where potential linecuts are taken to create the seperable lead potential.

  • x (1d array) – x coordinates of linecut along x over which the x part of the potential Vx is defined

  • Vx (1d array) – Linecut of the full potential along x, fixed y and z coordinates given by intersection

  • y (1d array) – y coordinates of linecut along y over which the y part of the potential Vy is defined

  • Vy (1d array) – Linecut of the full potential along y, fixed z and x coordinates given by intersection

  • z (1d array) – z coordinates of linecut along z over which the z part of the potential Vz is defined

  • Vz (1d array) – Linecut of the full potential along z, fixed x and y coordinates given by intersection

  • m (float) – mass of lead electron

  • direction (string) – defines the direction (‘x’, ‘y’, or ‘z’) along which the lead and dot regions are adjacent.

  • bdry (float) – boundary point between the lead and dot regions.

  • L (float) – length of lead region

  • pos (string) – If ‘L’, the lead region is situated to the left of the dot. If ‘R’, the lead is situated to the right.

  • U0 (float) – value of lead potential in dot region.

Note

The attribute pos indicates whether the positions of the lead are smaller than those of the dot along the attribute direction.

__init__(d, dot_region, intersection, direction, lead_region=None, extra_region=None, channel=None, pos='L', mass=9.1093837015e-31, linecut_res=None, n1=1, n2=1, fermi_lvl_shift=0, mu=0, T=None)

Constructor for a WKBLead object.

Parameters:
  • d (device object) – device under consideration.

  • dot_region (list of strings or Mesh object) – tags of the region representing the dot adjacent to the lead or the Mesh over which the dot is defined.

  • intersection (tuple) – x, y, and z coordinate of the point of intersection where potential linecuts are taken to create the seperable lead potential.

  • direction (string – ‘x’, ‘y’, or ‘z’): defines the direction along which the lead and dot regions are adjacent.

  • lead_region (list of strings, optional) – tags of the lead region. The lead wavefunction will be defined over the regions labelled by dot_region and lead_region. Default: None.

  • extra_region (list of strings, optional) – additional region over which we want the wave function to be defined in addition to the lead and dot regions. Default: None.

  • channel (SubDevice or string or list of strings) – SubDevice of the full device which will contain the lead and the dot (or string/list of strings representing the regions making up the subdevice). Default: None.

  • pos (‘L’ or ‘R’, optional) – determines if the lead is a left lead (‘L’) or a right lead (‘R’). Assume that the direction is chosen to be ‘x’; a left lead will consist of a region of space with x coordinates smaller than the x coordinates of the dot’s mesh; a right lead will have larger coordinates; similar definitions are assumed for directions ‘y’ or ‘z’. Default: ‘L’.

  • mass (float, optional) – mass of lead electron. Default: ct.me (free electron mass).

  • linecut_res (deprecated) – parameter ignored as of version 1.3 of QTCAD.

  • n1 (int, optional) – number of eigenstates to solve for when considering the confinement along the first direction perpendicular to the direction input. Default: 1.

  • n2 (int, optional) – number of eigenstates to solve for when considering the confinement along the second direction perpendicular to the direction input. Default: 1.

  • fermi_lvl_shift (float, optional) – Shift in the lead Fermi energy caused by an applied voltage bias. Default: 0.

  • mu (float, optional) – Fermi energy that respects doping level. The actual chemical potential is mu+fermi_lvl_shift. Default: 0.

  • T (float, optional) – temperature of the lead. If None, temperature is taken from device attribute. Default: None.

Note

We use a right-handed coordinate system to label the directions. If the lead and dot are adjacent along x (y, z), then the first perpendicular direction is y (z, x), and the second is z (x, y). WKB leads can either be determined via the lead_region and extra_region kwargs or the channel and pos kwargs. To use the former, the lead region of the device must be given a physical name in gmsh. To use the later, the conduction channel, containing the leads and the dot, must be tagged with a physical name in Gmsh.

get_lead_wf(nodes, E, lead_state_1, lead_state_2, kind=2)

Computes the total lead wavefunction for a given energy.

Parameters:
  • nodes (2D array) – Coordinates for which we want the 3D wavefunction.

  • E (float) – energy of the state.

  • lead_state_1 (int) – quantum number for confinement along first perpendicular direction

  • lead_state_2 (int) – quantum number for confinement along second perpendicular direction

  • kind (int) – order of the interpolation to use

Returns:

1d array – lead wavefunction evaluated at all nodes

lead_linecut_wf(E, lead_state_1, lead_state_2)

Computes the WKB wavefunction for the appropriate direction. Assigns wavefunctions along x, y, and z appropriately.

Parameters:
  • E (float) – energy of the state.

  • lead_state_1 (int) – quantum number for confinement along first perpendicular direction

  • lead_state_2 (int) – quantum number for confinement along second perpendicular direction

Returns:

tuple – a tuple (Psix, Psiy, Psiz) where Psix (Psiy, Psiz) is a 1d array corresponding to the lead wavefunction along x (y, z)

plot_V(*directions, path=None)

Produces a plot of the potential

Parameters:
  • directions (strings) – any number of inputs chosen from ‘x’, ‘y’, or ‘z’. Each subplot will contain a plot for each direction.

  • path (string) – path to save the plot. If None, the plot will be displayed.

plot_lead_wf(E, lead_state_y, lead_state_z, *directions, add_potential=True, path=None)

Produces a plot of the potential

Parameters:
  • E (float) – energy of the lead wavefunction.

  • lead_state_1 (int) – quantum number for confinement along first perpendicular direction

  • lead_state_2 (int) – quantum number for confinement along second perpendicular direction

  • directions (strings) – any number of inputs chosen from ‘x’, ‘y’, or ‘z’. Each subplot will contain a plot for each direction.

  • add_potential (bool) – if True will add the potential to the plot. If False, only the wavefunction will be plotted.

  • path (string) – path to save the plot. If None, the plot will be displayed.