Skip to content

SolarFields

A fast, modular Python package for design and analysis of large-scale solar thermal collector fields.

Based on 1-D thermo-hydraulic steady-state simulation using the collector model of ISO 9806:2025 (its power output model, Formula (A.1), which ISO 24194:2026 uses as well; see Collector Thermal Model).

Key Capabilities

  • Hydraulic design — Flow distribution, pressure drops, header velocities
  • Thermal performance — the steady-state collector model of ISO 9806:2025 with all its terms, down to every riser of every collector
  • Valid results only — every result is checked against boiling at the local pressure and freezing, at the hottest riser of every collector
  • Flexible topologies — direct return, reverse return, fields with several sub-fields and branching
  • Multiple collector types — Harp, meander, mixed configurations
  • Fast computation — Numba JIT compilation for physics kernels

What This Tool Is For

This is a steady-state design tool for designing and analysing solar thermal collector fields. Use it for:

  • Comparing field layouts (direct vs reverse return, header sizing, string configurations)
  • Evaluating hydraulic balance and flow distribution
  • Calculating design-point thermal performance

What This Tool Is NOT For

  • Annual yield estimation (no time-series simulation)
  • Dynamic behavior (startup transients, control response)
  • System-level simulation (storage, pumps, heat exchangers)

Supported Collector Technologies

Type Status Notes
Flat plate (harp) ✓ Supported Single/double glazed
Flat plate (meander) ✓ Supported Including parallel serpentines
PVT (fluid collector) ✓ Supported Requires ISO 9806 data. Wind-dependent loss term (a₃) works
PVT (air collector) ✗ Not supported Fluid model is liquid-only
Evacuated tube (direct flow) Should work No examples yet
Evacuated tube (heat pipe) Uncertain Hydraulic behavior differs from harp
Parabolic trough ✓ Supported Thermal oils available (TVP1, T66, etc.), needs ISO 9806 data
CPC Planned Needs bidirectional IAM (not yet implemented)
Linear Fresnel Possible Requires ISO 9806 data
Air collectors ✗ Not supported Fluid model is liquid-only

Quick Start

SolarFields isn't on PyPI yet; see Getting Started to install it from source.

from solarfields import Q_, load_config, StringSolver

config = load_config('config.yaml')

# Solver accepts fluid name (case-insensitive)
# Use concentration parameter for glycols
solver = StringSolver(
    config['string'],
    fluid='MPG',               # Fluid name (case-insensitive)
    concentration=Q_(40, "%"), # A quantity, with the fluid's basis (MPG: by mass)
    basis="mass",
    pipes_in_air=config['pipes_in_air'],  # Pipes without U_loss: from their insulation
)

result = solver.solve(
    config['inlet']['T_inlet'],
    config['inlet']['V_dot'],
    config['operating_conditions'],
    **config['pressure'],  # p_inlet or p_outlet, and field_elevation, as quantities
)

print(f"T_out: {result.T_outlet:.1f}°C, η: {result.eta_string*100:.1f}%")

Next Steps