simcats.ideal_csd

SimCATS subpackage containing all functionalities related to the simulation of ideal CSDs.

Subpackages

Package Contents

Classes

IdealCSDInterface

Interface for functions, which are used for the simulation of ideal CSD data.

IdealCSDGeometric

Geometric simulation approach implementation of the IdealCSDInterface.

Package Implementation Details

class simcats.ideal_csd.IdealCSDInterface

Bases: abc.ABC

Inheritance diagram of simcats.ideal_csd.IdealCSDInterface

Interface for functions, which are used for the simulation of ideal CSD data.

abstract get_csd_data(volt_limits_g1, volt_limits_g2, resolution=100)

Method which has to be implemented in every object used as ideal data function during the simulation of CSDs.

It is used to retrieve ideal data (occupation numbers and a lead transition mask) for given gate voltages. The parameters specifying the structure / system should be attributes of this class.

Retrieve ideal data (occupation numbers and a lead transition mask) for given gate voltages.

Parameters:
  • volt_limits_g1 (np.ndarray) –

    Voltage sweep range of (plunger) gate 1 (second-/x-axis).

    Example:

    [min_V1, max_V1]

  • volt_limits_g2 (np.ndarray) –

    Voltage sweep range of (plunger) gate 2 (first-/y-axis).

    Example:

    [min_V2, max_V2]

  • resolution (np.ndarray) –

    Desired resolution (in pixels) for the gates. If only one value is supplied, a 1D sweep is performed. Then, both gates are swept simultaneously. Default is np.array([100, 100]).

    Example:

    [res_g1, res_g2]

Returns:

Occupation numbers and lead transition mask. The occupation numbers are stored in a 3-dimensional numpy array. The first two dimensions map to the axis of the CSD, while the third dimension indicates the dot of the corresponding occupation value. The label mask for the lead-to-dot transitions is stored in a 2-dimensional numpy array with the axis mapping to the CSD axis.

Return type:

Tuple[np.ndarray, np.ndarray]

class simcats.ideal_csd.IdealCSDGeometric(tct_params, rotation=-np.pi / 4, lut_entries=None, cdf_type='sigmoid', cdf_gamma_factor=None)

Bases: simcats.ideal_csd.IdealCSDInterface

Inheritance diagram of simcats.ideal_csd.IdealCSDGeometric

Geometric simulation approach implementation of the IdealCSDInterface.

Initializes an object of the class for the geometric simulation approach which is based on total charge transitions (TCTs).

Parameters:
  • tct_params (List[np.ndarray]) –

    List containing a numpy array with parameters for every TCT in the CSD. Each array contains all required parameters to describe the TCT form.

    The parameters for a TCT are:

    [0] = length left (in x-/voltage-space, not number of points)

    [1] = length right (in x-/voltage-space, not number of points)

    [2] = gradient left (in voltages)

    [3] = gradient right (in voltages)

    [4] = start position x (bezier curve leftmost point) (in x-/voltage-space, not number of points)

    [5] = start position y (bezier curve leftmost point) (in x-/voltage-space, not number of points)

    [6] = end position x (bezier curve rightmost point) (in x-/voltage-space, not number of points)

    [7] = end position y (bezier curve rightmost point) (in x-/voltage-space, not number of points)

  • rotation (float) – Float value defining the rotation to be applied to the TCT (which is usually represented with the tct_params rotated by 45 degrees). Default is -np.pi/4.

  • lut_entries (Optional[int]) – Number of samples for the lookup-table for bezier curves. If this is not None, a lookup-table will be used to evaluate the points on the bezier curves, else they are solved explicitly. Using a lookup-table speeds up the calculation at the possible cost of accuracy. Default is None.

  • cdf_type (str) – Name of the type of cumulative distribution function (CDF) to be used. Can be either “cauchy” or “sigmoid”. Default is “sigmoid”.

  • cdf_gamma_factor (Optional[float]) –

    The factor used for the calculation of the gamma values of the CDF. If set to None (=default) the default values for the selected cdf_type are used (2.2 for sigmoid, 6.15 for cauchy). Default is None.

    Gamma is calculated as follows:

    gamma = width_bezier_curve / cdf_gamma_factor

property tct_params: List[numpy.ndarray]

List containing a numpy array with parameters for every TCT in the CSD. Each array contains all required parameters to describe the TCT form.

Return type:

List[numpy.ndarray]

property rotation: float

Float value defining the rotation to be applied to the TCT (which is usually represented with the tct_params rotated by 45 degrees).

Return type:

float

property lut_entries: int | None

Number of samples for the lookup-table for bezier curves. If this is not None, a lookup-table will be used to evaluate the points on the bezier curves, else they are solved explicitly.

Return type:

Optional[int]

property cdf_type: str

Name of the type of cumulative distribution function (CDF) to be used.

Return type:

str

property cdf_gamma_factor: float | None

The factor used for the calculation of the gamma values of the CDF. If set to None (=default) the default values for the selected cdf_type are used (2.2 for sigmoid, 6.15 for cauchy).

Return type:

Optional[float]

get_csd_data(volt_limits_g1, volt_limits_g2, resolution=np.array([100, 100]))

Retrieve ideal data (occupation numbers and a lead transition mask) for given gate voltages.

Parameters:
  • volt_limits_g1 (np.ndarray) –

    Voltage sweep range of (plunger) gate 1 (second-/x-axis).

    Example:

    [min_V1, max_V1]

  • volt_limits_g2 (np.ndarray) –

    Voltage sweep range of (plunger) gate 2 (first-/y-axis).

    Example:

    [min_V2, max_V2]

  • resolution (np.ndarray) –

    Desired resolution (in pixels) for the gates. If only one value is supplied, a 1D sweep is performed. Then, both gates are swept simultaneously. Default is np.array([100, 100]).

    Example:

    [res_g1, res_g2]

Returns:

Occupation numbers and lead transition mask (in our case: total charge transitions). The occupation numbers are stored in a 3-dimensional numpy array. The first two dimensions map to the axis of the CSD, while the third dimension indicates the dot of the corresponding occupation value. The label mask for the lead-to-dot transitions is stored in a 2-dimensional numpy array with the axis mapping to the CSD axis.

Return type:

Tuple[np.ndarray, np.ndarray]