def test_dirindex_min_cos_zenith_max_zenith(): # map out behavior under difficult conditions with various # limiting kwargs settings # times don't have any physical relevance times = pd.DatetimeIndex(['2014-06-24T12-0700','2014-06-24T18-0700']) ghi = pd.Series([0, 1], index=times) ghi_clearsky = pd.Series([0, 1], index=times) dni_clearsky = pd.Series([0, 5], index=times) solar_zenith = pd.Series([90, 89.99], index=times) out = irradiance.dirindex(ghi, ghi_clearsky, dni_clearsky, solar_zenith, times) expected = pd.Series([nan, nan], index=times) assert_series_equal(out, expected) out = irradiance.dirindex(ghi, ghi_clearsky, dni_clearsky, solar_zenith, times, min_cos_zenith=0) expected = pd.Series([nan, nan], index=times) assert_series_equal(out, expected) out = irradiance.dirindex(ghi, ghi_clearsky, dni_clearsky, solar_zenith, times, max_zenith=90) expected = pd.Series([nan, nan], index=times) assert_series_equal(out, expected) out = irradiance.dirindex(ghi, ghi_clearsky, dni_clearsky, solar_zenith, times, min_cos_zenith=0, max_zenith=100) expected = pd.Series([nan, 5.], index=times) assert_series_equal(out, expected)
def test_dirindex_min_cos_zenith_max_zenith(): # map out behavior under difficult conditions with various # limiting kwargs settings # times don't have any physical relevance times = pd.DatetimeIndex(['2014-06-24T12-0700','2014-06-24T18-0700']) ghi = pd.Series([0, 1], index=times) ghi_clearsky = pd.Series([0, 1], index=times) dni_clearsky = pd.Series([0, 5], index=times) solar_zenith = pd.Series([90, 89.99], index=times) out = irradiance.dirindex(ghi, ghi_clearsky, dni_clearsky, solar_zenith, times) expected = pd.Series([nan, nan], index=times) assert_series_equal(out, expected) out = irradiance.dirindex(ghi, ghi_clearsky, dni_clearsky, solar_zenith, times, min_cos_zenith=0) expected = pd.Series([nan, nan], index=times) assert_series_equal(out, expected) out = irradiance.dirindex(ghi, ghi_clearsky, dni_clearsky, solar_zenith, times, max_zenith=100) expected = pd.Series([0., 5.], index=times) assert_series_equal(out, expected) out = irradiance.dirindex(ghi, ghi_clearsky, dni_clearsky, solar_zenith, times, min_cos_zenith=0, max_zenith=100) expected = pd.Series([0., 5.], index=times) assert_series_equal(out, expected)
def test_dirindex(times): ghi = pd.Series([0, 0, 1038.62, 254.53], index=times) ghi_clearsky = pd.Series( np.array([0., 79.73860422, 1042.48031487, 257.20751138]), index=times ) dni_clearsky = pd.Series( np.array([0., 316.1949056, 939.95469881, 646.22886049]), index=times ) zenith = pd.Series( np.array([124.0390863, 82.85457044, 10.56413562, 72.41687122]), index=times ) pressure = 93193. tdew = 10. out = irradiance.dirindex(ghi, ghi_clearsky, dni_clearsky, zenith, times, pressure=pressure, temp_dew=tdew) dirint_close_values = irradiance.dirint(ghi, zenith, times, pressure=pressure, use_delta_kt_prime=True, temp_dew=tdew).values expected_out = np.array([np.nan, 0., 748.31562753, 630.72592644]) tolerance = 1e-8 assert np.allclose(out, expected_out, rtol=tolerance, atol=0, equal_nan=True) tol_dirint = 0.2 assert np.allclose(out.values, dirint_close_values, rtol=tol_dirint, atol=0, equal_nan=True)
def calc_dni_dirindex(self, time_range, ghi, mypressure=101325, dew_point=None): """ Compute the dni-value based on given ghi value within a time range using the DIRINDEX algortihm. Parameter: ========== time_range: pandas Series - time range. ghi: pandas Series - with global horizontal irradiance (ghi) >> taken from DWD Forecast. [W/m2] mypressure: reference pressure [Pa] dew_point: pandas Series of Dew Point [degC] """ dni = dirindex(dni_clearsky=self.clearsky.dni, ghi_clearsky=self.clearsky.ghi, ghi=ghi, times=time_range, pressure=mypressure, zenith=self.solpos.zenith, temp_dew=dew_point) return dni
def time_dirindex(self): irradiance.dirindex(self.clearsky_irradiance.ghi, self.clearsky_irradiance.ghi, self.clearsky_irradiance.dni, self.solar_position.apparent_zenith, self.times)