AWESPA¶
Airborne Wind Energy System Performance Assessment Toolchain
A modular Python toolchain for assessing Airborne Wind Energy (AWE) system performance using wind profile clustering, power estimation models, and Annual Energy Production (AEP) calculation.
Getting Started¶
Overview¶
AWESPA provides a complete pipeline for AWE system performance analysis:
Wind Profile Clustering: Process ERA5 wind data to identify representative wind profiles
Power Estimation: Compute power curves using physics-based models (e.g., Luchsinger model)
AEP Calculation: Calculate Annual Energy Production, capacity factor, and cluster contributions
Project Structure¶
AWESPA/
├── config/ # Configuration files (YAML)
│ ├── wind_clustering_config.yml
│ └── meridional_case_1/ # Case-specific configurations
├── data/ # Input data (ERA5 wind data)
├── processed_data/ # Intermediate processed data
├── results/ # Output results and plots
├── scripts/ # Runnable analysis scripts
│ ├── run_wind_clustering.py
│ ├── run_luchsinger.py
│ ├── compare_power_models.py
│ └── meridional/ # Case study scripts
├── src/awespa/ # Main package source code
│ ├── wind/ # Wind modeling components
│ ├── power/ # Power estimation models
│ ├── pipeline/ # AEP calculation pipeline
│ └── vendor/ # External dependencies
├── tests/ # Test suite
└── docs/ # Documentation
Installation¶
Prerequisites¶
Python 3.8 or higher
pip package manager
Installation Instructions¶
Clone the repository:
git clone https://github.com/awegroup/AWESPA.git cd AWESPA
Create a virtual environment:
Linux or Mac:
python3 -m venv venv
Windows:
python -m venv venv
Activate the virtual environment:
Linux or Mac:
source venv/bin/activate
Windows (PowerShell):
.\venv\Scripts\Activate
Install the package:
For users:
pip install .
For developers:
pip install -e .[dev]
To deactivate the virtual environment:
deactivate
Usage¶
Quick Start¶
import awespa
# Access main components
from awespa import WindProfileClusteringModel, PowerEstimationModel, calculate_aep
# Or access modules directly
from awespa.wind import WindProfileClusteringModel
from awespa.power import LuchsingerPowerModel
from awespa.pipeline import calculate_aep
Running Analysis Scripts¶
Wind Profile Clustering:
python scripts/run_wind_clustering.py
Power Curve Generation:
python scripts/run_luchsinger.py
Full AEP Analysis (Case Study):
python scripts/meridional/full_aep_analysis_case_1.py
Complete Analysis Pipeline Example¶
from pathlib import Path
from awespa.wind.clustering import WindProfileClusteringModel
from awespa.power.luchsinger_power import LuchsingerPowerModel
from awespa.pipeline.aep import calculate_aep
# 1. Wind Clustering
wind_model = WindProfileClusteringModel()
wind_model.load_from_yaml(Path("config/wind_clustering_config.yml"))
wind_model.cluster(data_path=Path("data"), output_path=Path("results/wind_resource.yml"))
# 2. Power Curve Generation
power_model = LuchsingerPowerModel()
power_model.load_configuration(
system_path=Path("config/meridional_case_1/soft_kite_pumping_ground_gen_system.yml"),
simulation_settings_path=Path("config/meridional_case_1/Lucsinger_simulation_settings_config.yml")
)
power_model.compute_power_curves(output_path=Path("results/power_curves.yml"), plot=True)
# 3. AEP Calculation
aep_results = calculate_aep(
power_curve_path=Path("results/power_curves.yml"),
wind_resource_path=Path("results/wind_resource.yml"),
output_path=Path("results/aep_results.yml"),
plot=True
)
print(f"Annual Energy Production: {aep_results['aep_kwh']:.2f} kWh")
Testing¶
Run tests using pytest:
pytest
Run with coverage:
pytest --cov=awespa
Contributing¶
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
See the Developer Guide for detailed development guidelines.
Resources¶
License¶
MIT License
Copyright (c) 2024 Airborne Wind Energy Research Group, TU Delft