Source code for piel.models.physical.thermal

import numpy as np
from piel.types.physical import TemperatureRangeTypes
from piel.types import ArrayTypes

__all__ = [
    "heat_transfer_1d_W",
]


[docs] def heat_transfer_1d_W( thermal_conductivity_fit, temperature_range_K: TemperatureRangeTypes, cross_sectional_area_m2: float, length_m: float, *args, **kwargs, ) -> float: """ Calculate the heat transfer in watts for a 1D system. The thermal conductivity is assumed to be a function of temperature. .. math:: q = A \int_{T_1}^{T_2} k(T) dT Args: thermal_conductivity_fit: temperature_range_K: cross_sectional_area_m2: length_m: Returns: float: The heat transfer in watts for a 1D system. """ if type(temperature_range_K) is tuple: # TODO how to compare this with the TemperatureRangeLimitType? temperature_range_K = np.linspace( temperature_range_K[0], temperature_range_K[1], num=1000, *args, **kwargs ) elif isinstance(temperature_range_K, ArrayTypes): pass else: raise ValueError( "Invalid temperature_range_K type. Must be a TemperatureRangeType." ) thermal_conductivity_integral_area = np.trapz( thermal_conductivity_fit, temperature_range_K ) return cross_sectional_area_m2 * thermal_conductivity_integral_area / length_m