class TestSolarflux(unittest.TestCase): """Unit testing the solar flux calculations""" def setUp(self): """Set up""" self.solar_irr = None self.rsr = TEST_RSR return def test_read(self): """Test that solar irradiance spctrum""" self.solar_irr = \ SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM, dlambda=0.005) self.assertTrue(os.path.exists(self.solar_irr.filename)) self.assertEqual(self.solar_irr.wavelength.shape[0], 1697) self.assertEqual(self.solar_irr.irradiance.shape[0], 1697) def test_solar_flux(self): """Calculate the solar-flux""" self.solar_irr = \ SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM, dlambda=0.005) # rsr function (se above) is given in micronsm therefore the scale # factor is 1.0 and not 1e+6 (default)! sflux = self.solar_irr.inband_solarflux(self.rsr, scale=1.0) self.assertAlmostEqual(sflux, 2.0029277645144234) #self.assertAlmostEqual(sflux, 2.5) def tearDown(self): """Clean up""" return
class TestSolarflux(unittest.TestCase): """Unit testing the solar flux calculations.""" def setUp(self): """Set up.""" self.solar_irr = SolarIrradianceSpectrum( TOTAL_IRRADIANCE_SPECTRUM_2000ASTM, dlambda=0.005) self.rsr = TEST_RSR def test_read(self): """Test that solar irradiance spctrum.""" self.assertTrue(os.path.exists(self.solar_irr.filename)) self.assertEqual(self.solar_irr.wavelength.shape[0], 1697) self.assertEqual(self.solar_irr.irradiance.shape[0], 1697) def test_solar_flux(self): """Calculate the solar-flux.""" # rsr function (se above) is given in micronsm therefore the scale # factor is 1.0 and not 1e+6 (default)! sflux = self.solar_irr.inband_solarflux(self.rsr, scale=1.0) self.assertAlmostEqual(sflux, 2.002927627) # self.assertAlmostEqual(sflux, 2.5) def test_interpolate(self): """Test the interpolate method.""" self.solar_irr.interpolate(dlambda=0.001, ival_wavelength=(0.200, 0.240)) self.assertTrue( np.allclose(RESULT_IPOL_WVLS, self.solar_irr.ipol_wavelength))
class TestSolarflux(unittest.TestCase): """Unit testing the solar flux calculations""" def setUp(self): """Set up""" self.solar_irr = None self.rsr = TEST_RSR return def test_read(self): """Test that solar irradiance spctrum""" self.solar_irr = \ SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM, dlambda=0.005) self.assertTrue(os.path.exists(self.solar_irr.filename)) self.assertEqual(self.solar_irr.wavelength.shape[0], 1697) self.assertEqual(self.solar_irr.irradiance.shape[0], 1697) def test_solar_flux(self): """Calculate the solar-flux""" self.solar_irr = \ SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM, dlambda=0.005) # rsr function (se above) is given in micronsm therefore the scale # factor is 1.0 and not 1e+6 (default)! sflux = self.solar_irr.inband_solarflux(self.rsr, scale=1.0) self.assertAlmostEqual(sflux, 2.0029277645144234) #self.assertAlmostEqual(sflux, 2.5) def tearDown(self): """Clean up""" return
def _get_solarflux(self): """Derive the in-band solar flux from rsr over the Near IR band (3.7 or 3.9 microns).""" solar_spectrum = \ SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM, dlambda=0.0005, wavespace=self.wavespace) self.solar_flux = solar_spectrum.inband_solarflux(self.rsr[self.bandname])
def _get_solarflux(self): """Derive the in-band solar flux from rsr over the Near IR band (3.7 or 3.9 microns)""" solar_spectrum = SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM, dlambda=0.0005, wavespace=self.wavespace) self.solar_flux = solar_spectrum.inband_solarflux( self.rsr[self.bandname])
print("... read responce functions") from pyspectral.near_infrared_reflectance import Calculator from pyspectral.solar import (SolarIrradianceSpectrum, TOTAL_IRRADIANCE_SPECTRUM_2000ASTM) solar_irr = SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM, dlambda=0.0005) #from pyspectral.seviri_rsr import load #seviri = load() #rsr = {'wavelength': seviri['IR3.9']['wavelength'], # 'response': seviri['IR3.9']['met10']['95']} #sflux = solar_irr.solar_flux_over_band(rsr) solar_irr = SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM, dlambda=0.0005) from pyspectral.rsr_reader import RelativeSpectralResponse seviri = RelativeSpectralResponse('Meteosat-10', 'seviri') sflux = solar_irr.inband_solarflux(seviri.rsr['IR3.9']) ch39 = local_data['IR_039'] ch11 = local_data['IR_108'] ch13 = local_data['IR_134'] lonlats = ch39.area.get_lonlats() from pyorbital.astronomy import sun_zenith_angle sunz = sun_zenith_angle(tslot, lonlats[0], lonlats[1]) print("... create look-up-table") #refl37 = Calculator(rsr) refl37 = Calculator('Meteosat-9', 'seviri', 'IR3.9', solar_flux=sflux) #refl37.make_tb2rad_lut('/tmp/seviri_37_tb2rad_lut.npz') # new syntax -> #refl37.make_tb2rad_lut('IR3.9','/data/COALITION2/database/meteosat/SEVIRI/seviri_tb2rad_lut/')
_DEFAULT_LOG_FORMAT = '[%(levelname)s: %(asctime)s : %(name)s] %(message)s' LOG = logging.getLogger('test_ahi') handler = logging.StreamHandler(sys.stderr) formatter = logging.Formatter(fmt=_DEFAULT_LOG_FORMAT, datefmt=_DEFAULT_TIME_FORMAT) handler.setFormatter(formatter) handler.setLevel(logging.DEBUG) LOG.setLevel(logging.DEBUG) logging.getLogger("").setLevel(logging.DEBUG) LOG.addHandler(handler) ahi = RelativeSpectralResponse('Himawari-8', 'ahi') solar_irr = SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM, dlambda=0.005) sflux = solar_irr.inband_solarflux(ahi.rsr['ch7']) LOG.info("Solar flux over Band: " + str(sflux)) # sunz = [80., 80.5] # tb7 = [288.0, 390.0] # tb14 = [282.0, 272.0] # tb16 = [275.0, 269.0] sunz = np.random.rand(5500, 550) * 120. tb7 = np.random.rand(5500, 550) * 120. + 260.0 tb14 = np.random.rand(5500, 550) * 30. + 260.0 tb16 = np.random.rand(5500, 550) * 30. + 250.0 refl38 = Calculator( 'Himawari-8', 'ahi',