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¶
- Getting Started: Installation, configuration, examples
- Architecture: Technical deep-dive into solvers and models
- API Reference: Auto-generated documentation from source