def test_seed_seafloor(self): o = OpenOil(loglevel=30) reader_norkyst = reader_netCDF_CF_generic.Reader( o.test_data_folder() + '14Jan2016_NorKyst_z_3d/NorKyst-800m_ZDEPTHS_his_00_3Dsubset.nc') # Adding reader as lazy, to test seafloor seeding o.add_readers_from_list([ o.test_data_folder() + '14Jan2016_NorKyst_z_3d/NorKyst-800m_ZDEPTHS_his_00_3Dsubset.nc' ]) o.fallback_values['land_binary_mask'] = 0 o.fallback_values['x_wind'] = 0 o.fallback_values['y_wind'] = 0 o.fallback_values['x_sea_water_velocity'] = 0 o.fallback_values['y_sea_water_velocity'] = 0 lon = 4.5 lat = 62.0 o.seed_elements(lon, lat, z='seafloor', time=reader_norkyst.start_time, density=1000) o.set_config('drift:vertical_mixing', True) o.set_config('vertical_mixing:timestep', 1) # s o.run(steps=3, time_step=300, time_step_output=300) #o.plot_property('z') z, status = o.get_property('z') self.assertAlmostEqual(z[0, 0], -151.7, 1) # Seeded at seafloor depth self.assertAlmostEqual(z[-1, 0], -94.0, 1) # After some rising
def test_seed_seafloor(self): o = OpenOil(loglevel=50) reader_norkyst = reader_netCDF_CF_generic.Reader( o.test_data_folder() + '14Jan2016_NorKyst_z_3d/NorKyst-800m_ZDEPTHS_his_00_3Dsubset.nc') # Adding reader as lazy, to test seafloor seeding o.add_readers_from_list([ o.test_data_folder() + '14Jan2016_NorKyst_z_3d/NorKyst-800m_ZDEPTHS_his_00_3Dsubset.nc' ]) o.set_config('environment:fallback:land_binary_mask', 0) o.set_config('environment:fallback:x_wind', 0) o.set_config('environment:fallback:y_wind', 0) #o.set_config('environment:fallback:x_sea_water_velocity', 0) #o.set_config('environment:fallback:y_sea_water_velocity', 0) lon = 4.5 lat = 62.0 o.set_config('seed:droplet_diameter_min_subsea', 0.0010) # s o.set_config('seed:droplet_diameter_max_subsea', 0.0010) # s o.seed_elements(lon, lat, z='seafloor', time=reader_norkyst.start_time, density=1000, oiltype='GENERIC BUNKER C') o.set_config('drift:vertical_mixing', True) o.set_config('vertical_mixing:timestep', 1) # s o.run(steps=3, time_step=300, time_step_output=300) #o.plot_property('z') z, status = o.get_property('z') self.assertAlmostEqual(z[0, 0], -147.3, 1) # Seeded at seafloor depth self.assertAlmostEqual(z[-1, 0], -122.52, 1) # After some rising
def test_lazy_reader_oildrift(self): o = OpenOil(loglevel=0) reader_constant_wind = \ reader_constant.Reader({'x_wind':5, 'y_wind': 6, 'sea_ice_area_fraction': 0}) # Added ice area to prevent problems with masking # with older versions of netCDF library o.add_reader(reader_constant_wind) o.add_readers_from_list(reader_list, lazy=True) self.assertEqual(len(o._lazy_readers()), 4) o.seed_elements(lon=14, lat=67.85, time=datetime(2016, 2, 2, 12)) o.run(steps=5) print(o) # Debug, this fails for old libraries self.assertEqual(len(o._lazy_readers()), 2) self.assertEqual(len(o.discarded_readers), 1)
#!/usr/bin/env python """ Cone seeding ===================== """ from datetime import datetime, timedelta from opendrift.readers import reader_netCDF_CF_generic from opendrift.models.openoil import OpenOil o = OpenOil(loglevel=20) # Set loglevel to 0 for debug information #%% # Using live data from Thredds o.add_readers_from_list( ['https://thredds.met.no/thredds/dodsC/sea/norkyst800m/1h/aggregate_be']) #%% # Seed elements along cone, e.g. ship track with # increasing uncertainty in position latstart = 68.988911 lonstart = 16.040701 latend = 69.991446 lonend = 17.760061 time = [datetime.utcnow(), datetime.utcnow() + timedelta(hours=12)] o.seed_cone(lon=[lonstart, lonend], lat=[latstart, latend], oiltype='EKOFISK', radius=[100, 800], number=10000,
for timestep in [900, -900]: # forwards and backwards for z in [0, -200]: # seeding at sea surface and at 200 m depth if case == 'oil': o = OpenOil(weathering_model='noaa') args = { 'oiltype': 'IVAR AASEN 2012', #args = {'oiltype': 'WISTING', 'z': z } else: if z < 0: continue # Only surface seeding for Leeway o = Leeway() args = {'object_type': 32} o.add_readers_from_list(readers, timeout=5) print(o) #lons=[-0.8, 0.4]; lats=[59.9, 59.95] # NorKyst border #lons=[4.8, 5.1]; lats=[59.9, 59.95] # Western Norway coast #lons=[13.11, 13.13]; lats=[67.81, 67.80] # Lofoten #lons=[19.37, 19.33]; lats=[70.32, 70.34] # Troms lons = [3.8, 3.82] lats = [59.6, 59.61] # North Sea o.seed_elements( lon=lons, lat=lats, time=[datetime.now() - timedelta(hours=3), datetime.now()], number=1000,
#!/usr/bin/env python from datetime import datetime, timedelta from opendrift.readers import reader_netCDF_CF_generic from opendrift.models.openoil import OpenOil o = OpenOil(loglevel=0) # Set loglevel to 0 for debug information # Adding readers for global Thredds datasets: # - Ocean forecast from UK Met Office (FOAM model) # - Weather forecast from NOAA/NCEP o.add_readers_from_list([ 'http://tds.hycom.org/thredds/dodsC/GLBy0.08/latest', 'http://oos.soest.hawaii.edu/thredds/dodsC/hioos/model/atm/ncep_global/NCEP_Global_Atmospheric_Model_best.ncd' ]) # Seed some particles lat = 10.0 lon = 107.8 #time = datetime(2010, 3, 23, 6, 0, 0) time = datetime.now() o.seed_elements(lon, lat, radius=1000, number=1000, time=time) # Run model print(o) o.run(duration=timedelta(days=5), time_step=timedelta(minutes=15), time_step_output=timedelta(hours=3)) # Print and plot results
#!/usr/bin/env python """ Oil in ice ================================== """ from datetime import datetime, timedelta from opendrift.readers import reader_netCDF_CF_generic from opendrift.models.openoil import OpenOil o = OpenOil(loglevel=20) #%% # Using live data from Barents 2.5 km ocean model o.add_readers_from_list( ['https://thredds.met.no/thredds/dodsC/barents25km_agg']) #%% # Imaginary oil spill in Hinlopen strait o.seed_elements(lon=19.1909, lat=79.5986, radius=50, number=3000, time=datetime.utcnow() - timedelta(hours=12)) #%% # Adjusting some configuration o.set_config('processes:dispersion', False) o.set_config('processes:evaporation', False) o.set_config('processes:emulsification', False)
#!/usr/bin/env python from datetime import datetime, timedelta from opendrift.readers import reader_netCDF_CF_generic from opendrift.models.openoil import OpenOil o = OpenOil(loglevel=0) # Set loglevel to 0 for debug information # Adding readers for global Thredds datasets: # - Ocean forecast from UK Met Office (FOAM model) # - Weather forecast from NOAA/NCEP o.add_readers_from_list([ 'http://data.ncof.co.uk/thredds/dodsC/METOFFICE-GLO-AF-PHYS-HOURLY-CUR', 'http://oos.soest.hawaii.edu/thredds/dodsC/hioos/model/atm/ncep_global/NCEP_Global_Atmospheric_Model_best.ncd' ]) # Seed some particles lat = 10.0 lon = 107.8 #time = datetime(2010, 3, 23, 6, 0, 0) time = datetime.now() o.seed_elements(lon, lat, radius=1000, number=1000, time=time) # Run model print o o.run(duration=timedelta(days=5), time_step=timedelta(minutes=15), time_step_output=timedelta(hours=3)) # Print and plot results