Solar thermal system sizing
This calculator turns a heating load (DHW + optional space heating) into a collector-area and tank-volume sizing recommendation, then runs the same multi-day simulation the /resources/tilt-optimizer uses to confirm the system actually delivers the targeted solar fraction.
Inputs and outputs are metric throughout. The methodology follows F-Chart (Klein, Beckman & Duffie 1976; canonical reference Duffie & Beckman, Solar Engineering of Thermal Processes, Photovoltaics and Wind, 5th ed. 2020) and the industry-standard DHW load rules of thumb from the ASHRAE Handbook — HVAC Applications (Service Water Heating chapter, current edition). For the η₀ → annual-delivered cascade behind the efficiency inputs, see /resources/collector-efficiency.
1. Site & climate
Defaults are the centre of Prague. Cold-water supply drives both the DHW load (heater has to lift water from this temperature) and the tank's lower envelope. Central Europe / UK ≈ 10 °C; warmer climates 12–18 °C; Nordic 5–8 °C. Cloudiness: ~10 % clear desert · ~30 % central Europe · ~50 % maritime Atlantic.
2. Domestic hot water
Building-type defaults follow the long-standing ASHRAE Handbook — HVAC Applications rule-of-thumb table (Service Water Heating chapter): residential 75–150 L/p/d (default 90), dormitory 60–95 (default 75), hotel 110–190 (default 150), hospital 95–150 (default 120), barracks / jail ~57 (steady load). The heater setpoint is the output temperature the energy must lift cold water to — typically 60 °C for Legionella suppression, even when a thermostatic mixing valve drops delivery to 49 °C afterwards. Energy formula: Q [kWh] = V [L] × ΔT [K] / 861.6.
3. Space heating (optional)
Leave at 0 for a DHW-only system. Otherwise enter the building's annual space-heating energy requirement (e.g. from heat-pump performance data, gas-bill × heater efficiency, or HDD × building UA). This is treated as cosine-of-day-of-year peaking at the winter solstice — a reasonable proxy without site-specific heating-degree-day data. Combining DHW with space heating shifts the system optimum toward steeper tilts and larger tanks because more of the load lands on short winter days.
4. Collector array
First-pass F-Chart sizing estimate (Klein, Beckman & Duffie 1976; canonical reference Duffie & Beckman, Solar Engineering of Thermal Processes, 5th ed. 2020, ch. 21): A [m²] ≈ (annual demand × target SF) / specific yield. Specific yield 400–600 kWh/m²/yr is the typical mid-latitude flat-plate band reported in Fraunhofer ISE and IEA SHC Task 26 long-term monitoring; 500 is a reasonable starting point for central Europe and the UK. Bench yields nudge higher for low-delivery-temperature installs and lower for high-DHW-setpoint or shaded ones. The seasonal effective η input feeds the live simulation below — see the collector-efficiency cascade for how datasheet η₀ ≈ 0.75 translates to a seasonal-average ≈ 0.45.
Per-m² delivered yield (red) is what each m² of collector actually delivers to the tank as an annual average. It always slopes downward: bigger arrays land into a tank that is increasingly already full at peak sun, so the marginal kWh-per-m² shrinks. Closed-system bypass (amber) grows correspondingly — irradiance that a closed-loop system would have to dump (and that a drainback install simply doesn't harvest). The 400–600 kWh/m²/yr band shaded across the chart is the typical mid-latitude flat-plate sanity range; pick an area where per-m² yield still sits inside it. Vertical dashed line marks the currently-chosen area (set by the SF-target and specific-yield sliders above).
5. Storage tank
Duffie & Beckman's 1976 reference value is 75 L/m² with a flat performance plateau extending down to ~50 L/m²; modern solar-thermal practice has narrowed the sweet spot to 50–60 L per m² of collector. Below 50 L/m² efficiency drops fast; above 80 L/m² cost rises without benefit. Commercial sites with daytime draw can credit 10–25 % of the daytime load as additional effective storage; community-pool / weekend-loaded sites go to 200–300 L/m². Insulation drives the standing-loss-to-ambient rate — "good" matches the 8 cm-PUR reference rig at ~0.0012 × L kWh/day (1.7 kWh/day for 1431 L, bench-verified).
6. Annual yield projection
Simulation runs at tilt = latitude, azimuth = south — the textbook starting point. Use the tilt optimizer to refine the orientation, especially if the system is oversized (steeper tilt shifts collection from wasted summer into useful shoulder months) or has significant space-heating load.
"Closed-system bypass" is summer over-collection that a pressurised closed-loop system would dump through a bypass valve. Drainback (the Privateer default) simply doesn't circulate when the tank is full — the irradiance just isn't harvested. Treat a large bypass figure as a tank-sizing / array-sizing warning, not a literal heat-dump loss.
How it works
The DHW load is the canonical sensible-heat equation: Q_day = V_day · ρ · c_p · (T_setpoint − T_cw), with ρ·c_p = 4178 J/(L·K), giving Q_day [kWh] = V_day [L] × ΔT [K] / 861.6. Annual DHW = Q_day × 365.
The collector-area estimate comes from the standard first-pass F-Chart guess: A [m²] ≈ (annual demand × target SF) / specific yield, with specific yield calibrated to typical mid-latitude flat-plate performance (400–600 kWh/m²/yr of net delivered energy reported by Fraunhofer ISE and IEA SHC Task 26). Solar fraction higher than ~60 % runs into diminishing returns because the extra collectors increasingly deliver into a tank that is already near its hi-limit when the sun is shining — the marginal kWh per added m² drops and bypass losses grow.
The simulation itself is the same multi-day F-Chart-style model as /resources/tilt-optimizer: hour-by-hour clear-sky direct + isotropic diffuse irradiance attenuated by an average-cloudiness factor, plane-of-array projection, daily mass balance on the tank (collection clamped at envelope headroom; demand draw + standing loss off the state; shortfall = unmet, overflow = bypass), throwaway warm-up year so the metered year starts from quasi-steady state. The simulation kernel is duplicated between the two pages; future refactor will lift it to a shared module.
Sanity benchmarks
- Per-m² yield (delivered ÷ area) should land 400–600 kWh/m²/yr for a well-sized mid-latitude flat-plate install. Below ~350 = something is wrong (oversized array, undersized tank, high delivery temperature, heavy shading). Above ~650 = either an exceptional climate or optimistic inputs.
- Industry sweet-spot SF = 30–60 %. Chasing 70 %+ runs into diminishing returns (per-collector yield drops sharply; bypass losses grow); chasing < 30 % wastes the fixed installation cost on too small an array. Common stopping rule: stop adding collectors once the per-collector annual yield has dropped by more than ~30 % vs the single-collector baseline.
- The achieved SF (from the simulation) is usually a few percentage points different from the target SF (from the sizing estimate) — that's the difference between a static sizing rule and an hour-by-hour multi-day simulation. The simulation is the more trustworthy of the two; reduce collector area if achieved SF runs high, increase if it runs low.
- The simulation assumes a clear horizon at the array. Trees, buildings, towers, or terrain that shade the collector at any time of day aren't modelled — if your site has known obstructions, the simulated yield is a ceiling rather than a prediction.
Further reading
Dr. Ben Gravely's solarhotwater-systems.com blog catalogues four decades of practical drainback installation experience (2000+ systems since 1978). It's a useful complement to the textbook references above when you want to see how the canonical sizing rules of thumb hold up in the field, and the "Webinars" section walks through F-Chart sizing on real case studies.