PhysicsRandomization

class qdflow.generate.PhysicsRandomization(num_x_points=151, num_dots=2, barrier_current=1, short_circuit_current=10000000000.0, num_sensors=1, multiply_gates_by_q=True, dot_spacing=200, x_margins=200, gate_x_variations=0, q=-1, K_0=5, sigma=60, mu=0.5, g_0=0.0065, V_L=-0.01, V_R=0.01, beta=100, kT=0.01, c_k=1.2, screening_length=100, rho=15, h=80, rho_variations=0, h_variations=0, plunger_peak=-7, plunger_peak_variations=0, external_barrier_peak_variations=2.0, barrier_peak=5.0, internal_barrier_peak_variations=0, sensor_y=-250, sensor_y_variations=0, sensor_x_variations=0, WKB_coef=0.01, v_F=30000000000000.0)

Bases: object

Meta-parameters used to determine how random PhysicsParameters should be generated.

Several attributes will not be randomized, and will be passed directly to the generated PhysicsParameters object.

All other attributes should either be provided a single value (if no randmization is needed), or a distribution.Distribution, from which the value will be drawn.

Parameters:
  • num_x_points (int) – The resolution of the x-axis. This value is not randomized.

  • num_dots (int) – The number of dots. This value is not randomized.

  • barrier_current (float) – An arbitrary low current set to the device when in barrier mode. This value is not randomized.

  • short_circuit_current (float) – An arbitrary high current value given to the device when in open / short circuit mode. This value is not randomized.

  • num_sensors (int) – The number of sensors to include. This value is not randomized.

  • multiply_gates_by_q (bool) – Whether to multiply barrier_peak, plunger_peak, barrier_peak_variations, plunger_peak_variations, and external_barrier_peak_variations by q, changing the sign if q == -1. Default True.

  • dot_spacing (float | Distribution[float]) – The average distance (in nm) between dots.

  • x_margins (float | Distribution[float]) – The length (in nm) of the nanowire to model on either end of the system. The total length of the nanowire will be: 2 * (x_margins) + (num_dots - 1) * (dot_spacing).

  • gate_x_variations (float | ndarray[float] | Distribution[float] | Distribution[ndarray]) – An array with length equal to the total number of gates (barrier and plunger), giving the offset of the x-coordinate of each gate (in nm) relative to their positions if they were evenly spaced with spacing dot_spacing. If a float distribution is provided, an ndarray of the appropriate size will be generated by repeatedly drawing from the distribution.

  • q (float | Distribution[float]) – The charge of a particle, -1 for electrons, +1 for holes.

  • K_0 (float | Distribution[float]) – The electron-electron Coulomb interaction strength (in meV * nm).

  • sigma (float | Distribution[float]) – The softening parameter (in nm) for the el-el Coulomb interaction used to avoid divergence when \(x_1 = x_2\). sigma should be on the scale of the width of the nanowire.

  • mu (float | Distribution[float]) – The Fermi level (in meV).

  • g_0 (float | Distribution[float]) – The coefficient of the density of states.

  • V_L (float | Distribution[float]) – The voltage applied to left lead (in mV).

  • V_R (float | Distribution[float]) – The voltage applied to right lead (in mV).

  • beta (float | Distribution[float]) – The inverse temperature 1/(k_B T) used to calculate n(x).

  • kT (float | Distribution[float]) – The temperature (k_B T) used in the transport calculations.

  • c_k (float | Distribution[float]) – The coefficient (in meV*nm) that determines the kenetic energy of the Fermi sea on each island.

  • screening_length (float | Distribution[float]) – The screening length (in nm) for the Coulomb interaction.

  • rho (float | Distribution[float]) – The radius (in nm) of the cylindrical gates.

  • h (float | Distribution[float]) – The distance (in nm) of the gates from the nanowire.

  • rho_variations (float | ndarray[float] | Distribution[float] | Distribution[ndarray]) – An array with length equal to the total number of gates (barrier and plunger), giving a correction (in nm) which will be added to rho for each gate. If a float distribution is provided, an ndarray of the appropriate size will be generated by repeatedly drawing from the distribution.

  • h_variations (float | ndarray[float] | Distribution[float] | Distribution[ndarray]) – An array with length equal to the total number of gates (barrier and plunger), giving a correction (in nm) which will be added to h for each gate. If a float distribution is provided, an ndarray of the appropriate size will be generated by repeatedly drawing from the distribution.

  • plunger_peak (float | Distribution[float]) – The peak value (in mV) of the potential at the nanowire due to the plunger gates.

  • plunger_peak_variations (float | ndarray[float] | Distribution[float] | Distribution[ndarray]) – An array with length equal to the number of plunger gates, giving a correction (in mV) which will be added to plunger_peak for each gate. If a float distribution is provided, an ndarray of the appropriate size will be generated by repeatedly drawing from the distribution.

  • barrier_peak (float | Distribution[float]) – The peak value (in mV) of the potential at the nanowire due to the barrier gates.

  • external_barrier_peak_variations (float | ndarray[float] | Distribution[float] | Distribution[ndarray]) – An array with length 2, giving a correction (in mV) which will be added to barrier_peak for each external barrier gate. If a float distribution is provided, an ndarray of the size 2 will be generated by drawing from the distribution twice.

  • internal_barrier_peak_variations (float | ndarray[float] | Distribution[float] | Distribution[ndarray]) – An array with length equal to the number of internal barrier gates, giving a correction (in mV) which will be added to barrier_peak for each gate. If a float distribution is provided, an ndarray of the appropriate size will be generated by repeatedly drawing from the distribution.

  • sensor_y (float | Distribution[float]) – The average y-coordinate (in nm) of the sensors.

  • sensor_y_variation (float | ndarray[float] | Distribution[float] | Distribution[ndarray]) – An array with length equal to the total number of sensors, giving a correction (in nm) which will be added to sensor_y for each sensor. If a float distribution is provided, an ndarray of the appropriate size will be generated by repeatedly drawing from the distribution.

  • sensor_x_variation (float | ndarray[float] | Distribution[float] | Distribution[ndarray]) – An array with length equal to the total number of sensors, giving the offset of the x-coordinate of each sensor (in nm) relative to their positions if they were evenly spaced along the nanoire. If a float distribution is provided, an ndarray of the appropriate size will be generated by repeatedly drawing from the distribution.

  • WKB_coef (float | Distribution[float]) – Coefficient (with units \(\frac{1}{nm\sqrt{meV}}\)) which goes in the exponent while calculating the WKB probability, setting the strength of WKB tunneling. WKB_coef should be equal to \(\sqrt{2m}{\hbar}\), where \(m\) is the effective mass of a particle, and :math`hbar` is the reduced Planck’s constant.

  • v_F (float | Distribution[float]) – The fermi velocity (in nm/s).

__init__(num_x_points=151, num_dots=2, barrier_current=1, short_circuit_current=10000000000.0, num_sensors=1, multiply_gates_by_q=True, dot_spacing=200, x_margins=200, gate_x_variations=0, q=-1, K_0=5, sigma=60, mu=0.5, g_0=0.0065, V_L=-0.01, V_R=0.01, beta=100, kT=0.01, c_k=1.2, screening_length=100, rho=15, h=80, rho_variations=0, h_variations=0, plunger_peak=-7, plunger_peak_variations=0, external_barrier_peak_variations=2.0, barrier_peak=5.0, internal_barrier_peak_variations=0, sensor_y=-250, sensor_y_variations=0, sensor_x_variations=0, WKB_coef=0.01, v_F=30000000000000.0)

Methods

copy()

Creates a copy of a PhysicsRandomization object.

default()

Creates a new PhysicsRandomization object with default values.

from_dict(d)

Creates a new PhysicsRandomization object from a dict of values.

to_dict()

Converts the PhysicsRandomization object to a dict.