GribStream

GribStream Blog

Solar panel generation forecasting with GribStream weather models

|

A new GribStream dashboard turns hourly shortwave radiation and temperature forecasts from GFS, HRRR, and NBM into a transparent solar PV generation forecast.

We added a new demo dashboard for solar panel generation forecasting.

The goal is deliberately practical: estimate short-term solar PV output from weather-model radiation and temperature, with enough controls to be useful and enough visible math to be auditable. It is not a bankable project model. It is a GribStream example that turns forecast fields into an hourly solar production forecast without creating a custom solar API.

What the dashboard uses

The dashboard reads two forecast fields through the standard GribStream /timeseries endpoint:

  • DSWRF at the surface, treated as global horizontal shortwave radiation in W/m2
  • TMP at 2 m above ground, used as ambient air temperature

Those fields are available in the dashboard from GFS, HRRR, and NBM. The controls let you change the site, model, DC array size, system losses, DC/AC ratio, maximum lead time, and a named array-geometry scenario.

The array-geometry control is intentionally not a full tilt-and-azimuth simulator. DSWRF is a horizontal radiation field. A real plane-of-array calculation needs solar position, direct normal irradiance, diffuse horizontal irradiance, albedo, row geometry, and shading. This dashboard exposes that simplification as a multiplier so the assumption is visible.

The calculation

The default case is a 6 kW DC residential-style system in Denver with a fixed-tilt proxy, 14 percent total losses, 96 percent inverter efficiency, and a 1.2 DC/AC ratio.

The core expressions are:

temp_c = temp_k - 273.15
poa_wm2 = ghi_wm2 * geometry_multiplier
cell_temp_c = temp_c + (poa_wm2 / 800) * noct_delta_c
temperature_factor = max(0, 1 + (temp_coeff_pct_c / 100) * (cell_temp_c - 25))
loss_factor = max(0, 1 - total_losses_pct / 100)
dc_power_kw = dc_kw * poa_wm2 / 1000 * temperature_factor * loss_factor
ac_power_kw = min(dc_power_kw * inverter_eff_pct / 100, dc_kw / dc_ac_ratio)
hourly_energy_kwh = ac_power_kw

The last line is valid because the dashboard keeps the request on hourly rows. If the dashboard later allows subhourly or three-hour rows, that expression should multiply power by the actual row duration.

The main constants are plain on purpose:

  • 6 kW is the default DC array size.
  • -0.35 percent per C is the default PV power temperature coefficient.
  • 14 percent is the default total non-weather loss assumption, matching the common PVWatts-style starting point.
  • 96 percent is the default inverter efficiency.
  • 1.2 is the default DC/AC ratio, so a 6 kW DC system clips at 5 kW AC.
  • 800 W/m2 and 25 C form the simple cell-temperature rise proxy.
  • 1.08 is the default fixed-tilt geometry multiplier applied to horizontal shortwave radiation.

The result is a fast, transparent solar power forecast. You can see when cloud cover or temperature is expected to suppress output, when the inverter limit matters, and how sensitive the estimate is to common PV assumptions.

Where this is useful

This is most useful for operational and exploratory questions:

  • How much solar energy might a site generate over the next 24 to 36 hours?
  • Does GFS, HRRR, or NBM show a meaningfully different solar irradiance forecast?
  • How does a larger array, higher loss assumption, or different DC/AC ratio change the production curve?
  • Is a proposed site worth a deeper PVWatts, SAM, or engineering model pass?

Because GribStream has forecast history, the same idea can also be adapted for backtesting a prospective install. The dashboard is a live demo, but the pattern is the bigger point: forecast APIs become much more useful when they can compute application metrics directly from model fields.

What it is not

This dashboard does not replace PVWatts, SAM, shade modeling, measured soiling data, equipment-specific inverter curves, or a proper plane-of-array irradiance model. It intentionally starts from weather-model DSWRF, applies a visible geometry assumption, and keeps the PV math simple enough to inspect.

That tradeoff is the feature. For a solar PV generation forecast dashboard, a transparent approximation is often more useful than a complicated estimate that hides the most important assumptions.

Links and sources