def make_OceanDrift_object(self): self.o = OceanDrift(loglevel=20) self.fake_eddy = reader_ArtificialOceanEddy.Reader(2, 62) self.o.use_block = False self.o.config['runge_kutta'] = False self.reader_basemap = reader_basemap_landmask.Reader( llcrnrlon=-1.5, llcrnrlat=59, urcrnrlon=7, urcrnrlat=64, resolution='i') self.o.add_reader([self.fake_eddy, self.reader_basemap])
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())
def setUp(self): self.objectType = 50 # FISHING-VESSEL-1 self.lee = Leeway(loglevel=20) #print self.lee.leewayprop.values()[0] #self.lee = WindBlow(loglevel=0) self.reader_basemap = reader_basemap_landmask.Reader( llcrnrlon=3, llcrnrlat=59, projection='merc', urcrnrlon=6, urcrnrlat=61, resolution='i') self.lee.add_reader([self.reader_basemap]) self.lee.fallback_values['x_wind'] = 0 self.lee.fallback_values['y_wind'] = 10 self.lee.fallback_values['x_sea_water_velocity'] = 0 self.lee.fallback_values['y_sea_water_velocity'] = 0
# 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('/disk1/data/opendrift_testdata/arome.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('/disk1/data/opendrift_testdata/norkyst800.nc') # Landmask (Basemap) reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=15.4, llcrnrlat=68.6, urcrnrlon=20.0, urcrnrlat=70.5, resolution='h', projection='merc') o.add_reader([reader_basemap, reader_norkyst, reader_arome]) # Seeding some particles latstart = 68.988911 lonstart = 16.040701 #latstart = 69.477754 #lonstart = 16.441702 latend = 69.991446 lonend = 17.760061 lon = [lonstart, lonend] lat = [latstart, latend]
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 lon = -88.387161 lat = 28.736669 # Macondo location starttime = datetime(2010, 4, 21, 6, 0, 0) # 4 hours after explosion time = [starttime, starttime + timedelta(hours=24 * 40)] o.seed_elements(lon, lat, radius=0, number=5000, time=time) # Run model
from datetime import datetime, timedelta from readers import reader_basemap_landmask from readers import reader_netCDF_CF_generic from models.oceandrift import OceanDrift o = OceanDrift(loglevel=20) # Set loglevel to 0 for debug information reader_norkyst = reader_netCDF_CF_generic.Reader( 'test_data/16Nov2015_NorKyst_z_surface/norkyst800_subset_16Nov2015.nc') time = reader_norkyst.start_time reader_norkyst.interpolation = 'linearND' reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=4, llcrnrlat=59.9, urcrnrlon=5.5, urcrnrlat=61.5, resolution='h') o.add_reader([reader_norkyst, reader_basemap]) lon = 4.5 lat = 60.0 # First run, with Euler scheme: o.config['drift']['scheme'] = 'euler' o.seed_elements(lon, lat, radius=0, number=1, time=time) o.run(steps=66 * 2, time_step=1800) # Second run, with Runge-Kutta scheme: o2 = OceanDrift(loglevel=20) # Set loglevel to 0 for debug information o2.add_reader([reader_norkyst, reader_basemap])
from readers import reader_basemap_landmask from readers import reader_netCDF_CF_generic from models.oceandrift import OceanDrift ncfile = 'backandforth.nc' o = OceanDrift(loglevel=0) # Set loglevel to 0 for debug information reader_norkyst = reader_netCDF_CF_generic.Reader( 'test_data/16Nov2015_NorKyst_z_surface/norkyst800_subset_16Nov2015.nc') #reader_norkyst = reader_netCDF_CF_generic.Reader('http://thredds.met.no/thredds/dodsC/sea/norkyst800m/1h/aggregate_be') reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=3, llcrnrlat=59, urcrnrlon=6, urcrnrlat=62, resolution='h') o.add_reader([reader_norkyst, reader_basemap]) ################ # Forward run ################ # Seeding some particles lon = 4.2 lat = 60.1 time = reader_norkyst.start_time o.seed_elements(lon, lat, radius=1000, number=100, time=time) o.run(steps=50 * 4, time_step=900, outfile=ncfile)
ncfile = 'oil3Dmixing.nc' import_file = False # Set to True to import previous run if import_file is True: o.io_import_file(ncfile) else: reader_arome = reader_netCDF_CF_generic.Reader( 'http://thredds.met.no/thredds/dodsC/arome25/arome_metcoop_default2_5km_latest.nc' ) 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=3.0, llcrnrlat=61.4, urcrnrlon=6.2, urcrnrlat=62.6, resolution='h', projection='merc') o.add_reader([reader_norkyst, reader_basemap, reader_arome]) # Seeding some particles lon = 4.9 lat = 62.1 # Stad time = reader_arome.start_time # Seed oil elements at defined position and time o.seed_elements(lon, lat,
lw = Leeway(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') # Landmask (Basemap) reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=3.3, llcrnrlat=59.5, urcrnrlon=5.5, urcrnrlat=62.5, resolution='h', projection='merc') lw.add_reader([reader_norkyst, reader_arome, reader_basemap]) # Seeding some particles lon = 4.5 lat = 60.0 # Outside Bergen # Seed leeway elements at defined position and time objType = 26 # 26 = Life-raft, no ballast lw.seed_elements(lon, lat, radius=1000,
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') # Landmask (Basemap) reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=2, llcrnrlat=59, urcrnrlon=6, urcrnrlat=62, resolution='i', projection='merc') o.add_reader([reader_basemap, reader_norkyst, reader_arome]) # Seeding some particles lon = [3.6, 5.1] lat = [61., 59.6] # Outside Bergen # Seed elements along cone, e.g. ship track with # increasing uncertainty in position time = [reader_arome.start_time, reader_arome.start_time + timedelta(hours=30)] #time = reader_arome.start_time
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 lat = 79.5 # West of Svalbard #time = datetime(2015, 9, 22, 6, 0, 0) #time = [reader_nordic4.start_time, # reader_nordic4.start_time + timedelta(hours=30)] time = reader_nordic4.start_time
from models.openoil import OpenOil o = OpenOil(loglevel=0) # Set loglevel to 0 for debug information # Arome 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( 'test_data/16Nov2015_NorKyst_z_surface/norkyst800_subset_16Nov2015.nc') # Landmask (Basemap) reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=3.5, llcrnrlat=60.4, urcrnrlon=7, urcrnrlat=61.8, resolution='h', projection='merc') o.add_reader([reader_basemap, reader_norkyst, reader_arome]) ############################################################ # Seed oil particles within contour detected from satellite ############################################################ o.seed_from_gml( 'test_data/radarsat_oil_satellite_observation/RS2_20151116_002619_0127_SCNB_HH_SGF_433012_9730_12182143_Oil.gml', num_elements=2000) # Adjusting some configuration o.config['processes']['diffusion'] = True o.config['processes']['dispersion'] = True
from datetime import datetime, timedelta from readers import reader_basemap_landmask from readers import reader_netCDF_CF_generic from models.windblow import WindBlow o = WindBlow(loglevel=0) # Set loglevel to 0 for debug information #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') reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=2.5, llcrnrlat=59, urcrnrlon=8, urcrnrlat=63, resolution='h') o.add_reader([reader_arome, reader_basemap]) # Seeding some particles lon = 6.5 lat = 60.3 o.seed_elements(lon, lat, radius=5000, number=1000, time=reader_arome.start_time) # Running model (until end of driver data)
# Illustrating the difference between Euler and Runge-Kutta propagation # schemes, using an idealised (analytical) eddy current field. from datetime import datetime, timedelta from readers import reader_basemap_landmask from readers import reader_ArtificialOceanEddy from models.oceandrift import OceanDrift o = OceanDrift(loglevel=0) # Set loglevel to 0 for debug information fake_eddy = reader_ArtificialOceanEddy.Reader(2, 62) reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=-1.5, llcrnrlat=59, urcrnrlon=7, urcrnrlat=64, resolution='h') o.add_reader([fake_eddy, reader_basemap]) lon = 2.0 lat = 63.0 # Close to Station M # First run, with Euler scheme: o.config['drift']['scheme'] = 'euler' o.seed_elements(lon, lat, radius=0, number=1, time=datetime(2015, 1, 1)) o.run(steps=300, time_step=3600) # Second run, with Runge-Kutta scheme: o2 = OceanDrift(loglevel=20) # Set loglevel to 0 for debug information
#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]) #o.add_reader([reader_basemap, reader_norkyst]) # Seeding some particles lons = np.linspace(10.2, 12.2, 100) lats = np.linspace(69.8, 70.8, 100) lons, lats = np.meshgrid(lons, lats) lons = lons.ravel() lats = lats.ravel() # Seed oil elements at defined position and time o.seed_elements(lons,
from readers import reader_basemap_landmask from readers import reader_ROMS_native from models.oceandrift import OceanDrift o = OceanDrift(loglevel=0) # Set loglevel to 0 for debug information # Nordic 4km nordic_native = reader_ROMS_native.Reader( 'test_data/2Feb2016_Nordic_sigma_3d/Nordic-4km_SLEVELS_avg_00_subset2Feb2016.nc' ) # Landmask (Basemap) reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=11.0, llcrnrlat=67.5, urcrnrlon=16.0, urcrnrlat=69.0, resolution='h', projection='merc') o.add_reader([reader_basemap, nordic_native]) # Seeding some particles time = nordic_native.start_time lon = 12.0 lat = 68.3 # Seed oil elements at defined position and time o.seed_elements(lon, lat, radius=0, number=10,
import numpy as np from readers import reader_basemap_landmask from readers import reader_netCDF_CF_generic from models.oceandrift import OceanDrift o = OceanDrift(loglevel=0) # Set loglevel to 0 for debug information reader_norkyst = reader_netCDF_CF_generic.Reader( 'test_data/16Nov2015_NorKyst_z_surface/norkyst800_subset_16Nov2015.nc') # Landmask (Basemap) reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=4.0, llcrnrlat=59.9, urcrnrlon=5.5, urcrnrlat=61.2, resolution='h', projection='merc') o.add_reader([reader_basemap, reader_norkyst]) # Seeding some particles lons = np.linspace(4.4, 4.6, 10) lats = np.linspace(60.0, 60.1, 10) lons, lats = np.meshgrid(lons, lats) lons = lons.ravel() lats = lats.ravel() # Seed oil elements on a grid at regular time interval start_time = reader_norkyst.start_time time_step = timedelta(hours=6)
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 lat=10.228248; lon=106.973337 lat=10.0; lon=107.8 time = datetime(2010, 3, 23, 6, 0, 0)
from models.leeway import Leeway lw = Leeway(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') # Landmask (Basemap) reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=2.5, llcrnrlat=59.3, urcrnrlon=5.8, urcrnrlat=62.5, resolution='h') lw.add_reader([reader_norkyst, reader_arome, reader_basemap]) # Seed elements along cone, e.g. ship track with # increasing uncertainty in position lon = [3.6, 5.1]; lat = [61., 59.6]; time = [reader_arome.start_time, reader_arome.start_time + timedelta(hours=30)] #time = reader_arome.start_time objType = 26 # 26 = Life-raft, no ballast lw.seed_elements(lon, lat, radius=[1000, 10000], number=5000, time=time, objectType=objType) # Running model (until end of driver data) lw.run(steps=66*4, time_step=900, outfile='outleeway.nc')
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 lat = 60.0 # Outside Bergen time = None time = reader_arome.start_time # Seed elements at defined position and time import numpy as np
o = Leeway(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') # Landmask (Basemap) reader_basemap = reader_basemap_landmask.Reader(llcrnrlon=5.5, llcrnrlat=61.05, urcrnrlon=6.65, urcrnrlat=61.21, resolution='f', projection='merc') reader_norkyst.interpolation = 'linearND' # Slower, but extrapolates to coast reader_arome.interpolation = 'linearND' o.add_reader([reader_basemap, reader_norkyst, reader_arome]) # Seed elements at defined position and time lat = 61.117594 lon = 6.55 time = None #time = [reader_arome.start_time, # reader_arome.start_time + timedelta(hours=5)] time = reader_arome.start_time objType = 1 # 1: Person-in-water (PIW), unknown state (mean values)