InelasticIVCharacteristics

class InelasticIVCharacteristics(configuration, filename, object_id, gate_regions=None, gate_source_voltages=None, drain_source_voltages=None, gate_potential_alignment=None, energies=None, kpoints=None, kpoints_weights=None, electron_phonon_self_energies=None, loa_order=None, log_filename_prefix=None, number_of_processes_per_task=None, source_electrode=None, max_initial_state_configurations=None)

Constructor for the InelasticIVCharacteristics Study object.

InelasticIVCharacteristics can be used to calculate IV curves including electron-phonon interactions using the OneShotSelfConsistentApproximation object.

Parameters:
  • configuration (DeviceConfiguration) – The device configuration with attached calculator for which to perform the study. The configuration must include at least one metallic region acting as the gate.

  • filename (str) – The full or relative filename path the Study object should be saved to. See nlsave().

  • object_id (str) – The name of the study that the Study object should be saved to within the file. This needs to be a unique name in this file. See nlsave().

  • gate_regions (int | list of int) – An index or list of indices of the metallic regions present in the configuration for which to apply the gate voltage.
    Default: All metallic regions present in the configuration.

  • gate_source_voltages (PhysicalQuantity of type voltage | sequence of PhysicalQuantity of type voltage) – A list of the gate-source voltages for which the current will be calculated the next time the object is updated. It is assumed that the source electrode is grounded, and that the gate-source voltage is defined as V_gs = V_g - V_s. Therefore, in each transmission calculation, the source electrode voltage will be set to zero and the gate regions voltage to V_gs.
    Default: [0.0] * Volt

  • drain_source_voltages (PhysicalQuantity of type voltage | sequence of PhysicalQuantity of type voltage) – A list of the drain-source voltages for which the current will be calculated the next time the object is updated. It is assumed that the source electrode is grounded, and that the drain-source voltage is defined as V_ds = V_d - V_s. Therefore, in each transmission calculation, the source electrode voltage will be set to zero and the left electrode voltage to V_ds.
    Default: [0.5] * Volt

  • gate_potential_alignment (GatePotentialAlignment) – A parameter indicating the difference between the work function of the gate electrodes and the work function of a reference electrode, plus an optional energy shift. Such difference is used to determine the reference potential for V_gs=0, effectively shifting an I-Vgs characteristics.
    Default: GatePotentialAlignment(reference_electrode=`Left`, shift=0.0*eV, use_intrinsic_chemical_potential=False)

  • electron_phonon_self_energies (list of instances of AcousticDeformationPotentialSelfEnergy | OpticalDeformationPotentialSelfEnergy) – A list of models used to determine the Electron-Phonon scattering self energy. If None is specified, no electron-phonon self energy is included.

  • loa_order (int) – The order of the generalized lowest-order approximation (LOA) used in the OneShotSelfConsistentBornApproximation to calculate the interacting current. Must be a positive integer.
    Default: 1

  • energies (list of PhysicalQuantity of type energy) – A list of the energies for which the OneShotSelfConsistentBornApproximation at each voltage should be calculated.
    Default: Energy range that covers the bias window, plus \(30 k_B T\).

  • kpoints (MonkhorstPackGrid | RegularKpointGrid | AdaptiveGrid | list (size n_kpoints) of list (size 3) of float) – The k-points for which the OneShotSelfConsistentBornApproximation at each voltage should be calculated. Note that the k-points must be in the same xy-plane. Set nc=1 for MonkhorstPackGrid and RegularKpointGrid.
    Default: MonkhorstPackGrid(na, nb) where (na, nb) is the sampling used for the self-consistent calculation.

  • kpoints_weights (list (size n_kpoints) of float) – The weight of each k-point for which the OneShotSelfConsistentBornApproximation at each voltage should be calculated.
    Default: The weights corresponding to the MonkhorstPackGrid/RegularKpointGrid, or equal weights if the k-points are specified as a list.

  • log_filename_prefix (str | LogToStdOut) – Filename prefix for the logging output of the calculations, each to be stored in a separate file. If LogToStdOut, all logging will instead be sent to standard output.
    Default: 'iv_characteristics_'

  • number_of_processes_per_task (int) – The number of processes that will be used to execute each task. If this value is greater than or equal to the total number of available processes, each single task will be executed collaboratively over all processes. Otherwise, a delegator-worker scheme is used; in this case, one process will be set aside as the delegator, and the remaining ones will be grouped into workers and execute tasks concurrently.
    Default: All available processes execute each task collaboratively.

  • source_electrode (Left | Right) – Specify which electrode should be set as Source.
    Default: Left

  • max_initial_state_configurations – Maximum number of previous converged configurations used to determine the initial state for a new bias point. If 1 is specified, the configuration closest in bias to the new bias point is used as initial state. If an integer n > 1 is specified, then the n configurations closest in bias are used to extrapolate the initial state for the new bias point. It must be a positive integer.
    Default: 2

  • max_initial_state_configurations – int

addVoltages(gate_source_voltages=None, drain_source_voltages=None)

Add a list of gate-source and/or drain-source voltage points to the IVCharacteristics study. These will be calculated the next time the object is updated.

Parameters:
calculatedVoltages()
Returns:

The list of gate-source and drain-source voltage pairs for which a transmission spectrum has been calculated.

Return type:

list of PhysicalQuantity of type voltage

configuration(gate_source_voltage, drain_source_voltage)

Retrieve the updated configuration for the given gate-source and drain-source voltages.

This result will only be available after the calculation ran successfully.

Parameters:
  • gate_source_voltage (PhysicalQuantity of type voltage) – The gate-source voltage.

  • drain_source_voltage (PhysicalQuantity of type voltage) – The drain-source voltage.

Returns:

The configuration associated with this voltage pair. If not available, returns None.

Return type:

DeviceConfiguration | None

configurationCalculator(gate_source_voltage, drain_source_voltage)

Retrieve the updated configuration’s calculator for the given gate-source and drain-source voltages.

This result will only be available after the calculation ran successfully.

Parameters:
  • gate_source_voltage (PhysicalQuantity of type voltage) – The gate-source voltage.

  • drain_source_voltage (PhysicalQuantity of type voltage) – The drain-source voltage.

Returns:

The calculator associated with this voltage pair. If not available, returns None.

Return type:

DeviceLCAOCalculator | DeviceSemiEmpiricalCalculator None

current(gate_source_voltage, drain_source_voltage)

The current calculated from the OneShotSelfConsistentBornApproximation analysis. The sign of the current is adjusted to be consistent with the choice of source electrode.

Parameters:
  • gate_source_voltage (PhysicalQuantity of type voltage) – The gate-source voltage.

  • drain_source_voltage (PhysicalQuantity of type voltage) – The drain-source voltage.

Returns:

The calculated current for the required gate-source and drain-source voltages. If not available, returns None.

Return type:

PhysicalQuantity of type current | None

dependentStudies()
Returns:

The list of dependent studies.

Return type:

list of Study

drainInducedBarrierLowering(threshold_current, high_drain_source_voltage, low_drain_source_voltage, min_subthreshold_current=None, max_subthreshold_current=None, range_min=None, range_max=None, converged_only=None, electrode_temperatures=None)

Calculate drain induced barrier lowering (DIBL). The threshold voltage is defined as the gate-source voltage for which the current has a user-defined value, evaluated at a high and a low source-drain voltage value.

The DIBL is calculated as the unitless ratio

\(DIBL = \frac{V_{TH}^{low} - V_{TH}^{high}}{V_{DS}^{high} - V_{DS}^{low}}\)

In order to obtain meaningful results, a current in the subthreshold regime must be specified.

Parameters:
  • threshold_current (PhysicalQuantity of type current) – The current for which the device is considered to be at the gate-source threshold.

  • high_drain_source_voltage (PhysicalQuantity of type voltage) – The drain-source voltage at the working point (i.e., the supply voltage).

  • low_drain_source_voltage (PhysicalQuantity of type voltage) – The low drain voltage used as reference. It needs to be a finite value close to 0.

  • min_subthreshold_current (PhysicalQuantity of type current) – The minimum value of current used to extract the subthreshold regime model.
    Default: threshold_current / 10

  • max_subthreshold_current (PhysicalQuantity of type current) – The minimum value of current used to extract the subthreshold regime model.
    Default: threshold_current * 10

  • range_min (PhysicalQuantity of type voltage) – The minimum gate-source voltage used for the processing. This parameter can be used to select the nmos-like or pmos-like section of the IV curve in bipolar devices.
    Default: No restriction.

  • range_max (bool) – The maximum gate-source voltage in the required range. This parameter can be used to select the nmos-like or pmos-like section of the IV curve in bipolar devices.
    Default: No restriction.

  • converged_only – Whether to only include data points which have converged.
    Default: True

  • electrode_temperatures (list (size 2) of PhysicalQuantity of type temperature) – The electrode temperatures to be used in the current calculation.
    Default: The temperatures from the calculator.

Returns:

The calculated drain induced barrier lowering.

Return type:

float

drainSourceSaturationVoltage(gate_source_voltage, range_min=None, range_max=None, converged_only=None, electrode_temperatures=None)

Calculate the drain-source saturation voltage for a given gate-source voltage. It is assumed that a transition to saturation regime occurs in the interval specified by range_min and range_max. The value is estimated by fitting the data to a Schichman-Hodges model (SPICE Mosfet model 1).

Parameters:
  • gate_source_voltage (PhysicalQuantity of type voltage) – The gate-source voltage, for which the drain-source saturation voltage will be calculated.

  • range_min (PhysicalQuantity of type voltage) – The minimum drain-source voltage in the required range.
    Default: No restriction.

  • range_max (bool) – The maximum drain-source voltage in the required range.
    Default: No restriction.

  • converged_only – Whether to only include data points which have converged.
    Default: True

  • electrode_temperatures (list (size 2) of PhysicalQuantity of type temperature) – The electrode temperatures to be used in the current calculation.
    Default: The temperatures from the calculator.

Returns:

The calculated drain-source saturation voltage, fitted in the required range.

Return type:

PhysicalQuantity of type voltage

drainSourceVoltages()
Returns:

The list of all calculated and not calculated drain-source voltages. Any drain-source voltage which has not yet been calculated will be calculated the next time the object is updated.

Return type:

list of PhysicalQuantity of type voltage

electronPhononSelfEnergies()
Returns:

The objects describing the electron-phonon self energy models.

Return type:

sequence of AcousticDeformationPotentialSelfEnergy | OpticalDeformationPotentialSelfEnergy

energies()
Returns:

The list of energies used for the OneShotSelfConsistentBornApproximation calculation at each voltage.

Return type:

list of PhysicalQuantity of type energy

filename()
Returns:

The filename where the study object is stored.

Return type:

str

gatePotentialAlignment()
Returns:

The object describing the alignment of the gate electrode potential.

Return type:

class:~.GatePotentialAlignment:

gateReferencePotential()
Returns:

The absolute shift in gate voltages introduced by a gate potential alignment, with respect to the internal default. If the constructor parameter gate_potential_alignment is defined with a non-default reference_electrode then additional tasks have to be executed. In that case the absolute shift in gate voltages is returned when the information is available, and None is returned otherwise.

Return type:

PhysicalQuantity of type voltage | None

gateRegions()
Returns:

The list of indices of the metallic regions present in the configuration which the gate voltage is applied to.

Return type:

list of int

gateSourceVoltages()
Returns:

The list of all calculated and not calculated gate-source voltages. Any gate-source voltage which has not yet been calculated will be calculated the next time the object is updated.

Return type:

list of PhysicalQuantity of type voltage

isConverged(gate_source_voltage, drain_source_voltage)
Parameters:
  • gate_source_voltage (PhysicalQuantity of type voltage) – The gate-source voltage.

  • drain_source_voltage (PhysicalQuantity of type voltage) – The drain-source voltage.

Returns:

Whether the calculator for the required gate-source and drain-source voltages has been converged. If not available, returns None.

Return type:

bool | None

kpoints()
Returns:

The k-points used for the OneShotSelfConsistentBornApproximation calculation at each voltage.

Return type:

MonkhorstPackGrid | RegularKpointGrid | AdaptiveGrid | list (size n_kpoints) of list (size 3) of float

kpointsWeights()
Returns:

The weight of each k-point used for the OneShotSelfConsistentBornApproximation calculation at each voltage.

Return type:

list (size n_kpoints) of float

loaOrder()
Returns:

The order of the LOA.

Return type:

int

logFilenamePrefix()
Returns:

The filename prefix for the logging output of the study.

Return type:

str | LogToStdOut

maxInitialStateConfigurations()
Returns:

The maximum number of converged configurations used to determine the initial state for a new bias point.

Return type:

int

nlinfo()
Returns:

Structured information about the Study.

Return type:

dict

nlprint(stream=None)

Print a string containing an ASCII table useful for plotting the Study object.

Parameters:

stream (python stream) – The stream the table should be written to.
Default: NLPrintLogger()

numberOfProcessesPerTask()
Returns:

The number of processes to be used to execute each task. If None, all available processes should execute each task collaboratively.

Return type:

int | None | ProcessesPerNode

numberOfProcessesPerTaskResolved()
Returns:

The number of processes to be used to execute each task. Default values are resolved based on the current execution settings.

Return type:

int

objectId()
Returns:

The name of the study object in the file.

Return type:

str

onOffRatio(drain_source_voltage, off_gate_source_voltage, on_gate_source_voltage, converged_only=None, electrode_temperatures=None)

Calculate the on/off ratio for the available data points at a given drain-source voltage.

Parameters:
  • drain_source_voltage (PhysicalQuantity of type voltage) – The drain-source voltage which determines the gate-source voltage/current data set from which the on/off ratio will be calculated.
    Default: The first drain-source voltage in the IVCharacteristics study.

  • off_gate_source_voltage (PhysicalQuantity of type voltage) – The gate-source voltage corresponding to the off state.

  • on_gate_source_voltage (PhysicalQuantity of type voltage) – The gate-source voltage corresponding to the on state.

  • converged_only – Whether to only include data points which have converged.
    Default: True

  • electrode_temperatures (list (size 2) of PhysicalQuantity of type temperature) – The electrode temperatures to be used in the current calculation.
    Default: The temperatures from the calculator.

Returns:

The calculated on/off ratio in the required range.

Return type:

float

oneShotSelfConsistentBornApproximation(gate_source_voltage, drain_source_voltage)

Retrieve the OneShotSelfConsistentBornApproximation for the updated configuration for the given gate-source and drain-source voltages.

This result will only be available after the one shot scba calculation ran successfully.

Parameters:
  • gate_source_voltage (PhysicalQuantity of type voltage) – The gate-source voltage.

  • drain_source_voltage (PhysicalQuantity of type voltage) – The drain-source voltage.

Returns:

The one shot SCBA object associated with this voltage pair. If not available, returns None.

Return type:

OneShotSelfConsistentBornApproximation | None

removeDrainSourceVoltage(drain_source_voltage)

Remove a drain-source voltage from the IVCharacteristics study. All analysis objects corresponding to the given drain-source voltage will be removed.

Parameters:

drain_source_voltage (PhysicalQuantity of type voltage) – The drain-source voltage which should be removed from the IVCharacteristics study.

removeGateSourceVoltage(gate_source_voltage)

Remove a gate-source voltage from the IVCharacteristics study. All analysis objects corresponding to the given gate-source voltage will be removed.

Parameters:

gate_source_voltage (PhysicalQuantity of type voltage) – The gate-source voltage which should be removed from the IVCharacteristics study.

results(gate_source_voltage, drain_source_voltage, result_types=None)

Retrieve all results of the specified types for the given gate-source and drain-source voltages.

Only the results of calculations that ran successfully are available.

Parameters:
  • gate_source_voltage (PhysicalQuantity of type voltage) – The gate-source voltage.

  • drain_source_voltage (PhysicalQuantity of type voltage) – The drain-source voltage.

  • result_types (list) – A list of types which should be included in the returned quantity. For example, result_types=[DeviceConfiguration] will only return instances of DeviceConfiguration. If not specified, all results are returned.

Returns:

The available results from calculations associated with this voltage pair. If none available, it returns an empty list.

Return type:

list

saveToFileAfterUpdate()
Returns:

Whether the study is automatically saved after it is updated.

Return type:

bool

setCalculator(gate_source_voltage, drain_source_voltage, calculator, initial_state=None, initial_spin=None)

Set a new calculator and initial state for an existing gate-source and drain-source voltage pair.

The next call to update() will recalculate the configuration, transmission spectrum and any additional Analysis objects for this gate-source and drain-source voltage pair. If a configuration with an identical calculator had already converged, no calculation will be performed.

Parameters:
  • gate_source_voltage (PhysicalQuantity of type voltage) – The gate-source voltage.

  • drain_source_voltage (PhysicalQuantity of type voltage) – The drain-source voltage.

  • calculator (DeviceLCAOCalculator | DeviceSemiEmpiricalCalculator) – The new calculator to be set on the configuration.

  • initial_state (DeviceConfiguration) – The initial state to be used for the configuration.
    Default: The initial state is automatically chosen from the already run tasks.

  • initial_spin (InitialSpin | None) – An initial spin to be applied in combination with the initial state. It can only be defined if an initial state is also defined. Alternatively, a global initial spin to be used during the first configuration update can be set directly on the configuration passed to the class constructor.

setOneShotSelfConsistentBornApproximationArguments(gate_source_voltage, drain_source_voltage, one_shot_scba_arguments=None)

Set new arguments for the OneShotSelfConsistentBornApproximation object for an existing gate-source and drain-source voltage pair.

The next call to update() will recalculate the transmission spectrum for this gate-source and drain-source voltage pair.

Parameters:
  • gate_source_voltage (PhysicalQuantity of type voltage) – The gate-source voltage.

  • drain_source_voltage (PhysicalQuantity of type voltage) – The drain-source voltage.

  • one_shot_scba_arguments (A dictionary of valid arguments for a OneShotSelfConsistentBornApproximation object.) – Dictionary of arguments to be passed to the OneShotSelfConsistentBornApproximation object. The configuration argument must not be present.
    Default: An empty dictionary.

sourceElectrode()

Return the side of the source electrode, specified as Left or Right. The quantity is used to convert from absolute electrode voltages to drain-source and gate-source voltages.

subthresholdSlope(drain_source_voltage=None, range_min=None, range_max=None, converged_only=None, electrode_temperatures=None)

Calculate the subthreshold slope for the available data points at a given drain-source voltage.

Note that by default the entire range is used for the fitting, which might give an unphysical result. It is strongly recommended for the user to define a physical range in which to perform the fitting.

Parameters:
  • drain_source_voltage (PhysicalQuantity of type voltage) – The drain-source voltage which determines the gate-source voltage/current data set from which the subthreshold slope will be calculated.

  • range_min (PhysicalQuantity of type voltage) – The minimum gate-source voltage in the required range.
    Default: No restriction.

  • range_max (bool) – The maximum gate-source voltage in the required range.
    Default: No restriction.

  • converged_only – Whether to only include data points which have converged.
    Default: True

  • electrode_temperatures (list (size 2) of PhysicalQuantity of type temperature) – The electrode temperatures to be used in the current calculation.
    Default: The temperatures from the calculator.

Returns:

The calculated subthreshold slope, fitted in the required range. Units are mV/dec.

Return type:

float

transconductance(drain_source_voltage, gate_source_voltage, converged_only=None, electrode_temperatures=None)

Calculate the transconductance, defined as:

\(g_m = \partial I_{D} / \partial V_{GS}\)

at a given drain-source voltage, where \(I_{D}\) is the drain current and \(V_{GS}\) the gate-source voltage. The transconductance is evaluated around the gate-source voltage specified in input. The derivative is calculated by finite difference, using the available currents.

Parameters:
  • drain_source_voltage (PhysicalQuantity of type voltage) – The drain-source voltage at which the transconductance is calculated,

  • gate_source_voltage (PhysicalQuantity of type voltage) – The gate-source voltage at which the transconductance is evaluated.

  • converged_only – Whether to only include data points which have converged.
    Default: True

  • electrode_temperatures (list (size 2) of PhysicalQuantity of type temperature) – The electrode temperatures to be used in the current calculation.
    Default: The temperatures from the calculator.

Returns:

The value of transconductance at the given gate-source and drain-source voltage.

Return type:

PhysicalQuantity of type current / voltage.

uniqueString()

Return a unique string representing the state of the object.

update()

Run the calculations for the study.