WaiMAP - Spatial Intelligence Validation report · 2026-10-13

MethodResultsIn your reportsData TrustCapabilities

WaiMAP validation report

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.

95comparisons
35engines
86green
9amber
0red

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

Part of the trust layer. These cross-checks are one of the six trust layers on the Trust & bankability page, next to the measured calculation times. Cases whose reference rests on licensed data are listed with their band only — their numbers are not published. A matching check shows a method is implemented correctly; WaiMAP supports bankability but cannot guarantee lender or independent-engineer approval.

Method

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.

Results

EngineTest caseMetricReferenceWaiMAPReference valueDifferenceStatusSource · 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 energyNREL PySAM Pvwattsv8 7.1.1.post1
open tool
17,551 MWh17,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 yieldNREL PySAM Pvwattsv8 7.1.1.post1
open tool
1,755 kWh/kWp1,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 ratioNREL 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 energypvlib ModelChain (Perez, SAPM, PVWatts losses / inverter) 0.16.1
open tool
17,551 MWh18,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 yieldpvlib ModelChain (Perez, SAPM, PVWatts losses / inverter) 0.16.1
open tool
1,755 kWh/kWp1,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 ratiopvlib 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 opinion10 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 yieldpvlib ModelChain (PVWatts DC / losses / inverter) 0.16.1
open tool
1,814 kWh/kWp1,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 energyNREL PySAM Pvwattsv8 7.1.1.post1
open tool
21,308 MWh21,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 yieldNREL PySAM Pvwattsv8 7.1.1.post1
open tool
2,131 kWh/kWp2,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 ratioNREL 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 energypvlib ModelChain (Perez, SAPM, PVWatts losses / inverter) 0.16.1
open tool
21,308 MWh21,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 yieldpvlib ModelChain (Perez, SAPM, PVWatts losses / inverter) 0.16.1
open tool
2,131 kWh/kWp2,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 ratiopvlib 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 opinion10 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 yieldpvlib ModelChain (PVWatts DC / losses / inverter) 0.16.1
open tool
2,194 kWh/kWp2,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 irradiationpvlib 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 MWh31.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 MWh31.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 slope10 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 valuespvlib.shading.shaded_fraction1d 0.16.1
open tool
142.0 h142.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 stepsEnergy from the simulator's own hourly chain (identity check)
analytic solution
22,531 MWh22,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 systemMaximum modules per stringfloor(1500 / (49.5 × (1 + (−0.0025)(−10 − 25))))
hand calculation
27.00 modules27.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 slopeFixed rows 4.6 m at 30°, pitch 11.5 m, sun due south at 10° elevation (flat ground)Shaded fraction of the row width1 − (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 AEPPyWake 2.6.20
open tool
119,922 MWh119,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 lossPyWake 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 MWh106,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 sensitivityPyWake 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 settingsPyWake 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 settingsPyWake BastankhahGaussianDeficit (same settings) 2.6.20
open tool
106,511 MWh106,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 settingsPyWake 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 settingsPyWake BastankhahGaussianDeficit (same settings) 2.6.20
open tool
414,359 MWh414,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 GaussianWake loss — Gaussian model, same settingsPyWake 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 GaussianNet AEP — Gaussian model, same settingsPyWake BastankhahGaussianDeficit (same settings) 2.6.20
open tool
215,794 MWh215,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 recoveredKnown 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 m1.1 × reference long-term mean + 0.4
analytic solution
8.126 m/s8.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/s2.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 heightsSynthetic 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 / yearArbitrage margin after throughput cost (perfect foresight)PyPSA (linopy + HiGHS) — linear-programme optimum 1.2.4
open tool
6,254,882 EUR / year6,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 / yearNet arbitrage revenue (sales − charging)PyPSA (linopy + HiGHS) 1.2.4
open tool
6,660,623 EUR / year6,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 / yearFull-equivalent cyclesPyPSA (linopy + HiGHS) 1.2.4
open tool
362.5 cycles / year365.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 marginClosed-form two-price arbitrage
analytic solution
1,589 per day1,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 °CSpecific enthalpy hCoolProp (IF97 backend) 8.0.0
open tool
3,375 kJ/kg3,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 °CSpecific enthalpy hCoolProp (IF97 backend) 8.0.0
open tool
1,337 kJ/kg1,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 densityHydrogen at 350 bar, 15 °CDensityCoolProp (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/kg115.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³/kg0.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/kg2,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 energyPer-turbine gross energyPublished study of a low-wind plain wind farm (anonymised)
published case
21.15 GWh / year20.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 hydropowerRun-of-river feasibility study (canal scheme, 87 m head) — study method replicatedAnnual energy (study method)Feasibility study of a run-of-river scheme (anonymised)
published case
48.75 GWh49.30 GWh−1.11 % Green unit test tests/unit/hydro.test.js (re-computed) · 2026-10-13
Run-of-river hydropower — parametric BoQTunnel run-of-river scheme 25.7 MW with 71 km 69 kV line and mountain roads — EPC bill of quantities (2026)EPC costEPC bill of quantities (anonymised)
commercial study
114.8 USD m123.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 yieldCommercial satellite-data yield assessment (anonymised)
commercial study
not publishedlicensed 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 gradingRigid 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 corridorGrading 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 costOR-Tools SimpleMinCostFlow 9.15.6755
open tool
21,148,723 cost units21,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 readerSix GeoTIFFs written by GDAL 3.12 (LZW / Deflate / PackBits, predictors 2 and 3, tiles and strips, BigTIFF, big-endian) — lzw_pred2_i16_tiledSum of all valid cellsGDAL (reference rasters written by rasterio 1.5 / GDAL 3.12) 3.12
open tool
197,224 elevation units197,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 readerSix GeoTIFFs written by GDAL 3.12 (LZW / Deflate / PackBits, predictors 2 and 3, tiles and strips, BigTIFF, big-endian) — lzw_pred3_f32_stripsSum of all valid cellsGDAL (reference rasters written by rasterio 1.5 / GDAL 3.12) 3.12
open tool
92,002 elevation units92,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 readerSix GeoTIFFs written by GDAL 3.12 (LZW / Deflate / PackBits, predictors 2 and 3, tiles and strips, BigTIFF, big-endian) — deflate_pred3_f32_tiledSum of all valid cellsGDAL (reference rasters written by rasterio 1.5 / GDAL 3.12) 3.12
open tool
92,002 elevation units92,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 readerSix GeoTIFFs written by GDAL 3.12 (LZW / Deflate / PackBits, predictors 2 and 3, tiles and strips, BigTIFF, big-endian) — packbits_u16Sum of all valid cellsGDAL (reference rasters written by rasterio 1.5 / GDAL 3.12) 3.12
open tool
1,047,224 elevation units1,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 readerSix GeoTIFFs written by GDAL 3.12 (LZW / Deflate / PackBits, predictors 2 and 3, tiles and strips, BigTIFF, big-endian) — lzw_f64_bigtiffSum of all valid cellsGDAL (reference rasters written by rasterio 1.5 / GDAL 3.12) 3.12
open tool
92,002 elevation units92,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 readerSix GeoTIFFs written by GDAL 3.12 (LZW / Deflate / PackBits, predictors 2 and 3, tiles and strips, BigTIFF, big-endian) — deflate_pred2_i32_beSum of all valid cellsGDAL (reference rasters written by rasterio 1.5 / GDAL 3.12) 3.12
open tool
164,456,000 elevation units164,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 loadVoltage at MVpandapower 3.5.5
open tool
0.9997 pu0.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 loadVoltage at MVPyPSA AC power flow (n.pf()) 1.2.4
open tool
0.9997 pu0.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 loadVoltage at F1pandapower 3.5.5
open tool
1.003 pu1.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 loadVoltage at F1PyPSA AC power flow (n.pf()) 1.2.4
open tool
1.003 pu1.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 loadVoltage at POIpandapower 3.5.5
open tool
1.001 pu1.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 loadVoltage at POIPyPSA AC power flow (n.pf()) 1.2.4
open tool
1.001 pu1.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 loadLoading of HV-L1pandapower 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 loadLoading of MV-F1pandapower 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 loadLoading of T1pandapower 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 loadNetwork lossespandapower 3.5.5
open tool
0.8413 MW0.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 loadNetwork lossesPyPSA AC power flow (n.pf()) 1.2.4
open tool
0.8413 MW0.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 loadIk″ max at MVpandapower IEC 60909 3.5.5
open tool
16.83 kA16.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 loadIk″ max at F1pandapower IEC 60909 3.5.5
open tool
13.86 kA13.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 busbarIk″ max at 33 kVIEC 60909-0 by hand (ohms at 33 kV, KT correction)
hand calculation
13.85 kA13.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 busbarIk″ max at 33 kVpandapower IEC 60909 3.5.5
open tool
13.85 kA13.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 busbarPeak current ip at 33 kVpandapower IEC 60909 3.5.5
open tool
36.81 kA36.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 °CSag at 75 °CExact catenary-length iteration (independent code)
independent calculation
8.530 m8.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 °CHorizontal tension, minimum temperature (initial)Independent Python implementation (exact catenary + elastic strain integral) worker 1.0.0
independent calculation
33.09 kN33.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 °CHorizontal tension, extreme wind (initial)Independent Python implementation (exact catenary + elastic strain integral) worker 1.0.0
independent calculation
51.71 kN51.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 °CHorizontal tension, ice (initial)Independent Python implementation (exact catenary + elastic strain integral) worker 1.0.0
independent calculation
38.73 kN38.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 °CSag at the ruling span, ice (final, after creep)Independent Python implementation (exact catenary + elastic strain integral) worker 1.0.0
independent calculation
9.980 m9.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 °CSag 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 m12.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 levelAmpacity at 75 °Clinerate IEEE738 model 5.0.0
open tool
721.3 A721.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 levelAmpacity at 100 °Clinerate IEEE738 model 5.0.0
open tool
977.1 A977.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 optionsMinimum total tower costExhaustive enumeration of every feasible tower sequence (same constraints)
analytic solution
233,929 USD233,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 optionsMinimum total tower costExhaustive enumeration of every feasible tower sequence (same constraints)
analytic solution
194,067 USD194,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 estimator154 / 33 kV GIS substation 2 × 100 MVA, EPC price per MVA (awarded public-utility tender, 2022)EPC price per MVAAwarded public-utility tender (anonymised)
tender price
53,661 USD/MVA53,000 USD/MVA+1.25 % Green unit test tests/unit/substation.test.js (re-computed) · 2026-10-13
Substation estimator400 / 34.5 kV GIS substation 3 × 180 MVA, turnkey EPC (offer, 2021, ≈ USD 17.6 m)Turnkey EPC priceTurnkey offer (anonymised)
tender price
19.83 USD m17.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 junctionsPressure at the junction with the largest difference (5)WNTR / EPANET 2.2 toolkit 1.5.0
open tool
33.80 m33.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 routingGenerated storm sewer network, 300 × 180 m site, C 0.6, 10-year design stormOutfall peak flowPySWMM / EPA SWMM 5 2.2.0
open tool
860.3 L/s862.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 recallKnown 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 modelPublished feasibility study of a 400 MW wind farm (3 MW turbines, all-equity)Project IRRPublished 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 modelPublished feasibility study of a 400 MW wind farm (3 MW turbines, all-equity)LCOE at 10 % discountPublished feasibility study (anonymised)
published case
88.00 USD/MWh88.06 USD/MWh−0.066 % Green unit test tests/unit/finmodel.test.js (re-computed) · 2026-10-13
Project finance modelPublished feasibility study of a 400 MW wind farm (3 MW turbines, all-equity)LCOE at 5 % discountPublished feasibility study (anonymised)
published case
70.19 USD/MWh70.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 parametersParameters extracted correctlyKnown parameter list of the test report
analytic solution
31.00 count31.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.

Independent check in your reports

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.

ReportReference toolsMetrics
Solar PV yieldNREL PySAM Pvwattsv8; pvlib ModelChain (Perez, SAPM, PVWatts losses)Annual AC energy, specific yield, capacity factor, PR, plane-of-array irradiation, monthly energy
Wind energy yieldPyWake NOJ / Jensen (same k), Bastankhah Gaussian (sensitivity)Gross / net AEP, wake loss
BESSLinear-programme optimum: PyPSA + HiGHS (SciPy linprog / HiGHS if PyPSA is missing)Arbitrage margin, revenue, throughput, cycles (WaiMAP ≤ LP optimum)
Electrical studiespandapower load flow and IEC 60909; PyPSA AC power flowBus voltages, loadings, losses, Ik″
Water and storm networksWNTR / EPANET 2.2; PySWMM / SWMM 5Junction pressures, outfall peak
Mass haulOR-Tools min-cost flowOptimal haul cost
Line mechanicsIndependent Python change-of-state solver (labelled as such); linerate IEEE738 modelTension and sag per weather case, ampacity