Source code for piel.models.physical.electrical.cables.dc.thermal
from piel.models.physical.thermal import heat_transfer_1d_W
from piel.materials.thermal_conductivity.utils import get_thermal_conductivity_fit
from piel.types.electrical.cables import (
DCCableGeometryType,
DCCableHeatTransferType,
DCCableMaterialSpecificationType,
)
from piel.types.materials import MaterialReferenceType
from piel.types.physical import TemperatureRangeTypes
[docs]
def calculate_dc_cable_heat_transfer(
temperature_range_K: TemperatureRangeTypes = [273, 293],
geometry_class: DCCableGeometryType = DCCableGeometryType(),
material_class: DCCableMaterialSpecificationType
| None = DCCableMaterialSpecificationType(),
core_material: MaterialReferenceType = MaterialReferenceType(),
) -> DCCableHeatTransferType:
"""
Calculate the heat transfer of a coaxial cable.
Args:
temperature_range_K: The temperature range in Kelvin.
geometry_class: The geometry of the cable.
material_class: The material of the cable.
core_material: The material of the core.
Returns:
DCCableHeatTransferType: The heat transfer of the cable.
"""
if material_class is not None:
provided_materials = material_class.supplied_parameters()
elif material_class is None:
material_class = DCCableMaterialSpecificationType(
core=core_material,
)
provided_materials = material_class.supplied_parameters()
else:
raise ValueError("No material class or material parameters provided.")
heat_transfer_parameters = dict()
total_heat_transfer_W = 0
for material_i in provided_materials:
thermal_conductivity_fit_i = get_thermal_conductivity_fit(
temperature_range_K=temperature_range_K,
material=getattr(material_class, material_i),
)
# CURRENT TODO compute the thermal conductivity fit accordingly. Implement a material reference to thermal conductivtiy files mapping.
heat_transfer_i = heat_transfer_1d_W(
thermal_conductivity_fit=thermal_conductivity_fit_i,
temperature_range_K=temperature_range_K,
cross_sectional_area_m2=geometry_class.total_cross_sectional_area_m2,
length_m=geometry_class.length_m,
)
heat_transfer_parameters[material_i] = heat_transfer_i
total_heat_transfer_W += heat_transfer_i
heat_transfer_parameters["total"] = total_heat_transfer_W
return DCCableHeatTransferType(
**heat_transfer_parameters,
)