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.