Library for computing line ampacity ratings for overhead lines
Project description
Overview
A package containing functionality to compute ampacity line ratings for overhead lines. Currently, the package only contains equations from CIGRE TB 601.
Installation
pip install linerate
Documentation
This library is split into four main parts:
- The
equations
module, which contains one pure function for each equation in CIGRE TB 601, - the
types
module, which contains datatypes for conductors, weather parameters and spans, - the
model
module, which contains a wrapper classCigre601
to easily compute the ampacity and conductor temperature based on aSpan
andWeather
instance, - and the
solver
module, which contains a vectorized bisection solver for estimating the steady state ampacity and temperature of a conductor.
A typical user of this software package will only use the types
and model
module,
and the model
module will then use functions from equations
and solver
to estimate the conductor temperature and ampacity. However, to understand the parameters, it may be useful to look at the functions
in the equations
module, as we have taken care to ensure that the argument names stay consistent.
Below, we see an example of how to compute the conductor temperature based on Example B on page 79-81 in CIGRE TB 601.
import numpy as np
import linerate
conductor = linerate.Conductor(
core_diameter=10.4e-3,
conductor_diameter=28.1e-3,
outer_layer_strand_diameter=2.2e-3,
emissivity=0.9,
solar_absorptivity=0.9,
temperature1=25,
temperature2=75,
resistance_at_temperature1=7.283e-5,
resistance_at_temperature2=8.688e-5,
aluminium_cross_section_area=float("nan"), # No core magnetisation loss
constant_magnetic_effect=1,
current_density_proportional_magnetic_effect=0,
max_magnetic_core_relative_resistance_increase=1,
)
start_tower = linerate.Tower(latitude=50 - 0.0045, longitude=0, altitude=500 - 88)
end_tower = linerate.Tower(latitude=50 + 0.0045, longitude=0, altitude=500 + 88)
span = linerate.Span(
conductor=conductor,
start_tower=start_tower,
end_tower=end_tower,
ground_albedo=0.15,
num_conductors=1,
)
weather = linerate.Weather(
air_temperature=20,
wind_direction=np.radians(80), # Conductor azimuth is 0, so angle of attack is 80
wind_speed=1.66,
clearness_ratio=0.5,
)
time_of_measurement = np.datetime64("2016-10-03 14:00")
max_conductor_temperature = 100
current_load = 1000
model = linerate.Cigre601(span, weather, time_of_measurement)
conductor_rating = model.compute_steady_state_ampacity(max_conductor_temperature)
print(f"The span has a steady-state ampacity rating of {conductor_rating:.0f} A if the maximum temperature is {max_conductor_temperature} °C")
conductor_temperature = model.compute_conductor_temperature(current_load)
print(f"The conductor has a temperature of {conductor_temperature:.0f} °C when operated at {current_load} A")
Transient state solver
There is currently no transient solver or short time thermal rating solver, but that is on the roadmap.
Development
Dependencies for the project are managed with poetry. To install all dependencies run:
poetry install
Remember that when developing a library it is not recommended to
commit the poetry.lock
file.
Generate docs
To generate docs locally:
- Install required dependencies with
poetry install --with docs
. - Generate docs with
poetry run make html
in thedocs
folder.
Release new version
Press the "Draft new release" button on the Releases page.
Choose or create an appropriate tag, e.g. 1.2.3
.
Press "Generate release notes" to generate release notes.
Edit Release notes if necessary and press "Publish release".
This causes the publish workflow to run, which publishes the package to PyPI and generates docs on Github pages.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file linerate-1.2.0.tar.gz
.
File metadata
- Download URL: linerate-1.2.0.tar.gz
- Upload date:
- Size: 28.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa0ab12a1e232c76b538e11b013854a9c2d8e1f9476d7e55873ff5d8510ea385 |
|
MD5 | 972c6ac31683cb84c206d0c6565fb7f0 |
|
BLAKE2b-256 | 84f6438575a236acbb940264e31db0fa1d8a3ddf0fa070d2f60aedb278b42ba1 |
File details
Details for the file linerate-1.2.0-py3-none-any.whl
.
File metadata
- Download URL: linerate-1.2.0-py3-none-any.whl
- Upload date:
- Size: 41.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc982e9b4aa2b99573a65e4ee37ec703fb9b205fea9089f88faf1100f613879f |
|
MD5 | 9f585ae7fe2320bcd7ec990744764877 |
|
BLAKE2b-256 | 039f8146a99051327b5edfbbc8560702fcd7bb78c7a9e16d4cd257f640c7e4fe |