def test_isotropic_float(): result = irradiance.isotropic(40, 100) assert_allclose(result, 88.30222215594891)
def test_isotropic_series(irrad_data): result = irradiance.isotropic(40, irrad_data['dhi']) assert_allclose(result, [0, 35.728402, 104.601328, 54.777191], atol=1e-4)
def test_isotropic_series(): irradiance.isotropic(40, irrad_data['DHI'])
def test_isotropic_float(): irradiance.isotropic(40, 100)
def test_isotropic_series(): irradiance.isotropic(40, irrad_data['dhi'])
# %% # So as the array is packed tighter (decreasing ``k``), the average masking # angle increases. # # Next we'll recreate Figure 5. Note that the y-axis here is the ratio of # diffuse plane of array irradiance (after accounting for shading) to diffuse # horizontal irradiance. This means that the deviation from 100% is due to the # combination of self-shading and the fact that being at a tilt blocks off # the portion of the sky behind the row. The first effect is modeled with # :py:func:`pvlib.shading.sky_diffuse_passias` and the second with # :py:func:`pvlib.irradiance.isotropic`. plt.figure() for k in [1, 1.5, 2, 10]: gcr = 1 / k psi = shading.masking_angle_passias(surface_tilt, gcr) shading_loss = shading.sky_diffuse_passias(psi) transposition_ratio = irradiance.isotropic(surface_tilt, dhi=1.0) relative_diffuse = transposition_ratio * (1 - shading_loss) * 100 # % plt.plot(surface_tilt, relative_diffuse, label=f'k={k}') plt.xlabel('Inclination angle [degrees]') plt.ylabel('Relative diffuse irradiance [%]') plt.ylim(0, 105) plt.legend() plt.show() # %% # As ``k`` decreases, GCR increases, so self-shading loss increases and # collected diffuse irradiance decreases.