A borehole thermal energy store (BTES) is a cluster of vertical boreholes drilled into rock or clay that turns the ground itself into a giant seasonal heat battery: excess summer solar or waste heat is injected in summer and pulled back out to heat buildings in winter, instead of being wasted or generated fresh from fuel.
This model treats the store as N = 6 concentric cylindrical shells around a shared borehole axis (drawn here as a top-down radial cross-section, drag to rotate), each with heat capacity Ci = ρc·Vi (rock density × specific heat × shell volume). Heat moves between neighbouring shells by conduction and the outermost shell loses heat to the undisturbed ambient ground:
dT_i/dt = [ Q_in,i − Q_out,i + k·A_i,i+1·(T_i+1 − T_i)/dr
− k·A_i-1,i·(T_i − T_i-1)/dr ] / C_i
Outer shell: extra loss term −U·A_outer·(T_N − T_ambient)
Q_charge → injected into the innermost shell when solar input > 0
Q_extract → withdrawn from the innermost shell for heating load
The seasonal solar and heating-demand curves are sinusoids matched to the northern-hemisphere calendar (solar charging peaks around day 172 / late June, heating draw peaks around day 355 / late December), scaled by your slider values in kW. Insulation quality sets the conduction coefficient U between the store and the surrounding ground — better insulation (higher value) keeps summer heat from bleeding away before winter.
Numerical note: the innermost shell's heat capacity is small relative to typical draw powers, so an unclamped explicit integrator can pull it below absolute zero over several simulated years at high charge/draw settings (verified numerically: at the default 400 kW/350 kW/45% settings the source model settles into a steady cycle around −286 °C for the core shell after 3+ years of continuous play — physically impossible). This 2D engine adds a hard floor at −273.15 °C (absolute zero) to every shell so long unattended runs stay physically meaningful; the 3D original has no such floor.
- Time speed — advances the simulated calendar; the radial ring colours (blue → green → red) track each shell's temperature live.
- Summer solar charge rate and winter heating draw — the peak power injected/extracted at the height of each season.
- Round-trip efficiency — energy withdrawn for heating this year ÷ energy injected last summer, once at least one full charge/discharge cycle has completed; conduction losses to the ambient ground are what keep this below 100%.
- Drag the radial view to rotate it, scroll to zoom; the strip-chart panel below tracks a rolling year of history and can switch between temperature and energy views.
Real systems (Drake Landing, Canada; Vojens, Denmark) reach 40–70% seasonal efficiency and can cover the majority of a district's winter heating load from summer solar collectors — the same physics this model integrates numerically, just at engineering scale.