find_floating_potential(voltage: numpy.ndarray, current: numpy.ndarray, threshold: int = 1, min_points: Optional[Union[int, float]] = None, fit_type: str = 'exponential')¶
Determines the floating potential (\(V_f\)) for a given current-voltage (IV) curve obtained from a swept Langmuir probe. The floating potential is the probe bias where the collected current equals zero \(I = 0\). (For additional details see the Notes section below.)
numpy.ndarray) – 1-D numpy array of monotonically ascending/descending probe biases (should be in volts)
numpy.ndarray) – 1-D numpy array of probe current (should be in amperes) corresponding to the
threshold (positive, non-zero
int) – Max allowed index distance between crossing-points before a new crossing-island is formed. That is, if
threshold=5then consecutive crossing-points are considered to be in the same crossing-island if they are within 5 index steps of each other. (Default: 1)
Minimum number of data points required for the fitting to be applied to. See Notes section below for additional details. The following list specifies the optional values:
min_points = None(Default) The largest of 5 and
factor * array_sizeis taken, where
array_sizeis the size of
factor = 0.1for
fit_type = "linear"and
min_points = numpy.infThe entire passed array is fitted.
min_points >= 1Exact minimum number of points.
0 < min_points < 0The minimum number of points is taken as
min_points * array_size.
fit_type (str) –
The type of curve to be fitted to the Langmuir trace,
"exponential"(Default). This selects which
FitFunctionclass should be applied to the trace.
numpy.nan) – The calculated floating potential (same units as the
numpy.nanif the floating potential can not be determined. How \(V_f\) is calculated depends on the fit function. This is described in the
root_solve()method of the relevant fit function (e.g. the
numpy.nan) – The uncertainty associated with the floating potential calculation (units same as
numpy.nanif the floating potential can not be determined. Like \(V_f\):, the calculation depends on the applied fit function. The
root_solve()method also describes how this is calculated.
func (sub-class of
AbstractFitFunction) – The callable function \(f(x)\) representing the fit and its results.
List[slice]) – List of
sliceobjects representing the indices of the identified crossing-islands.
The internal functionality works like:
The current array
currentis scanned for all points equal to zero and point pairs that straddle \(I = 0\). This forms an array of “crossing-points.”
The crossing-points are then grouped into “crossing-islands” in based on the
A new island is formed when a successive crossing-point is more (index) steps away from the previous crossing-point than allowed by
If multiple crossing-islands are identified, then the span from the first point in the first island to the last point in the last island is compared to
min_points. If the span is less than or equal to
min_points, then that span is taken as one larger crossing-island for the fit; otherwise, the function is incapable of identifying \(V_f\) and will return
To calculate the floating potential…
If the crossing-island contains fewer points than
min_points, then each side of the crossing-island is equally padded with the nearest neighbor points until