:py:mod:`simcats.ideal_csd` =========================== .. py:module:: simcats.ideal_csd .. autoapi-nested-parse:: SimCATS subpackage containing all functionalities related to the simulation of ideal CSDs. Subpackages ----------- .. toctree:: :titlesonly: :maxdepth: 3 geometric/index.rst Package Contents ---------------- Classes ~~~~~~~ .. autoapisummary:: simcats.ideal_csd.IdealCSDInterface simcats.ideal_csd.IdealCSDGeometric Package Implementation Details ------------------------------ .. py:class:: IdealCSDInterface Bases: :py:obj:`abc.ABC` .. autoapi-inheritance-diagram:: simcats.ideal_csd.IdealCSDInterface :parts: 1 Interface for functions, which are used for the simulation of ideal CSD data. .. py:method:: get_csd_data(volt_limits_g1, volt_limits_g2, resolution = 100) :abstractmethod: 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. :param volt_limits_g1: Voltage sweep range of (plunger) gate 1 (second-/x-axis). Example: [min_V1, max_V1] :type volt_limits_g1: np.ndarray :param volt_limits_g2: Voltage sweep range of (plunger) gate 2 (first-/y-axis). Example: [min_V2, max_V2] :type volt_limits_g2: np.ndarray :param resolution: 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] :type resolution: np.ndarray :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. :rtype: Tuple[np.ndarray, np.ndarray] .. py:class:: IdealCSDGeometric(tct_params, rotation = -np.pi / 4, lut_entries = None, cdf_type = 'sigmoid', cdf_gamma_factor = None) Bases: :py:obj:`simcats.ideal_csd.IdealCSDInterface` .. autoapi-inheritance-diagram:: simcats.ideal_csd.IdealCSDGeometric :parts: 1 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). :param tct_params: 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) :type tct_params: List[np.ndarray] :param rotation: 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. :type rotation: float :param lut_entries: 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. :type lut_entries: Optional[int] :param cdf_type: Name of the type of cumulative distribution function (CDF) to be used. Can be either "cauchy" or "sigmoid". Default is "sigmoid". :type cdf_type: str :param cdf_gamma_factor: 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 :type cdf_gamma_factor: Optional[float] .. py:property:: tct_params :type: 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. .. py:property:: rotation :type: float Float value defining the rotation to be applied to the TCT (which is usually represented with the tct_params rotated by 45 degrees). .. py:property:: lut_entries :type: 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. .. py:property:: cdf_type :type: str Name of the type of cumulative distribution function (CDF) to be used. .. py:property:: cdf_gamma_factor :type: 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). .. py:method:: 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. :param volt_limits_g1: Voltage sweep range of (plunger) gate 1 (second-/x-axis). Example: [min_V1, max_V1] :type volt_limits_g1: np.ndarray :param volt_limits_g2: Voltage sweep range of (plunger) gate 2 (first-/y-axis). Example: [min_V2, max_V2] :type volt_limits_g2: np.ndarray :param resolution: 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] :type resolution: np.ndarray :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. :rtype: Tuple[np.ndarray, np.ndarray]