Source code for piel.types.electrical.cables

from typing import Optional, Union
from piel.types.quantity import Quantity
from piel.types.materials import MaterialReferenceType
from piel.types.radio_frequency import RFPhysicalComponent
from ..connectivity.physical import PhysicalComponent


# TODO This shouldn't be a quantity
[docs] class CoaxialCableGeometryType(Quantity): core_cross_sectional_area_m2: float | None = 0 """ The cross-sectional area of the core in meters squared. """ length_m: float = 0 """ The length of the cable in meters. """ sheath_cross_sectional_area_m2: float | None = 0 """ The cross-sectional area of the sheath in meters squared. """ total_cross_sectional_area_m2: float | None = 0 """ The total cross-sectional area of the cable in meters squared. """
[docs] class CoaxialCableHeatTransferType(Quantity): """ All units are in watts. """ core: float | None = 0 """ The computed heat transfer in watts for the core of the cable. """ sheath: float | None = 0 """ The computed heat transfer in watts for the sheath of the cable. """ dielectric: float | None = 0 """ The computed heat transfer in watts for the dielectric of the cable. """ total: float = 0 """ The total computed heat transfer in watts for the cable. """ units: str = "W"
[docs] class CoaxialCableMaterialSpecificationType(Quantity): core: Optional[MaterialReferenceType] = None """ The material of the core. """ sheath: Optional[MaterialReferenceType] = None """ The material of the sheath. """ dielectric: Optional[MaterialReferenceType] = None """ The material of the dielectric. """
[docs] def supplied_parameters(self): """ Returns a list of parameter names that have been supplied (i.e., are not None). Returns: list[str]: A list of parameter names with non-None values. """ values = [ param for param, value in [ ("core", self.core), ("sheath", self.sheath), ("dielectric", self.dielectric), ] if value is not None ] # print(values) return values
[docs] class DCCableGeometryType(Quantity): core_cross_sectional_area_m2: float = 0 """ The cross-sectional area of the core in meters squared. """ length_m: float = 0 """ The length of the cable in meters. """ total_cross_sectional_area_m2: float = 0 """ The total cross-sectional area of the cable in meters squared. """
[docs] class DCCableHeatTransferType(Quantity): """ All units are in watts. """ core: Optional[float] = 0 """ The computed heat transfer in watts for the core of the cable. """ total: float = 0 """ The total computed heat transfer in watts for the cable. """ units: str = "W"
[docs] class DCCableMaterialSpecificationType(Quantity): core: Optional[MaterialReferenceType] = None """ The material of the core. """
[docs] class Cable(PhysicalComponent): pass
[docs] class DCCable(Cable): """ A DC cable is a single core cable that is used to transmit direct current. """ geometry: DCCableGeometryType | None = None heat_transfer: DCCableHeatTransferType | None = None material_specification: DCCableMaterialSpecificationType | None = None
[docs] class CoaxialCable(RFPhysicalComponent): """ A coaxial cable is a type of electrical cable that has an inner conductor surrounded by a tubular insulating layer, surrounded by a tubular conducting shield. """ geometry: CoaxialCableGeometryType | None = CoaxialCableGeometryType() heat_transfer: Optional[CoaxialCableHeatTransferType] = None material_specification: Optional[CoaxialCableMaterialSpecificationType] = None
CableHeatTransferTypes = Union[CoaxialCableHeatTransferType, DCCableHeatTransferType] CableGeometryTypes = Union[CoaxialCableGeometryType, DCCableGeometryType] CableMaterialSpecificationTypes = Union[ CoaxialCableMaterialSpecificationType, DCCableMaterialSpecificationType ] CableTypes = Union[DCCable, CoaxialCable]