Convective cooling in CIGRE601#

linerate.equations.cigre601.convective_cooling.compute_temperature_gradient(total_heat_gain, conductor_thermal_conductivity, core_diameter, conductor_diameter)[source]#

Compute the difference between the core and surface temperature.

Equation (15) & (16) on page 22 of [1].

Parameters:
  • total_heat_gain (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'W/m']) – \(P_T = I^2 R~\left[\text{W}~\text{m}^{-1}\right]\). The Joule heating of the conductor (see p. 81 of [1]).

  • conductor_thermal_conductivity (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'W/(m K)']) – \(\lambda \left[\text{W}~\text{m}^{-1}~\text{K}^{-1}\right]\). The effective conductor thermal conductivity. It is usually between \(0.5\) and \(7~W~m^{-1}~K^{-1}\). Recommended values are \(0.7~\text{W}~\text{m}^{-1}~\text{K}^{-1}\) for conductors with no tension on the aluminium strands and \(1.5~\text{W}~\text{m}^{-1}~\text{K}^{-1}\) for conductors with aluminium strands under a tension of at least 40 N [1].

  • core_diameter (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'm']) – \(D_1~\left[\text{m}\right]\). Diameter of the steel core of the conductor.

  • conductor_diameter (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'm']) – \(D~\left[\text{m}\right]\). Outer diameter of the conductor.

Returns:

\(T_c - T_s~\left[^\circ\text{C}\right]\). The difference between the core and surface temperature.

Return type:

Union[float, float64, ndarray[Any, dtype[float64]]]

linerate.equations.cigre601.convective_cooling.compute_thermal_conductivity_of_air(film_temperature)[source]#

Approximation of the thermal conductivity of air up to \(300 ^\circ\text{C}\).

Equation (18) on page 24 of [1].

Compared with table values from textbook, which showed a good approximation.

Parameters:

film_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_f = 0.5 (T_s + T_a)~\left[^\circ\text{C}\right]\). The temperature of the thin air-film surrounding the conductor. Equal to the average of the ambient air temperature and the conductor sufrace temperature.

Returns:

\(\lambda_f~\left[\text{W}~\text{m}^{-1}~\text{K}^{-1}\right]\). The thermal conductivity of air at the given temperature.

Return type:

Union[float, float64, ndarray[Any, dtype[float64]]]

linerate.equations.cigre601.convective_cooling.compute_air_density(film_temperature, height_above_sea_level)[source]#

Approximation of the density of air at a given temperature and altitude.

Equation (20) on page 25 of [1].

Parameters:
  • film_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_f = 0.5 (T_s + T_a)~\left[^\circ\text{C}\right]\). The temperature of the thin air-film surrounding the conductor. Equal to the average of the ambient air temperature and the conductor sufrace temperature.

  • height_above_sea_level (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'm']) – \(y~\left[\text{m}\right]\). The conductor’s altitude.

Returns:

\(\gamma~\left[\text{kg}~\text{m}^{-3}\right]\). The mass density of air.

Return type:

Union[float, float64, ndarray[Any, dtype[float64]]]

linerate.equations.cigre601.convective_cooling.compute_dynamic_viscosity_of_air(film_temperature)[source]#

Approximation of the dynamic viscosity of air at a given temperature.

Equation (19) on page 25 of [1].

Parameters:

film_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_f = 0.5 (T_s + T_a)~\left[^\circ\text{C}\right]\). The temperature of the thin air-film surrounding the conductor. Equal to the average of the ambient air temperature and the conductor sufrace temperature.

Returns:

\(\mu_f~\left[\text{kg}~\text{m}^{-1}~\text{s}^{-1}\right]\). The dynamic viscosity of air.

Return type:

Union[float, float64, ndarray[Any, dtype[float64]]]

linerate.equations.cigre601.convective_cooling.compute_kinematic_viscosity_of_air(dynamic_viscosity_of_air, air_density)[source]#

Compute the kinematic viscosity of air.

Definition in text on page 25 of [1].

Parameters:
  • dynamic_viscosity_of_air (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'kg/(m s)']) – \(\mu_f~\left[\text{kg}~\text{m}^{-1}~\text{s}^{-1}\right]\). The dynamic viscosity of air.

  • air_density (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'kg/m³']) – \(\gamma~\left[\text{kg}~\text{m}^{-3}\right]\). The mass density of air.

Returns:

\(\nu_f~\left[\text{m}^2~\text{s}^{-1}\right]\). The kinematic viscosity of air.

Return type:

Union[float, float64, ndarray[Any, dtype[float64]]]

linerate.equations.cigre601.convective_cooling.compute_perpendicular_flow_nusseltnumber(reynolds_number, conductor_roughness)[source]#

Compute the Nusselt number for perpendicular flow.

Equation (21) and Table 4 on pages 25-26 of [1].

The perpendicular flow nusselt number is denoted as \(\text{Nu}_{90}\) in [1] since the wind’s angle of attack is \(90^\circ\).

The Nusselt number is the ratio of conductive heat transfer to convective heat transfer.

Parameters:
  • reynolds_number (Annotated[float | float64 | ndarray[Any, dtype[float64]], '']) – \(\text{Re}\). The Reynolds number.

  • conductor_roughness (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'm']) – \(\text{Rs}\). The roughness number

Returns:

\(\text{Nu}_{90}\). The perpendicular flow Nusselt number.

Return type:

Union[float, float64, ndarray[Any, dtype[float64]]]

linerate.equations.cigre601.convective_cooling.correct_wind_direction_effect_on_nusselt_number(perpendicular_flow_nusselt_number, angle_of_attack, conductor_roughness)[source]#

Correct the Nusselt number for the wind’s angle-of-attack.

Equation (21) and Table 4 on pages 25-26 of [1].

The perpendicular flow nusselt number is denoted as \(\text{Nu}_\delta\) in [1] since the wind’s angle of attack is \(\delta\).

Parameters:
  • perpendicular_flow_nusselt_number (Annotated[float | float64 | ndarray[Any, dtype[float64]], '']) – \(\text{Nu}_{90}\). The perpendicular flow Nusselt number.

  • angle_of_attack (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'rad']) – \(\delta~\left[\text{radian}\right]\). The wind angle-of-attack.

  • conductor_roughness (Annotated[float | float64 | ndarray[Any, dtype[float64]], '']) – \(\text{Rs}\). The roughness number

Returns:

\(\text{Nu}_\delta\). The Nusselt number for the given wind angle-of-attack.

Return type:

Union[float, float64, ndarray[Any, dtype[float64]]]

linerate.equations.cigre601.convective_cooling.compute_horizontal_natural_nusselt_number(grashof_number, prandtl_number)[source]#

The Nusselt number for natural (passive) convection on a horizontal conductor.

Equation (23) and Table 5 on pages 27-28 of [1].

The natural convection Nusselt number is denoted by both \(\text{Nu}_\text{nat}\) and \(\text{Nu}_0\) (due to the conductor declination being \(0^\circ\)) in [1].

The coefficient table is modified slightly so coefficients with \(\text{Gr}\text{Pr} < 0.1\) leads to \(\text{Nu} = 0\).

Parameters:
  • grashof_number (Annotated[float | float64 | ndarray[Any, dtype[float64]], '']) – \(\text{Gr}\). The Grashof number.

  • prandtl_number (Annotated[float | float64 | ndarray[Any, dtype[float64]], '']) – \(\text{Pr}\). The Prandtl number.

Returns:

\(\text{Nu}_0\). The natural convection nusselt number assuming horizontal conductor.

Return type:

Union[float, float64, ndarray[Any, dtype[float64]]]

linerate.equations.cigre601.convective_cooling.correct_natural_nusselt_number_inclination(horizontal_natural_nusselt_number, conductor_inclination, conductor_roughness)[source]#

Correct the natural Nusselt number for the effect of the span inclination.

Equation (24) on page 28 of [1].

Parameters:
  • horizontal_natural_nusselt_number (Annotated[float | float64 | ndarray[Any, dtype[float64]], '']) – \(\text{Nu}_0\). The natural convection nusselt number assuming horizontal conductor.

  • conductor_inclination (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'rad']) – \(\beta~\left[\text{radian}\right]\). The inclination angle of the conductor. The inclination can be computed as \(\beta = \text{arctan2}\left(\left|y_1 - y_0\right|, L\right)\), where \(y_0\) and \(y_1\) are the altitude of the span endpoints (towers) and \(L\) is the length of the span .

  • conductor_roughness (Annotated[float | float64 | ndarray[Any, dtype[float64]], '']) – \(Rs\). The roughness number.

Returns:

\(\text{Nu}_\beta\). The natural convection nusselt number where the conductor inclination is taken into account.

Return type:

Union[float, float64, ndarray[Any, dtype[float64]]]

linerate.equations.cigre601.convective_cooling.compute_nusselt_number(forced_convection_nusselt_number, natural_nusselt_number)[source]#

Compute the nusselt number.

Described in the text on p. 28 of [1].

Parameters:
  • forced_convection_nusselt_number (Annotated[float | float64 | ndarray[Any, dtype[float64]], '']) – \(\text{Nu}_\delta\). The Nusselt number for the given wind angle-of-attack.

  • natural_nusselt_number (Annotated[float | float64 | ndarray[Any, dtype[float64]], '']) – \(\text{Nu}_\delta\). The natural convection nusselt number where the conductor inclination is taken into account.

Returns:

\(Nu\). The nusselt number.

Return type:

Union[float, float64, ndarray[Any, dtype[float64]]]