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
Exemple #2
0
    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)
Exemple #4
0
#!/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,
Exemple #5
0
    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
Exemple #7
0
#!/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