Using wind measurements

from datetime import datetime, timedelta, date
from opendrift.readers import reader_netCDF_CF_generic
from opendrift.models.openoil import OceanDrift
from opendrift.readers import reader_timeseries
from opendrift.readers.operators import ops
import opendrift.models.physics_methods as phy
import xarray as xr
import numpy as np
import pyproj
import matplotlib.pyplot as plt
import matplotlib as mpl

# Preparation of figsize, dpi, fontsize and font style
# Could also be done using mpl style sheet
# https://matplotlib.org/stable/users/explain/customizing.html
mpl.rcParams['figure.figsize'] = (5, 5)
mpl.rcParams['savefig.dpi'] = 300
mpl.rcParams['font.family'] = "sans-serif"
mpl.rcParams['font.sans-serif'] = "DejaVu Sans"
mpl.rcParams['font.size'] = 22
mpl.rcParams['mathtext.fontset'] = "dejavusans"

This example shows how to use wind or currents measurments combined with an ocean model to improove the drift calculation arround the measurment station.

Fisrt, we import two times the same model, because one will be used for the usual simulation, and one will be used for the measurement combined simulation.

reader_norkyst = reader_netCDF_CF_generic.Reader('https://thredds.met.no/thredds/dodsC/sea/norkyst800m/1h/aggregate_be')
reader_norkyst2 = reader_netCDF_CF_generic.Reader('https://thredds.met.no/thredds/dodsC/sea/norkyst800m/1h/aggregate_be')

#Verification
print(reader_norkyst)
/opt/conda/envs/opendrift/lib/python3.11/site-packages/pyproj/crs/crs.py:1286: UserWarning: You will likely lose important projection information when converting to a PROJ string from another format. See: https://proj.org/faq.html#what-is-the-best-format-for-describing-coordinate-reference-systems
  proj = self._crs.to_proj4(version=version)
/opt/conda/envs/opendrift/lib/python3.11/site-packages/pyproj/crs/crs.py:1286: UserWarning: You will likely lose important projection information when converting to a PROJ string from another format. See: https://proj.org/faq.html#what-is-the-best-format-for-describing-coordinate-reference-systems
  proj = self._crs.to_proj4(version=version)
===========================
Reader: https://thredds.met.no/thredds/dodsC/sea/norkyst800m/1h/aggregate_be
Projection:
  +proj=stere +lat_0=90 +lat_ts=60 +lon_0=70 +x_0=3192800 +y_0=1784000 +a=6378137 +b=6356752.3142 +units=m +no_defs +type=crs
Coverage: [degrees]
  xmin: 0.000000   xmax: 2080800.000000   step: 800   numx: 2602
  ymin: 0.000000   ymax: 720800.000000   step: 800   numy: 902
  Corners (lon, lat):
    ( -1.58,  58.50)  ( 23.71,  75.32)
    (  9.19,  55.91)  ( 38.06,  70.03)
Vertical levels [m]:
  [   -0.    -3.   -10.   -15.   -25.   -50.   -75.  -100.  -150.  -200.
  -250.  -300.  -500. -1000. -2000. -3000.]
Available time range:
  start: 2017-02-20 00:00:00   end: 2024-07-06 00:00:00   step: 1:00:00
    64633 times (3372 missing)
Variables:
  sea_floor_depth_below_sea_level
  latitude
  longitude
  x_wind
  y_wind
  sea_water_salinity
  sea_water_temperature
  x_sea_water_velocity
  eastward_sea_water_velocity
  y_sea_water_velocity
  northward_sea_water_velocity
  upward_sea_water_velocity
  sea_surface_elevation
  wind_speed - derived from ['x_wind', 'y_wind']
  sea_water_speed - derived from ['x_sea_water_velocity', 'y_sea_water_velocity']
===========================

We then import wind measurement data, that will be stored in a timeserie reader. Don’t forget to give the lon and lat of the measurement station.

time_list = [datetime(2024, 5, 27, 6, 00, 00) + i*timedelta(minutes=10) for i in range(7)] # Manual import for this example
wind_speed_array = np.array([1.9, 3.0, 3.5, 3.4, 3.9, 2.8, 2.5])
wind_speed_angle = np.array([22, 25, 24, 19, 17, 30, 16])



# Alternative if data are in a csv file

# data_wind_bridge = np.genfromtxt("Simulation_data/data_wind_21_mai_2024.txt", dtype = '<U10', skip_header=1)
# temporal_time = np.array([data_wind_bridge[i, 0] + "T" + data_wind_bridge[i, 1] for i in range(len(data_wind_bridge))])
# time_list = [datetime.fromisoformat(temporal_time[i]) for i in range(len(temporal_time))]
# wind_speed_array = data_wind_bridge[:, 3]
# wind_speed_angle = data_wind_bridge[:, 5]
# wind_speed_array = wind_speed_array.astype(float)
# wind_speed_angle = wind_speed_angle.astype(float)


#Calculation of wind_x and wind_y
wind_speed_angle = np.deg2rad(wind_speed_angle)
wind_x = wind_speed_array * np.cos(wind_speed_angle)
wind_y = wind_speed_array * np.sin(wind_speed_angle)

#Creation of the wind measurement reader
lon, lat = 5.17, 60.37
parameter_value_map = {'time': time_list, 'wind_speed': wind_speed_array, 'x_wind': wind_x, 'y_wind':  wind_y, 'lon':lon, 'lat':lat}
wind_obs_reader = reader_timeseries.Reader(parameter_value_map)

#Preparing future plots
text = [{'s': '* Station', 'x': lon, 'y': lat, 'fontsize': 20, 'color': 'k', 'backgroundcolor': 'white', 'bbox': dict(facecolor='none', edgecolor='none', alpha=0.4), 'zorder': 1000}]

#Verification
print(wind_obs_reader)
===========================
Reader: reader_timeseries
Projection:
  +proj=latlong
Coverage: [degrees]
  xmin: -180.000000   xmax: 180.000000
  ymin: -90.000000   ymax: 90.000000
  Corners (lon, lat):
    (-180.00,  90.00)  (180.00,  90.00)
    (-180.00, -90.00)  (180.00, -90.00)
Vertical levels [m]:
  Not specified
Available time range:
  start: 2024-05-27 06:00:00   end: 2024-05-27 07:00:00   step: 0:10:00
    7 times (0 missing)
Variables:
  wind_speed
  x_wind
  y_wind
  lon
  lat
===========================

Now we combine the second norkyst reader with the measurement one, using a gaussian combined reader.

c = reader_norkyst2.combine_gaussian(wind_obs_reader, std = 1000)
print(c)
===========================
Reader: Combined(https://thredds.met.no/thredds/dodsC/sea/norkyst800m/1h/aggregate_be | reader_timeseries)
Projection:
  +proj=latlong
Coverage: [degrees]
  xmin: -180.000000   xmax: 180.000000
  ymin: -90.000000   ymax: 90.000000
  Corners (lon, lat):
    (-180.00,  90.00)  (180.00,  90.00)
    (-180.00, -90.00)  (180.00, -90.00)
Vertical levels [m]:
  Not specified
Available time range:
  start: 2024-05-27 06:00:00   end: 2024-05-27 07:00:00   step: None
Variables:
  wind_speed
  y_wind
  x_wind
===========================

Configuration of the simulations

time_start = datetime(2024, 5, 27, 6, 00, 00)
time_end = time_start + timedelta(hours = 2)
time = [time_start, time_end]
time_step = 150
time_step_output = 150

# Seeding configuration
lon = 5.187
lat = 60.385
radius = 0
number = 1
wind_drift_factor = 0.03

Usual simulation

o = OceanDrift(loglevel=20)
o.add_reader([reader_norkyst])

# o.set_config('drift:current_uncertainty', .1)
# o.set_config('drift:wind_uncertainty', 1)

o.seed_elements(lon=lon, lat=lat, radius=radius, number=number, time=time_start, wind_drift_factor=wind_drift_factor)
o.run(end_time=time_end, time_step=time_step, time_step_output=time_step_output)
o.plot(fast = False, background=['x_sea_water_velocity', 'y_sea_water_velocity'], legend=['Norkyst only', 'Gaussian measurement'], buffer = .023, markersize = 150, linewidth = 3, title = "", xlocs = mpl.ticker.MaxNLocator(5), ylocs = mpl.ticker.MaxNLocator(5), clabel = r"Wind speed $\mathrm{(m.s^{-1})}$", cpad = 0.08, text=text)
example wind measurements
14:54:28 INFO    opendrift.models.basemodel:519: OpenDriftSimulation initialised (version 1.11.10 / v1.11.10-15-g65004d9)
14:54:28 INFO    opendrift.models.basemodel.environment:218: Adding a dynamical landmask with max. priority based on assumed maximum speed of 2.0 m/s. Adding a customised landmask may be faster...
14:54:34 INFO    opendrift.models.basemodel.environment:245: Fallback values will be used for the following variables which have no readers:
14:54:34 INFO    opendrift.models.basemodel.environment:248:    sea_surface_height: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    ocean_vertical_diffusivity: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_significant_height: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_stokes_drift_x_velocity: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_stokes_drift_y_velocity: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_period_at_variance_spectral_density_maximum: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_mean_period_from_variance_spectral_density_second_frequency_moment: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    sea_surface_swell_wave_to_direction: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    sea_surface_swell_wave_peak_period_from_variance_spectral_density: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    sea_surface_swell_wave_significant_height: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wind_wave_to_direction: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wind_wave_mean_period: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wind_wave_significant_height: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    surface_downward_x_stress: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    surface_downward_y_stress: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    turbulent_kinetic_energy: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    turbulent_generic_length_scale: 0.000000
14:54:34 INFO    opendrift.models.basemodel.environment:248:    ocean_mixed_layer_thickness: 50.000000
14:54:34 INFO    opendrift.models.basemodel:940: Using existing reader for land_binary_mask
14:54:34 INFO    opendrift.models.basemodel:951: All points are in ocean
14:54:34 WARNING opendrift.models.basemodel:734: Seafloor check not being run because environment is missing. This will happen the first time the function is run but if it happens subsequently there is probably a problem.
14:54:34 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:00:00 - step 1 of 48 - 1 active elements (0 deactivated)
/root/project/opendrift/readers/interpolation/interpolators.py:17: RuntimeWarning: overflow encountered in cast
  data[mask] = np.finfo(np.float64).min
14:54:35 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:02:30 - step 2 of 48 - 1 active elements (0 deactivated)
14:54:36 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:05:00 - step 3 of 48 - 1 active elements (0 deactivated)
14:54:36 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:07:30 - step 4 of 48 - 1 active elements (0 deactivated)
14:54:36 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:10:00 - step 5 of 48 - 1 active elements (0 deactivated)
14:54:36 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:12:30 - step 6 of 48 - 1 active elements (0 deactivated)
14:54:36 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:15:00 - step 7 of 48 - 1 active elements (0 deactivated)
14:54:36 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:17:30 - step 8 of 48 - 1 active elements (0 deactivated)
14:54:36 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:20:00 - step 9 of 48 - 1 active elements (0 deactivated)
14:54:36 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:22:30 - step 10 of 48 - 1 active elements (0 deactivated)
14:54:36 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:25:00 - step 11 of 48 - 1 active elements (0 deactivated)
14:54:36 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:27:30 - step 12 of 48 - 1 active elements (0 deactivated)
14:54:36 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:30:00 - step 13 of 48 - 1 active elements (0 deactivated)
14:54:36 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:32:30 - step 14 of 48 - 1 active elements (0 deactivated)
14:54:36 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:35:00 - step 15 of 48 - 1 active elements (0 deactivated)
14:54:37 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:37:30 - step 16 of 48 - 1 active elements (0 deactivated)
14:54:37 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:40:00 - step 17 of 48 - 1 active elements (0 deactivated)
14:54:37 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:42:30 - step 18 of 48 - 1 active elements (0 deactivated)
14:54:37 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:45:00 - step 19 of 48 - 1 active elements (0 deactivated)
14:54:37 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:47:30 - step 20 of 48 - 1 active elements (0 deactivated)
14:54:37 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:50:00 - step 21 of 48 - 1 active elements (0 deactivated)
14:54:37 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:52:30 - step 22 of 48 - 1 active elements (0 deactivated)
14:54:37 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:55:00 - step 23 of 48 - 1 active elements (0 deactivated)
14:54:37 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:57:30 - step 24 of 48 - 1 active elements (0 deactivated)
14:54:37 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:00:00 - step 25 of 48 - 1 active elements (0 deactivated)
14:54:37 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:02:30 - step 26 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:05:00 - step 27 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:07:30 - step 28 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:10:00 - step 29 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:12:30 - step 30 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:15:00 - step 31 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:17:30 - step 32 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:20:00 - step 33 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:22:30 - step 34 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:25:00 - step 35 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:27:30 - step 36 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:30:00 - step 37 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:32:30 - step 38 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:35:00 - step 39 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:37:30 - step 40 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:40:00 - step 41 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:42:30 - step 42 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:45:00 - step 43 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:47:30 - step 44 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:50:00 - step 45 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:52:30 - step 46 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:55:00 - step 47 of 48 - 1 active elements (0 deactivated)
14:54:38 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:57:30 - step 48 of 48 - 1 active elements (0 deactivated)

(<GeoAxes: >, <Figure size 1100x975.726 with 2 Axes>)

Measurement modified model simulation and comparison

o2 = OceanDrift(loglevel=20)
o2.set_config('drift:max_speed', 10) #Necessary for the moment because of a bug to be solved
o2.add_reader([c, reader_norkyst])

#o2.set_config('drift:current_uncertainty', .1)
#o2.set_config('drift:wind_uncertainty', 1)

o2.seed_elements(lon=lon, lat=lat, radius=radius, number=number, time=time_start, wind_drift_factor=wind_drift_factor)
o2.run(end_time=time_end, time_step=time_step, time_step_output=time_step_output)

o.plot(fast = False, compare=o2, background=['x_sea_water_velocity', 'y_sea_water_velocity'], legend=['Norkyst only', 'Gaussian measurement'], buffer = .023, markersize = 150, linewidth = 3, title = "", xlocs = mpl.ticker.MaxNLocator(5), ylocs = mpl.ticker.MaxNLocator(5), clabel = r"Wind speed $\mathrm{(m.s^{-1})}$", cpad = 0.08, text=text)
example wind measurements
14:56:18 INFO    opendrift.models.basemodel:519: OpenDriftSimulation initialised (version 1.11.10 / v1.11.10-15-g65004d9)
14:56:18 INFO    opendrift.models.basemodel.environment:218: Adding a dynamical landmask with max. priority based on assumed maximum speed of 10.0 m/s. Adding a customised landmask may be faster...
14:56:18 INFO    opendrift.models.basemodel.environment:245: Fallback values will be used for the following variables which have no readers:
14:56:18 INFO    opendrift.models.basemodel.environment:248:    sea_surface_height: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    ocean_vertical_diffusivity: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_significant_height: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_stokes_drift_x_velocity: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_stokes_drift_y_velocity: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_period_at_variance_spectral_density_maximum: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_mean_period_from_variance_spectral_density_second_frequency_moment: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    sea_surface_swell_wave_to_direction: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    sea_surface_swell_wave_peak_period_from_variance_spectral_density: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    sea_surface_swell_wave_significant_height: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wind_wave_to_direction: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wind_wave_mean_period: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wind_wave_significant_height: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    surface_downward_x_stress: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    surface_downward_y_stress: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    turbulent_kinetic_energy: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    turbulent_generic_length_scale: 0.000000
14:56:18 INFO    opendrift.models.basemodel.environment:248:    ocean_mixed_layer_thickness: 50.000000
14:56:18 INFO    opendrift.models.basemodel:940: Using existing reader for land_binary_mask
14:56:18 INFO    opendrift.models.basemodel:951: All points are in ocean
14:56:18 WARNING opendrift.models.basemodel:734: Seafloor check not being run because environment is missing. This will happen the first time the function is run but if it happens subsequently there is probably a problem.
14:56:18 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:00:00 - step 1 of 48 - 1 active elements (0 deactivated)
/root/project/opendrift/readers/interpolation/interpolators.py:17: RuntimeWarning: overflow encountered in cast
  data[mask] = np.finfo(np.float64).min
14:56:24 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:02:30 - step 2 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:05:00 - step 3 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:07:30 - step 4 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:10:00 - step 5 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:12:30 - step 6 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:15:00 - step 7 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:17:30 - step 8 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:20:00 - step 9 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:22:30 - step 10 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:25:00 - step 11 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:27:30 - step 12 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:30:00 - step 13 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:32:30 - step 14 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:35:00 - step 15 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:37:30 - step 16 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:40:00 - step 17 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:42:30 - step 18 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:45:00 - step 19 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:47:30 - step 20 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:50:00 - step 21 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:52:30 - step 22 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:55:00 - step 23 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:57:30 - step 24 of 48 - 1 active elements (0 deactivated)
14:56:25 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:00:00 - step 25 of 48 - 1 active elements (0 deactivated)
14:56:26 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:02:30 - step 26 of 48 - 1 active elements (0 deactivated)
14:56:27 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:05:00 - step 27 of 48 - 1 active elements (0 deactivated)
14:56:27 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:07:30 - step 28 of 48 - 1 active elements (0 deactivated)
14:56:27 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:10:00 - step 29 of 48 - 1 active elements (0 deactivated)
14:56:27 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:12:30 - step 30 of 48 - 1 active elements (0 deactivated)
14:56:27 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:15:00 - step 31 of 48 - 1 active elements (0 deactivated)
14:56:27 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:17:30 - step 32 of 48 - 1 active elements (0 deactivated)
14:56:27 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:20:00 - step 33 of 48 - 1 active elements (0 deactivated)
14:56:27 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:22:30 - step 34 of 48 - 1 active elements (0 deactivated)
14:56:28 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:25:00 - step 35 of 48 - 1 active elements (0 deactivated)
14:56:28 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:27:30 - step 36 of 48 - 1 active elements (0 deactivated)
14:56:28 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:30:00 - step 37 of 48 - 1 active elements (0 deactivated)
14:56:28 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:32:30 - step 38 of 48 - 1 active elements (0 deactivated)
14:56:28 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:35:00 - step 39 of 48 - 1 active elements (0 deactivated)
14:56:28 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:37:30 - step 40 of 48 - 1 active elements (0 deactivated)
14:56:28 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:40:00 - step 41 of 48 - 1 active elements (0 deactivated)
14:56:28 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:42:30 - step 42 of 48 - 1 active elements (0 deactivated)
14:56:28 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:45:00 - step 43 of 48 - 1 active elements (0 deactivated)
14:56:28 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:47:30 - step 44 of 48 - 1 active elements (0 deactivated)
14:56:28 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:50:00 - step 45 of 48 - 1 active elements (0 deactivated)
14:56:28 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:52:30 - step 46 of 48 - 1 active elements (0 deactivated)
14:56:28 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:55:00 - step 47 of 48 - 1 active elements (0 deactivated)
14:56:28 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:57:30 - step 48 of 48 - 1 active elements (0 deactivated)

(<GeoAxes: >, <Figure size 1100x965.822 with 2 Axes>)

Here, we generate more particles and look at the skillscore impact of the measurment combined simulation

radius = 100
number = 100

o = OceanDrift(loglevel=20)
o.add_reader([reader_norkyst])
o.seed_elements(lon=lon, lat=lat, radius=radius, number=number, time=time_start, wind_drift_factor=wind_drift_factor)
o.run(end_time=time_end, time_step=time_step, time_step_output=time_step_output)

o2 = OceanDrift(loglevel=20)
o2.set_config('drift:max_speed', 10) #Necessary for the moment because of a bug to be solved
o2.add_reader([c, reader_norkyst])
o2.seed_elements(lon=lon, lat=lat, radius=radius, number=number, time=time_start, wind_drift_factor=wind_drift_factor)
o2.run(end_time=time_end, time_step=time_step, time_step_output=time_step_output)

o.plot(fast = False, compare=o2, background=['x_sea_water_velocity', 'y_sea_water_velocity'], legend=['Norkyst only', 'Gaussian measurement'], buffer = .023, markersize = 70, linewidth = 1, title = "", xlocs = mpl.ticker.MaxNLocator(5), ylocs = mpl.ticker.MaxNLocator(5), clabel = r"Wind speed $\mathrm{(m.s^{-1})}$", cpad = 0.08, text=text)

lon_drifters_1, lat_drifters_1 = o.get_lonlats()
lon_drifters_2, lat_drifters_2 = o2.get_lonlats()

skillscores = phy.skillscore_liu_weissberg(lon_drifters_1, lat_drifters_1, lon_drifters_2, lat_drifters_2)

plt.figure()
plt.hist(skillscores, bins = 100, range = (0, 1), facecolor = 'none', edgecolor = 'C0')
plt.xlabel("Skillscore")
plt.ylabel("Histogram (percentages)")
plt.show()

plt.figure()
plt.hist(skillscores, bins = 100, range = (0.9, 0.95), facecolor = 'none', edgecolor = 'C0')
plt.xlabel("Skillscore")
plt.ylabel("Histogram (percentages)")
plt.show()
  • example wind measurements
  • example wind measurements
  • example wind measurements
14:56:46 INFO    opendrift.models.basemodel:519: OpenDriftSimulation initialised (version 1.11.10 / v1.11.10-15-g65004d9)
14:56:46 INFO    opendrift.models.basemodel.environment:218: Adding a dynamical landmask with max. priority based on assumed maximum speed of 2.0 m/s. Adding a customised landmask may be faster...
14:56:46 INFO    opendrift.models.basemodel.environment:245: Fallback values will be used for the following variables which have no readers:
14:56:46 INFO    opendrift.models.basemodel.environment:248:    sea_surface_height: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    ocean_vertical_diffusivity: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_significant_height: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_stokes_drift_x_velocity: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_stokes_drift_y_velocity: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_period_at_variance_spectral_density_maximum: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_mean_period_from_variance_spectral_density_second_frequency_moment: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    sea_surface_swell_wave_to_direction: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    sea_surface_swell_wave_peak_period_from_variance_spectral_density: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    sea_surface_swell_wave_significant_height: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wind_wave_to_direction: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wind_wave_mean_period: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wind_wave_significant_height: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    surface_downward_x_stress: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    surface_downward_y_stress: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    turbulent_kinetic_energy: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    turbulent_generic_length_scale: 0.000000
14:56:46 INFO    opendrift.models.basemodel.environment:248:    ocean_mixed_layer_thickness: 50.000000
14:56:46 INFO    opendrift.models.basemodel:940: Using existing reader for land_binary_mask
14:56:46 INFO    opendrift.models.basemodel:951: All points are in ocean
14:56:46 WARNING opendrift.models.basemodel:734: Seafloor check not being run because environment is missing. This will happen the first time the function is run but if it happens subsequently there is probably a problem.
14:56:46 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:00:00 - step 1 of 48 - 100 active elements (0 deactivated)
/root/project/opendrift/readers/interpolation/interpolators.py:17: RuntimeWarning: overflow encountered in cast
  data[mask] = np.finfo(np.float64).min
14:56:47 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:02:30 - step 2 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:05:00 - step 3 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:07:30 - step 4 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:10:00 - step 5 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:12:30 - step 6 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:15:00 - step 7 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:17:30 - step 8 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:20:00 - step 9 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:22:30 - step 10 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:25:00 - step 11 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:27:30 - step 12 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:30:00 - step 13 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:32:30 - step 14 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:35:00 - step 15 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:37:30 - step 16 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:40:00 - step 17 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:42:30 - step 18 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:45:00 - step 19 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:47:30 - step 20 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:50:00 - step 21 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:52:30 - step 22 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:55:00 - step 23 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:57:30 - step 24 of 48 - 100 active elements (0 deactivated)
14:56:48 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:00:00 - step 25 of 48 - 100 active elements (0 deactivated)
14:56:49 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:02:30 - step 26 of 48 - 100 active elements (0 deactivated)
14:56:49 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:05:00 - step 27 of 48 - 100 active elements (0 deactivated)
14:56:49 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:07:30 - step 28 of 48 - 100 active elements (0 deactivated)
14:56:49 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:10:00 - step 29 of 48 - 100 active elements (0 deactivated)
14:56:49 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:12:30 - step 30 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:15:00 - step 31 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:17:30 - step 32 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:20:00 - step 33 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:22:30 - step 34 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:25:00 - step 35 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:27:30 - step 36 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:30:00 - step 37 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:32:30 - step 38 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:35:00 - step 39 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:37:30 - step 40 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:40:00 - step 41 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:42:30 - step 42 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:45:00 - step 43 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:47:30 - step 44 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:50:00 - step 45 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:52:30 - step 46 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:55:00 - step 47 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:57:30 - step 48 of 48 - 100 active elements (0 deactivated)
14:56:50 INFO    opendrift.models.basemodel:519: OpenDriftSimulation initialised (version 1.11.10 / v1.11.10-15-g65004d9)
14:56:50 INFO    opendrift.models.basemodel.environment:218: Adding a dynamical landmask with max. priority based on assumed maximum speed of 10.0 m/s. Adding a customised landmask may be faster...
14:56:50 INFO    opendrift.models.basemodel.environment:245: Fallback values will be used for the following variables which have no readers:
14:56:50 INFO    opendrift.models.basemodel.environment:248:    sea_surface_height: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    ocean_vertical_diffusivity: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_significant_height: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_stokes_drift_x_velocity: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_stokes_drift_y_velocity: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_period_at_variance_spectral_density_maximum: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wave_mean_period_from_variance_spectral_density_second_frequency_moment: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    sea_surface_swell_wave_to_direction: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    sea_surface_swell_wave_peak_period_from_variance_spectral_density: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    sea_surface_swell_wave_significant_height: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wind_wave_to_direction: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wind_wave_mean_period: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    sea_surface_wind_wave_significant_height: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    surface_downward_x_stress: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    surface_downward_y_stress: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    turbulent_kinetic_energy: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    turbulent_generic_length_scale: 0.000000
14:56:50 INFO    opendrift.models.basemodel.environment:248:    ocean_mixed_layer_thickness: 50.000000
14:56:50 INFO    opendrift.models.basemodel:940: Using existing reader for land_binary_mask
14:56:50 INFO    opendrift.models.basemodel:951: All points are in ocean
14:56:50 WARNING opendrift.models.basemodel:734: Seafloor check not being run because environment is missing. This will happen the first time the function is run but if it happens subsequently there is probably a problem.
14:56:50 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:00:00 - step 1 of 48 - 100 active elements (0 deactivated)
/root/project/opendrift/readers/interpolation/interpolators.py:17: RuntimeWarning: overflow encountered in cast
  data[mask] = np.finfo(np.float64).min
14:56:51 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:02:30 - step 2 of 48 - 100 active elements (0 deactivated)
14:56:52 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:05:00 - step 3 of 48 - 100 active elements (0 deactivated)
14:56:52 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:07:30 - step 4 of 48 - 100 active elements (0 deactivated)
14:56:52 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:10:00 - step 5 of 48 - 100 active elements (0 deactivated)
14:56:52 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:12:30 - step 6 of 48 - 100 active elements (0 deactivated)
14:56:52 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:15:00 - step 7 of 48 - 100 active elements (0 deactivated)
14:56:52 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:17:30 - step 8 of 48 - 100 active elements (0 deactivated)
14:56:52 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:20:00 - step 9 of 48 - 100 active elements (0 deactivated)
14:56:52 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:22:30 - step 10 of 48 - 100 active elements (0 deactivated)
14:56:53 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:25:00 - step 11 of 48 - 100 active elements (0 deactivated)
14:56:53 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:27:30 - step 12 of 48 - 100 active elements (0 deactivated)
14:56:53 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:30:00 - step 13 of 48 - 100 active elements (0 deactivated)
14:56:53 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:32:30 - step 14 of 48 - 100 active elements (0 deactivated)
14:56:53 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:35:00 - step 15 of 48 - 100 active elements (0 deactivated)
14:56:53 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:37:30 - step 16 of 48 - 100 active elements (0 deactivated)
14:56:53 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:40:00 - step 17 of 48 - 100 active elements (0 deactivated)
14:56:53 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:42:30 - step 18 of 48 - 100 active elements (0 deactivated)
14:56:53 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:45:00 - step 19 of 48 - 100 active elements (0 deactivated)
14:56:53 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:47:30 - step 20 of 48 - 100 active elements (0 deactivated)
14:56:53 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:50:00 - step 21 of 48 - 100 active elements (0 deactivated)
14:56:53 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:52:30 - step 22 of 48 - 100 active elements (0 deactivated)
14:56:53 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:55:00 - step 23 of 48 - 100 active elements (0 deactivated)
14:56:53 INFO    opendrift.models.basemodel:2042: 2024-05-27 06:57:30 - step 24 of 48 - 100 active elements (0 deactivated)
14:56:53 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:00:00 - step 25 of 48 - 100 active elements (0 deactivated)
14:56:53 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:02:30 - step 26 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:05:00 - step 27 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:07:30 - step 28 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:10:00 - step 29 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:12:30 - step 30 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:15:00 - step 31 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:17:30 - step 32 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:20:00 - step 33 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:22:30 - step 34 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:25:00 - step 35 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:27:30 - step 36 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:30:00 - step 37 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:32:30 - step 38 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:35:00 - step 39 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:37:30 - step 40 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:40:00 - step 41 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:42:30 - step 42 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:45:00 - step 43 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:47:30 - step 44 of 48 - 100 active elements (0 deactivated)
14:56:55 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:50:00 - step 45 of 48 - 100 active elements (0 deactivated)
14:56:56 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:52:30 - step 46 of 48 - 100 active elements (0 deactivated)
14:56:56 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:55:00 - step 47 of 48 - 100 active elements (0 deactivated)
14:56:56 INFO    opendrift.models.basemodel:2042: 2024-05-27 07:57:30 - step 48 of 48 - 100 active elements (0 deactivated)

Total running time of the script: (2 minutes 55.785 seconds)

Gallery generated by Sphinx-Gallery