Netnyahoo
Real Chromium for the Mac, free and open source: Arc's sidebar and Dia's polish, with no account. Immune to ads, trackers and prosecution.
WAsP resource study and a home-built Python wake model, validated against WAsP.
OtherPythonGitHub @ZaydHouachmiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Wind farm annual energy production in Streamlit: Weibull wind resource, Jensen and Ainslie wake models, six-factor loss cascade. Built at Greenard Consulting, validated against WAsP.
Loading the full README.
Read the full README ↗Case study with figures: zaydhouachmi.github.io/work/wind-farm.html · Try the wake model in your browser
A Streamlit application that estimates the annual energy production of a wind farm from wind measurements, terrain roughness and a turbine layout. Built during an internship at Greenard as a lightweight, open alternative to commercial tools such as WAsP.
z0.Fed the 12-sector Weibull table from the WAsP "Waspdale" example site, the tool recomputes a 4.90 m/s mean wind speed, the same value WAsP reports. A 6-turbine, 1 MW farm (54 m rotor, 50 m hub, 5 rotor diameters apart, Jensen wakes) then shows why height and terrain correction matter:
| Wind climate | Mean speed | Gross energy | Net energy | Capacity factor |
|---|---|---|---|---|
| Raw station data (10 m) | 4.90 m/s | 3,679 MWh/yr | 2,663 MWh/yr | 5.1 % |
| Corrected to the turbine site (50 m) | 7.88 m/s | 16,186 MWh/yr | 9,264 MWh/yr | 17.6 % |
The second row puts all the wind in one direction (270°), which is the worst case for wakes: up to 62 % loss on the third turbine in a row. A real wind rose spreads the wakes out. tests/test_model.py checks that behaviour.
pip install -r requirements.txt
streamlit run app.py
Then open the URL Streamlit prints (usually http://localhost:8501).
Example CSVs are included so you can see the expected columns:
| File | Columns |
|---|---|
wind_rose_example.csv | direction_deg, frequency_pct, weibull_k, weibull_a |
wind_measurements_example.csv | direction_deg, speed_ms (one row per reading) |
power_curve_example.csv | wind_speed_ms, power_kw |
layout_example.csv | id, x, y (metres) |
roughness_example.csv | z0 |
| Module | Role |
|---|---|
app.py | Streamlit interface — all inputs and results |
wind_resource.py | Wind rose, Weibull fitting, vertical extrapolation |
power_curve.py | Parametric and tabulated turbine power curves |
wake_model.py | Wake deficit models |
energy_yield.py | Gross/net energy and the six-factor loss cascade |
turbine.py, wind_farm.py | Turbine and farm data structures |
topography.py | Terrain roughness handling |
visualization.py | Layout and wind rose plots |
demo_*.py | Runnable examples that produce the images above |
tests/ | pytest suite for the model |
PHASE_2_AINSLIE_DERIVATION.md documents the maths behind the wake model, and
CHANGELOG-v3.md records what changed between versions (in French).
pip install pytest
python -m pytest
22 tests in tests/test_model.py check the model against hand calculations: the Jensen wake formula, the power curve, Weibull statistics, log-law height scaling, the loss cascade, wind-aligned geometry, and the farm energy table. demo_smoke.py is a quick script that compares the three wake models on one layout.
Ct is fixed (0.8 by default) rather than varying
with wind speed.