def get_clearsky(self, times, model='ineichen', **kwargs): """ Calculate the clear sky estimates of GHI, DNI, and/or DHI at this location. Parameters ---------- times : DatetimeIndex model : str The clear sky model to use. kwargs passed to the relevant function(s). Returns ------- clearsky : DataFrame Column names are: ``ghi, dni, dhi``. """ if model == 'ineichen': cs = clearsky.ineichen(times, latitude=self.latitude, longitude=self.longitude, altitude=self.altitude, **kwargs) elif model == 'haurwitz': solpos = self.get_solarposition(times, **kwargs) cs = clearsky.haurwitz(solpos['apparent_zenith']) else: raise ValueError('{} is not a valid clear sky model'.format(model)) return cs
def get_clearsky(self, times, model='ineichen', **kwargs): """ Calculate the clear sky estimates of GHI, DNI, and/or DHI at this location. Parameters ---------- times : DatetimeIndex model : str The clear sky model to use. kwargs passed to the relevant function(s). Returns ------- clearsky : DataFrame Column names are: ``ghi, dni, dhi``. """ if model == 'ineichen': cs = clearsky.ineichen(times, latitude=self.latitude, longitude=self.longitude, altitude=self.altitude, **kwargs) elif model == 'haurwitz': solpos = self.get_solarposition(times, **kwargs) cs = clearsky.haurwitz(solpos['apparent_zenith']) else: raise ValueError('{} is not a valid clear sky model' .format(model)) return cs
def get_clearsky(self, times, model='ineichen', **kwargs): """ Calculate the clear sky estimates of GHI, DNI, and/or DHI at this location. Parameters ---------- times : DatetimeIndex model : str The clear sky model to use. Must be one of 'ineichen', 'haurwitz', 'simplified_solis'. kwargs passed to the relevant functions. Climatological values are assumed in many cases. See code for details. Returns ------- clearsky : DataFrame Column names are: ``ghi, dni, dhi``. """ if model == 'ineichen': cs = clearsky.ineichen(times, latitude=self.latitude, longitude=self.longitude, altitude=self.altitude, **kwargs) elif model == 'haurwitz': solpos = self.get_solarposition(times, **kwargs) cs = clearsky.haurwitz(solpos['apparent_zenith']) elif model == 'simplified_solis': # these try/excepts define default values that are only # evaluated if necessary. ineichen does some of this internally try: dni_extra = kwargs.pop('dni_extra') except KeyError: dni_extra = irradiance.extraradiation(times.dayofyear) try: pressure = kwargs.pop('pressure') except KeyError: pressure = atmosphere.alt2pres(self.altitude) try: apparent_elevation = kwargs.pop('apparent_elevation') except KeyError: solpos = self.get_solarposition( times, pressure=pressure, **kwargs) apparent_elevation = solpos['apparent_elevation'] cs = clearsky.simplified_solis( apparent_elevation, pressure=pressure, dni_extra=dni_extra, **kwargs) else: raise ValueError('{} is not a valid clear sky model' .format(model)) return cs
def test_haurwitz(): expected = pd.DataFrame(np.array([[0.], [0.], [82.85934048], [699.74514735], [1016.50198354], [838.32103769], [271.90853863], [0.], [0.]]), columns=['ghi'], index=times_localized) out = clearsky.haurwitz(ephem_data['zenith']) assert_frame_equal(expected, out)
def test_haurwitz(): tus = Location(32.2, -111, 'US/Arizona', 700) times = pd.date_range(start='2014-06-24', end='2014-06-25', freq='3h') times_localized = times.tz_localize(tus.tz) ephem_data = solarposition.get_solarposition(times_localized, tus.latitude, tus.longitude) expected = pd.DataFrame(np.array([[0.], [0.], [82.85934048], [699.74514735], [1016.50198354], [838.32103769], [271.90853863], [0.], [0.]]), columns=['ghi'], index=times_localized) out = clearsky.haurwitz(ephem_data['zenith']) assert_frame_equal(expected, out)
def test_haurwitz(): apparent_solar_elevation = np.array( [-20, -0.05, -0.001, 5, 10, 30, 50, 90]) apparent_solar_zenith = 90 - apparent_solar_elevation data_in = pd.DataFrame(data=apparent_solar_zenith, index=apparent_solar_zenith, columns=['apparent_zenith']) expected = pd.DataFrame(np.array([ 0., 0., 0., 48.6298687941956, 135.741748091813, 487.894132885425, 778.766689344363, 1035.09203253450 ]), columns=['ghi'], index=apparent_solar_zenith) out = clearsky.haurwitz(data_in['apparent_zenith']) assert_frame_equal(expected, out)
def test_haurwitz(): apparent_solar_elevation = np.array([-20, -0.05, -0.001, 5, 10, 30, 50, 90]) apparent_solar_zenith = 90 - apparent_solar_elevation data_in = pd.DataFrame(data=apparent_solar_zenith, index=apparent_solar_zenith, columns=['apparent_zenith']) expected = pd.DataFrame(np.array([0., 0., 0., 48.6298687941956, 135.741748091813, 487.894132885425, 778.766689344363, 1035.09203253450]), columns=['ghi'], index=apparent_solar_zenith) out = clearsky.haurwitz(data_in['apparent_zenith']) assert_frame_equal(expected, out)
def get_clearsky(self, times, model='ineichen', solar_position=None, dni_extra=None, **kwargs): """ Calculate the clear sky estimates of GHI, DNI, and/or DHI at this location. Parameters ---------- times: DatetimeIndex model: str The clear sky model to use. Must be one of 'ineichen', 'haurwitz', 'simplified_solis'. solar_position : None or DataFrame DataFrame with with columns 'apparent_zenith', 'zenith', 'apparent_elevation'. dni_extra: None or numeric If None, will be calculated from times. kwargs passed to the relevant functions. Climatological values are assumed in many cases. See source code for details! Returns ------- clearsky : DataFrame Column names are: ``ghi, dni, dhi``. """ if dni_extra is None: dni_extra = irradiance.extraradiation(times) try: pressure = kwargs.pop('pressure') except KeyError: pressure = atmosphere.alt2pres(self.altitude) if solar_position is None: solar_position = self.get_solarposition(times, pressure=pressure, **kwargs) apparent_zenith = solar_position['apparent_zenith'] apparent_elevation = solar_position['apparent_elevation'] if model == 'ineichen': try: linke_turbidity = kwargs.pop('linke_turbidity') except KeyError: interp_turbidity = kwargs.pop('interp_turbidity', True) linke_turbidity = clearsky.lookup_linke_turbidity( times, self.latitude, self.longitude, interp_turbidity=interp_turbidity) try: airmass_absolute = kwargs.pop('airmass_absolute') except KeyError: airmass_absolute = self.get_airmass( times, solar_position=solar_position)['airmass_absolute'] cs = clearsky.ineichen(apparent_zenith, airmass_absolute, linke_turbidity, altitude=self.altitude, dni_extra=dni_extra) elif model == 'haurwitz': cs = clearsky.haurwitz(apparent_zenith) elif model == 'simplified_solis': cs = clearsky.simplified_solis(apparent_elevation, pressure=pressure, dni_extra=dni_extra, **kwargs) else: raise ValueError( ('{} is not a valid clear sky model. Must be ' + 'one of ineichen, simplified_solis, haurwitz').format(model)) return cs
def get_clearsky(self, times, model='ineichen', **kwargs): """ Calculate the clear sky estimates of GHI, DNI, and/or DHI at this location. Parameters ---------- times : DatetimeIndex model : str The clear sky model to use. Must be one of 'ineichen', 'haurwitz', 'simplified_solis'. kwargs passed to the relevant functions. Climatological values are assumed in many cases. See code for details. Returns ------- clearsky : DataFrame Column names are: ``ghi, dni, dhi``. """ if model == 'ineichen': cs = clearsky.ineichen(times, latitude=self.latitude, longitude=self.longitude, altitude=self.altitude, **kwargs) elif model == 'haurwitz': solpos = self.get_solarposition(times, **kwargs) cs = clearsky.haurwitz(solpos['apparent_zenith']) elif model == 'simplified_solis': # these try/excepts define default values that are only # evaluated if necessary. ineichen does some of this internally try: dni_extra = kwargs.pop('dni_extra') except KeyError: dni_extra = irradiance.extraradiation(times.dayofyear) try: pressure = kwargs.pop('pressure') except KeyError: pressure = atmosphere.alt2pres(self.altitude) try: apparent_elevation = kwargs.pop('apparent_elevation') except KeyError: solpos = self.get_solarposition(times, pressure=pressure, **kwargs) apparent_elevation = solpos['apparent_elevation'] cs = clearsky.simplified_solis(apparent_elevation, pressure=pressure, dni_extra=dni_extra, **kwargs) else: raise ValueError('{} is not a valid clear sky model'.format(model)) return cs
def test_haurwitz_keys(): clearsky_data = clearsky.haurwitz(ephem_data['zenith']) assert 'GHI' in clearsky_data.columns
def test_haurwitz(): clearsky.haurwitz(ephem_data['zenith'])
def test_haurwitz(): clearsky.haurwitz(ephem_data["zenith"])
def test_haurwitz_keys(): clearsky_data = clearsky.haurwitz(ephem_data["zenith"]) assert "ghi" in clearsky_data.columns
def get_clearsky(self, times, model='ineichen', solar_position=None, dni_extra=None, **kwargs): """ Calculate the clear sky estimates of GHI, DNI, and/or DHI at this location. Parameters ---------- times: DatetimeIndex model: str, default 'ineichen' The clear sky model to use. Must be one of 'ineichen', 'haurwitz', 'simplified_solis'. solar_position : None or DataFrame, default None DataFrame with columns 'apparent_zenith', 'zenith', 'apparent_elevation'. dni_extra: None or numeric, default None If None, will be calculated from times. kwargs passed to the relevant functions. Climatological values are assumed in many cases. See source code for details! Returns ------- clearsky : DataFrame Column names are: ``ghi, dni, dhi``. """ if dni_extra is None: dni_extra = irradiance.get_extra_radiation(times) try: pressure = kwargs.pop('pressure') except KeyError: pressure = atmosphere.alt2pres(self.altitude) if solar_position is None: solar_position = self.get_solarposition(times, pressure=pressure, **kwargs) apparent_zenith = solar_position['apparent_zenith'] apparent_elevation = solar_position['apparent_elevation'] if model == 'ineichen': try: linke_turbidity = kwargs.pop('linke_turbidity') except KeyError: interp_turbidity = kwargs.pop('interp_turbidity', True) linke_turbidity = clearsky.lookup_linke_turbidity( times, self.latitude, self.longitude, interp_turbidity=interp_turbidity) try: airmass_absolute = kwargs.pop('airmass_absolute') except KeyError: airmass_absolute = self.get_airmass( times, solar_position=solar_position)['airmass_absolute'] cs = clearsky.ineichen(apparent_zenith, airmass_absolute, linke_turbidity, altitude=self.altitude, dni_extra=dni_extra, **kwargs) elif model == 'haurwitz': cs = clearsky.haurwitz(apparent_zenith) elif model == 'simplified_solis': cs = clearsky.simplified_solis( apparent_elevation, pressure=pressure, dni_extra=dni_extra, **kwargs) else: raise ValueError('{} is not a valid clear sky model. Must be ' 'one of ineichen, simplified_solis, haurwitz' .format(model)) return cs