The model module#

These thermal model classes provide an easy-to-use interface to compute the thermal rating. They store conductor and span metadata as well as the weather parameters, compute all the heating and cooling effects and use those to estimate the thermal rating and conductor temperature. All numerical heavy-lifting is handled by the linerate.equations and the linerate.solver modules.

class linerate.model.ThermalModel(span, weather)[source]#

Abstract class for a minimal conductor thermal model.

abstract compute_resistance(conductor_temperature, current)[source]#

Compute the conductor resistance, \(R~\left[\Omega~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(R~\left[\Omega\right]\). The resistance at the given temperature and current.

Return type:

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

abstract compute_joule_heating(conductor_temperature, current)[source]#

Compute the Joule heating, \(P_J~\left[\text{W}~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_J~\left[\text{W}~\text{m}^{-1}\right]\). The Joule heating.

Return type:

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

abstract compute_solar_heating(conductor_temperature, current)[source]#

Compute the solar heating, \(P_S~\left[\text{W}~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_s~\left[\text{W}~\text{m}^{-1}\right]\). The solar heating.

Return type:

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

abstract compute_convective_cooling(conductor_temperature, current)[source]#

Compute the convective cooling, \(P_c~\left[\text{W}~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_c~\left[\text{W}~\text{m}^{-1}\right]\). The convective cooling.

Return type:

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

abstract compute_radiative_cooling(conductor_temperature, current)[source]#

Compute the radiative cooling, \(P_r~\left[\text{W}~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_r~\left[\text{W}~\text{m}^{-1}\right]\). The radiative cooling heating.

Return type:

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

compute_heat_balance(conductor_temperature, current)[source]#

Compute the conductor’s heat balance. Positive means heating and negative means cooling.

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_J + P_s - P_c - P_r~\left[\text{W}~\text{m}^{-1}\right]\). The heat balance.

Return type:

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

compute_info(conductor_temperature, current)[source]#

Create a dictionary with the different heating and cooling effects.

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

A dictionary with the magnitude of the different heating and cooling effects.

Return type:

Dict[str, WattPerMeter]

compute_steady_state_ampacity(max_conductor_temperature, min_ampacity=0, max_ampacity=5000, tolerance=1.0)[source]#

Use the bisection method to compute the steady-state thermal rating (ampacity).

Parameters:
  • max_conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{max}~\left[^\circ\text{C}\right]\). Maximum allowed conductor temperature

  • min_ampacity (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I_\text{min}~\left[\text{A}\right]\). Lower bound for the numerical scheme for computing the ampacity

  • max_ampacity (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I_\text{min}~\left[\text{A}\right]\). Upper bound for the numerical scheme for computing the ampacity

  • tolerance (float) – \(\Delta I~\left[\text{A}\right]\). The numerical accuracy of the ampacity. The bisection iterations will stop once the numerical ampacity uncertainty is below \(\Delta I\). The bisection method will run for \(\left\lceil\frac{I_\text{min} - I_\text{min}}{\Delta I}\right\rceil\) iterations.

Returns:

\(I~\left[\text{A}\right]\). The thermal rating.

Return type:

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

compute_conductor_temperature(current, min_temperature=-30, max_temperature=150, tolerance=0.5)[source]#

Use the bisection method to compute the steady state conductor temperature.

Parameters:
  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I_\text{max}~\left[\text{A}\right]\). The current flowing through the conductor. NOTE that the current is the total current for all conductors in the span. When computing the temperature, the current is divided by the number of conductors.

  • min_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{min}~\left[^\circ\text{C}\right]\). Lower bound for the numerical scheme for computing the temperature

  • max_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{max}~\left[^\circ\text{C}\right]\). Upper bound for the numerical scheme for computing the temperature

  • tolerance (float) – \(\Delta T~\left[^\circ\text{C}\right]\). The numerical accuracy of the temperature. The bisection iterations will stop once the numerical temperature uncertainty is below \(\Delta T\). The bisection method will run for \(\left\lceil\frac{T_\text{min} - T_\text{min}}{\Delta T}\right\rceil\) iterations.

Returns:

\(I~\left[\text{A}\right]\). The thermal rating.

Return type:

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

class linerate.model.Cigre601(span, weather, time, max_reynolds_number=4000)[source]#
compute_resistance(conductor_temperature, current)[source]#

Compute the conductor resistance, \(R~\left[\Omega~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(R~\left[\Omega\right]\). The resistance at the given temperature and current.

Return type:

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

compute_joule_heating(conductor_temperature, current)[source]#

Compute the Joule heating, \(P_J~\left[\text{W}~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_J~\left[\text{W}~\text{m}^{-1}\right]\). The Joule heating.

Return type:

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

compute_solar_heating(conductor_temperature, current)[source]#

Compute the solar heating, \(P_S~\left[\text{W}~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_s~\left[\text{W}~\text{m}^{-1}\right]\). The solar heating.

Return type:

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

compute_convective_cooling(conductor_temperature, current)[source]#

Compute the convective cooling, \(P_c~\left[\text{W}~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_c~\left[\text{W}~\text{m}^{-1}\right]\). The convective cooling.

Return type:

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

compute_radiative_cooling(conductor_temperature, current)[source]#

Compute the radiative cooling, \(P_r~\left[\text{W}~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_r~\left[\text{W}~\text{m}^{-1}\right]\). The radiative cooling heating.

Return type:

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

compute_temperature_gradient(conductor_temperature, current)[source]#

Estimate the difference between the core temperature and the surface temperature.

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

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

Return type:

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

compute_conductor_temperature(current, min_temperature=-30, max_temperature=150, tolerance=0.5)#

Use the bisection method to compute the steady state conductor temperature.

Parameters:
  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I_\text{max}~\left[\text{A}\right]\). The current flowing through the conductor. NOTE that the current is the total current for all conductors in the span. When computing the temperature, the current is divided by the number of conductors.

  • min_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{min}~\left[^\circ\text{C}\right]\). Lower bound for the numerical scheme for computing the temperature

  • max_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{max}~\left[^\circ\text{C}\right]\). Upper bound for the numerical scheme for computing the temperature

  • tolerance (float) – \(\Delta T~\left[^\circ\text{C}\right]\). The numerical accuracy of the temperature. The bisection iterations will stop once the numerical temperature uncertainty is below \(\Delta T\). The bisection method will run for \(\left\lceil\frac{T_\text{min} - T_\text{min}}{\Delta T}\right\rceil\) iterations.

Returns:

\(I~\left[\text{A}\right]\). The thermal rating.

Return type:

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

compute_heat_balance(conductor_temperature, current)#

Compute the conductor’s heat balance. Positive means heating and negative means cooling.

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_J + P_s - P_c - P_r~\left[\text{W}~\text{m}^{-1}\right]\). The heat balance.

Return type:

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

compute_info(conductor_temperature, current)#

Create a dictionary with the different heating and cooling effects.

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

A dictionary with the magnitude of the different heating and cooling effects.

Return type:

Dict[str, WattPerMeter]

compute_steady_state_ampacity(max_conductor_temperature, min_ampacity=0, max_ampacity=5000, tolerance=1.0)#

Use the bisection method to compute the steady-state thermal rating (ampacity).

Parameters:
  • max_conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{max}~\left[^\circ\text{C}\right]\). Maximum allowed conductor temperature

  • min_ampacity (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I_\text{min}~\left[\text{A}\right]\). Lower bound for the numerical scheme for computing the ampacity

  • max_ampacity (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I_\text{min}~\left[\text{A}\right]\). Upper bound for the numerical scheme for computing the ampacity

  • tolerance (float) – \(\Delta I~\left[\text{A}\right]\). The numerical accuracy of the ampacity. The bisection iterations will stop once the numerical ampacity uncertainty is below \(\Delta I\). The bisection method will run for \(\left\lceil\frac{I_\text{min} - I_\text{min}}{\Delta I}\right\rceil\) iterations.

Returns:

\(I~\left[\text{A}\right]\). The thermal rating.

Return type:

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

class linerate.model.IEEE738(span, weather, time, max_reynolds_number=50000)[source]#
compute_resistance(conductor_temperature, current)[source]#

Compute the conductor resistance, \(R~\left[\Omega~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(R~\left[\Omega\right]\). The resistance at the given temperature and current.

Return type:

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

compute_joule_heating(conductor_temperature, current)[source]#

Compute the Joule heating, \(P_J~\left[\text{W}~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_J~\left[\text{W}~\text{m}^{-1}\right]\). The Joule heating.

Return type:

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

compute_solar_heating(conductor_temperature, current)[source]#

Compute the solar heating, \(P_S~\left[\text{W}~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_s~\left[\text{W}~\text{m}^{-1}\right]\). The solar heating.

Return type:

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

compute_convective_cooling(conductor_temperature, current)[source]#

Compute the convective cooling, \(P_c~\left[\text{W}~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_c~\left[\text{W}~\text{m}^{-1}\right]\). The convective cooling.

Return type:

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

compute_radiative_cooling(conductor_temperature, current)[source]#

Compute the radiative cooling, \(P_r~\left[\text{W}~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_r~\left[\text{W}~\text{m}^{-1}\right]\). The radiative cooling heating.

Return type:

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

compute_conductor_temperature(current, min_temperature=-30, max_temperature=150, tolerance=0.5)#

Use the bisection method to compute the steady state conductor temperature.

Parameters:
  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I_\text{max}~\left[\text{A}\right]\). The current flowing through the conductor. NOTE that the current is the total current for all conductors in the span. When computing the temperature, the current is divided by the number of conductors.

  • min_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{min}~\left[^\circ\text{C}\right]\). Lower bound for the numerical scheme for computing the temperature

  • max_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{max}~\left[^\circ\text{C}\right]\). Upper bound for the numerical scheme for computing the temperature

  • tolerance (float) – \(\Delta T~\left[^\circ\text{C}\right]\). The numerical accuracy of the temperature. The bisection iterations will stop once the numerical temperature uncertainty is below \(\Delta T\). The bisection method will run for \(\left\lceil\frac{T_\text{min} - T_\text{min}}{\Delta T}\right\rceil\) iterations.

Returns:

\(I~\left[\text{A}\right]\). The thermal rating.

Return type:

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

compute_heat_balance(conductor_temperature, current)#

Compute the conductor’s heat balance. Positive means heating and negative means cooling.

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_J + P_s - P_c - P_r~\left[\text{W}~\text{m}^{-1}\right]\). The heat balance.

Return type:

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

compute_info(conductor_temperature, current)#

Create a dictionary with the different heating and cooling effects.

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

A dictionary with the magnitude of the different heating and cooling effects.

Return type:

Dict[str, WattPerMeter]

compute_steady_state_ampacity(max_conductor_temperature, min_ampacity=0, max_ampacity=5000, tolerance=1.0)#

Use the bisection method to compute the steady-state thermal rating (ampacity).

Parameters:
  • max_conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{max}~\left[^\circ\text{C}\right]\). Maximum allowed conductor temperature

  • min_ampacity (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I_\text{min}~\left[\text{A}\right]\). Lower bound for the numerical scheme for computing the ampacity

  • max_ampacity (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I_\text{min}~\left[\text{A}\right]\). Upper bound for the numerical scheme for computing the ampacity

  • tolerance (float) – \(\Delta I~\left[\text{A}\right]\). The numerical accuracy of the ampacity. The bisection iterations will stop once the numerical ampacity uncertainty is below \(\Delta I\). The bisection method will run for \(\left\lceil\frac{I_\text{min} - I_\text{min}}{\Delta I}\right\rceil\) iterations.

Returns:

\(I~\left[\text{A}\right]\). The thermal rating.

Return type:

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

class linerate.model.Cigre207(span, weather, time, include_diffuse_radiation=True, direct_radiation_factor=1.0)[source]#
compute_joule_heating(conductor_temperature, current)[source]#

Compute the Joule heating, \(P_J~\left[\text{W}~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_J~\left[\text{W}~\text{m}^{-1}\right]\). The Joule heating.

Return type:

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

compute_solar_heating(conductor_temperature, current)[source]#

Compute the solar heating, \(P_S~\left[\text{W}~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_s~\left[\text{W}~\text{m}^{-1}\right]\). The solar heating.

Return type:

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

compute_convective_cooling(conductor_temperature, current)[source]#

Compute the convective cooling, \(P_c~\left[\text{W}~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_c~\left[\text{W}~\text{m}^{-1}\right]\). The convective cooling.

Return type:

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

compute_radiative_cooling(conductor_temperature, current)[source]#

Compute the radiative cooling, \(P_r~\left[\text{W}~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_r~\left[\text{W}~\text{m}^{-1}\right]\). The radiative cooling heating.

Return type:

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

compute_resistance(conductor_temperature, current)[source]#

Compute the conductor resistance, \(R~\left[\Omega~\text{m}^{-1}\right]\).

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(R~\left[\Omega\right]\). The resistance at the given temperature and current.

Return type:

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

compute_conductor_temperature(current, min_temperature=-30, max_temperature=150, tolerance=0.5)#

Use the bisection method to compute the steady state conductor temperature.

Parameters:
  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I_\text{max}~\left[\text{A}\right]\). The current flowing through the conductor. NOTE that the current is the total current for all conductors in the span. When computing the temperature, the current is divided by the number of conductors.

  • min_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{min}~\left[^\circ\text{C}\right]\). Lower bound for the numerical scheme for computing the temperature

  • max_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{max}~\left[^\circ\text{C}\right]\). Upper bound for the numerical scheme for computing the temperature

  • tolerance (float) – \(\Delta T~\left[^\circ\text{C}\right]\). The numerical accuracy of the temperature. The bisection iterations will stop once the numerical temperature uncertainty is below \(\Delta T\). The bisection method will run for \(\left\lceil\frac{T_\text{min} - T_\text{min}}{\Delta T}\right\rceil\) iterations.

Returns:

\(I~\left[\text{A}\right]\). The thermal rating.

Return type:

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

compute_heat_balance(conductor_temperature, current)#

Compute the conductor’s heat balance. Positive means heating and negative means cooling.

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

\(P_J + P_s - P_c - P_r~\left[\text{W}~\text{m}^{-1}\right]\). The heat balance.

Return type:

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

compute_info(conductor_temperature, current)#

Create a dictionary with the different heating and cooling effects.

Parameters:
  • conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{av}~\left[^\circ\text{C}\right]\). The average conductor temperature.

  • current (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I~\left[\text{A}\right]\). The current.

Returns:

A dictionary with the magnitude of the different heating and cooling effects.

Return type:

Dict[str, WattPerMeter]

compute_steady_state_ampacity(max_conductor_temperature, min_ampacity=0, max_ampacity=5000, tolerance=1.0)#

Use the bisection method to compute the steady-state thermal rating (ampacity).

Parameters:
  • max_conductor_temperature (Annotated[float | float64 | ndarray[Any, dtype[float64]], '°C']) – \(T_\text{max}~\left[^\circ\text{C}\right]\). Maximum allowed conductor temperature

  • min_ampacity (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I_\text{min}~\left[\text{A}\right]\). Lower bound for the numerical scheme for computing the ampacity

  • max_ampacity (Annotated[float | float64 | ndarray[Any, dtype[float64]], 'A']) – \(I_\text{min}~\left[\text{A}\right]\). Upper bound for the numerical scheme for computing the ampacity

  • tolerance (float) – \(\Delta I~\left[\text{A}\right]\). The numerical accuracy of the ampacity. The bisection iterations will stop once the numerical ampacity uncertainty is below \(\Delta I\). The bisection method will run for \(\left\lceil\frac{I_\text{min} - I_\text{min}}{\Delta I}\right\rceil\) iterations.

Returns:

\(I~\left[\text{A}\right]\). The thermal rating.

Return type:

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