WaiMAP
MethodResultsIn your reportsData TrustCapabilities
Every WaiMAP engine side by side with a named reference: open tools run on exactly the same inputs, analytic and hand solutions, standard tables, and published or commercial cases (described, not named). Values, differences and status come straight from the runs — nothing is typed in by hand.
Download the PDF report Machine-readable (JSON)
NREL PySAM Pvwattsv8 7.1.1.post1pvlib ModelChain 0.16.1pvlib infinite_sheds 0.16.1pvlib.inverter.sandia 0.16.1NREL PySAM Pvsandiainv 7.1.1.post1pvlib.tracking.singleaxis 0.16.1pvlib.shading.shaded_fraction1d 0.16.1PyWake 2.6.20PyWake NOJ / Jensen 2.6.20PyWake Bastankhah & Porté-Agel Gaussian 2.6.20PyWake BastankhahGaussianDeficit 2.6.20PyPSA 1.2.4pandapower 3.5.5PyPSA AC power flow 1.2.4pandapower IEC 60909 3.5.5linerate IEEE738 model 5.0.0WNTR / EPANET 2.2 toolkit 1.5.0PySWMM / EPA SWMM 5 2.2.0OR-Tools SimpleMinCostFlow 9.15.6755CoolProp 8.0.0GDAL 3.12
Each entry compares a WaiMAP engine with a named reference: an open tool run on exactly the same inputs, an analytic or hand solution, standard tables, or a published / commercial case (anonymised). Bands: green ≤ 3 %, amber ≤ 7 %, red above, relative to the reference, unless the entry states its own tolerance (abs = in the metric's unit). 'not run' means the reference tool was not available; no number is shown in its place.
| Engine | Test case | Metric | Reference | WaiMAP | Reference value | Difference | Status | Source · date |
|---|---|---|---|---|---|---|---|---|
| Renewables & storage | ||||||||
| Solar PV yield (hourly simulator) | 10 MWp fixed tilt 30° south, GCR 0.40, DC/AC 1.25, monofacial — deterministic typical year (clear-sky shape × 0.8, 37.1° N); same hourly data, plant and WaiMAP loss budget (6.97 %) | Annual AC energy | NREL PySAM Pvwattsv8 7.1.1.post1 open tool |
17,551 MWh | 17,928 MWh | −2.10 % | Green WaiMAP models horizon, row shading, Faiman temperature, ASHRAE IAM and its own inverter curve; differences of a few per cent are expected. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV yield (hourly simulator) | 10 MWp fixed tilt 30° south, GCR 0.40, DC/AC 1.25, monofacial — deterministic typical year (clear-sky shape × 0.8, 37.1° N); same hourly data, plant and WaiMAP loss budget (6.97 %) | Specific yield | NREL PySAM Pvwattsv8 7.1.1.post1 open tool |
1,755 kWh/kWp | 1,793 kWh/kWp | −2.10 % | Green WaiMAP models horizon, row shading, Faiman temperature, ASHRAE IAM and its own inverter curve; differences of a few per cent are expected. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV yield (hourly simulator) | 10 MWp fixed tilt 30° south, GCR 0.40, DC/AC 1.25, monofacial — deterministic typical year (clear-sky shape × 0.8, 37.1° N); same hourly data, plant and WaiMAP loss budget (6.97 %) | Performance ratio | NREL PySAM Pvwattsv8 7.1.1.post1 open tool |
84.18 % | 87.40 % | −3.68 % | Amber WaiMAP models horizon, row shading, Faiman temperature, ASHRAE IAM and its own inverter curve; differences of a few per cent are expected. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV yield (hourly simulator) | 10 MWp fixed tilt 30° south, GCR 0.40, DC/AC 1.25, monofacial — deterministic typical year (clear-sky shape × 0.8, 37.1° N); same hourly data, plant and WaiMAP loss budget (6.97 %) | Annual AC energy | pvlib ModelChain (Perez, SAPM, PVWatts losses / inverter) 0.16.1 open tool |
17,551 MWh | 18,141 MWh | −3.25 % | Amber WaiMAP models horizon, row shading, Faiman temperature, ASHRAE IAM and its own inverter curve; differences of a few per cent are expected. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV yield (hourly simulator) | 10 MWp fixed tilt 30° south, GCR 0.40, DC/AC 1.25, monofacial — deterministic typical year (clear-sky shape × 0.8, 37.1° N); same hourly data, plant and WaiMAP loss budget (6.97 %) | Specific yield | pvlib ModelChain (Perez, SAPM, PVWatts losses / inverter) 0.16.1 open tool |
1,755 kWh/kWp | 1,814 kWh/kWp | −3.25 % | Amber WaiMAP models horizon, row shading, Faiman temperature, ASHRAE IAM and its own inverter curve; differences of a few per cent are expected. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV yield (hourly simulator) | 10 MWp fixed tilt 30° south, GCR 0.40, DC/AC 1.25, monofacial — deterministic typical year (clear-sky shape × 0.8, 37.1° N); same hourly data, plant and WaiMAP loss budget (6.97 %) | Performance ratio | pvlib ModelChain (Perez, SAPM, PVWatts losses / inverter) 0.16.1 open tool |
84.18 % | 87.07 % | −3.32 % | Amber WaiMAP models horizon, row shading, Faiman temperature, ASHRAE IAM and its own inverter curve; differences of a few per cent are expected. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| PVWatts-method (JS) — WaiMAP's own re-implementation used as an offline second opinion | 10 MWp fixed tilt 30° south, GCR 0.40, DC/AC 1.25, monofacial — deterministic typical year (clear-sky shape × 0.8, 37.1° N) | Specific yield | pvlib ModelChain (PVWatts DC / losses / inverter) 0.16.1 open tool |
1,814 kWh/kWp | 1,814 kWh/kWp | +0.008 % | Green Implementation check of the in-browser PVWatts method (not an independent tool itself). |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV yield (hourly simulator) | 10 MWp one-axis tracker (N–S, ±60°, backtracking), GCR 0.35, DC/AC 1.25, monofacial — deterministic typical year (clear-sky shape × 0.8, 37.1° N); same hourly data, plant and WaiMAP loss budget (7.02 %) | Annual AC energy | NREL PySAM Pvwattsv8 7.1.1.post1 open tool |
21,308 MWh | 21,708 MWh | −1.84 % | Green WaiMAP models horizon, row shading, Faiman temperature, ASHRAE IAM and its own inverter curve; differences of a few per cent are expected. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV yield (hourly simulator) | 10 MWp one-axis tracker (N–S, ±60°, backtracking), GCR 0.35, DC/AC 1.25, monofacial — deterministic typical year (clear-sky shape × 0.8, 37.1° N); same hourly data, plant and WaiMAP loss budget (7.02 %) | Specific yield | NREL PySAM Pvwattsv8 7.1.1.post1 open tool |
2,131 kWh/kWp | 2,171 kWh/kWp | −1.84 % | Green WaiMAP models horizon, row shading, Faiman temperature, ASHRAE IAM and its own inverter curve; differences of a few per cent are expected. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV yield (hourly simulator) | 10 MWp one-axis tracker (N–S, ±60°, backtracking), GCR 0.35, DC/AC 1.25, monofacial — deterministic typical year (clear-sky shape × 0.8, 37.1° N); same hourly data, plant and WaiMAP loss budget (7.02 %) | Performance ratio | NREL PySAM Pvwattsv8 7.1.1.post1 open tool |
84.89 % | 87.85 % | −3.37 % | Amber WaiMAP models horizon, row shading, Faiman temperature, ASHRAE IAM and its own inverter curve; differences of a few per cent are expected. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV yield (hourly simulator) | 10 MWp one-axis tracker (N–S, ±60°, backtracking), GCR 0.35, DC/AC 1.25, monofacial — deterministic typical year (clear-sky shape × 0.8, 37.1° N); same hourly data, plant and WaiMAP loss budget (7.02 %) | Annual AC energy | pvlib ModelChain (Perez, SAPM, PVWatts losses / inverter) 0.16.1 open tool |
21,308 MWh | 21,938 MWh | −2.87 % | Green WaiMAP models horizon, row shading, Faiman temperature, ASHRAE IAM and its own inverter curve; differences of a few per cent are expected. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV yield (hourly simulator) | 10 MWp one-axis tracker (N–S, ±60°, backtracking), GCR 0.35, DC/AC 1.25, monofacial — deterministic typical year (clear-sky shape × 0.8, 37.1° N); same hourly data, plant and WaiMAP loss budget (7.02 %) | Specific yield | pvlib ModelChain (Perez, SAPM, PVWatts losses / inverter) 0.16.1 open tool |
2,131 kWh/kWp | 2,194 kWh/kWp | −2.87 % | Green WaiMAP models horizon, row shading, Faiman temperature, ASHRAE IAM and its own inverter curve; differences of a few per cent are expected. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV yield (hourly simulator) | 10 MWp one-axis tracker (N–S, ±60°, backtracking), GCR 0.35, DC/AC 1.25, monofacial — deterministic typical year (clear-sky shape × 0.8, 37.1° N); same hourly data, plant and WaiMAP loss budget (7.02 %) | Performance ratio | pvlib ModelChain (Perez, SAPM, PVWatts losses / inverter) 0.16.1 open tool |
84.89 % | 87.44 % | −2.92 % | Green WaiMAP models horizon, row shading, Faiman temperature, ASHRAE IAM and its own inverter curve; differences of a few per cent are expected. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| PVWatts-method (JS) — WaiMAP's own re-implementation used as an offline second opinion | 10 MWp one-axis tracker (N–S, ±60°, backtracking), GCR 0.35, DC/AC 1.25, monofacial — deterministic typical year (clear-sky shape × 0.8, 37.1° N) | Specific yield | pvlib ModelChain (PVWatts DC / losses / inverter) 0.16.1 open tool |
2,194 kWh/kWp | 2,194 kWh/kWp | +0.014 % | Green Implementation check of the in-browser PVWatts method (not an independent tool itself). |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV — bifacial rear side (2D infinite sheds, JS) | 10 MWp one-axis tracker, bifacial (bifaciality 0.8), GCR 0.35, row-centre height 2 m, on a 10 % slope falling east (cross-axis tilt -5.71°); auto-stringing 27 modules × 638 strings, 22 generic 350 kW string inverters (Sandia model), DC/AC 1.30 — deterministic typical year (clear-sky shape × 0.8, 37.1° N) | Rear-side gain (rear × bifaciality × structure / front) | pvlib infinite_sheds (Hay-Davies) 0.16.1 open tool |
5.761 % | 5.757 % | +0.069 % | Green Same view-factor model and geometry; differences from the sun position (NOAA vs SPA) and tracker angles near sunrise / sunset. |
v106 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV — bifacial rear side (2D infinite sheds, JS) | 10 MWp one-axis tracker, bifacial (bifaciality 0.8), GCR 0.35, row-centre height 2 m, on a 10 % slope falling east (cross-axis tilt -5.71°); auto-stringing 27 modules × 638 strings, 22 generic 350 kW string inverters (Sandia model), DC/AC 1.30 — deterministic typical year (clear-sky shape × 0.8, 37.1° N) | Annual rear-side irradiation | pvlib infinite_sheds (Hay-Davies) 0.16.1 open tool |
177.6 kWh/m² | 177.6 kWh/m² | −0.019 % | Green | v106 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV — inverter clipping (Sandia model) | 10 MWp one-axis tracker, bifacial (bifaciality 0.8), GCR 0.35, row-centre height 2 m, on a 10 % slope falling east (cross-axis tilt -5.71°); auto-stringing 27 modules × 638 strings, 22 generic 350 kW string inverters (Sandia model), DC/AC 1.30 — deterministic typical year (clear-sky shape × 0.8, 37.1° N) | Inverter clipping loss (same hourly DC input) | pvlib.inverter.sandia 0.16.1 open tool |
31.11 MWh | 31.11 MWh | +0.000 % | Green WaiMAP's hourly DC power and voltage through the same Sandia parameters: an implementation check of the inverter model and the clipping booking. |
v106 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV — inverter clipping (Sandia model) | 10 MWp one-axis tracker, bifacial (bifaciality 0.8), GCR 0.35, row-centre height 2 m, on a 10 % slope falling east (cross-axis tilt -5.71°); auto-stringing 27 modules × 638 strings, 22 generic 350 kW string inverters (Sandia model), DC/AC 1.30 — deterministic typical year (clear-sky shape × 0.8, 37.1° N) | Inverter clipping loss (same hourly DC input) | NREL PySAM Pvsandiainv 7.1.1.post1 open tool |
31.11 MWh | 31.11 MWh | +0.000 % | Green WaiMAP's hourly DC power and voltage through the same Sandia parameters: an implementation check of the inverter model and the clipping booking. |
v106 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV — performance ratio (IEC 61724-1) | 10 MWp one-axis tracker, bifacial (bifaciality 0.8), GCR 0.35, row-centre height 2 m, on a 10 % slope falling east (cross-axis tilt -5.71°); auto-stringing 27 modules × 638 strings, 22 generic 350 kW string inverters (Sandia model), DC/AC 1.30 — deterministic typical year (clear-sky shape × 0.8, 37.1° N) | Temperature-corrected PR (25 °C) | pvlib ModelChain (Perez, SAPM cell temperature, PVWatts DC) 0.16.1 open tool |
93.59 % | 90.93 % | +2.656 % | Amber Each tool uses its own plane-of-array irradiance, cell-temperature model and loss chain; tolerance in percentage points. |
v106 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV — slope-aware backtracking (Anderson & Mikofski 2020) | 10 MWp one-axis tracker, bifacial (bifaciality 0.8), GCR 0.35, row-centre height 2 m, on a 10 % slope falling east (cross-axis tilt -5.71°); auto-stringing 27 modules × 638 strings, 22 generic 350 kW string inverters (Sandia model), DC/AC 1.30 — deterministic typical year (clear-sky shape × 0.8, 37.1° N) | Mean tracker rotation |θ| over the daylight hours (same sun angles) | pvlib.tracking.singleaxis (cross_axis_tilt) 0.16.1 open tool |
32.75 ° | 32.75 ° | +0.000000 ° | Green Largest hourly difference 0.00024° over 4367 daylight hours. |
v106 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV — row-to-row shading on a slope | 10 MWp one-axis tracker, bifacial (bifaciality 0.8), GCR 0.35, row-centre height 2 m, on a 10 % slope falling east (cross-axis tilt -5.71°); auto-stringing 27 modules × 638 strings, 22 generic 350 kW string inverters (Sandia model), DC/AC 1.30 — deterministic typical year (clear-sky shape × 0.8, 37.1° N) | Row-to-row shaded fraction, annual sum of hourly values | pvlib.shading.shaded_fraction1d 0.16.1 open tool |
142.0 h | 142.0 h | +0.000000 h | Green Backtracking avoids row shading while the sun is above the slope plane; the remaining hours are low sun below the terrain plane. |
v106 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Solar PV — loss diagram (PVsyst order) | 10 MWp one-axis tracker, bifacial (bifaciality 0.8), GCR 0.35, row-centre height 2 m, on a 10 % slope falling east (cross-axis tilt -5.71°); auto-stringing 27 modules × 638 strings, 22 generic 350 kW string inverters (Sandia model), DC/AC 1.30 — deterministic typical year (clear-sky shape × 0.8, 37.1° N) | Energy injected: GHI × kWp + Σ loss-diagram steps | Energy from the simulator's own hourly chain (identity check) analytic solution |
22,531 MWh | 22,531 MWh | +0.000 % | Green Irradiance steps as STC-equivalent energy (kWh/m² × kWp); every step closes to the injected energy. |
unit test tests/unit/pvdesign.test.js (re-computed) · 2026-10-13 |
| Solar PV — automatic stringing (IEC 62548-1 / NEC 690.7) | Module Voc 49.5 V, βVoc −0.25 %/K, record low −10 °C, 1500 V system | Maximum modules per string | floor(1500 / (49.5 × (1 + (−0.0025)(−10 − 25)))) hand calculation |
27.00 modules | 27.00 modules | +0.000000 modules | Green | unit test tests/unit/pvdesign.test.js (re-computed) · 2026-10-13 |
| Solar PV — row-to-row shading on a slope | Fixed rows 4.6 m at 30°, pitch 11.5 m, sun due south at 10° elevation (flat ground) | Shaded fraction of the row width | 1 − (pitch / width) · sin e / sin(e + β) hand calculation |
0.3246 – | 0.3246 – | +0.000000 – | Green | unit test tests/unit/pvdesign.test.js (re-computed) · 2026-10-13 |
| Wind energy yield (hourly, Jensen wakes) | 5 × 6.2 MW, 162 m rotor, hub 125 m (synthetic power / thrust curves), 7D × 4D grid; deterministic hourly series (Weibull k 2, 8.1 m/s at 100 m, 40 % of hours from 200°) | Gross AEP | PyWake 2.6.20 open tool |
119,922 MWh | 119,922 MWh | −0.000 % | Green Same power curve and hourly speeds. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Wind energy yield (hourly, Jensen wakes) | 5 × 6.2 MW, 162 m rotor, hub 125 m (synthetic power / thrust curves), 7D × 4D grid; deterministic hourly series (Weibull k 2, 8.1 m/s at 100 m, 40 % of hours from 200°) | Wake loss | PyWake NOJ / Jensen (same k 0.075, same Ct) 2.6.20 open tool |
3.111 % | 3.108 % | +0.002974 % | Green Same Jensen model, k and Ct; WaiMAP rounds each hourly direction to 1° and interpolates speed between whole m/s (v105: wakes per hourly direction instead of per 30° sector centre). |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Wind energy yield (hourly, Jensen wakes) | 5 × 6.2 MW, 162 m rotor, hub 125 m (synthetic power / thrust curves), 7D × 4D grid; deterministic hourly series (Weibull k 2, 8.1 m/s at 100 m, 40 % of hours from 200°) | Net AEP (after wakes and WaiMAP's other losses) | PyWake NOJ / Jensen 2.6.20 open tool |
106,075 MWh | 106,079 MWh | −0.004 % | Green Non-wake losses applied identically. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Wind energy yield (hourly, Jensen wakes) | 5 × 6.2 MW, 162 m rotor, hub 125 m (synthetic power / thrust curves), 7D × 4D grid; deterministic hourly series (Weibull k 2, 8.1 m/s at 100 m, 40 % of hours from 200°) | Wake loss — wake-model sensitivity | PyWake Bastankhah & Porté-Agel Gaussian 2.6.20 open tool |
3.111 % | 3.266 % | −0.1550 % | Green Different wake model (sensitivity), not an error. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Wind energy yield (hourly, Gaussian wakes) | 5 × 6.2 MW, 162 m rotor, hub 125 m, 7D × 4D grid — Bastankhah Gaussian (k* 0.04205 from TI 0.10, sum of squares, CGI-4 rotor average); deterministic hourly series (Weibull k 2, 8.1 m/s at 100 m, 40 % of hours from 200°) | Wake loss — Gaussian model, same settings | PyWake BastankhahGaussianDeficit (same settings) 2.6.20 open tool |
2.713 % | 2.702 % | +0.0106 % | Green Same model and settings (k* from TI, sum-of-squares superposition, CGI-4 rotor average, Ct → a by 1D momentum, free-stream reference speed, sources solved downstream); WaiMAP tabulates the farm efficiency per 1° and whole m/s, PyWake evaluates every hour. |
v108 cross-check run (tools/validation_run.py, PyWake on the calculation server) · 2026-10-13 |
| Wind energy yield (hourly, Gaussian wakes) | 5 × 6.2 MW, 162 m rotor, hub 125 m, 7D × 4D grid — Bastankhah Gaussian (k* 0.04205 from TI 0.10, sum of squares, CGI-4 rotor average); deterministic hourly series (Weibull k 2, 8.1 m/s at 100 m, 40 % of hours from 200°) | Net AEP — Gaussian model, same settings | PyWake BastankhahGaussianDeficit (same settings) 2.6.20 open tool |
106,511 MWh | 106,522 MWh | −0.011 % | Green Wake-reduced energy × WaiMAP's other losses, applied to both. |
v108 cross-check run (tools/validation_run.py, PyWake on the calculation server) · 2026-10-13 |
| Wind energy yield (hourly, Gaussian wakes) | 20 × 6.2 MW, 162 m rotor, hub 125 m, 5 × 4 grid at 7D × 4D — Bastankhah Gaussian (k* 0.04205 from TI 0.10, sum of squares, CGI-4 rotor average); deterministic hourly series (Weibull k 2, 8.1 m/s at 100 m, 40 % of hours from 200°) | Wake loss — Gaussian model, same settings | PyWake BastankhahGaussianDeficit (same settings) 2.6.20 open tool |
5.381 % | 5.365 % | +0.0157 % | Green Same model and settings (k* from TI, sum-of-squares superposition, CGI-4 rotor average, Ct → a by 1D momentum, free-stream reference speed, sources solved downstream); WaiMAP tabulates the farm efficiency per 1° and whole m/s, PyWake evaluates every hour. |
v108 cross-check run (tools/validation_run.py, PyWake on the calculation server) · 2026-10-13 |
| Wind energy yield (hourly, Gaussian wakes) | 20 × 6.2 MW, 162 m rotor, hub 125 m, 5 × 4 grid at 7D × 4D — Bastankhah Gaussian (k* 0.04205 from TI 0.10, sum of squares, CGI-4 rotor average); deterministic hourly series (Weibull k 2, 8.1 m/s at 100 m, 40 % of hours from 200°) | Net AEP — Gaussian model, same settings | PyWake BastankhahGaussianDeficit (same settings) 2.6.20 open tool |
414,359 MWh | 414,426 MWh | −0.016 % | Green Wake-reduced energy × WaiMAP's other losses, applied to both. |
v108 cross-check run (tools/validation_run.py, PyWake on the calculation server) · 2026-10-13 |
| Wind farm layout optimisation (Gaussian wakes in the loop) | Optimised layout: 10 × 6.2 MW in a 1,272 ha polygon with a dwelling (600 m) and a road (250 m) buffer, 5D × 3D spacing ellipse, Bastankhah Gaussian | Wake loss — Gaussian model, same settings | PyWake BastankhahGaussianDeficit (same settings) 2.6.20 open tool |
1.447 % | 1.441 % | +0.005502 % | Green Same model and settings (k* from TI, sum-of-squares superposition, CGI-4 rotor average, Ct → a by 1D momentum, free-stream reference speed, sources solved downstream); WaiMAP tabulates the farm efficiency per 1° and whole m/s, PyWake evaluates every hour. Initial grid 214490 MWh / wake 2.04 % → optimised; LCOE-optimal count 16 of 27 positions. |
v108 cross-check run (tools/validation_run.py, PyWake on the calculation server) · 2026-10-13 |
| Wind farm layout optimisation (Gaussian wakes in the loop) | Optimised layout: 10 × 6.2 MW in a 1,272 ha polygon with a dwelling (600 m) and a road (250 m) buffer, 5D × 3D spacing ellipse, Bastankhah Gaussian | Net AEP — Gaussian model, same settings | PyWake BastankhahGaussianDeficit (same settings) 2.6.20 open tool |
215,794 MWh | 215,807 MWh | −0.006 % | Green Wake-reduced energy × WaiMAP's other losses, applied to both. |
v108 cross-check run (tools/validation_run.py, PyWake on the calculation server) · 2026-10-13 |
| Wind MCP (long-term correction) | Synthetic 11-year hourly reference; 1-year mast at 60 / 100 m with site = 1.1 · reference + 0.4 m/s + N(0, 0.6) and shear α = 0.2 (known answer) | Regression slope recovered | Known relationship of the synthetic case analytic solution |
1.101 – | 1.100 – | +0.001057 – | Green R² 0.947; offset 0.392 m/s (true 0.4). |
unit test tests/unit/windmcp.test.js (re-computed) · 2026-10-13 |
| Wind MCP (long-term correction) | Synthetic 11-year hourly reference; 1-year mast at 60 / 100 m with site = 1.1 · reference + 0.4 m/s + N(0, 0.6) and shear α = 0.2 (known answer) | Long-term mean wind speed at 100 m | 1.1 × reference long-term mean + 0.4 analytic solution |
8.126 m/s | 8.128 m/s | −0.026 % | Green Method chosen: vr. |
unit test tests/unit/windmcp.test.js (re-computed) · 2026-10-13 |
| Wind MCP (long-term correction) | Synthetic 11-year hourly reference; 1-year mast at 60 / 100 m with site = 1.1 · reference + 0.4 m/s + N(0, 0.6) and shear α = 0.2 (known answer) | Standard deviation of the long-term series (variance ratio) | √(1.1² σ_ref² + 0.6²) analytic solution |
2.672 m/s | 2.667 m/s | +0.22 % | Green The variance ratio preserves the measured variance; plain regression would shrink it. |
unit test tests/unit/windmcp.test.js (re-computed) · 2026-10-13 |
| Wind shear from mast heights | Synthetic 11-year hourly reference; 1-year mast at 60 / 100 m with site = 1.1 · reference + 0.4 m/s + N(0, 0.6) and shear α = 0.2 (known answer) | Power-law exponent α (60 / 100 m) | Shear imposed on the synthetic mast analytic solution |
0.2000 – | 0.2000 – | +0.000001 – | Green | unit test tests/unit/windmcp.test.js (re-computed) · 2026-10-13 |
| Battery dispatch (dynamic programme on state of charge) | 100 MW / 200 MWh LFP (RTE 87 %), synthetic day-ahead price year (seed 17), throughput cost 6 per MWh, 365 cycles / year | Arbitrage margin after throughput cost (perfect foresight) | PyPSA (linopy + HiGHS) — linear-programme optimum 1.2.4 open tool |
6,254,882 EUR / year | 6,276,665 EUR / year | −0.35 % | Green The LP optimum is an upper bound; WaiMAP's discrete DP must be at or below it. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Battery dispatch (dynamic programme on state of charge) | 100 MW / 200 MWh LFP (RTE 87 %), synthetic day-ahead price year (seed 17), throughput cost 6 per MWh, 365 cycles / year | Net arbitrage revenue (sales − charging) | PyPSA (linopy + HiGHS) 1.2.4 open tool |
6,660,623 EUR / year | 6,685,204 EUR / year | −0.37 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Battery dispatch (dynamic programme on state of charge) | 100 MW / 200 MWh LFP (RTE 87 %), synthetic day-ahead price year (seed 17), throughput cost 6 per MWh, 365 cycles / year | Full-equivalent cycles | PyPSA (linopy + HiGHS) 1.2.4 open tool |
362.5 cycles / year | 365.0 cycles / year | −0.68 % | Green Cycle cap 365: WaiMAP meets it by raising the throughput cost (bisection), the LP as a constraint. |
v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Battery dispatch (dynamic programme on state of charge) | Two-price day (12 h at 50, 12 h at 150), 10 MW / 20 MWh, RTE 81 % | Daily arbitrage margin | Closed-form two-price arbitrage analytic solution |
1,589 per day | 1,589 per day | +0.000 % | Green | unit test tests/unit/bess.test.js (re-computed) · 2026-10-13 |
| Steam properties (IAPWS-IF97) | Water / steam at 100 bar, 500 °C | Specific enthalpy h | CoolProp (IF97 backend) 8.0.0 open tool |
3,375 kJ/kg | 3,375 kJ/kg | +0.000 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Steam properties (IAPWS-IF97) | Water / steam at 160 bar, 300 °C | Specific enthalpy h | CoolProp (IF97 backend) 8.0.0 open tool |
1,337 kJ/kg | 1,337 kJ/kg | +0.000 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Hydrogen storage density | Hydrogen at 350 bar, 15 °C | Density | CoolProp (reference equation of state) 8.0.0 open tool |
24.00 kg/m³ | 23.99 kg/m³ | +0.001 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Steam properties (IAPWS-IF97) | IAPWS-IF97 verification points: region 1 (3 MPa, 300 K), region 2 (0.0035 MPa, 300 K) | Region 1 specific enthalpy h (3 MPa, 300 K) | IAPWS R7-97(2012) verification values standard tables |
115.3 kJ/kg | 115.3 kJ/kg | +0.000 % | Green | unit test tests/unit/water.test.js (re-computed) · 2026-10-13 |
| Steam properties (IAPWS-IF97) | IAPWS-IF97 verification points: region 1 (3 MPa, 300 K), region 2 (0.0035 MPa, 300 K) | Region 1 specific volume v (3 MPa, 300 K) | IAPWS R7-97(2012) verification values standard tables |
0.001002 m³/kg | 0.001002 m³/kg | +0.000 % | Green | unit test tests/unit/water.test.js (re-computed) · 2026-10-13 |
| Steam properties (IAPWS-IF97) | IAPWS-IF97 verification points: region 1 (3 MPa, 300 K), region 2 (0.0035 MPa, 300 K) | Region 2 specific enthalpy h (0.0035 MPa, 300 K) | IAPWS R7-97(2012) verification values standard tables |
2,550 kJ/kg | 2,550 kJ/kg | +0.000 % | Green | unit test tests/unit/water.test.js (re-computed) · 2026-10-13 |
| Wind energy yield (Weibull, synthetic power curve) | Low-wind plain site, 6.25 MW / 220 m rotor, hub 160 m, mean 5.75 m/s (Weibull k 1.78), per-turbine gross energy | Per-turbine gross energy | Published study of a low-wind plain wind farm (anonymised) published case |
21.15 GWh / year | 20.09 GWh / year | +5.28 % | Amber Synthetic Cp-model curve; the manufacturer curve was not available. |
unit test tests/unit/windsim.test.js (re-computed) · 2026-10-13 |
| Run-of-river hydropower | Run-of-river feasibility study (canal scheme, 87 m head) — study method replicated | Annual energy (study method) | Feasibility study of a run-of-river scheme (anonymised) published case |
48.75 GWh | 49.30 GWh | −1.11 % | Green | unit test tests/unit/hydro.test.js (re-computed) · 2026-10-13 |
| Run-of-river hydropower — parametric BoQ | Tunnel run-of-river scheme 25.7 MW with 71 km 69 kV line and mountain roads — EPC bill of quantities (2026) | EPC cost | EPC bill of quantities (anonymised) commercial study |
114.8 USD m | 123.3 USD m | −6.86 % | Amber | unit test tests/unit/hydro.test.js (re-computed) · 2026-10-13 |
| Solar PV yield (hourly simulator) | Bifacial one-axis tracker plant, North Africa — licensed satellite time series (hourly) | Specific yield | Commercial satellite-data yield assessment (anonymised) commercial study |
not published | licensed data | — | Green Values not published: the reference rests on licensed data whose terms do not allow publishing them; the band is shown. |
recorded validation (CHANGES_2026-09-21.md, solar simulator round; licensed hourly data files, not shipped) · 2026-10-01 |
| Terrain & ground | ||||||||
| Solar PV — tracker pile reveal and grading | Rigid tracker row, 10 piles at 8 m on a uniform 12 % slope, tube limited to 10 %, reveal 1.2–2.2 m, 3 m grading corridor | Grading volume (cut + fill) | Residual 2 % slope → reveals 1.7 ± 0.72 m; excess beyond 1.2–2.2 m × 8 m × 3 m hand calculation |
13.44 m³ | 13.44 m³ | +0.000 % | Green | unit test tests/unit/pvdesign.test.js (re-computed) · 2026-10-13 |
| Mass haul optimisation (transportation problem) | Synthetic 60-block site with rock, borrow pit and spoil site (43 × 58 transportation problem) | Optimal haul cost | OR-Tools SimpleMinCostFlow 9.15.6755 open tool |
21,148,723 cost units | 21,148,723 cost units | +0.000 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| GeoTIFF reader | Six GeoTIFFs written by GDAL 3.12 (LZW / Deflate / PackBits, predictors 2 and 3, tiles and strips, BigTIFF, big-endian) — lzw_pred2_i16_tiled | Sum of all valid cells | GDAL (reference rasters written by rasterio 1.5 / GDAL 3.12) 3.12 open tool |
197,224 elevation units | 197,224 elevation units | +0.000 % | Green 850 of 850 valid cells read. |
unit test tests/unit/hydro_dem.test.js (re-computed) · 2026-10-13 |
| GeoTIFF reader | Six GeoTIFFs written by GDAL 3.12 (LZW / Deflate / PackBits, predictors 2 and 3, tiles and strips, BigTIFF, big-endian) — lzw_pred3_f32_strips | Sum of all valid cells | GDAL (reference rasters written by rasterio 1.5 / GDAL 3.12) 3.12 open tool |
92,002 elevation units | 92,002 elevation units | +0.000 % | Green 850 of 850 valid cells read. |
unit test tests/unit/hydro_dem.test.js (re-computed) · 2026-10-13 |
| GeoTIFF reader | Six GeoTIFFs written by GDAL 3.12 (LZW / Deflate / PackBits, predictors 2 and 3, tiles and strips, BigTIFF, big-endian) — deflate_pred3_f32_tiled | Sum of all valid cells | GDAL (reference rasters written by rasterio 1.5 / GDAL 3.12) 3.12 open tool |
92,002 elevation units | 92,002 elevation units | +0.000 % | Green 850 of 850 valid cells read. |
unit test tests/unit/hydro_dem.test.js (re-computed) · 2026-10-13 |
| GeoTIFF reader | Six GeoTIFFs written by GDAL 3.12 (LZW / Deflate / PackBits, predictors 2 and 3, tiles and strips, BigTIFF, big-endian) — packbits_u16 | Sum of all valid cells | GDAL (reference rasters written by rasterio 1.5 / GDAL 3.12) 3.12 open tool |
1,047,224 elevation units | 1,047,224 elevation units | +0.000 % | Green 851 of 851 valid cells read. |
unit test tests/unit/hydro_dem.test.js (re-computed) · 2026-10-13 |
| GeoTIFF reader | Six GeoTIFFs written by GDAL 3.12 (LZW / Deflate / PackBits, predictors 2 and 3, tiles and strips, BigTIFF, big-endian) — lzw_f64_bigtiff | Sum of all valid cells | GDAL (reference rasters written by rasterio 1.5 / GDAL 3.12) 3.12 open tool |
92,002 elevation units | 92,002 elevation units | +0.000 % | Green 850 of 850 valid cells read. |
unit test tests/unit/hydro_dem.test.js (re-computed) · 2026-10-13 |
| GeoTIFF reader | Six GeoTIFFs written by GDAL 3.12 (LZW / Deflate / PackBits, predictors 2 and 3, tiles and strips, BigTIFF, big-endian) — deflate_pred2_i32_be | Sum of all valid cells | GDAL (reference rasters written by rasterio 1.5 / GDAL 3.12) 3.12 open tool |
164,456,000 elevation units | 164,456,000 elevation units | +0.000 % | Green 851 of 851 valid cells read. |
unit test tests/unit/hydro_dem.test.js (re-computed) · 2026-10-13 |
| Power & electrical | ||||||||
| Load flow (AC Newton–Raphson) | Radial plant connection: 154 kV grid equivalent, 154 kV line, 154 / 33 kV transformer, 33 kV busbar, 5 collector feeders with PV / BESS current sources and auxiliary load | Voltage at MV | pandapower 3.5.5 open tool |
0.9997 pu | 0.9997 pu | −0.003 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Load flow (AC Newton–Raphson) | Radial plant connection: 154 kV grid equivalent, 154 kV line, 154 / 33 kV transformer, 33 kV busbar, 5 collector feeders with PV / BESS current sources and auxiliary load | Voltage at MV | PyPSA AC power flow (n.pf()) 1.2.4 open tool |
0.9997 pu | 0.9997 pu | −0.003 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Load flow (AC Newton–Raphson) | Radial plant connection: 154 kV grid equivalent, 154 kV line, 154 / 33 kV transformer, 33 kV busbar, 5 collector feeders with PV / BESS current sources and auxiliary load | Voltage at F1 | pandapower 3.5.5 open tool |
1.003 pu | 1.003 pu | −0.002 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Load flow (AC Newton–Raphson) | Radial plant connection: 154 kV grid equivalent, 154 kV line, 154 / 33 kV transformer, 33 kV busbar, 5 collector feeders with PV / BESS current sources and auxiliary load | Voltage at F1 | PyPSA AC power flow (n.pf()) 1.2.4 open tool |
1.003 pu | 1.003 pu | −0.002 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Load flow (AC Newton–Raphson) | Radial plant connection: 154 kV grid equivalent, 154 kV line, 154 / 33 kV transformer, 33 kV busbar, 5 collector feeders with PV / BESS current sources and auxiliary load | Voltage at POI | pandapower 3.5.5 open tool |
1.001 pu | 1.001 pu | +0.002 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Load flow (AC Newton–Raphson) | Radial plant connection: 154 kV grid equivalent, 154 kV line, 154 / 33 kV transformer, 33 kV busbar, 5 collector feeders with PV / BESS current sources and auxiliary load | Voltage at POI | PyPSA AC power flow (n.pf()) 1.2.4 open tool |
1.001 pu | 1.001 pu | +0.002 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Load flow (AC Newton–Raphson) | Radial plant connection: 154 kV grid equivalent, 154 kV line, 154 / 33 kV transformer, 33 kV busbar, 5 collector feeders with PV / BESS current sources and auxiliary load | Loading of HV-L1 | pandapower 3.5.5 open tool |
41.40 % | 41.40 % | +0.004000 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Load flow (AC Newton–Raphson) | Radial plant connection: 154 kV grid equivalent, 154 kV line, 154 / 33 kV transformer, 33 kV busbar, 5 collector feeders with PV / BESS current sources and auxiliary load | Loading of MV-F1 | pandapower 3.5.5 open tool |
84.80 % | 84.80 % | +0.001000 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Load flow (AC Newton–Raphson) | Radial plant connection: 154 kV grid equivalent, 154 kV line, 154 / 33 kV transformer, 33 kV busbar, 5 collector feeders with PV / BESS current sources and auxiliary load | Loading of T1 | pandapower 3.5.5 open tool |
79.60 % | 79.50 % | +0.0990 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Load flow (AC Newton–Raphson) | Radial plant connection: 154 kV grid equivalent, 154 kV line, 154 / 33 kV transformer, 33 kV busbar, 5 collector feeders with PV / BESS current sources and auxiliary load | Network losses | pandapower 3.5.5 open tool |
0.8413 MW | 0.8413 MW | +0.005 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Load flow (AC Newton–Raphson) | Radial plant connection: 154 kV grid equivalent, 154 kV line, 154 / 33 kV transformer, 33 kV busbar, 5 collector feeders with PV / BESS current sources and auxiliary load | Network losses | PyPSA AC power flow (n.pf()) 1.2.4 open tool |
0.8413 MW | 0.8413 MW | +0.005 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Short circuit (IEC 60909-0) | Radial plant connection: 154 kV grid equivalent, 154 kV line, 154 / 33 kV transformer, 33 kV busbar, 5 collector feeders with PV / BESS current sources and auxiliary load | Ik″ max at MV | pandapower IEC 60909 3.5.5 open tool |
16.83 kA | 16.83 kA | +0.000 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Short circuit (IEC 60909-0) | Radial plant connection: 154 kV grid equivalent, 154 kV line, 154 / 33 kV transformer, 33 kV busbar, 5 collector feeders with PV / BESS current sources and auxiliary load | Ik″ max at F1 | pandapower IEC 60909 3.5.5 open tool |
13.86 kA | 13.86 kA | +0.013 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Short circuit (IEC 60909-0) | 154 kV grid Sk'' 5000 MVA (R/X 0.1) + 100 MVA 154 / 33 kV transformer, uk 12 %, ukr 0.4 % → 33 kV busbar | Ik″ max at 33 kV | IEC 60909-0 by hand (ohms at 33 kV, KT correction) hand calculation |
13.85 kA | 13.85 kA | +0.000 % | Green | unit test tests/unit/elec.test.js (re-computed) · 2026-10-13 |
| Short circuit (IEC 60909-0) | 154 kV grid Sk'' 5000 MVA (R/X 0.1) + 100 MVA 154 / 33 kV transformer, uk 12 %, ukr 0.4 % → 33 kV busbar | Ik″ max at 33 kV | pandapower IEC 60909 3.5.5 open tool |
13.85 kA | 13.85 kA | +0.000 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Short circuit (IEC 60909-0) | 154 kV grid Sk'' 5000 MVA (R/X 0.1) + 100 MVA 154 / 33 kV transformer, uk 12 %, ukr 0.4 % → 33 kV busbar | Peak current ip at 33 kV | pandapower IEC 60909 3.5.5 open tool |
36.81 kA | 36.81 kA | +0.000 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Sag-tension (state-change equation) | ACSR Drake, 300 m span, everyday tension 20 % RTS at 15 °C → sag at 75 °C | Sag at 75 °C | Exact catenary-length iteration (independent code) independent calculation |
8.530 m | 8.530 m | −0.003 % | Green | unit test tests/unit/linemech.test.js (re-computed) · 2026-10-13 |
| Sag-tension (state-change equation, tension section) | ACSR Drake, tension section 300 / 350 / 420 m (ruling 366.8 m), everyday 20 % RTS at 15 °C, IEC 60826 weather cases (wind 30 m/s, ice 6 mm), creep +15 °C | Horizontal tension, minimum temperature (initial) | Independent Python implementation (exact catenary + elastic strain integral) worker 1.0.0 independent calculation |
33.09 kN | 33.10 kN | −0.018 % | Green WaiMAP: parabolic change-of-state cubic on the ruling span (CIGRE TB 324 style); reference: exact catenary arc length + elastic strain integral, written independently for this check (not a named tool). |
v107 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Sag-tension (state-change equation, tension section) | ACSR Drake, tension section 300 / 350 / 420 m (ruling 366.8 m), everyday 20 % RTS at 15 °C, IEC 60826 weather cases (wind 30 m/s, ice 6 mm), creep +15 °C | Horizontal tension, extreme wind (initial) | Independent Python implementation (exact catenary + elastic strain integral) worker 1.0.0 independent calculation |
51.71 kN | 51.68 kN | +0.054 % | Green WaiMAP: parabolic change-of-state cubic on the ruling span (CIGRE TB 324 style); reference: exact catenary arc length + elastic strain integral, written independently for this check (not a named tool). |
v107 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Sag-tension (state-change equation, tension section) | ACSR Drake, tension section 300 / 350 / 420 m (ruling 366.8 m), everyday 20 % RTS at 15 °C, IEC 60826 weather cases (wind 30 m/s, ice 6 mm), creep +15 °C | Horizontal tension, ice (initial) | Independent Python implementation (exact catenary + elastic strain integral) worker 1.0.0 independent calculation |
38.73 kN | 38.72 kN | +0.014 % | Green WaiMAP: parabolic change-of-state cubic on the ruling span (CIGRE TB 324 style); reference: exact catenary arc length + elastic strain integral, written independently for this check (not a named tool). |
v107 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Sag-tension (state-change equation, tension section) | ACSR Drake, tension section 300 / 350 / 420 m (ruling 366.8 m), everyday 20 % RTS at 15 °C, IEC 60826 weather cases (wind 30 m/s, ice 6 mm), creep +15 °C | Sag at the ruling span, ice (final, after creep) | Independent Python implementation (exact catenary + elastic strain integral) worker 1.0.0 independent calculation |
9.980 m | 9.982 m | −0.019 % | Green WaiMAP: parabolic change-of-state cubic on the ruling span (CIGRE TB 324 style); reference: exact catenary arc length + elastic strain integral, written independently for this check (not a named tool). |
v107 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Sag-tension (state-change equation, tension section) | ACSR Drake, tension section 300 / 350 / 420 m (ruling 366.8 m), everyday 20 % RTS at 15 °C, IEC 60826 weather cases (wind 30 m/s, ice 6 mm), creep +15 °C | Sag at the ruling span, maximum operating temperature (final, after creep) | Independent Python implementation (exact catenary + elastic strain integral) worker 1.0.0 independent calculation |
12.60 m | 12.61 m | −0.007 % | Green WaiMAP: parabolic change-of-state cubic on the ruling span (CIGRE TB 324 style); reference: exact catenary arc length + elastic strain integral, written independently for this check (not a named tool). |
v107 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Conductor ampacity (IEEE 738 steady state) | ACSR Drake, 40 °C ambient, 0.61 m/s perpendicular wind, 1000 W/m² sun, ε = α = 0.5, sea level | Ampacity at 75 °C | linerate IEEE738 model 5.0.0 open tool |
721.3 A | 721.6 A | −0.029 % | Green Same conductor, weather, solar heat input and resistance law; linerate computes convection, air properties and radiation itself. |
v107 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Conductor ampacity (IEEE 738 steady state) | ACSR Drake, 40 °C ambient, 0.61 m/s perpendicular wind, 1000 W/m² sun, ε = α = 0.5, sea level | Ampacity at 100 °C | linerate IEEE738 model 5.0.0 open tool |
977.1 A | 977.3 A | −0.028 % | Green Same conductor, weather, solar heat input and resistance law; linerate computes convection, air properties and radiation itself. |
v107 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Optimum tower spotting (dynamic programming) | Small synthetic profiles (hill + angle point; deep valley where uplift binds), all tower sequences enumerated — case 1: 15 stations, 81 tower options | Minimum total tower cost | Exhaustive enumeration of every feasible tower sequence (same constraints) analytic solution |
233,929 USD | 233,929 USD | +0.000000 USD | Green Shows the search finds the exact optimum for the constraint model; the DP stores costs in single precision (cents). |
unit test tests/unit/spotting.test.js (run now) · 2026-10-13 |
| Optimum tower spotting (dynamic programming) | Small synthetic profiles (hill + angle point; deep valley where uplift binds), all tower sequences enumerated — case 2: 17 stations, 64 tower options | Minimum total tower cost | Exhaustive enumeration of every feasible tower sequence (same constraints) analytic solution |
194,067 USD | 194,067 USD | −0.0100 USD | Green Shows the search finds the exact optimum for the constraint model; the DP stores costs in single precision (cents). |
unit test tests/unit/spotting.test.js (run now) · 2026-10-13 |
| Substation estimator | 154 / 33 kV GIS substation 2 × 100 MVA, EPC price per MVA (awarded public-utility tender, 2022) | EPC price per MVA | Awarded public-utility tender (anonymised) tender price |
53,661 USD/MVA | 53,000 USD/MVA | +1.25 % | Green | unit test tests/unit/substation.test.js (re-computed) · 2026-10-13 |
| Substation estimator | 400 / 34.5 kV GIS substation 3 × 180 MVA, turnkey EPC (offer, 2021, ≈ USD 17.6 m) | Turnkey EPC price | Turnkey offer (anonymised) tender price |
19.83 USD m | 17.60 USD m | +12.66 % | Amber Class 4 estimate; accuracy range −20 % / +30 %. |
unit test tests/unit/substation.test.js (re-computed) · 2026-10-13 |
| Drainage & water | ||||||||
| Water network solver (Global Gradient Algorithm) | Two-loop benchmark network (Alperovits & Shamir 1977), Hazen–Williams C 130, 6 junctions | Pressure at the junction with the largest difference (5) | WNTR / EPANET 2.2 toolkit 1.5.0 open tool |
33.80 m | 33.80 m | −0.000347 m | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Storm sewer routing | Generated storm sewer network, 300 × 180 m site, C 0.6, 10-year design storm | Outfall peak flow | PySWMM / EPA SWMM 5 2.2.0 open tool |
860.3 L/s | 862.0 L/s | −0.19 % | Green | v105 cross-check run (tools/validation_run.py, reference tool on the calculation server) · 2026-10-13 |
| Construction | ||||||||
| Point-cloud ground filter (SMF) | Synthetic terrain with buildings, trees and outliers (known ground truth) | Ground recall | Known ground truth of the synthetic terrain analytic solution |
99.98 % | 100.0 % | −0.020 % | Green DTM RMSE against the analytic surface 0.073 m. |
unit test tests/unit/pointcloud.test.js (run now) · 2026-10-13 |
| Commercial | ||||||||
| Project finance model | Published feasibility study of a 400 MW wind farm (3 MW turbines, all-equity) | Project IRR | Published feasibility study (anonymised) published case |
10.69 % | 10.30 % | +0.3875 % | Green | unit test tests/unit/finmodel.test.js (re-computed) · 2026-10-13 |
| Project finance model | Published feasibility study of a 400 MW wind farm (3 MW turbines, all-equity) | LCOE at 10 % discount | Published feasibility study (anonymised) published case |
88.00 USD/MWh | 88.06 USD/MWh | −0.066 % | Green | unit test tests/unit/finmodel.test.js (re-computed) · 2026-10-13 |
| Project finance model | Published feasibility study of a 400 MW wind farm (3 MW turbines, all-equity) | LCOE at 5 % discount | Published feasibility study (anonymised) published case |
70.19 USD/MWh | 70.76 USD/MWh | −0.80 % | Green | unit test tests/unit/finmodel.test.js (re-computed) · 2026-10-13 |
| Reporting | ||||||||
| Project document intake (rule-based extraction) | Test feasibility report with 31 known design parameters | Parameters extracted correctly | Known parameter list of the test report analytic solution |
31.00 count | 31.00 count | +0.000 % | Green | unit test tests/unit/intake.test.js (passes on this build) · 2026-10-13 |
Hover a status for its tolerance. Client and project documents used as references are described, not named. Product names belong to their owners. A matching test case shows a method is implemented correctly; it does not make a feasibility result bankable on its own.
The same comparison runs on your own project. In the solar, wind, BESS, electrical-studies, water, mass-haul and line-mechanics panels, “Run independent check” sends exactly the inputs WaiMAP used to the reference tool and adds a table “WaiMAP | Reference tool | Difference | Status | Why they differ” to the PDF report (appendix + summary box) and the Excel file. Without the calculation server the rows say “not run” — WaiMAP never fills them with an estimate.
| Report | Reference tools | Metrics |
|---|---|---|
| Solar PV yield | NREL PySAM Pvwattsv8; pvlib ModelChain (Perez, SAPM, PVWatts losses) | Annual AC energy, specific yield, capacity factor, PR, plane-of-array irradiation, monthly energy |
| Wind energy yield | PyWake NOJ / Jensen (same k), Bastankhah Gaussian (sensitivity) | Gross / net AEP, wake loss |
| BESS | Linear-programme optimum: PyPSA + HiGHS (SciPy linprog / HiGHS if PyPSA is missing) | Arbitrage margin, revenue, throughput, cycles (WaiMAP ≤ LP optimum) |
| Electrical studies | pandapower load flow and IEC 60909; PyPSA AC power flow | Bus voltages, loadings, losses, Ik″ |
| Water and storm networks | WNTR / EPANET 2.2; PySWMM / SWMM 5 | Junction pressures, outfall peak |
| Mass haul | OR-Tools min-cost flow | Optimal haul cost |
| Line mechanics | Independent Python change-of-state solver (labelled as such); linerate IEEE738 model | Tension and sag per weather case, ampacity |