Source code for physicslab.electricity

"""
Electricity related properties.

Mainly mutual conversion and units.
"""


from scipy.constants import e as elementary_charge


[docs]class Carrier_concentration: """ Number of charge carriers in per unit volume. Also known as Charge carrier density. """ #: SI unit. UNIT = '1/m^3'
[docs] @staticmethod def from_sheet_density(sheet_density, thickness): """ Find carrier concentration from sheet density. :param float sheet_density: (1/m^2) :param float thickness: (m) :return: (1/m^3) :rtype: float """ return sheet_density / thickness
[docs]class Carrier_sheet_concentration: """ Number of charge carriers in per unit area. Also known as Charge carrier sheet density. """ #: SI unit. UNIT = '1/m^2'
[docs]class Mobility: """ Electrical mobility is the ability of charged particles (such as electrons or holes) to move through a medium in response to an electric field that is pulling them. """ #: SI unit. UNIT = 'm^2/V/s'
[docs] @staticmethod def from_sheets(sheet_density, sheet_resistance): """ Find mobility from sheet density and sheet resistance :param float sheet_density: (1/m^2) :param float sheet_resistance: (ohms per square) :return: (m^2/V/s) :rtype: float """ return 1 / elementary_charge / sheet_density / sheet_resistance
[docs]class Resistance: """ Object property. """ #: SI unit. UNIT = 'ohm'
[docs] @staticmethod def from_ohms_law(voltage, current): """ Find resistivity from sheet resistance. :param float voltage: (volt) :param float current: (ampere) :return: (ohm) :rtype: float """ return voltage / current
[docs] @staticmethod def from_resistivity(resistivity, cross_sectional_area, length): """ Find resistivity from resistance. :param float resistance: (ohm) :param float cross_sectional_area: (meter squared) :param float length: (meter) :return: (ohm metre) :rtype: float """ return resistivity / cross_sectional_area * length
[docs]class Conductance: """ Object property. """ #: SI unit. Also "siemens" UNIT = '1/ohm'
[docs] @staticmethod def from_resistance(resistance): """ Find conductance from resistance. :param float resistance: (ohm) :return: (1/ohm) :rtype: float """ return 1 / resistance
[docs]class Sheet_Resistance: """ Thin object property. """ #: SI unit. UNIT = 'ohms per square'
[docs] @staticmethod def from_resistivity(resistivity, thickness): """Find sheet resistance from resistivity. :param float resistivity: (ohm m) :param float thickness: (m) :return: (ohms per square) :rtype: float """ return resistivity / thickness
[docs]class Sheet_Conductance: """ Thin object property. """ #: SI unit. Also "siemens square" UNIT = '1/ohms square' @staticmethod def from_sheet_resistance(sheet_resistance): return 1 / sheet_resistance
[docs]class Resistivity: """ Material property. """ #: SI unit. UNIT = 'ohm m'
[docs] @staticmethod def from_sheet_resistance(sheet_resistance, thickness): """ Find resistivity from sheet resistance. :param float sheet_resistance: (ohms per square) :param float thickness: (m) :return: (ohm m) :rtype: float """ return sheet_resistance * thickness
[docs] @staticmethod def from_resistance(resistance, cross_sectional_area, length): """ Find resistivity from resistance. :param float resistance: (ohm) :param float cross_sectional_area: (m^2) :param float length: (m) :return: (ohm m) :rtype: float """ return resistance * cross_sectional_area / length
[docs]class Conductivity: """ Material property. """ #: SI unit. Also "siemens/metre" UNIT = '1/ohm/m'
[docs] @staticmethod def from_resistivity(resistivity): """ Find conductivity from resistivity. :param float resistivity: (ohm m) :return: (1/ohm/m) :rtype: float """ return 1 / resistivity