SolarPunkLab · the village in 3D
NederlandsThe village in three dimensions: one year from the simulation, hour by hour
Eight all-electric homes in Breda, the Netherlands, 80 kWp of solar on the roofs, a 159 kWh community battery and 7.4 MWh of seasonal storage, driven by weather year 2022. The neighbourhood reaches 86.1% self-sufficiency. The rest comes from the grid, most of it in a single seven-day winter trough. Everything that moves in the picture comes from the same computational core as the winter wall explorer: not an animation, but the hourly data of the simulation.
The year in numbers
- self-sufficient
- 86.1%
- of 35,776 kWh demand, 4,977 kWh came from the grid
- solar PV
- 80 kWp
- 8 roofs × 10 kWp, south, 35°; 93,024 kWh yield
- community battery
- 159 kWh
- 53 kW, 92% round-trip efficiency
- seasonal storage
- 7.4 MWh
- hydrogen path, 3.2 kW charge / 2.2 kW discharge
- congestion hours
- 121
- hours above the 55 kW connection, the red lamp on the pylon
- heat pump SPF
- 3.5
- 11,977 kWh electricity for all heating and hot water
- water self-sufficient
- 25.8%
- 208 m³ rainwater, 85 days of drought stress
- grid export
- 57,153 kWh
- self-consumption 38.6%: summer does not fit in the neighbourhood
8 all-electric households in Breda, the Netherlands · scenario basis-8-winterdicht 1.1.0 · weather year 2022 · weather: KNMI station 350 Gilze-Rijen · demand profile: MFFBAS E1A · prices: ENTSO-E day-ahead NL · sun position: pvlib · hourly resolution, 8,760 hours · the energy balance closes every hour (largest residual 1e-14 kWh)
In short
- Sun and battery carry the summer. The roofs deliver 93,024 kWh in a year, the neighbourhood needs 35,776 kWh. From April to September almost nothing comes from the grid; 57,153 kWh goes out, because summer does not fit in the neighbourhood. Self-consumption 38.6%.
- The winter wall is real. The 4,977 kWh of grid import falls almost entirely in the dark months. The winter wall button jumps to the heaviest seven-day import window: that is when the purple beads run from the pylon to the square.
- Seasonal storage helps, but slowly. 6,638 kWh goes in and 2,958 kWh comes out: the hydrogen path loses two thirds on the way. The tank delivers at most 2.2 kW, so in a cold hour it covers a fraction of demand. State after one year: 28%.
- Heat is the largest winter item. The heat pumps turn 11,977 kWh of electricity into 42,284 kWh of heat and hot water, SPF 3.5. The peak is 7.2 kW electric, in the middle of the winter trough.
- A quarter of the water from rain. 207.8 m³ of rainwater covers 25.8% of consumption; on 85 days the tank sits below the drought threshold. The pond never overflows.
- A simple control rule does not reach the optimum. The same installation reaches 89.9% in the linear program. Here a greedy hourly rule without foresight is in charge, and it lands on 86.1%. The difference is the value of smart control, made visible.
The village in three dimensions
open in a new tab ↗Everything that moves comes from the simulation: sun position, glare on the roofs, window light per home, the flows along cables and pipes, the fill level of battery, tank and pond. Starts on 13 January 2022, 12:00. The buttons at the bottom jump to the hours that carry the story.
- drag rotate
- scroll zoom
- space play
- arrows one hour (shift: one day)
- P presentation mode
- EN/NL language
Frame empty or no WebGL? Open the village as a standalone page.
The legend
What you see
- Glare on the roofs. PV yield per home per hour. Eight roofs of 10 kWp, facing south, 35 degrees.
- Window light. Demand per household per hour, with the spread between frugal, wasteful and free-riding households from the behaviour model.
- Light trails over the paths. The dispatch of that hour: sun to the homes, then to the community battery, then to seasonal storage, the rest to the grid. Electricity and water run under the paths to the neighbourhood bus in the green, the same topology as the simulation graph.
- Four modules in the battery pavilion. The state of charge of the community battery, 159 kWh.
- The hydrogen tank. The fill level of seasonal storage. Vapour above the electrolyser shed means hydrogen is being made that hour.
- Rain barrel and retention pond. Tank level and pond level. Blue flows from roof to neighbourhood tank are rainwater capture; from tank to homes greywater, from tank to the vegetable garden irrigation. Grey from the mains is drinking water.
- Red lamp on the pylon. A congestion hour: the neighbourhood draws or feeds more than the 55 kW connection allows. Purple beads from the pylon to the square are grid import.
- Rain, snow, clouds, wind, leaf colour. Hourly data from Dutch met office station 350 and the calendar. The heat pump fans spin at their electrical power.
- Balance line bottom left. In = out + change in storage + losses, with the residual of that tick. That residual is zero to machine precision, every hour.
What this image is not
the honesty block belongs with the model, not at the bottom of the page
- Not a construction drawing. The geometry is schematic. Distances, building shapes and the place of the pavilion were chosen for legibility, not for a plot.
- One weather year. 2022 was a record sunshine year. In the grey 2021 or the cold winter of 2010 the picture is worse; the explorer shows that range across fifteen weather years.
- One control rule. Greedy, without a weather forecast and without price steering. The linear optimum is 89.9%; this picture shows the lower bound of what control can do.
- Behaviour is a model. A quarter frugal, a quarter wasteful, a quarter free-rider, with fixed factors and a fixed seed. No measured households.
- No euros. The picture shows energy and water. Costs, robustness and crossover years are in the winter wall explorer.
- The hourly series are quantised. To keep the file small, every series is stored in 32,000 steps. The deviation in annual totals is below 0.001%.
Frequently asked questions
What exactly does the 3D village show?
One annual run of the Solarpunk Village Lab, scenario basis-8-winterdicht: eight all-electric homes in Breda with 80 kWp of solar, a 159 kWh community battery, 7.4 MWh of seasonal storage via hydrogen, heat pumps and rainwater capture, hour by hour through weather year 2022. Sun position, roof glare, window light, the flows along cables and pipes, the fill levels of battery, tank and pond, the weather and the red lamp on the pylon all come from the hourly data of the simulation. It is not an animation with a story attached; it is the simulation itself, drawn.
Why 86.1% and not 90%?
The installation was sized with a linear program to 90% self-sufficiency across three weather years. That program sees the whole year ahead. In the 3D village a simple greedy hourly rule without foresight is in charge: sun to the homes first, then the battery, then seasonal storage, the rest to the grid. That rule reaches 86.1%. The upper bound with perfect control on this single weather year is 89.9%. The gap of almost four percentage points is what smart control is worth, and that is exactly the question the lab investigates next.
What is the winter wall in this picture?
The heaviest continuous seven-day import window of the year. The winter wall button at the bottom jumps to it. You see the battery modules empty, the hydrogen tank trickling at 2.2 kW, the heat pump fans at full speed and the purple grid-import beads running from the pylon to the square. In the explorer the winter wall is the kink in the cost curve above 80%; here it is the week in which you feel it.
How does seasonal storage work here?
As a hydrogen path: a 3.2 kW electrolyser makes hydrogen from summer surplus, a 2.2 kW fuel cell turns it back into electricity in winter. Storage is 7.4 MWh. Charging efficiency is 65% and discharging efficiency 50%, so of every three kilowatt-hours that go in, roughly one comes back. In 2022, 6,638 kWh went in and 2,958 kWh came out, 0.65 cycles. The tank starts and ends the year around 28%. Small power, large volume: that is the nature of seasonal storage, and it explains why it softens the winter wall but does not remove it.
Can I use the data myself?
The hourly series are inside the file itself, compressed; the page loads nothing from outside. The sources are open: hourly data from Dutch met office station 350 Gilze-Rijen, the MFFBAS E1A demand profile, ENTSO-E day-ahead prices and pvlib for the sun position. The computed datasets of the winter wall explorer are available as JSON on this site under CC BY 4.0. If you want the annual run itself as a table, send a message.
Does it work on my phone?
The village needs WebGL and loads a single 1.2 MB file. On a recent phone it works; on a small screen the standalone page is more comfortable than the embedded frame, via the link below the frame. The page uses no cookies, no tracking and no external scripts. Without WebGL you see this text and the key figures, and those hold without the picture.
How this was made
The neighbourhood was first sized with a linear program (PyPSA/HiGHS) to 90% self-sufficiency across three weather years, the same method as the winter wall explorer. That installation was then run once through weather year 2022 with the lab’s greedy hourly dispatch: sun to the homes first, then to the community battery, then to seasonal storage, the rest to the grid. That yields 86.1%, not 90%: a simple control rule does not reach the LP optimum, and that gap is exactly what you see here. Every hour the energy, water and heat balances close to machine precision. The geometry is schematic and the palette is the lab’s. It is a simulation result, not a construction drawing.
Further in the lab
Weather: KNMI-350 (2022) · demand profile: MFFBAS E1A AMI A 2022 · prices: ENTSO-E day-ahead NL · sun position: pvlib solarposition (Breda, hour centre) · scenario basis-8-winterdicht 1.1.0 · three.js r149, a single 1.2 MB file without external requests or tracking · built 2026-08-20