bsrn.modeling.separation.erbs_separation#

bsrn.modeling.separation.erbs_separation(times, ghi, lat, lon, elev=0, min_mu0=0.065, max_zenith=87.0)[source]#

Erbs irradiance separation [1]: diffuse fraction $k$ from clearness index $k_t$, then DHI and BNI.

Inputs are time, ghi, and location (lat, lon, elev); zenith and clearness index are computed inside.

Piecewise formula (Erbs et al.): - $k_t leq 0.22$: $k = 1.0 - 0.09 k_t$ - $0.22 < k_t leq 0.80$: $k = 0.9511 - 0.1604 k_t + 4.388 k_t^2 - 16.638 k_t^3 + 12.336 k_t^4$ - $k_t > 0.80$: $k = 0.165$

Parameters:
  • times (pd.DatetimeIndex) – Timestamps.

  • ghi (array-like) – Global horizontal irradiance. [W/m^2]

  • lat (float) – Latitude. [degrees]

  • lon (float) – Longitude. [degrees]

  • elev (float, default 0) – Site elevation. [m] Use same value as for zenith when comparing to pvlib.

  • min_mu0 (float, default 0.065) – Minimum $mu_0$ when computing $k_t$.

  • max_zenith (float, default 87.0) – Maximum zenith for valid BNI; beyond this BNI is set to 0. [degrees]

Returns:

out – DataFrame with index=times and columns k, dhi, bni (modeled).

Return type:

pd.DataFrame

Raises:

ValueError – Propagated from _get_solar_and_kt() if times or ghi are invalid.

References