def test_output_time_step(self): o1 = OceanDrift(loglevel=20) norkyst = reader_netCDF_CF_generic.Reader(script_folder + '/../test_data/16Nov2015_NorKyst_z_surface/norkyst800_subset_16Nov2015.nc') basemap = reader_basemap_landmask.Reader( llcrnrlon=4, llcrnrlat=59.8, urcrnrlon=6, urcrnrlat=61, resolution='h', projection='merc') o1.add_reader([basemap, norkyst]) o1.seed_elements(5.25, 60.2, radius=3000, number=100, time=norkyst.start_time) o1.run(duration=timedelta(hours=12), time_step=timedelta(minutes=30), time_step_output=timedelta(minutes=30), outfile='test_time_step30.nc') # Check length of time array and output array time = o1.get_time_array()[0] self.assertEqual(o1.history.shape[1], len(time)) self.assertEqual(o1.start_time, time[0]) self.assertEqual(o1.time, time[-1]) # Second run, with larger output time step o2 = OceanDrift(loglevel=20) o2.add_reader([basemap, norkyst]) o2.seed_elements(5.25, 60.2, radius=3000, number=100, time=norkyst.start_time) o2.run(duration=timedelta(hours=12), time_step=timedelta(minutes=30), time_step_output=timedelta(minutes=60), outfile='test_time_step60.nc') self.assertEqual(o1.history.shape, (100,25)) self.assertEqual(o2.history.shape, (100,13)) # Check that start and end conditions (longitudes) are idential self.assertItemsEqual(o1.history['lon'][:,24].compressed(), o2.history['lon'][:,12].compressed()) self.assertItemsEqual(o1.history['lon'][:,0].compressed(), o2.history['lon'][:,0].compressed()) # Check that also run imported from file is identical o1i = OceanDrift(loglevel=20) o1i.io_import_file('test_time_step30.nc') o2i = OceanDrift(loglevel=20) o2i.io_import_file('test_time_step60.nc') os.remove('test_time_step30.nc') os.remove('test_time_step60.nc') self.assertItemsEqual(o2i.history['lon'][:,12].compressed(), o2.history['lon'][:,12].compressed()) # Check number of activated elements self.assertEqual(o1.num_elements_total(), o2.num_elements_total()) self.assertEqual(o1.num_elements_total(), o1i.num_elements_total()) self.assertEqual(o1.num_elements_total(), o2i.num_elements_total()) # Check number of deactivated elements self.assertEqual(o1.num_elements_deactivated(), o2.num_elements_deactivated()) self.assertEqual(o1.num_elements_deactivated(), o1i.num_elements_deactivated()) self.assertEqual(o1.num_elements_deactivated(), o2i.num_elements_deactivated())
#!/usr/bin/env python from datetime import datetime, timedelta from readers import reader_basemap_landmask from readers import reader_netCDF_CF_generic from models.openoil import OpenOil o = OpenOil(loglevel=0) # Set loglevel to 0 for debug information # Arome reader_arome = reader_netCDF_CF_generic.Reader( 'http://thredds.met.no/thredds/dodsC/arome25/arome_metcoop_default2_5km_latest.nc' ) # Norkyst reader_norkyst = reader_netCDF_CF_generic.Reader( 'http://thredds.met.no/thredds/dodsC/sea/norkyst800m/1h/aggregate_be') # Landmask (Basemap) reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=4, llcrnrlat=59.8, urcrnrlon=6, urcrnrlat=61, resolution='h', projection='merc') o.add_reader([reader_basemap, reader_norkyst, reader_arome]) # Seeding some particles lon = 4.8
#!/usr/bin/env python from datetime import datetime, timedelta from readers import reader_basemap_landmask from readers import reader_netCDF_CF_generic from models.openoil import OpenOil o = OpenOil(loglevel=0) # Set loglevel to 0 for debug information # Arome #reader_arome = reader_netCDF_CF_generic.Reader('http://thredds.met.no/thredds/dodsC/arome25/arome_metcoop_default2_5km_latest.nc') reader_arome = reader_netCDF_CF_generic.Reader( 'test_data/16Nov2015_NorKyst_z_surface/arome_subset_16Nov2015.nc') # Norkyst #reader_norkyst = reader_netCDF_CF_generic.Reader('http://thredds.met.no/thredds/dodsC/sea/norkyst800m/1h/aggregate_be') reader_norkyst = reader_netCDF_CF_generic.Reader( 'test_data/16Nov2015_NorKyst_z_surface/norkyst800_subset_16Nov2015.nc') # WAM10 #reader_wam10 = reader_netCDF_CF_generic.Reader('http://thredds.met.no/thredds/dodsC/sea/wam/wam10_be') # 6 hourly aggregates two months back #reader_wam10 = reader_netCDF_CF_generic.Reader('http://thredds.met.no/thredds/dodsC/fou-hi/wam10h/g10kmwave.nc') # GlobCurrent #reader_globcurrent = reader_netCDF_CF_generic.Reader('http://tds0.ifremer.fr/thredds/dodsC/CLS-L4-CUREUL_HS-ALT_SUM-V01.0_FULL_TIME_SERIE') # Total #reader_globcurrent = reader_netCDF_CF_generic.Reader('http://tds0.ifremer.fr/thredds/dodsC/GC_MOD_TIDE_GLO_010_FES2012_FULL_TIME_SERIE') # FES Tidal # Landmask (Basemap) reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=4, llcrnrlat=59.8,
#!/usr/bin/env python from datetime import datetime, timedelta from readers import reader_basemap_landmask from readers import reader_netCDF_CF_generic from models.openoil import OpenOil o = OpenOil(loglevel=0) # Set loglevel to 0 for debug information # HYCOM #reader_hycom = reader_netCDF_CF_generic.Reader('http://tds.hycom.org/thredds/dodsC/GLBu0.08/expt_19.1/2010/3hrly') #print reader_hycom reader_globcurrent = reader_netCDF_CF_generic.Reader('http://tds0.ifremer.fr/thredds/dodsC/CLS-L4-CUREUL_HS-ALT_SUM-V02.0_FULL_TIME_SERIE') # Landmask (Basemap) reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=100, llcrnrlat=5, urcrnrlon=120, urcrnrlat=15, resolution='h') # OceanWind try: reader_oceanwind = reader_netCDF_CF_generic.Reader( 'http://www.ncdc.noaa.gov/thredds/dodsC/oceanwinds6hr') print reader_oceanwind o.add_reader([reader_globcurrent, reader_oceanwind, reader_basemap]) except: o.add_reader([reader_globcurrent, reader_basemap]) # Seed some particles
#!/usr/bin/env python from datetime import datetime, timedelta from readers import reader_basemap_landmask from readers import reader_netCDF_CF_generic from models.openoil import OpenOil o = OpenOil(loglevel=0) # Set loglevel to 0 for debug information reader_hycom = reader_netCDF_CF_generic.Reader( 'http://tds.hycom.org/thredds/dodsC/GLBu0.08/expt_19.1/2010/3hrly') #print reader_hycom0 #reader_globcurrent = reader_netCDF_CF_generic.Reader('http://tds0.ifremer.fr/thredds/dodsC/CLS-L4-CUREUL_HS-ALT_SUM-V01.0_FULL_TIME_SERIE') # Total reader_oceanwind = reader_netCDF_CF_generic.Reader( 'http://www.ncdc.noaa.gov/thredds/dodsC/oceanwinds6hr') #print reader_oceanwind # Landmask (Basemap) reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=-94, llcrnrlat=20, urcrnrlon=-80, urcrnrlat=32, resolution='i') # Add readers o.add_reader([reader_basemap, reader_hycom, reader_oceanwind]) #o.add_reader([reader_basemap, reader_globcurrent, reader_oceanwind]) # Seed some particles
#!/usr/bin/env python from datetime import datetime, timedelta from readers import reader_basemap_landmask from readers import reader_netCDF_CF_generic from models.openoil import OpenOil o = OpenOil(loglevel=0) # Set loglevel to 0 for debug information # Arome #reader_arome = reader_netCDF_CF_generic.Reader('http://thredds.met.no/thredds/dodsC/arome25/arome_metcoop_default2_5km_latest.nc') # Nordc4 reader_nordic4 = reader_netCDF_CF_generic.Reader( 'http://thredds.met.no/thredds/dodsC/fou-hi/nordic4km-1h/Nordic-4km_SURF_1h_avg_00.nc' ) # Landmask (Basemap) reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=2, llcrnrlat=78, urcrnrlon=22, urcrnrlat=82.3, resolution='i', projection='merc') o.add_reader([reader_basemap, reader_nordic4]) o.fallback_values['y_wind'] = 35 # Northerly wind, to get stranding in ice # Seeding some particles lon = 8
# covering a larger domain (Nordic) from datetime import datetime, timedelta import numpy as np from readers import reader_basemap_landmask from readers import reader_netCDF_CF_generic from models.openoil import OpenOil from models.oceandrift import OceanDrift #o = OpenOil(loglevel=0) # Set loglevel to 0 for debug information o = OceanDrift(loglevel=0) # Set loglevel to 0 for debug information # Norkyst reader_norkyst = reader_netCDF_CF_generic.Reader( 'http://thredds.met.no/thredds/dodsC/sea/norkyst800m/1h/aggregate_be') # Nordic4 reader_nordic4 = reader_netCDF_CF_generic.Reader( 'http://thredds.met.no/thredds/dodsC/fou-hi/nordic4km-1h/Nordic-4km_SURF_1h_avg_00.nc' ) # Landmask (Basemap) reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=9.5, llcrnrlat=68.8, urcrnrlon=19.0, urcrnrlat=71.2, resolution='h', projection='merc') o.add_reader([reader_basemap, reader_norkyst, reader_nordic4])