Van der Pauw module

Van der Pauw resistivity measurement.

Four-point measurement bypass resistance of ohmic contacts.
To find resistivity from sheet resistance, use physicslab.electricity.Resistivity.from_sheet_resistance method.
Pay special attention to enum Geometry.
physicslab.experiment.van_der_pauw.process(data, thickness=None)[source]

Bundle method.

Parameter data must include geometry voltage and current. See Columns for details and column names.

The optional parameter allows to calculate additional quantities: resistivity and conductivity.

Supplying None for data returns pandas.Series of the same columns with values being units.

Parameters
  • data (pandas.DataFrame or None) – Measured data. If None, return units instead

  • thickness (float, optional) – Sample dimension perpendicular to the plane marked by the electrical contacts, defaults to None

Returns

Derived quantities listed in Columns.process() or units

Return type

pandas.Series

class physicslab.experiment.van_der_pauw.Solve[source]

Van der Pauw formula and means to solve it.

static implicit_formula(Rs, Rh, Rv)[source]

Van der Pauw measurement implicit function.

The function reads:
\(func(R_s) = exp(-\pi R_v/R_s) + exp(-\pi R_h/R_s) - 1\).
This function’s roots give the solution.
Parameters
  • Rs (float) – Sheet resistance. Independent variable - MUST be first

  • Rh (float) – Horizontal resistance

  • Rv (float) – Vertical resistance

Returns

Quantification of this formula is meant to be zero

Return type

float

static square(Rh, Rv)[source]

Compute sheet resistance from the given resistances.

Accurate only for square sample: \(R_h = R_v\).

Parameters
  • Rh (float) – Horizontal resistance

  • Rv (float) – Vertical resistance

Returns

Sheet resistance

Return type

float

classmethod universal(Rh, Rv, Rs0)[source]

Compute sheet resistance from the given resistances.

Universal formula. Computation flow for square-like samples is as follows:

Rs0 = van_der_pauw.Solve.square(Rh, Rv)
Rs = van_der_pauw.Solve.universal(Rh, Rv, Rs0)
Parameters
  • Rh (float) – Horizontal resistance

  • Rv (float) – Vertical resistance

  • Rs0 (float) – Approximate value to start with.

Returns

Sheet resistance

Return type

float

classmethod analyze(Rh, Rv)[source]

Solve Solve.implicit_formula() to find sample’s sheet resistance. Also compute resistance symmetry ratio (always greater than one). The ratio assess how squarish the sample is, quality of ohmic contacts (small, symmetric) etc.

Parameters
  • Rh (float) – Horizontal resistance

  • Rv (float) – Vertical resistance

Returns

Sheet resistance and symmetry ratio

Return type

tuple(float, float)

class physicslab.experiment.van_der_pauw.Columns[source]

Bases: physicslab.utility._ColumnsBase

Column names.

classmethod mandatory()[source]

Get the current mandatory column names.

Return type

set(str)

classmethod process()[source]

Get the current values of the process() output column names.

Return type

lits(str)

class physicslab.experiment.van_der_pauw.Measurement(data)[source]

Van der Pauw resistances measurements.

Parameters

data (pandas.DataFrame) – Voltage-current pairs with respective geometries.

Raises

ValueError – If data is missing a mandatory column

analyze()[source]

Classify geometries into either Geometry.Horizontal or Geometry.Vertical. Then average respective hall resistances.

Additionally save Hall resistances to data.

Returns

Horizontal and vertical sheet resistances

Return type

tuple(float, float)

class physicslab.experiment.van_der_pauw.Geometry(value)[source]

Resistance measurement configuration Enum.

Legend: Rijkl = \(R_{ij,kl} = V_{kl}/I_{ij}\). The contacts are numbered from 1 to 4 in a counter-clockwise order beginning at the top-left contact. See Van der Pauw method at Wikipedia. There are two additional group values: Vertical and Horizontal.

classmethod parse(text)[source]

Parse string to Geometry.

Parameters

text (str) – Any valid permutation of digits 1-4, e.g. 4123 or vertical or horizontal

Raises

ValueError – If there is no corresponding Geometry

Returns

Enum corresponding to text

Return type

Geometry

reverse_polarity()[source]

Reverse polarity of voltage and current.

Returns

Reversed geometry

Return type

Geometry

rotate(number=1, counterclockwise=True)[source]

Shift measuring pins counterclockwise.

Parameters
  • number (int, optional) – Number of pins to jump, defaults to 1

  • counterclockwise (bool, optional) – Direction of rotation, defaults to True

Returns

Rotated geometry

Return type

Geometry

is_horizontal()[source]

Find whether the geometry describes horizontal configuration.

Returns

Is horizontal?

Return type

bool

is_vertical()[source]

Find whether the geometry describes vertical configuration.

Returns

Is vertical?

Return type

bool

classify()[source]

Sort the Geometry to either vertical or horizontal group.

Returns

One of the two group configurations

Return type

Geometry

physicslab.experiment.van_der_pauw.plot(data_list, results)[source]

Plot individual measurements and results with quality coefficients.

For plotting details, see: https://matplotlib.org/stable/tutorials/intermediate/gridspec.html#a-complex-nested-gridspec-using-subplotspec

Parameters
Returns

Same objects as from matplotlib.pyplot.subplots(). Axes are: grid axis array, right plot left axis, right plot right axis

Return type

tuple[Figure, numpy.ndarray[Axes]]