Thermal Engine User Guide
Overview
The ThermalEngine is a wrapper around the thermohl library that enables comprehensive cable thermal modeling. It allows you to compute cable temperatures under various environmental and operational conditions, supporting both steady-state and transient thermal analysis.
Key Concepts
What is the ThermalEngine?
The ThermalEngine computes the temperature distribution in power transmission cables based on:
- Cable properties (resistance, thermal conductivity, dimensions)
- Operational parameters (electrical current)
- Environmental conditions (ambient temperature, wind speed, wind angle, solar radiation)
- Geographic location and time (latitude, longitude, altitude, datetime)
Thermal Calculations Supported
- Steady-State Temperature: Calculates cable temperature when conditions are constant
- Steady-State Intensity: Calculates maximum allowable current for a target temperature
- Transient Temperature: Calculates temperature variations over time with changing conditions
- Solar radiations: Calculates diffuse and beam radiations (and their sum) according to GPS coordinates, datetime and nebulosity.
Installation and Basic Setup
Initialization
1 2 3 4 5 | |
Setting Input Parameters
Use the set() method to configure all input parameters. All inputs must be numpy arrays:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Parameters Reference
| Parameter | Type | Unit | Description |
|---|---|---|---|
cable_array |
CableArray | - | Cable properties (diameter, resistance, thermal conductivity, etc.) |
latitude |
np.ndarray | degrees | Geographic latitude |
longitude |
np.ndarray | degrees | Geographic longitude |
altitude |
np.ndarray | meters | Altitude above sea level |
azimuth |
np.ndarray | degrees | Cable direction (0°=North, 90°=East, 180°=South, 270°=West) |
datetime_utc |
np.ndarray | - | Datetime (np.datetime64) in UTC. Year is indifferent, feel free to set an arbitrary value. |
intensity |
np.ndarray | Amperes | Electrical current through the cable |
ambient_temp |
np.ndarray | °C | Ambient air temperature |
wind_speed |
np.ndarray | m/s | Wind speed magnitude |
wind_angle |
np.ndarray | degrees | Wind direction (0°=North, 90°=East) |
nebulosity |
np.ndarray | 0-8 | Nebulosity level: from 0 (not cloudy at all) to 8 (very cloudy) |
solar_irradiance |
np.ndarray | None | W/m² | Solar radiation (optional, auto-calculated if None) |
Features and Usage
1. Single Location/Condition
Calculate thermal conditions for a single set of conditions (using single-element arrays):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
2. Array Inputs (Multiple Locations/Conditions)
Process multiple conditions simultaneously. All arrays must have the same length:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
3. Steady-State Temperature Calculation
Calculate the cable temperature at equilibrium for given operating conditions:
1 2 3 4 5 6 7 8 9 | |
Output columns:
average_temperature: Average cable temperaturesurface_temperature: Surface temperaturecore_temperature: Core temperature (highest temperature in the conductor)joule_powersolar_powerconvection_powerradiation_powerprecipitation_power
4. Steady-State Intensity Calculation
Calculate the maximum allowable current to maintain a target temperature:
1 2 3 4 5 6 7 8 9 10 11 12 | |
Use case: Determine the maximum current a line can carry while maintaining safe temperature limits.
5. Transient Temperature Calculation
Simulate temperature evolution over time with time-varying conditions:
1 2 3 4 | |
Output format:
time: Time stepid: Cable/condition IDaverage_temperature: Average temperature at that timesurface_temperature: Surface temperature at that timecore_temperature: Core temperature at that time
Customize the forecast:
1 2 3 4 5 6 7 8 9 10 | |
6. Dynamic Parameter Updates
Modify parameters after initialization without resetting the entire engine. Note: All values must be numpy arrays with the same length:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | |
7. Wind-Cable Angle Calculation
Automatically compute the angle between wind direction and cable orientation:
1 2 3 | |
This is important because wind cooling effectiveness depends on the wind direction relative to the cable.
8. String Representations
Inspect engine configuration using string representations:
1 2 3 4 5 6 7 8 9 10 | |
9. Solar radiations
Compute diffuse radiation, beam radiation and their sum:
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Output format:
diffuse_radiationbeam_radiationdiffuse_plus_beam_radiation
All these fields are in W/m^2.
Technical Notes
Default Parameters
- Target Temperature: 65°C (can be modified via
thermal_engine.target_temperature) - Power Model: RTE (Réseau de Transport d'Électricité)
- Heat Equation: 3-Temperature model (core, surface, average)
- Solar Irradiance: Automatically calculated if not provided
Temperature Output Interpretation
- core_temperature: Highest temperature in the conductor (most critical)
- surface_temperature: Temperature at cable surface
- average_temperature: Average temperature across the conductor
Typically: core_temperature > average_temperature > surface_temperature
Wind Angle Conventions
- 0° = Wind from North
- 90° = Wind from East
- 180° = Wind from South
- 270° = Wind from West
Cable Azimuth Conventions
- 0° = Cable oriented North-South (wind blows perpendicular = maximum cooling)
- 90° = Cable oriented East-West
- The most effective cooling occurs when wind is perpendicular to the cable (90° wind-cable angle)
Limitations and Future Enhancements
Currently implemented: - Steady-state temperature and intensity calculations - Transient temperature analysis - Multi-location/condition analysis - Automatic solar irradiance calculation
Not yet implemented: - Normal wind mode - Custom thermal parameters per cable - Integration with cable catalogs for direct lookup - Visualization tools
See the code comments for planned improvements.