Note
Go to the end to download the full example code
Show dominating source
import os
from datetime import datetime
import xarray as xr
import opendrift
from opendrift.models.oceandrift import OceanDrift
of = 'test.nc'
Seed elements at 5 different locations/longitudes
lons = [4, 4.2, 4.3, 4.32, 4.6]
t = datetime.now()
o = OceanDrift(loglevel=20)
for i, lon in enumerate(lons):
o.seed_elements(lon=lon, lat=60, radius=3000, number=2000, time=t, origin_marker_name='Lon %f' % lon)
o.set_config('environment:constant:y_sea_water_velocity', .1)
o.run(steps=15, outfile=of)
14:02:08 INFO opendrift.models.basemodel:539: OpenDriftSimulation initialised (version 1.10.7 / v1.10.6-119-g1da5bec)
14:02:08 INFO opendrift.models.basemodel:2591: Fallback values will be used for the following variables which have no readers:
14:02:08 INFO opendrift.models.basemodel:2594: x_sea_water_velocity: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: x_wind: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: y_wind: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: upward_sea_water_velocity: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: ocean_vertical_diffusivity: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: sea_surface_wave_significant_height: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: sea_surface_wave_stokes_drift_x_velocity: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: sea_surface_wave_stokes_drift_y_velocity: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: sea_surface_wave_period_at_variance_spectral_density_maximum: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: sea_surface_wave_mean_period_from_variance_spectral_density_second_frequency_moment: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: sea_surface_swell_wave_to_direction: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: sea_surface_swell_wave_peak_period_from_variance_spectral_density: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: sea_surface_swell_wave_significant_height: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: sea_surface_wind_wave_to_direction: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: sea_surface_wind_wave_mean_period: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: sea_surface_wind_wave_significant_height: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: surface_downward_x_stress: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: surface_downward_y_stress: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: turbulent_kinetic_energy: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: turbulent_generic_length_scale: 0.000000
14:02:08 INFO opendrift.models.basemodel:2594: ocean_mixed_layer_thickness: 50.000000
14:02:08 INFO opendrift.models.basemodel:2594: sea_floor_depth_below_sea_level: 10000.000000
14:02:08 INFO opendrift.models.basemodel:2753: Adding a dynamical landmask with max. priority based on assumed maximum speed of 1 m/s. Adding a customised landmask may be faster...
14:02:14 INFO opendrift.models.basemodel:1701: Using existing reader for land_binary_mask
14:02:14 INFO opendrift.models.basemodel:1713: All points are in ocean
14:02:14 INFO opendrift.models.basemodel:2882: 2023-09-01 14:02:08.280043 - step 1 of 15 - 10000 active elements (0 deactivated)
14:02:14 INFO opendrift.models.basemodel:2882: 2023-09-01 15:02:08.280043 - step 2 of 15 - 10000 active elements (0 deactivated)
14:02:14 INFO opendrift.models.basemodel:2882: 2023-09-01 16:02:08.280043 - step 3 of 15 - 10000 active elements (0 deactivated)
14:02:14 INFO opendrift.models.basemodel:2882: 2023-09-01 17:02:08.280043 - step 4 of 15 - 10000 active elements (0 deactivated)
14:02:14 INFO opendrift.models.basemodel:2882: 2023-09-01 18:02:08.280043 - step 5 of 15 - 10000 active elements (0 deactivated)
14:02:14 INFO opendrift.models.basemodel:2882: 2023-09-01 19:02:08.280043 - step 6 of 15 - 10000 active elements (0 deactivated)
14:02:14 INFO opendrift.models.basemodel:2882: 2023-09-01 20:02:08.280043 - step 7 of 15 - 10000 active elements (0 deactivated)
14:02:15 INFO opendrift.models.basemodel:2882: 2023-09-01 21:02:08.280043 - step 8 of 15 - 10000 active elements (0 deactivated)
14:02:15 INFO opendrift.models.basemodel:2882: 2023-09-01 22:02:08.280043 - step 9 of 15 - 10000 active elements (0 deactivated)
14:02:15 INFO opendrift.models.basemodel:2882: 2023-09-01 23:02:08.280043 - step 10 of 15 - 10000 active elements (0 deactivated)
14:02:15 INFO opendrift.models.basemodel:2882: 2023-09-02 00:02:08.280043 - step 11 of 15 - 10000 active elements (0 deactivated)
14:02:15 INFO opendrift.models.basemodel:2882: 2023-09-02 01:02:08.280043 - step 12 of 15 - 10000 active elements (0 deactivated)
14:02:15 INFO opendrift.models.basemodel:2882: 2023-09-02 02:02:08.280043 - step 13 of 15 - 10000 active elements (0 deactivated)
14:02:15 INFO opendrift.models.basemodel:2882: 2023-09-02 03:02:08.280043 - step 14 of 15 - 10000 active elements (0 deactivated)
14:02:15 INFO opendrift.models.basemodel:2882: 2023-09-02 04:02:08.280043 - step 15 of 15 - 10000 active elements (0 deactivated)
14:02:15 INFO opendrift.export.io_netcdf:111: Wrote 16 steps to file test.nc
/opt/conda/envs/opendrift/lib/python3.11/site-packages/numpy/ma/core.py:467: RuntimeWarning: invalid value encountered in cast
fill_value = np.array(fill_value, copy=False, dtype=ndtype)
Calculate spatial density of elements at 1500m grid spacing
oa = opendrift.open_xarray(of)
oa.ds = oa.ds.where(oa.ds.status==0)
d = oa.get_histogram(pixelsize_m=1500, weights=None)
dom = d.argmax(dim='origin_marker', skipna=True)
dom = dom.where(d.sum(dim='origin_marker')>0)
dom.name = 'Dominating source'
14:02:16 DEBUG opendrift.models.basemodel:625: Adding 18 config items from basemodel
14:02:16 DEBUG opendrift.models.basemodel:625: Adding 5 config items from basemodel
14:02:16 DEBUG opendrift.models.basemodel:625: Adding 48 config items from basemodel
14:02:16 INFO opendrift.models.basemodel:539: OpenDriftSimulation initialised (version 1.10.7 / v1.10.6-119-g1da5bec)
14:02:16 DEBUG opendrift.models.basemodel:625: Adding 15 config items from oceandrift
14:02:16 DEBUG opendrift.models.basemodel:637: Overwriting config item seed:z
14:02:16 DEBUG opendrift.export.io_netcdf:216: Importing with Xarray from test.nc
14:02:16 INFO opendrift:118: Returning <class 'opendrift.models.oceandrift.OceanDrift'> object
14:02:17 INFO opendrift.models.basemodel:4667: calculating for origin_marker 0...
14:02:17 INFO opendrift.models.basemodel:4667: calculating for origin_marker 1...
14:02:17 INFO opendrift.models.basemodel:4667: calculating for origin_marker 2...
14:02:17 INFO opendrift.models.basemodel:4667: calculating for origin_marker 3...
14:02:17 INFO opendrift.models.basemodel:4667: calculating for origin_marker 4...
Show which of the 5 sources are dominating within each grid cell
oa.animation(background=dom, show_elements=False, bgalpha=1,
legend=oa.origin_marker, colorbar=False, vmin=0, vmax=4)
14:02:17 DEBUG opendrift.models.basemodel:3180: Setting up map: corners=None, fast=False, lscale=None
14:02:17 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
/opt/conda/envs/opendrift/lib/python3.11/site-packages/cartopy/mpl/geoaxes.py:1696: UserWarning: No data for colormapping provided via 'c'. Parameters 'cmap', 'vmin', 'vmax' will be ignored
result = super().scatter(*args, **kwargs)
14:02:36 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:37 DEBUG opendrift.models.basemodel:3855: Saving animation..
14:02:37 INFO opendrift.models.basemodel:5350: Saving animation to /root/project/docs/source/gallery/animations/example_dominating_0.gif...
14:02:37 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:38 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:39 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:41 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:42 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:43 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:45 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:46 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:48 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:49 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:50 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:51 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:53 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:54 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:55 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:57 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:58 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:02:59 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:03:01 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:03:02 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:03:03 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:03:04 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:03:05 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:03:07 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:03:08 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:03:09 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:03:10 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:03:11 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:03:13 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:03:14 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:03:15 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:03:17 DEBUG opendrift.readers.reader_global_landmask:83: Adding GSHHG shapes from cartopy, scale: h, extent: (3.435968017578124, 5.1932105064392085, 59.68026428222656, 60.350817871093746)..
14:03:18 DEBUG opendrift.models.basemodel:5388: MPLBACKEND = agg
14:03:18 DEBUG opendrift.models.basemodel:5389: DISPLAY = None
14:03:18 DEBUG opendrift.models.basemodel:5390: Time to save animation: 0:00:41.304910
14:03:18 INFO opendrift.models.basemodel:3848: Time to make animation: 0:01:01.204117

os.remove(of)
Total running time of the script: (1 minutes 10.456 seconds)