Tutorial

Particle Tracking Manager (PTM) is a wrapper around particle tracking codes to easily run particle simulations in select (or user-input) ocean models. Currently, OpenDrift is included. In this tutorial we demonstrate using the four wrapped drift models from OpenDrift along with some high level configuration changes.

import xarray as xr
import particle_tracking_manager as ptm
import xroms
import cmocean.cm as cmo

Ocean Models

Known Models

Three ocean models are built into PTM and can be accessed by name ocean_model= “NWGOA”, “CIOFS”, and “CIOFSOP”, and either accessed remotely or locally if run on an internal server (at Axiom) (with ocean_model_local=True).

Wet/dry vs. Static Masks

The known models in PTM have wet/dry masks from ROMS so they have had to be specially handled, requiring some new development in OpenDrift. There are two options:

  • (DEFAULT) Use the typical, static, ROMS masks (mask_rho, mask_u, mask_v). For ROMS simulations run in wet/dry mode, grid cells in mask_rho are 0 if they are permanently dry and 1 if they are ever wet. This saves some computational time but is inconsistent with the ROMS output files in some places since the drifters may be allowed (due to the static mask) to enter a cell they wouldn’t otherwise. However, it doesn’t make much of a difference for simulations that aren’t in the tidal flats.

  • Use the time-varying wet/dry masks (wetdry_mask_rho, wetdry_mask_u, wetdry_mask_v). This costs some more computational time but is fully consistent with the ROMS output files. This option should be selected if drifters are expected to run in the tidal flats.

User-input Models

As opposed to known models, a user can input their own xarray Dataset, which we will do for this tutorial. When you input your own Dataset, you have to add the reader by hand as opposed to being able to input the ocean_model name in the initial call.

url = xroms.datasets.CLOVER.fetch("ROMS_example_full_grid.nc")
ds = xr.open_dataset(url, decode_times=False)

Drift Models

After a drift simulation is run, results can be found in file with name m.outfile_name.

OceanDrift (Physics)

This model can in 2D or 3D with or without horizontal or vertical mixing, wind drift, Stokes drift, etc. By default this would be run at the surface in 2D but we can input selections to run in 3D starting at depth.

Initialize manager m

m = ptm.OpenDriftModel(lon=-90, lat=28.7, number=10, steps=40,
                       z=-5, do3D=True, horizontal_diffusivity=100,)
18:17:50 INFO    opendrift.models.basemodel:529: OpenDriftSimulation initialised (version 1.11.2)
18:17:50 INFO    opendrift:399: do3D is True so turning on vertical advection.
18:17:50 INFO    opendrift:336: Setting horizontal_diffusivity to user-selected value 100.

The drift_model-specific parameters chosen by the user and PTM for this simulation are:

m.drift_model_config()
[('environment:fallback:ocean_mixed_layer_thickness', 30),
 ('general:use_auto_landmask', False),
 ('drift:current_uncertainty', 0),
 ('general:coastline_action', 'previous'),
 ('seed:number', 10),
 ('drift:horizontal_diffusivity', 100),
 ('drift:wind_uncertainty', 0),
 ('seed:z', -5),
 ('seed:wind_drift_factor', 0.02),
 ('drift:vertical_mixing', True),
 ('vertical_mixing:timestep', 60),
 ('vertical_mixing:diffusivitymodel', 'windspeed_Large1994'),
 ('drift:wind_drift_depth', 0.02),
 ('drift:stokes_drift', True),
 ('general:seafloor_action', 'previous'),
 ('seed:seafloor', False),
 ('drift:vertical_advection', True),
 ('drift:truncate_ocean_model_below_m', None),
 ('drift:use_tabularised_stokes_drift', True),
 ('model', 'opendrift'),
 ('lon', -90),
 ('lat', 28.7),
 ('seed_flag', 'elements'),
 ('run_forward', True),
 ('time_step', 300),
 ('time_step_output', 3600),
 ('steps', 40),
 ('ocean_model_local', False),
 ('do3D', True),
 ('use_static_masks', True),
 ('drift_model', 'OceanDrift'),
 ('export_variables', ['z', 'origin_marker']),
 ('radius', 1000.0),
 ('radius_type', 'gaussian'),
 ('log', 'low')]

You can also find the full PTM and OpenDrift configuration information with:

m.show_config()
{'environment:constant:x_sea_water_velocity': {'type': 'float',
  'min': -15,
  'max': 15,
  'units': 'm/s',
  'default': None,
  'level': 2,
  'description': 'Component of ocean current along x-direction  (eastwards if projection is lonlat/Mercator)',
  'value': None},
 'environment:fallback:x_sea_water_velocity': {'type': 'float',
  'min': -15,
  'max': 15,
  'units': 'm/s',
  'default': 0,
  'level': 2,
  'description': 'Component of ocean current along x-direction  (eastwards if projection is lonlat/Mercator)',
  'value': 0},
 'environment:constant:y_sea_water_velocity': {'type': 'float',
  'min': -15,
  'max': 15,
  'units': 'm/s',
  'default': None,
  'level': 2,
  'description': 'Component of ocean current along y-direction (northwards if projection is lonlat/Mercator)',
  'value': None},
 'environment:fallback:y_sea_water_velocity': {'type': 'float',
  'min': -15,
  'max': 15,
  'units': 'm/s',
  'default': 0,
  'level': 2,
  'description': 'Component of ocean current along y-direction (northwards if projection is lonlat/Mercator)',
  'value': 0},
 'environment:constant:sea_surface_height': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for sea_surface_height',
  'value': None},
 'environment:fallback:sea_surface_height': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for sea_surface_height if not available from any reader',
  'value': 0},
 'environment:constant:x_wind': {'type': 'float',
  'min': -50,
  'max': 50,
  'units': 'm/s',
  'default': None,
  'level': 2,
  'description': 'Component of wind along x-direction (eastwards if projection is lonlat/Mercator)',
  'value': None},
 'environment:fallback:x_wind': {'type': 'float',
  'min': -50,
  'max': 50,
  'units': 'm/s',
  'default': 0,
  'level': 2,
  'description': 'Component of wind along x-direction (eastwards if projection is lonlat/Mercator)',
  'value': 0},
 'environment:constant:y_wind': {'type': 'float',
  'min': -50,
  'max': 50,
  'units': 'm/s',
  'default': None,
  'level': 2,
  'description': 'Component of wind along y-direction (northwards if projection is lonlat/Mercator)',
  'value': None},
 'environment:fallback:y_wind': {'type': 'float',
  'min': -50,
  'max': 50,
  'units': 'm/s',
  'default': 0,
  'level': 2,
  'description': 'Component of wind along y-direction (northwards if projection is lonlat/Mercator)',
  'value': 0},
 'environment:constant:upward_sea_water_velocity': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for upward_sea_water_velocity',
  'value': None},
 'environment:fallback:upward_sea_water_velocity': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for upward_sea_water_velocity if not available from any reader',
  'value': 0},
 'environment:constant:ocean_vertical_diffusivity': {'type': 'float',
  'min': 0,
  'max': 1,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for ocean_vertical_diffusivity',
  'value': None},
 'environment:fallback:ocean_vertical_diffusivity': {'type': 'float',
  'min': 0,
  'max': 1,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for ocean_vertical_diffusivity if not available from any reader',
  'value': 0},
 'environment:constant:sea_surface_wave_significant_height': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for sea_surface_wave_significant_height',
  'value': None},
 'environment:fallback:sea_surface_wave_significant_height': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for sea_surface_wave_significant_height if not available from any reader',
  'value': 0},
 'environment:constant:sea_surface_wave_stokes_drift_x_velocity': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for sea_surface_wave_stokes_drift_x_velocity',
  'value': None},
 'environment:fallback:sea_surface_wave_stokes_drift_x_velocity': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for sea_surface_wave_stokes_drift_x_velocity if not available from any reader',
  'value': 0},
 'environment:constant:sea_surface_wave_stokes_drift_y_velocity': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for sea_surface_wave_stokes_drift_y_velocity',
  'value': None},
 'environment:fallback:sea_surface_wave_stokes_drift_y_velocity': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for sea_surface_wave_stokes_drift_y_velocity if not available from any reader',
  'value': 0},
 'environment:constant:sea_surface_wave_period_at_variance_spectral_density_maximum': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for sea_surface_wave_period_at_variance_spectral_density_maximum',
  'value': None},
 'environment:fallback:sea_surface_wave_period_at_variance_spectral_density_maximum': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for sea_surface_wave_period_at_variance_spectral_density_maximum if not available from any reader',
  'value': 0},
 'environment:constant:sea_surface_wave_mean_period_from_variance_spectral_density_second_frequency_moment': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for sea_surface_wave_mean_period_from_variance_spectral_density_second_frequency_moment',
  'value': None},
 'environment:fallback:sea_surface_wave_mean_period_from_variance_spectral_density_second_frequency_moment': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for sea_surface_wave_mean_period_from_variance_spectral_density_second_frequency_moment if not available from any reader',
  'value': 0},
 'environment:constant:sea_surface_swell_wave_to_direction': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for sea_surface_swell_wave_to_direction',
  'value': None},
 'environment:fallback:sea_surface_swell_wave_to_direction': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for sea_surface_swell_wave_to_direction if not available from any reader',
  'value': 0},
 'environment:constant:sea_surface_swell_wave_peak_period_from_variance_spectral_density': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for sea_surface_swell_wave_peak_period_from_variance_spectral_density',
  'value': None},
 'environment:fallback:sea_surface_swell_wave_peak_period_from_variance_spectral_density': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for sea_surface_swell_wave_peak_period_from_variance_spectral_density if not available from any reader',
  'value': 0},
 'environment:constant:sea_surface_swell_wave_significant_height': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for sea_surface_swell_wave_significant_height',
  'value': None},
 'environment:fallback:sea_surface_swell_wave_significant_height': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for sea_surface_swell_wave_significant_height if not available from any reader',
  'value': 0},
 'environment:constant:sea_surface_wind_wave_to_direction': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for sea_surface_wind_wave_to_direction',
  'value': None},
 'environment:fallback:sea_surface_wind_wave_to_direction': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for sea_surface_wind_wave_to_direction if not available from any reader',
  'value': 0},
 'environment:constant:sea_surface_wind_wave_mean_period': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for sea_surface_wind_wave_mean_period',
  'value': None},
 'environment:fallback:sea_surface_wind_wave_mean_period': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for sea_surface_wind_wave_mean_period if not available from any reader',
  'value': 0},
 'environment:constant:sea_surface_wind_wave_significant_height': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for sea_surface_wind_wave_significant_height',
  'value': None},
 'environment:fallback:sea_surface_wind_wave_significant_height': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for sea_surface_wind_wave_significant_height if not available from any reader',
  'value': 0},
 'environment:constant:surface_downward_x_stress': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for surface_downward_x_stress',
  'value': None},
 'environment:fallback:surface_downward_x_stress': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for surface_downward_x_stress if not available from any reader',
  'value': 0},
 'environment:constant:surface_downward_y_stress': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for surface_downward_y_stress',
  'value': None},
 'environment:fallback:surface_downward_y_stress': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for surface_downward_y_stress if not available from any reader',
  'value': 0},
 'environment:constant:turbulent_kinetic_energy': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for turbulent_kinetic_energy',
  'value': None},
 'environment:fallback:turbulent_kinetic_energy': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for turbulent_kinetic_energy if not available from any reader',
  'value': 0},
 'environment:constant:turbulent_generic_length_scale': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for turbulent_generic_length_scale',
  'value': None},
 'environment:fallback:turbulent_generic_length_scale': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'level': 2,
  'description': 'Fallback value for turbulent_generic_length_scale if not available from any reader',
  'value': 0},
 'environment:constant:ocean_mixed_layer_thickness': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Use constant value for ocean_mixed_layer_thickness',
  'value': None},
 'environment:fallback:ocean_mixed_layer_thickness': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 30,
  'level': 2,
  'description': 'Fallback value for ocean_mixed_layer_thickness if not available from any reader',
  'value': 30,
  'od_mapping': 'environment:fallback:ocean_mixed_layer_thickness',
  'ptm_level': 3},
 'environment:constant:sea_floor_depth_below_sea_level': {'type': 'float',
  'min': -20,
  'max': 12000,
  'units': None,
  'default': None,
  'level': 2,
  'description': 'Depth of seafloor',
  'value': None},
 'environment:fallback:sea_floor_depth_below_sea_level': {'type': 'float',
  'min': -20,
  'max': 12000,
  'units': None,
  'default': 10000,
  'level': 2,
  'description': 'Depth of seafloor',
  'value': 10000},
 'environment:constant:land_binary_mask': {'type': 'float',
  'min': 0,
  'max': 1,
  'units': None,
  'default': None,
  'level': 2,
  'description': '1 is land, 0 is sea',
  'value': None},
 'environment:fallback:land_binary_mask': {'type': 'float',
  'min': 0,
  'max': 1,
  'units': None,
  'default': None,
  'level': 2,
  'description': '1 is land, 0 is sea',
  'value': None},
 'general:use_auto_landmask': {'type': 'bool',
  'default': False,
  'description': 'A built-in GSHHG global landmask is used if True, otherwise landmask is taken from reader or fallback value.',
  'level': 3,
  'value': False,
  'od_mapping': 'general:use_auto_landmask',
  'ptm_level': 3},
 'drift:current_uncertainty': {'type': 'float',
  'default': 0,
  'min': 0,
  'max': 5,
  'units': 'm/s',
  'description': 'Add gaussian perturbation with this standard deviation to current components at each time step',
  'level': 3,
  'value': 0,
  'od_mapping': 'drift:current_uncertainty',
  'ptm_level': 2},
 'drift:current_uncertainty_uniform': {'type': 'float',
  'default': 0,
  'min': 0,
  'max': 5,
  'units': 'm/s',
  'description': 'Add gaussian perturbation with this standard deviation to current components at each time step',
  'level': 3,
  'value': 0},
 'drift:max_speed': {'type': 'float',
  'default': 5,
  'min': 0,
  'max': inf,
  'units': 'seconds',
  'description': 'Typical maximum speed of elements, used to estimate reader buffer size',
  'level': 3,
  'value': 5,
  'od_mapping': 'drift:max_speed'},
 'readers:max_number_of_fails': {'type': 'int',
  'default': 1,
  'min': 0,
  'max': 1000000.0,
  'units': 'number',
  'description': 'Readers are discarded if they fail (e.g. corrupted data, og hanging servers) move than this number of times',
  'level': 3,
  'value': 1},
 'general:coastline_action': {'type': 'enum',
  'enum': ['none', 'stranding', 'previous'],
  'default': 'previous',
  'level': 2,
  'description': 'None means that objects may also move over land. stranding means that objects are deactivated if they hit land. previous means that objects will move back to the previous location if they hit land',
  'value': 'previous',
  'od_mapping': 'general:coastline_action',
  'ptm_level': 2},
 'general:time_step_minutes': {'type': 'float',
  'min': 0.01,
  'max': 1440,
  'default': 60,
  'units': 'minutes',
  'level': 2,
  'description': 'Calculation time step used for the simulation. The output time step may be equal or larger than this.',
  'value': 60},
 'general:time_step_output_minutes': {'type': 'float',
  'min': 1,
  'max': 1440,
  'default': None,
  'units': 'minutes',
  'level': 2,
  'description': 'Output time step, i.e. the interval at which output is saved. This must be larger than the calculation time step, and be an integer multiple of this.',
  'value': None},
 'seed:ocean_only': {'type': 'bool',
  'default': True,
  'description': 'If True, elements seeded on land will be moved to the closest position in ocean',
  'level': 3,
  'value': True},
 'seed:number': {'type': 'int',
  'default': 100,
  'min': 1,
  'max': 100000000,
  'units': 1,
  'description': 'The number of elements for the simulation.',
  'level': 2,
  'value': 10,
  'od_mapping': 'seed:number',
  'ptm_level': 1},
 'drift:max_age_seconds': {'type': 'float',
  'default': None,
  'min': 0,
  'max': inf,
  'units': 'seconds',
  'description': 'Elements will be deactivated when this age is reached',
  'level': 3,
  'value': None},
 'drift:advection_scheme': {'type': 'enum',
  'enum': ['euler', 'runge-kutta', 'runge-kutta4'],
  'default': 'euler',
  'level': 3,
  'description': 'Numerical advection scheme for ocean current advection',
  'value': 'euler'},
 'drift:horizontal_diffusivity': {'type': 'float',
  'default': None,
  'min': 0,
  'max': 100000,
  'units': 'm2/s',
  'description': 'Add horizontal diffusivity (random walk)',
  'level': 2,
  'value': 100,
  'od_mapping': 'drift:horizontal_diffusivity',
  'ptm_level': 2},
 'drift:wind_uncertainty': {'type': 'float',
  'default': 0,
  'min': 0,
  'max': 5,
  'units': 'm/s',
  'description': 'Add gaussian perturbation with this standard deviation to wind components at each time step.',
  'level': 3,
  'value': 0,
  'od_mapping': 'drift:wind_uncertainty',
  'ptm_level': 2},
 'drift:relative_wind': {'type': 'bool',
  'default': False,
  'description': 'If True, wind drift is calculated for absolute wind (wind vector minus ocean surface current vector).',
  'level': 3,
  'value': False},
 'drift:deactivate_north_of': {'type': 'float',
  'default': None,
  'min': -90,
  'max': 90,
  'units': 'degrees',
  'description': 'Elements are deactivated if the move further north than this limit',
  'level': 3,
  'value': None},
 'drift:deactivate_south_of': {'type': 'float',
  'default': None,
  'min': -90,
  'max': 90,
  'units': 'degrees',
  'description': 'Elements are deactivated if the move further south than this limit',
  'level': 3,
  'value': None},
 'drift:deactivate_east_of': {'type': 'float',
  'default': None,
  'min': -360,
  'max': 360,
  'units': 'degrees',
  'description': 'Elements are deactivated if the move further east than this limit',
  'level': 3,
  'value': None},
 'drift:deactivate_west_of': {'type': 'float',
  'default': None,
  'min': -360,
  'max': 360,
  'units': 'degrees',
  'description': 'Elements are deactivated if the move further west than this limit',
  'level': 3,
  'value': None},
 'seed:origin_marker': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 0,
  'description': 'An integer kept constant during the simulation. Different values may be used for different seedings, to separate elements during analysis. With GUI, only a single seeding is possible.',
  'level': 3,
  'value': 0},
 'seed:z': {'type': 'float',
  'default': 0,
  'min': -10000,
  'max': 0,
  'units': 'm',
  'description': 'Depth below sea level where elements are released. This depth is neglected if seafloor seeding is set selected.',
  'level': 1,
  'value': -5,
  'od_mapping': 'seed:z',
  'ptm_level': 1},
 'seed:wind_drift_factor': {'type': 'float',
  'min': None,
  'max': None,
  'units': '1',
  'default': 0.02,
  'description': 'Elements at surface are moved with this fraction of the vind vector, in addition to currents and Stokes drift',
  'level': 3,
  'value': 0.02,
  'ptm_level': 2,
  'od_mapping': 'seed:wind_drift_factor'},
 'seed:current_drift_factor': {'type': 'float',
  'min': None,
  'max': None,
  'units': '1',
  'default': 1,
  'description': 'Elements are moved with this fraction of the current vector, in addition to currents and Stokes drift',
  'level': 3,
  'value': 1},
 'seed:terminal_velocity': {'type': 'float',
  'min': None,
  'max': None,
  'units': 'm/s',
  'default': 0.0,
  'description': 'Terminal rise/sinking velocity (buoyancy) in the ocean column',
  'level': 3,
  'value': 0.0},
 'drift:vertical_advection': {'type': 'bool',
  'default': True,
  'description': 'Advect elements with vertical component of ocean current.',
  'level': 2,
  'value': True},
 'drift:vertical_mixing': {'type': 'bool',
  'default': True,
  'level': 2,
  'description': 'Activate vertical mixing scheme with inner loop',
  'value': True,
  'od_mapping': 'drift:vertical_mixing',
  'ptm_level': 2},
 'vertical_mixing:timestep': {'type': 'float',
  'min': 0.1,
  'max': 3600,
  'default': 60,
  'level': 3,
  'units': 'seconds',
  'description': 'Time step used for inner loop of vertical mixing.',
  'value': 60,
  'od_mapping': 'vertical_mixing:timestep',
  'ptm_level': 3},
 'vertical_mixing:diffusivitymodel': {'type': 'enum',
  'default': 'windspeed_Large1994',
  'enum': ['environment',
   'stepfunction',
   'windspeed_Sundby1983',
   'windspeed_Large1994',
   'gls_tke',
   'constant'],
  'level': 3,
  'units': 'seconds',
  'description': 'Algorithm/source used for profile of vertical diffusivity. Environment means that diffusivity is aquired from readers or environment constants/fallback.',
  'value': 'windspeed_Large1994',
  'od_mapping': 'vertical_mixing:diffusivitymodel',
  'ptm_level': 3},
 'vertical_mixing:background_diffusivity': {'type': 'float',
  'min': 0,
  'max': 1,
  'default': 1.2e-05,
  'level': 3,
  'units': 'm2s-1',
  'description': 'Background diffusivity used below mixed layer for wind parameterisations.',
  'value': 1.2e-05},
 'vertical_mixing:TSprofiles': {'type': 'bool',
  'default': False,
  'level': 3,
  'description': 'Update T and S profiles within inner loop of vertical mixing. This takes more time, but may be slightly more accurate.',
  'value': False},
 'drift:wind_drift_depth': {'type': 'float',
  'default': 0.02,
  'min': 0,
  'max': 10,
  'units': 'meters',
  'description': 'The direct wind drift (windage) is linearly decreasing from the surface value (wind_drift_factor) until 0 at this depth.',
  'level': 3,
  'value': 0.02,
  'od_mapping': 'drift:wind_drift_depth',
  'ptm_level': 3},
 'drift:stokes_drift': {'type': 'bool',
  'default': True,
  'description': 'Advection elements with Stokes drift (wave orbital motion).',
  'level': 3,
  'value': True,
  'od_mapping': 'drift:stokes_drift',
  'ptm_level': 2},
 'drift:stokes_drift_profile': {'type': 'enum',
  'default': 'Phillips',
  'enum': ['monochromatic', 'exponential', 'Phillips', 'windsea_swell'],
  'description': 'Algorithm to calculate Stokes drift at depth from surface value',
  'level': 3,
  'value': 'Phillips'},
 'drift:use_tabularised_stokes_drift': {'type': 'bool',
  'default': False,
  'description': 'If True, Stokes drift is estimated from wind based on look-up-tables for given fetch (drift:tabularised_stokes_drift_fetch).',
  'level': 3,
  'value': True},
 'drift:tabularised_stokes_drift_fetch': {'type': 'enum',
  'enum': ['5000', '25000', '50000'],
  'default': '25000',
  'level': 3,
  'description': 'The fetch length when using tabularised Stokes drift.',
  'value': '25000'},
 'general:seafloor_action': {'type': 'enum',
  'default': 'previous',
  'enum': ['none', 'lift_to_seafloor', 'deactivate', 'previous'],
  'description': '"deactivate": elements are deactivated; "lift_to_seafloor": elements are lifted to seafloor level; "previous": elements are moved back to previous position; "none"; seafloor is ignored.',
  'level': 3,
  'value': 'previous',
  'od_mapping': 'general:seafloor_action',
  'ptm_level': 2},
 'general:seafloor_action_dcrit': {'type': 'float',
  'default': 0.0,
  'min': 0.0,
  'max': 10000,
  'units': 'm',
  'description': 'This parameter represents the amount of water left in a grid cell to keep it wet in a wet/dry simulation for numerical stability. The condition checked for seafloor_action is z < -(sea_floor_depth + sea_surface_height + `general:seafloor_action_dcrit`. It is 0 by default to assume that a wet/dry case is not being run, however, if it is and the correct value is not known 0.1 is a good default to use.',
  'level': 3,
  'value': 0.0},
 'drift:truncate_ocean_model_below_m': {'type': 'float',
  'default': None,
  'min': 0,
  'max': 10000,
  'units': 'm',
  'description': 'Ocean model data are only read down to at most this depth, and extrapolated below. May be specified to read less data to improve performance.',
  'level': 3,
  'value': None},
 'seed:seafloor': {'type': 'bool',
  'default': False,
  'description': 'Elements are seeded at seafloor, and seeding depth (z) is neglected.',
  'level': 1,
  'value': False,
  'od_mapping': 'seed:seafloor',
  'ptm_level': 2},
 'model': {'type': 'enum',
  'enum': ['opendrift'],
  'default': 'opendrift',
  'ptm_level': 1,
  'description': 'Lagrangian model software to use for simulation.',
  'value': 'opendrift'},
 'lon': {'type': 'float',
  'default': -151.0,
  'min': -180,
  'max': 180,
  'units': 'degrees_east',
  'description': 'Central longitude for seeding drifters. Only used if `seed_flag=="elements"`.',
  'ptm_level': 1,
  'value': -90},
 'lat': {'type': 'float',
  'default': 58.0,
  'min': -90,
  'max': 90,
  'units': 'degrees_north',
  'description': 'Central latitude for seeding drifters. Only used if `seed_flag=="elements"`.',
  'ptm_level': 1,
  'value': 28.7},
 'geojson': {'type': 'geojson',
  'default': None,
  'description': 'GeoJSON describing a polygon within which to seed drifters. To use this parameter, also have `seed_flag=="geojson"`. If None, seed drifters at or around a single point defined by lon and lat along with seed_flag=="elements".',
  'ptm_level': 1},
 'seed_flag': {'type': 'enum',
  'enum': ['elements', 'geojson'],
  'default': 'elements',
  'ptm_level': 1,
  'description': 'Method for seeding drifters. Options are "elements" or "geojson". If "elements", seed drifters at or around a single point defined by lon and lat. If "geojson", seed drifters within a polygon described by a GeoJSON object.',
  'value': 'elements'},
 'number': {'type': 'int',
  'default': 100,
  'min': 1,
  'max': 100000000,
  'units': 1,
  'description': 'The number of elements for the simulation.',
  'level': 2,
  'value': 10,
  'od_mapping': 'seed:number',
  'ptm_level': 1},
 'start_time': {'type': 'datetime.datetime',
  'default': 'pd.Timestamp.now()',
  'min': 'datetime.datetime(1999,1,1)',
  'max': 'pd.Timestamp.now() + pd.Timedelta("48H")',
  'units': 'time',
  'description': 'Start time for drifter simulation.',
  'ptm_level': 1},
 'run_forward': {'type': 'bool',
  'default': True,
  'description': 'Run forward in time.',
  'ptm_level': 2,
  'value': True},
 'time_step': {'type': ['float', 'datetime.timedelta'],
  'default': 300,
  'min': 1,
  'max': 86400,
  'units': 'seconds',
  'description': 'Interval between particles updates, in seconds or as timedelta.',
  'ptm_level': 3,
  'value': 300},
 'time_step_output': {'type': ['float', 'datetime.timedelta'],
  'default': 3600,
  'min': 1,
  'max': 604800,
  'units': 'seconds',
  'description': 'Time step at which element properties are stored and eventually written to file.',
  'ptm_level': 3,
  'value': 3600},
 'steps': {'type': 'int',
  'default': None,
  'min': 1,
  'max': 10000,
  'units': 'None',
  'description': 'Maximum number of steps. End of simulation will be start_time + steps*time_step. steps, end_time, or duration must be input by user.',
  'ptm_level': 1,
  'value': 40},
 'duration': {'type': 'datetime.timedelta',
  'default': None,
  'min': 'None',
  'max': 'None',
  'units': 'None',
  'description': 'The length of the simulation. steps, end_time, or duration must be input by user.',
  'ptm_level': 1},
 'end_time': {'type': 'datetime.datetime',
  'default': None,
  'min': 'None',
  'max': 'None',
  'units': 'None',
  'description': 'The end of the simulation. steps, end_time, or duration must be input by user.',
  'ptm_level': 1},
 'ocean_model': {'type': 'enum',
  'enum': ['NWGOA', 'CIOFS', 'CIOFSOP'],
  'default': None,
  'ptm_level': 1,
  'description': 'Name of ocean model to use for driving drifter simulation, by default None. Use None for testing and set up. Otherwise input a string. Options are "NWGOA", "CIOFS", "CIOFSOP". Alternatively keep as None and set up a separate reader (see example in docs).'},
 'ocean_model_local': {'type': 'bool',
  'default': False,
  'ptm_level': 3,
  'description': 'Set to True to use local version of known `ocean_model` instead of remote version.',
  'value': False},
 'surface_only': {'type': 'bool',
  'default': None,
  'description': 'Set to True to keep drifters at the surface, by default None. If this flag is set to not-None, it overrides do3D to False, vertical_mixing to False, and the z value(s) 0. If True, this flag also turns off reading model output below 0.5m if drift_model is not Leeway to save time.',
  'ptm_level': 1},
 'do3D': {'type': 'bool',
  'default': False,
  'description': 'Set to True to run drifters in 3D, by default False. This is overridden if surface_only==True. If True, vertical advection and mixing are turned on with options for setting diffusivitymodel, background_diffusivity, ocean_mixed_layer_thickness, vertical_mixing_timestep. If False, vertical motion is disabled.',
  'ptm_level': 1,
  'value': True},
 'vertical_mixing': {'type': 'bool',
  'default': True,
  'level': 2,
  'description': 'Activate vertical mixing scheme with inner loop',
  'value': True,
  'od_mapping': 'drift:vertical_mixing',
  'ptm_level': 2},
 'z': {'type': 'float',
  'default': 0,
  'min': -10000,
  'max': 0,
  'units': 'm',
  'description': 'Depth below sea level where elements are released. This depth is neglected if seafloor seeding is set selected.',
  'level': 1,
  'value': -5,
  'od_mapping': 'seed:z',
  'ptm_level': 1},
 'seed_seafloor': {'type': 'bool',
  'default': False,
  'description': 'Elements are seeded at seafloor, and seeding depth (z) is neglected.',
  'level': 1,
  'value': False,
  'od_mapping': 'seed:seafloor',
  'ptm_level': 2},
 'use_static_masks': {'type': 'bool',
  'default': True,
  'ptm_level': 3,
  'description': 'Set to True to use static masks for known models instead of wetdry masks. If False, the masks are change in time.',
  'value': True},
 'output_file': {'type': 'str',
  'default': None,
  'description': 'Name of file to write output to. If None, default name is used.',
  'ptm_level': 3},
 'drift_model': {'default': 'OceanDrift',
  'ptm_level': 1,
  'type': 'enum - OceanDrift - LarvalFish - OpenOil - Leeway',
  'description': 'Which model in OpenDrift to use. This corresponds to the type of drift scenario the user wants to run.',
  'value': 'OceanDrift'},
 'export_variables': {'default': ['z', 'origin_marker'],
  'ptm_level': 3,
  'type': 'list',
  'description': "List of variables to export. Options available with `m.all_export_variables` for a given `drift_model`. ['lon', 'lat', 'ID', 'status'] will always be exported.",
  'value': ['z', 'origin_marker']},
 'radius': {'default': 1000.0,
  'ptm_level': 2,
  'type': 'float',
  'min': 0.0,
  'max': 1000000,
  'units': 'm',
  'description': 'Radius around each lon-lat pair, within which particles will be randomly seeded. This is used by function `seed_elements`.',
  'value': 1000.0},
 'radius_type': {'default': 'gaussian',
  'ptm_level': 3,
  'type': 'enum - gaussian - uniform',
  'description': "If 'gaussian' (default), the radius is the standard deviation in x-y-directions. If 'uniform', elements are spread evenly and always inside a circle with the given radius. This is used by function `seed_elements`.",
  'value': 'gaussian'},
 'wind_drift_factor': {'type': 'float',
  'min': None,
  'max': None,
  'units': '1',
  'default': 0.02,
  'description': 'Elements at surface are moved with this fraction of the vind vector, in addition to currents and Stokes drift',
  'level': 3,
  'value': 0.02,
  'ptm_level': 2,
  'od_mapping': 'seed:wind_drift_factor'},
 'diffusivitymodel': {'type': 'enum',
  'default': 'windspeed_Large1994',
  'enum': ['environment',
   'stepfunction',
   'windspeed_Sundby1983',
   'windspeed_Large1994',
   'gls_tke',
   'constant'],
  'level': 3,
  'units': 'seconds',
  'description': 'Algorithm/source used for profile of vertical diffusivity. Environment means that diffusivity is aquired from readers or environment constants/fallback.',
  'value': 'windspeed_Large1994',
  'od_mapping': 'vertical_mixing:diffusivitymodel',
  'ptm_level': 3},
 'stokes_drift': {'type': 'bool',
  'default': True,
  'description': 'Advection elements with Stokes drift (wave orbital motion).',
  'level': 3,
  'value': True,
  'od_mapping': 'drift:stokes_drift',
  'ptm_level': 2},
 'use_auto_landmask': {'type': 'bool',
  'default': False,
  'description': 'A built-in GSHHG global landmask is used if True, otherwise landmask is taken from reader or fallback value.',
  'level': 3,
  'value': False,
  'od_mapping': 'general:use_auto_landmask',
  'ptm_level': 3},
 'mixed_layer_depth': {'type': 'float',
  'min': None,
  'max': None,
  'units': None,
  'default': 30,
  'level': 2,
  'description': 'Fallback value for ocean_mixed_layer_thickness if not available from any reader',
  'value': 30,
  'od_mapping': 'environment:fallback:ocean_mixed_layer_thickness',
  'ptm_level': 3},
 'coastline_action': {'type': 'enum',
  'enum': ['none', 'stranding', 'previous'],
  'default': 'previous',
  'level': 2,
  'description': 'None means that objects may also move over land. stranding means that objects are deactivated if they hit land. previous means that objects will move back to the previous location if they hit land',
  'value': 'previous',
  'od_mapping': 'general:coastline_action',
  'ptm_level': 2},
 'seafloor_action': {'type': 'enum',
  'default': 'previous',
  'enum': ['none', 'lift_to_seafloor', 'deactivate', 'previous'],
  'description': '"deactivate": elements are deactivated; "lift_to_seafloor": elements are lifted to seafloor level; "previous": elements are moved back to previous position; "none"; seafloor is ignored.',
  'level': 3,
  'value': 'previous',
  'od_mapping': 'general:seafloor_action',
  'ptm_level': 2},
 'max_speed': {'type': 'float',
  'default': 5,
  'min': 0,
  'max': inf,
  'units': 'seconds',
  'description': 'Typical maximum speed of elements, used to estimate reader buffer size',
  'level': 3,
  'value': 5,
  'od_mapping': 'drift:max_speed'},
 'horizontal_diffusivity': {'type': 'float',
  'default': None,
  'min': 0,
  'max': 100000,
  'units': 'm2/s',
  'description': 'Add horizontal diffusivity (random walk)',
  'level': 2,
  'value': 100,
  'od_mapping': 'drift:horizontal_diffusivity',
  'ptm_level': 2},
 'current_uncertainty': {'type': 'float',
  'default': 0,
  'min': 0,
  'max': 5,
  'units': 'm/s',
  'description': 'Add gaussian perturbation with this standard deviation to current components at each time step',
  'level': 3,
  'value': 0,
  'od_mapping': 'drift:current_uncertainty',
  'ptm_level': 2},
 'wind_uncertainty': {'type': 'float',
  'default': 0,
  'min': 0,
  'max': 5,
  'units': 'm/s',
  'description': 'Add gaussian perturbation with this standard deviation to wind components at each time step.',
  'level': 3,
  'value': 0,
  'od_mapping': 'drift:wind_uncertainty',
  'ptm_level': 2},
 'wind_drift_depth': {'type': 'float',
  'default': 0.02,
  'min': 0,
  'max': 10,
  'units': 'meters',
  'description': 'The direct wind drift (windage) is linearly decreasing from the surface value (wind_drift_factor) until 0 at this depth.',
  'level': 3,
  'value': 0.02,
  'od_mapping': 'drift:wind_drift_depth',
  'ptm_level': 3},
 'vertical_mixing_timestep': {'type': 'float',
  'min': 0.1,
  'max': 3600,
  'default': 60,
  'level': 3,
  'units': 'seconds',
  'description': 'Time step used for inner loop of vertical mixing.',
  'value': 60,
  'od_mapping': 'vertical_mixing:timestep',
  'ptm_level': 3},
 'object_type': {'default': 'Person-in-water (PIW), unknown state (mean values)',
  'od_mapping': 'seed:object_type',
  'ptm_level': 1,
  'value': 'Person-in-water (PIW), unknown state (mean values)'},
 'diameter': {'default': 0.0014,
  'od_mapping': 'seed:diameter',
  'ptm_level': 2,
  'value': 0.0014},
 'neutral_buoyancy_salinity': {'default': 31.25,
  'od_mapping': 'seed:neutral_buoyancy_salinity',
  'ptm_level': 2,
  'value': 31.25},
 'stage_fraction': {'default': 0.0,
  'od_mapping': 'seed:stage_fraction',
  'ptm_level': 2,
  'value': 0.0},
 'hatched': {'default': 0,
  'od_mapping': 'seed:hatched',
  'ptm_level': 2,
  'value': 0},
 'length': {'default': 0,
  'od_mapping': 'seed:length',
  'ptm_level': 2,
  'value': 0},
 'weight': {'default': 0.08,
  'od_mapping': 'seed:weight',
  'ptm_level': 2,
  'value': 0.08},
 'oil_type': {'default': 'GENERIC MEDIUM CRUDE',
  'od_mapping': 'seed:oil_type',
  'ptm_level': 1,
  'value': 'GENERIC MEDIUM CRUDE'},
 'm3_per_hour': {'default': 1,
  'od_mapping': 'seed:m3_per_hour',
  'ptm_level': 2,
  'value': 1},
 'oil_film_thickness': {'default': 1,
  'od_mapping': 'seed:oil_film_thickness',
  'ptm_level': 3,
  'value': 1},
 'droplet_size_distribution': {'default': 'uniform',
  'od_mapping': 'seed:droplet_size_distribution',
  'ptm_level': 3,
  'value': 'uniform'},
 'droplet_diameter_mu': {'default': 0.001,
  'od_mapping': 'seed:droplet_diameter_mu',
  'ptm_level': 3,
  'value': 0.001},
 'droplet_diameter_sigma': {'default': 0.0005,
  'od_mapping': 'seed:droplet_diameter_sigma',
  'ptm_level': 3,
  'value': 0.0005},
 'droplet_diameter_min_subsea': {'default': 0.0005,
  'od_mapping': 'seed:droplet_diameter_min_subsea',
  'ptm_level': 3,
  'value': 0.0005},
 'droplet_diameter_max_subsea': {'default': 0.005,
  'od_mapping': 'seed:droplet_diameter_max_subsea',
  'ptm_level': 3,
  'value': 0.005},
 'emulsification': {'default': True,
  'od_mapping': 'processes:emulsification',
  'ptm_level': 2,
  'value': True},
 'dispersion': {'default': True,
  'od_mapping': 'processes:dispersion',
  'ptm_level': 2,
  'value': True},
 'evaporation': {'default': True,
  'od_mapping': 'processes:evaporation',
  'ptm_level': 2,
  'value': True},
 'update_oilfilm_thickness': {'default': True,
  'od_mapping': 'processes:update_oilfilm_thickness',
  'ptm_level': 2,
  'value': True},
 'biodegradation': {'default': True,
  'od_mapping': 'processes:biodegradation',
  'ptm_level': 2,
  'value': True},
 'log': {'type': 'enum',
  'enum': ['low', 'high'],
  'default': 'low',
  'ptm_level': 3,
  'description': 'Log verbosity',
  'value': 'low'},
 'seed:object_type': {'default': 'Person-in-water (PIW), unknown state (mean values)',
  'od_mapping': 'seed:object_type',
  'ptm_level': 1,
  'value': 'Person-in-water (PIW), unknown state (mean values)'},
 'seed:diameter': {'default': 0.0014,
  'od_mapping': 'seed:diameter',
  'ptm_level': 2,
  'value': 0.0014},
 'seed:neutral_buoyancy_salinity': {'default': 31.25,
  'od_mapping': 'seed:neutral_buoyancy_salinity',
  'ptm_level': 2,
  'value': 31.25},
 'seed:stage_fraction': {'default': 0.0,
  'od_mapping': 'seed:stage_fraction',
  'ptm_level': 2,
  'value': 0.0},
 'seed:hatched': {'default': 0,
  'od_mapping': 'seed:hatched',
  'ptm_level': 2,
  'value': 0},
 'seed:length': {'default': 0,
  'od_mapping': 'seed:length',
  'ptm_level': 2,
  'value': 0},
 'seed:weight': {'default': 0.08,
  'od_mapping': 'seed:weight',
  'ptm_level': 2,
  'value': 0.08},
 'seed:oil_type': {'default': 'GENERIC MEDIUM CRUDE',
  'od_mapping': 'seed:oil_type',
  'ptm_level': 1,
  'value': 'GENERIC MEDIUM CRUDE'},
 'seed:m3_per_hour': {'default': 1,
  'od_mapping': 'seed:m3_per_hour',
  'ptm_level': 2,
  'value': 1},
 'seed:oil_film_thickness': {'default': 1,
  'od_mapping': 'seed:oil_film_thickness',
  'ptm_level': 3,
  'value': 1},
 'seed:droplet_size_distribution': {'default': 'uniform',
  'od_mapping': 'seed:droplet_size_distribution',
  'ptm_level': 3,
  'value': 'uniform'},
 'seed:droplet_diameter_mu': {'default': 0.001,
  'od_mapping': 'seed:droplet_diameter_mu',
  'ptm_level': 3,
  'value': 0.001},
 'seed:droplet_diameter_sigma': {'default': 0.0005,
  'od_mapping': 'seed:droplet_diameter_sigma',
  'ptm_level': 3,
  'value': 0.0005},
 'seed:droplet_diameter_min_subsea': {'default': 0.0005,
  'od_mapping': 'seed:droplet_diameter_min_subsea',
  'ptm_level': 3,
  'value': 0.0005},
 'seed:droplet_diameter_max_subsea': {'default': 0.005,
  'od_mapping': 'seed:droplet_diameter_max_subsea',
  'ptm_level': 3,
  'value': 0.005},
 'processes:emulsification': {'default': True,
  'od_mapping': 'processes:emulsification',
  'ptm_level': 2,
  'value': True},
 'processes:dispersion': {'default': True,
  'od_mapping': 'processes:dispersion',
  'ptm_level': 2,
  'value': True},
 'processes:evaporation': {'default': True,
  'od_mapping': 'processes:evaporation',
  'ptm_level': 2,
  'value': True},
 'processes:update_oilfilm_thickness': {'default': True,
  'od_mapping': 'processes:update_oilfilm_thickness',
  'ptm_level': 2,
  'value': True},
 'processes:biodegradation': {'default': True,
  'od_mapping': 'processes:biodegradation',
  'ptm_level': 2,
  'value': True}}

Add reader and run

m.add_reader(ds=ds)
m.run_all()
18:17:50 INFO    opendrift:439: ocean_model is not one of ['NWGOA', 'CIOFS', 'CIOFSOP'].
18:17:50 INFO    opendrift:575: Using remote output for ocean_model user_input
18:17:50 INFO    opendrift:586: Retaining vertical velocity (w) because do3D is True
18:17:50 INFO    opendrift:603: Retaining wind variables because stokes_drift, wind_drift_factor, wind_uncertainty, or vertical_mixing are on or drift_model is 'OpenOil'
18:17:50 INFO    opendrift:610: Dropping salt and temp variables because drift_model is not LarvalFish nor OpenOil
18:17:50 INFO    opendrift:621: Dropping ice variables because drift_model is not OpenOil
18:17:50 INFO    opendrift:634: Dropping wetdry masks because using static masks instead.
18:17:50 INFO    opendrift:754: setting reader start_time as simulation start_time
18:17:50 INFO    opendrift:769: Narrowed model output to simulation time
18:17:50 INFO    opendrift.readers.reader_ROMS_native:249: 'gls_cmu0'
18:17:50 INFO    opendrift.readers.reader_ROMS_native:250: Did not find complete set of GLS parameters
18:17:50 WARNING opendrift.readers.basereader.structured:50: No proj string or projection could be derived, using 'fakeproj'. This assumes that the variables are structured and gridded approximately equidistantly on the surface (i.e. in meters). This must be guaranteed by the user. You can get rid of this warning by supplying a valid projection to the reader.
18:17:50 INFO    opendrift.readers.basereader.structured:83: Loading previously saved interpolator for lon,lat to x,y conversion.
18:17:50 INFO    opendrift.models.basemodel.environment:247: Fallback values will be used for the following variables which have no readers: 
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	x_wind: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	y_wind: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	upward_sea_water_velocity: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	ocean_vertical_diffusivity: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wave_significant_height: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wave_stokes_drift_x_velocity: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wave_stokes_drift_y_velocity: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wave_period_at_variance_spectral_density_maximum: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wave_mean_period_from_variance_spectral_density_second_frequency_moment: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_swell_wave_to_direction: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_swell_wave_peak_period_from_variance_spectral_density: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_swell_wave_significant_height: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wind_wave_to_direction: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wind_wave_mean_period: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wind_wave_significant_height: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	surface_downward_x_stress: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	surface_downward_y_stress: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	turbulent_kinetic_energy: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	turbulent_generic_length_scale: 0.000000
18:17:50 INFO    opendrift.models.basemodel.environment:250: 	ocean_mixed_layer_thickness: 30.000000
18:17:50 INFO    opendrift:492: start_time: 2009-11-19 12:00:00, end_time: 2009-11-19 15:20:00, steps: 40.0, duration: 0 days 03:20:00
18:17:50 INFO    opendrift.models.basemodel:908: Using existing reader for land_binary_mask
18:17:50 INFO    opendrift.readers.reader_ROMS_native:319: Using mask_rho for mask_rho
18:17:50 INFO    opendrift.models.basemodel:920: All points are in ocean
18:17:50 WARNING opendrift.models.basemodel:701: Seafloor check not being run because sea_surface_height is missing. This will happen the first time the function is run but if it happens subsequently there is probably a problem.
18:17:50 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:00:00 - step 1 of 40 - 10 active elements (0 deactivated)
18:17:50 INFO    opendrift.readers.reader_ROMS_native:370: Using zeta for sea surface height
18:17:50 INFO    opendrift.readers.reader_ROMS_native:340: Using mask_u for mask_u
18:17:51 INFO    opendrift.readers.reader_ROMS_native:592: Time: 0:00:00.210752
18:17:51 INFO    opendrift.readers.reader_ROMS_native:361: Using mask_v for mask_v
18:17:51 INFO    opendrift.readers.reader_ROMS_native:384: Using angle from Dataset.
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:05:00 - step 2 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:10:00 - step 3 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:15:00 - step 4 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:20:00 - step 5 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:25:00 - step 6 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:30:00 - step 7 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:35:00 - step 8 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:40:00 - step 9 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:45:00 - step 10 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:50:00 - step 11 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:55:00 - step 12 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:00:00 - step 13 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:05:00 - step 14 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:10:00 - step 15 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:15:00 - step 16 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:20:00 - step 17 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:25:00 - step 18 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:30:00 - step 19 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:35:00 - step 20 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:40:00 - step 21 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:45:00 - step 22 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:50:00 - step 23 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:55:00 - step 24 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:00:00 - step 25 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:05:00 - step 26 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:10:00 - step 27 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:15:00 - step 28 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:20:00 - step 29 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:25:00 - step 30 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:30:00 - step 31 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:35:00 - step 32 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:40:00 - step 33 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:45:00 - step 34 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:50:00 - step 35 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:55:00 - step 36 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:00:00 - step 37 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:05:00 - step 38 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:10:00 - step 39 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:15:00 - step 40 of 40 - 10 active elements (0 deactivated)
18:17:51 INFO    opendrift.export.io_netcdf:112: Wrote 4 steps to file None_initial

Plot

m.o.plot(linecolor="z", fast=True, cmap=cmo.deep)
18:17:52 WARNING opendrift.models.basemodel:2378: Plotting fast. This will make your plots less accurate.
_images/cc292efb6ee7d71beafeee01711c73c796aaad4b67ca3e5b3cf464b7ba09e55e.png
(<GeoAxes: title={'center': 'OpenDrift - OceanDrift\n2009-11-19 12:00 to 2009-11-19 15:00 UTC (4 steps)'}>,
 <Figure size 1100x639.286 with 2 Axes>)

Leeway (Search and Rescue)

These are simulations of objects that stay at the surface and are transported by both the wind and ocean currents at rates that depend on how much the object sticks up out of and down into the water. The constants to use for those rates have been experimentally determined by the coastguard and are used in this model.

Initialize manager m

m = ptm.OpenDriftModel(drift_model="Leeway", lon = -89.8, lat = 29.08,
                       number=10, steps=40,
                       object_type="Fishing vessel, general (mean values)")

# This drift model requires wind data to be set which isn't present in model output
m.o.set_config('environment:constant:x_wind', -1)
m.o.set_config('environment:constant:y_wind', 1)
18:17:59 INFO    opendrift.models.basemodel:529: OpenDriftSimulation initialised (version 1.11.2)
18:17:59 INFO    opendrift:394: do3D is False but drift_model is Leeway so doing nothing.
18:17:59 INFO    opendrift:372: Turning off vertical_mixing since do3D is False
18:17:59 INFO    opendrift:486: stokes_drift cannot be used with Leeway model, so changing to False.
18:17:59 INFO    opendrift:466: wind_drift_factor cannot be used with Leeway or LarvalFish models, so setting to None.
18:17:59 INFO    opendrift:476: wind_drift_depth cannot be used with Leeway or LarvalFish models, so setting to None.
18:17:59 INFO    opendrift:428: vertical_mixing is False, so setting value of vertical_mixing_timestep to None.

The objects that can be modeled are:

m.show_config(key="seed:object_type")["enum"]
['Person-in-water (PIW), unknown state (mean values)',
 '>PIW, vertical PFD type III conscious',
 '>PIW, sitting, PFD type I or II',
 '>PIW, survival suit (face up)',
 '>PIW, scuba suit (face up)',
 '>PIW, deceased (face down)',
 'Life raft, deep ballast (DB) system, general, unknown capacity and loading (mean values)',
 '>4-14 person capacity, deep ballast system, canopy (average)',
 '>>4-14 person capacity, deep ballast system, no drogue',
 '>>>4-14 person capacity, deep ballast system, canopy, no drogue, light loading',
 '>>>4-14 person capacity, deep ballast system, no drogue, heavy loading',
 '>>4-14 person capacity, deep ballast system, canopy, with drogue (average)',
 '>>>4-14 person capacity, deep ballast system, canopy, with drogue, light loading',
 '>>>4-14 person capacity, deep ballast system, canopy, with drogue, heavy loading',
 '>15-50 person capacity, deep ballast system, canopy, general (mean values)',
 '>>15-50 person capacity, deep ballast system, canopy, no drogue, light loading',
 '>>15-50 person capacity, deep ballast system, canopy, with drogue, heavy loading',
 'Deep ballast system, general (mean values), capsized',
 'Deep ballast system, general (mean values), swamped',
 'Life-raft, shallow ballast (SB) system AND canopy, general (mean values)',
 '>Life-raft, shallow ballast system, canopy, no drogue',
 '>Life-raft, shallow ballast system AND canopy, with drogue',
 'Life-raft, shallow ballast system AND canopy, capsized',
 'Life Raft - Shallow ballast, canopy, Navy Sub Escape (SEIE) 1-man raft, NO drogue',
 'Life Raft - Shallow ballast, canopy, Navy Sub Escape (SEIE) 1-man raft, with drogue',
 'Life-raft, no ballast (NB) system, general (mean values)',
 '>Life-raft, no ballast system, no canopy, no drogue',
 '>Life-raft, no ballast system, no canopy, with drogue',
 '>Life-raft, no ballast system, with canopy, no drogue',
 '>Life-raft, no ballast system, with canopy, with drogue',
 'Survival Craft - USCG Sea Rescue Kit - 3 ballasted life rafts and 300 meter of line',
 'Life-raft, 4-6 person capacity, no ballast, with canopy, no drogue',
 'Evacuation slide with life-raft, 46 person capacity',
 'Survival Craft - SOLAS Hard Shell Life Capsule, 22 man',
 'Survival Craft - Ovatek Hard Shell Life Raft, 4 and 7-man, lightly loaded, no drogue (average)',
 '>Survival Craft - Ovatek Hard Shell Life Raft, 4 man, lightly loaded, no drogue',
 '>Survival Craft - Ovatek Hard Shell Life Raft, 7 man, lightly loaded, no drogue',
 'Survival Craft - Ovatek Hard Shell Life Raft, 4 and 7-man, fully loaded, drogued (average)',
 '>Survival Craft - Ovatek Hard Shell Life Raft, 4 man, fully loaded, drogued',
 '>Survival Craft - Ovatek Hard Shell Life Raft, 7 man, fully loaded, drogued',
 'Sea Kayak with person on aft deck',
 'Surf board with person',
 'Windsurfer with mast and sail in water',
 'Skiff - modified-v, cathedral-hull, runabout outboard powerboat',
 'Skiff, V-hull',
 'Skiffs, swamped and capsized',
 'Skiff - v-hull bow to stern (aluminum, Norway)',
 'Sport boat, no canvas (*1), modified V-hull',
 'Sport fisher, center console (*2), open cockpit',
 'Fishing vessel, general (mean values)',
 'Fishing vessel, Hawaiian Sampan (*3)',
 '>Fishing vessel, Japanese side-stern trawler',
 '>Fishing vessel, Japanese Longliner (*3)',
 '>Fishing vessel, Korean fishing vessel (*4)',
 '>Fishing vessel, Gill-netter with rear reel (*3)',
 'Coastal freighter. (*5)',
 'Sailboat Mono-hull (Average)',
 '>Sailboat Mono-hull (Dismasted, Average)',
 '>>Sailboat Mono-hull (Dismasted - rudder amidships)',
 '>>Sailboat Mono-hull (Dismasted - rudder missing)',
 '>Sailboat Mono-hull (Bare-masted,  Average)',
 '>>Sailboat Mono-hull (Bare-masted, rudder amidships)',
 '>>Sailboat Mono-hull (Bare-masted, rudder hove-to)',
 'Sailboat Mono-hull, fin keel, shallow draft (was SAILBOAT-2)',
 'Sunfish sailing dingy  -  Bare-masted, rudder missing',
 'Fishing vessel debris',
 'Self-locating datum marker buoy - no windage',
 'Navy Submarine EPIRB (SEPIRB)',
 'Bait/wharf box, holds a cubic metre of ice, mean values (*6)',
 'Bait/wharf box, holds a cubic metre of ice, lightly loaded',
 '>Bait/wharf box, holds a cubic metre of ice, full loaded',
 '55-gallon (220 l) Oil Drum',
 'Scaled down (1:3) 40-ft Container (70% submerged)',
 '20-ft Container (80% submerged)',
 'WWII L-MK2 mine',
 'Immigration vessel, Cuban refugee-raft, no sail (*7)',
 'Immigration vessel, Cuban refugee-raft, with sail (*7)',
 'Sewage floatables, tampon applicator',
 'Medical waste (mean values)',
 '>Medical waste, vials',
 '>>Medical waste, vials, large',
 '>>Medical waste, vials, small',
 '>Medical waste, syringes',
 '>>Medical waste, syringes, large',
 '>>Medical waste, syringes, small']

The drift_model-specific parameters chosen by the user and PTM for this simulation are:

m.drift_model_config()
[('general:use_auto_landmask', False),
 ('drift:current_uncertainty', 0),
 ('general:coastline_action', 'previous'),
 ('seed:number', 10),
 ('drift:horizontal_diffusivity', 100),
 ('drift:wind_uncertainty', 0),
 ('seed:z', 0),
 ('seed:object_type', 'Fishing vessel, general (mean values)'),
 ('model', 'opendrift'),
 ('lon', -89.8),
 ('lat', 29.08),
 ('seed_flag', 'elements'),
 ('start_time', Timestamp('2009-11-19 12:00:00')),
 ('run_forward', True),
 ('time_step', 300),
 ('time_step_output', 3600),
 ('steps', 40),
 ('duration', Timedelta('0 days 03:20:00')),
 ('end_time', Timestamp('2009-11-19 15:20:00')),
 ('ocean_model', 'user_input'),
 ('ocean_model_local', False),
 ('do3D', False),
 ('use_static_masks', True),
 ('drift_model', 'Leeway'),
 ('export_variables', ['z', 'origin_marker', 'object_type', 'object_type']),
 ('radius', 1000.0),
 ('radius_type', 'gaussian'),
 ('log', 'low')]

Add reader and run

m.add_reader(ds=ds)
m.run_all()
18:18:00 INFO    opendrift:359: Since ocean_model is user-input, changing horizontal_diffusivity parameter from None to 0.0.
                    You can also set it to a specific value with `m.horizontal_diffusivity=[number]`.
18:18:00 INFO    opendrift:439: ocean_model is not one of ['NWGOA', 'CIOFS', 'CIOFSOP'].
18:18:00 INFO    opendrift:575: Using remote output for ocean_model user_input
18:18:00 INFO    opendrift:584: Dropping vertical velocity (w) because do3D is False
18:18:00 INFO    opendrift:603: Retaining wind variables because stokes_drift, wind_drift_factor, wind_uncertainty, or vertical_mixing are on or drift_model is 'OpenOil'
18:18:00 INFO    opendrift:610: Dropping salt and temp variables because drift_model is not LarvalFish nor OpenOil
18:18:00 INFO    opendrift:621: Dropping ice variables because drift_model is not OpenOil
18:18:00 INFO    opendrift:634: Dropping wetdry masks because using static masks instead.
18:18:00 INFO    opendrift:754: setting reader start_time as simulation start_time
18:18:00 INFO    opendrift:769: Narrowed model output to simulation time
18:18:00 INFO    opendrift.readers.reader_ROMS_native:249: 'gls_cmu0'
18:18:00 INFO    opendrift.readers.reader_ROMS_native:250: Did not find complete set of GLS parameters
18:18:00 WARNING opendrift.readers.basereader.structured:50: No proj string or projection could be derived, using 'fakeproj'. This assumes that the variables are structured and gridded approximately equidistantly on the surface (i.e. in meters). This must be guaranteed by the user. You can get rid of this warning by supplying a valid projection to the reader.
18:18:00 INFO    opendrift.readers.basereader.structured:83: Loading previously saved interpolator for lon,lat to x,y conversion.
18:18:00 INFO    opendrift.models.leeway:262: Seeding elements of object type 50: FISHING-VESSEL-1 (Fishing vessel, general (mean values))
18:18:00 INFO    opendrift:492: start_time: 2009-11-19 12:00:00, end_time: 2009-11-19 15:20:00, steps: 40.0, duration: 0 days 03:20:00
18:18:00 INFO    opendrift.models.basemodel:908: Using existing reader for land_binary_mask
18:18:00 INFO    opendrift.readers.reader_ROMS_native:319: Using mask_rho for mask_rho
18:18:00 INFO    opendrift.models.basemodel:920: All points are in ocean
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:00:00 - step 1 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.readers.reader_ROMS_native:340: Using mask_u for mask_u
18:18:00 INFO    opendrift.readers.reader_ROMS_native:361: Using mask_v for mask_v
18:18:00 INFO    opendrift.readers.reader_ROMS_native:384: Using angle from Dataset.
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:05:00 - step 2 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:10:00 - step 3 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:15:00 - step 4 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:20:00 - step 5 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:25:00 - step 6 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:30:00 - step 7 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:35:00 - step 8 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:40:00 - step 9 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:45:00 - step 10 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:50:00 - step 11 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:55:00 - step 12 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:00:00 - step 13 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:05:00 - step 14 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:10:00 - step 15 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:15:00 - step 16 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:20:00 - step 17 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:25:00 - step 18 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:30:00 - step 19 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:35:00 - step 20 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:40:00 - step 21 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:45:00 - step 22 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:50:00 - step 23 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:55:00 - step 24 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:00:00 - step 25 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:05:00 - step 26 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:10:00 - step 27 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:15:00 - step 28 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:20:00 - step 29 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:25:00 - step 30 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:30:00 - step 31 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:35:00 - step 32 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:40:00 - step 33 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:45:00 - step 34 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:50:00 - step 35 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:55:00 - step 36 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:00:00 - step 37 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:05:00 - step 38 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:10:00 - step 39 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:15:00 - step 40 of 40 - 10 active elements (0 deactivated)
18:18:00 INFO    opendrift.export.io_netcdf:112: Wrote 4 steps to file None_initial

Plot

m.o.plot(fast=True)
18:18:00 WARNING opendrift.models.basemodel:2378: Plotting fast. This will make your plots less accurate.
_images/b4c2bc3b17cfee55352ffd4cb2cbf4720a9bf9ff7d16802d222de3318fc84773.png
(<GeoAxes: title={'center': 'OpenDrift - Leeway (FISHING-VESSEL-1)\n2009-11-19 12:00 to 2009-11-19 15:00 UTC (4 steps)'}>,
 <Figure size 1100x617.423 with 1 Axes>)

LarvalFish

This model simulates eggs and larvae that move in 3D with the currents and some basic behavior and vertical movement. It also simulates some basic growth of the larvae.

There are specific seeding options for this model:

  • ‘diameter’

  • ‘neutral_buoyancy_salinity’

  • ‘stage_fraction’

  • ‘hatched’

  • ‘length’

  • ‘weight’

Eggs

An optional general flag is to initialize the drifters at the seabed, which might make sense for eggs and is demonstrated here.

Initialize manager m
m = ptm.OpenDriftModel(drift_model="LarvalFish", lon=-89.85, lat=28.8, number=10, steps=45,
                       do3D=True, seed_seafloor=True)
18:18:02 INFO    opendrift.models.basemodel:529: OpenDriftSimulation initialised (version 1.11.2)
18:18:02 INFO    opendrift:378: setting z to None since being seeded at seafloor
18:18:02 INFO    opendrift:399: do3D is True so turning on vertical advection.
18:18:02 INFO    opendrift:466: wind_drift_factor cannot be used with Leeway or LarvalFish models, so setting to None.
18:18:02 INFO    opendrift:476: wind_drift_depth cannot be used with Leeway or LarvalFish models, so setting to None.

The drift_model-specific parameters chosen by the user and PTM for this simulation are:

m.drift_model_config()
[('environment:fallback:ocean_mixed_layer_thickness', 30),
 ('general:use_auto_landmask', False),
 ('drift:current_uncertainty', 0),
 ('general:coastline_action', 'previous'),
 ('seed:number', 10),
 ('drift:horizontal_diffusivity', 0),
 ('drift:wind_uncertainty', 0),
 ('seed:diameter', 0.0014),
 ('seed:neutral_buoyancy_salinity', 31.25),
 ('seed:stage_fraction', 0.0),
 ('seed:hatched', 0),
 ('seed:length', 0),
 ('seed:weight', 0.08),
 ('drift:vertical_mixing', True),
 ('vertical_mixing:timestep', 60),
 ('vertical_mixing:diffusivitymodel', 'windspeed_Large1994'),
 ('drift:stokes_drift', True),
 ('general:seafloor_action', 'previous'),
 ('seed:seafloor', True),
 ('drift:vertical_advection', True),
 ('drift:truncate_ocean_model_below_m', None),
 ('drift:use_tabularised_stokes_drift', True),
 ('model', 'opendrift'),
 ('lon', -89.85),
 ('lat', 28.8),
 ('seed_flag', 'elements'),
 ('start_time', Timestamp('2009-11-19 12:00:00')),
 ('run_forward', True),
 ('time_step', 300),
 ('time_step_output', 3600),
 ('steps', 45),
 ('duration', Timedelta('0 days 03:20:00')),
 ('end_time', Timestamp('2009-11-19 15:20:00')),
 ('ocean_model', 'user_input'),
 ('ocean_model_local', False),
 ('do3D', True),
 ('use_static_masks', True),
 ('drift_model', 'LarvalFish'),
 ('export_variables',
  ['z',
   'origin_marker',
   'object_type',
   'object_type',
   'diameter',
   'neutral_buoyancy_salinity',
   'stage_fraction',
   'hatched',
   'length',
   'weight',
   'diameter',
   'neutral_buoyancy_salinity',
   'stage_fraction',
   'hatched',
   'length',
   'weight']),
 ('radius', 1000.0),
 ('radius_type', 'gaussian'),
 ('log', 'low')]
Add reader and run
m.add_reader(ds=ds)
m.run_all()
18:18:02 INFO    opendrift:359: Since ocean_model is user-input, changing horizontal_diffusivity parameter from None to 0.0.
                    You can also set it to a specific value with `m.horizontal_diffusivity=[number]`.
18:18:02 INFO    opendrift:439: ocean_model is not one of ['NWGOA', 'CIOFS', 'CIOFSOP'].
18:18:02 INFO    opendrift:575: Using remote output for ocean_model user_input
18:18:02 INFO    opendrift:586: Retaining vertical velocity (w) because do3D is True
18:18:02 INFO    opendrift:603: Retaining wind variables because stokes_drift, wind_drift_factor, wind_uncertainty, or vertical_mixing are on or drift_model is 'OpenOil'
18:18:02 INFO    opendrift:614: Retaining salt and temp variables because drift_model is LarvalFish or OpenOil
18:18:02 INFO    opendrift:621: Dropping ice variables because drift_model is not OpenOil
18:18:02 INFO    opendrift:634: Dropping wetdry masks because using static masks instead.
18:18:02 INFO    opendrift:754: setting reader start_time as simulation start_time
18:18:02 INFO    opendrift:769: Narrowed model output to simulation time
18:18:02 INFO    opendrift.readers.reader_ROMS_native:249: 'gls_cmu0'
18:18:02 INFO    opendrift.readers.reader_ROMS_native:250: Did not find complete set of GLS parameters
18:18:02 WARNING opendrift.readers.basereader.structured:50: No proj string or projection could be derived, using 'fakeproj'. This assumes that the variables are structured and gridded approximately equidistantly on the surface (i.e. in meters). This must be guaranteed by the user. You can get rid of this warning by supplying a valid projection to the reader.
18:18:02 INFO    opendrift.readers.basereader.structured:83: Loading previously saved interpolator for lon,lat to x,y conversion.
18:18:02 INFO    opendrift.models.basemodel.environment:247: Fallback values will be used for the following variables which have no readers: 
18:18:02 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wave_significant_height: 0.000000
18:18:02 INFO    opendrift.models.basemodel.environment:250: 	x_wind: 0.000000
18:18:02 INFO    opendrift.models.basemodel.environment:250: 	y_wind: 0.000000
18:18:02 INFO    opendrift.models.basemodel.environment:250: 	ocean_vertical_diffusivity: 0.010000
18:18:02 INFO    opendrift.models.basemodel.environment:250: 	ocean_mixed_layer_thickness: 30.000000
18:18:02 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wave_stokes_drift_x_velocity: 0.000000
18:18:02 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wave_stokes_drift_y_velocity: 0.000000
18:18:02 WARNING opendrift.models.basemodel.environment:465: Simulation has no simulation_extent, cannot check reader coverage
18:18:02 INFO    opendrift.readers.reader_ROMS_native:319: Using mask_rho for mask_rho
18:18:02 INFO    opendrift:492: start_time: 2009-11-19 12:00:00, end_time: 2009-11-19 15:45:00, steps: 45.0, duration: 0 days 03:45:00
18:18:02 INFO    opendrift.models.basemodel:908: Using existing reader for land_binary_mask
18:18:02 INFO    opendrift.models.basemodel:920: All points are in ocean
18:18:02 WARNING opendrift.models.basemodel:701: Seafloor check not being run because sea_surface_height is missing. This will happen the first time the function is run but if it happens subsequently there is probably a problem.
18:18:02 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:00:00 - step 1 of 45 - 10 active elements (0 deactivated)
18:18:02 INFO    opendrift.readers.reader_ROMS_native:370: Using zeta for sea surface height
18:18:03 INFO    opendrift.readers.reader_ROMS_native:340: Using mask_u for mask_u
18:18:03 INFO    opendrift.readers.reader_ROMS_native:592: Time: 0:00:00.160475
18:18:03 INFO    opendrift.readers.reader_ROMS_native:361: Using mask_v for mask_v
18:18:03 INFO    opendrift.readers.reader_ROMS_native:384: Using angle from Dataset.
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:05:00 - step 2 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:10:00 - step 3 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:15:00 - step 4 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:20:00 - step 5 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:25:00 - step 6 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:30:00 - step 7 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:35:00 - step 8 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:40:00 - step 9 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:45:00 - step 10 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:50:00 - step 11 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:55:00 - step 12 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:00:00 - step 13 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:05:00 - step 14 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:10:00 - step 15 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:15:00 - step 16 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:20:00 - step 17 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:25:00 - step 18 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:30:00 - step 19 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:35:00 - step 20 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:40:00 - step 21 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:45:00 - step 22 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:50:00 - step 23 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:55:00 - step 24 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:00:00 - step 25 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:05:00 - step 26 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:10:00 - step 27 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:15:00 - step 28 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:20:00 - step 29 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:25:00 - step 30 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:30:00 - step 31 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:35:00 - step 32 of 45 - 10 active elements (0 deactivated)
18:18:03 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:40:00 - step 33 of 45 - 10 active elements (0 deactivated)
18:18:04 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:45:00 - step 34 of 45 - 10 active elements (0 deactivated)
18:18:04 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:50:00 - step 35 of 45 - 10 active elements (0 deactivated)
18:18:04 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:55:00 - step 36 of 45 - 10 active elements (0 deactivated)
18:18:04 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:00:00 - step 37 of 45 - 10 active elements (0 deactivated)
18:18:04 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:05:00 - step 38 of 45 - 10 active elements (0 deactivated)
18:18:04 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:10:00 - step 39 of 45 - 10 active elements (0 deactivated)
18:18:04 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:15:00 - step 40 of 45 - 10 active elements (0 deactivated)
18:18:04 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:20:00 - step 41 of 45 - 10 active elements (0 deactivated)
18:18:04 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:25:00 - step 42 of 45 - 10 active elements (0 deactivated)
18:18:04 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:30:00 - step 43 of 45 - 10 active elements (0 deactivated)
18:18:04 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:35:00 - step 44 of 45 - 10 active elements (0 deactivated)
18:18:04 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:40:00 - step 45 of 45 - 10 active elements (0 deactivated)
18:18:04 INFO    opendrift.export.io_netcdf:112: Wrote 4 steps to file None_initial
Plot
m.o.plot(linecolor="z", fast=True, cmap=cmo.deep_r)
18:18:04 WARNING opendrift.models.basemodel:2378: Plotting fast. This will make your plots less accurate.
_images/a7f6495a6e21aa76c4cef0353c9ccf65de7d9a3b4d355444622ab37e7785fb84.png
(<GeoAxes: title={'center': 'OpenDrift - LarvalFish\n2009-11-19 12:00 to 2009-11-19 15:00 UTC (4 steps)'}>,
 <Figure size 1100x643.453 with 2 Axes>)
m.o.plot_property('length')
m.o.plot_property('weight')
m.o.plot_property('diameter')
m.o.plot_property('stage_fraction')
_images/1ea2fa37e81c4e2eb58616f873596ba90c740b0e97717e6232d57bdd1b3b9615.png _images/be5ee6456ff7ae0d8e8d2367194a14a2c568a828bfe96ae023646ef103baf16e.png _images/fb528c0119dcf5e1464e220e12e1cee6f13f56c1d641b09e4f7878187e2ce867.png _images/c0d380fe7beb70127ea1545f9878078401a51e53bce8ba584d2966ea20b0cde8.png

Output from the simulation can be viewed in the history or elements, or from the output file.

m.outfile_name
'output-results_2024-04-24T1818:04Z.nc'
m.o.history["z"].data
array([[-60.042397, -56.878563, -53.624737, -47.847057],
       [-55.971485, -53.033333, -50.11476 , -45.042492],
       [-57.71462 , -53.91859 , -50.45399 , -44.330505],
       [-60.902836, -57.183456, -53.33119 , -47.206745],
       [-59.72285 , -56.80858 , -53.76876 , -47.83425 ],
       [-55.20293 , -52.02814 , -48.959164, -43.62638 ],
       [-56.70956 , -53.567574, -50.65071 , -45.879745],
       [-57.05813 , -54.02638 , -51.029716, -45.621582],
       [-56.572124, -53.22841 , -49.575195, -43.931885],
       [-58.874073, -55.793224, -52.426933, -46.51389 ]], dtype=float32)
m.o.elements
ID: [ 1  2  3  4  5  6  7  8  9 10]
status: [0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0]
moving: 1
age_seconds: 0.0
origin_marker: [0 0 0 0 0 0 0 0 0 0]
lon: [-89.8448715209961 -89.85617065429688 -89.85160827636719
 -89.84083557128906 -89.843505859375 -89.86956024169922 -89.85101318359375
 -89.86231994628906 -89.86174774169922 -89.85846710205078]
lat: [28.791154861450195 28.804786682128906 28.798250198364258
 28.79107093811035 28.794084548950195 28.79555320739746 28.804616928100586
 28.788558959960938 28.794647216796875 28.781597137451172]
z: [-47.8470573425293 -45.0424919128418 -44.33050537109375 -47.20674514770508
 -47.834251403808594 -43.626380920410156 -45.87974548339844
 -45.62158203125 -43.931884765625 -46.51388931274414]
wind_drift_factor: 0.02
current_drift_factor: 1.0
terminal_velocity: 0.0
diameter: [0.00139999995008111 0.00139999995008111 0.00139999995008111
 0.00139999995008111 0.00139999995008111 0.00139999995008111
 0.00139999995008111 0.00139999995008111 0.00139999995008111
 0.00139999995008111]
neutral_buoyancy_salinity: [31.25 31.25 31.25 31.25 31.25 31.25 31.25 31.25 31.25 31.25]
stage_fraction: [0.07583898305892944 0.08016344159841537 0.07939261198043823
 0.07567048072814941 0.07605403661727905 0.08010949939489365
 0.07944242656230927 0.07785900682210922 0.07972043752670288
 0.0767621174454689]
hatched: [0 0 0 0 0 0 0 0 0 0]
length: [0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0]
weight: [0.07999999821186066 0.07999999821186066 0.07999999821186066
 0.07999999821186066 0.07999999821186066 0.07999999821186066
 0.07999999821186066 0.07999999821186066 0.07999999821186066
 0.07999999821186066]
survival: 1.0

Hatched!

Initialize manager m
m = ptm.OpenDriftModel(drift_model="LarvalFish", lon=-89.85, lat=28.8, number=10, steps=45,
                       do3D=True, seed_seafloor=True, hatched=1)
18:18:07 INFO    opendrift.models.basemodel:529: OpenDriftSimulation initialised (version 1.11.2)
18:18:07 INFO    opendrift:378: setting z to None since being seeded at seafloor
18:18:07 INFO    opendrift:399: do3D is True so turning on vertical advection.
18:18:07 INFO    opendrift:466: wind_drift_factor cannot be used with Leeway or LarvalFish models, so setting to None.
18:18:07 INFO    opendrift:476: wind_drift_depth cannot be used with Leeway or LarvalFish models, so setting to None.

The drift_model-specific parameters chosen by the user and PTM for this simulation are:

m.drift_model_config()
[('environment:fallback:ocean_mixed_layer_thickness', 30),
 ('general:use_auto_landmask', False),
 ('drift:current_uncertainty', 0),
 ('general:coastline_action', 'previous'),
 ('seed:number', 10),
 ('drift:horizontal_diffusivity', 0),
 ('drift:wind_uncertainty', 0),
 ('seed:diameter', 0.0014),
 ('seed:neutral_buoyancy_salinity', 31.25),
 ('seed:stage_fraction', 0.0),
 ('seed:hatched', 1),
 ('seed:length', 0),
 ('seed:weight', 0.08),
 ('drift:vertical_mixing', True),
 ('vertical_mixing:timestep', 60),
 ('vertical_mixing:diffusivitymodel', 'windspeed_Large1994'),
 ('drift:stokes_drift', True),
 ('general:seafloor_action', 'previous'),
 ('seed:seafloor', True),
 ('drift:vertical_advection', True),
 ('drift:truncate_ocean_model_below_m', None),
 ('drift:use_tabularised_stokes_drift', True),
 ('model', 'opendrift'),
 ('lon', -89.85),
 ('lat', 28.8),
 ('seed_flag', 'elements'),
 ('start_time', Timestamp('2009-11-19 12:00:00')),
 ('run_forward', True),
 ('time_step', 300),
 ('time_step_output', 3600),
 ('steps', 45),
 ('duration', Timedelta('0 days 03:45:00')),
 ('end_time', Timestamp('2009-11-19 15:45:00')),
 ('ocean_model', 'user_input'),
 ('ocean_model_local', False),
 ('do3D', True),
 ('use_static_masks', True),
 ('drift_model', 'LarvalFish'),
 ('export_variables',
  ['z',
   'origin_marker',
   'object_type',
   'object_type',
   'diameter',
   'neutral_buoyancy_salinity',
   'stage_fraction',
   'hatched',
   'length',
   'weight',
   'diameter',
   'neutral_buoyancy_salinity',
   'stage_fraction',
   'hatched',
   'length',
   'weight',
   'diameter',
   'neutral_buoyancy_salinity',
   'stage_fraction',
   'hatched',
   'length',
   'weight',
   'diameter',
   'neutral_buoyancy_salinity',
   'stage_fraction',
   'hatched',
   'length',
   'weight']),
 ('radius', 1000.0),
 ('radius_type', 'gaussian'),
 ('log', 'low')]
Add reader and run
m.add_reader(ds=ds)
m.run_all()
18:18:07 INFO    opendrift:359: Since ocean_model is user-input, changing horizontal_diffusivity parameter from None to 0.0.
                    You can also set it to a specific value with `m.horizontal_diffusivity=[number]`.
18:18:07 INFO    opendrift:439: ocean_model is not one of ['NWGOA', 'CIOFS', 'CIOFSOP'].
18:18:07 INFO    opendrift:575: Using remote output for ocean_model user_input
18:18:07 INFO    opendrift:586: Retaining vertical velocity (w) because do3D is True
18:18:07 INFO    opendrift:603: Retaining wind variables because stokes_drift, wind_drift_factor, wind_uncertainty, or vertical_mixing are on or drift_model is 'OpenOil'
18:18:07 INFO    opendrift:614: Retaining salt and temp variables because drift_model is LarvalFish or OpenOil
18:18:07 INFO    opendrift:621: Dropping ice variables because drift_model is not OpenOil
18:18:07 INFO    opendrift:634: Dropping wetdry masks because using static masks instead.
18:18:07 INFO    opendrift:754: setting reader start_time as simulation start_time
18:18:07 INFO    opendrift:769: Narrowed model output to simulation time
18:18:07 INFO    opendrift.readers.reader_ROMS_native:249: 'gls_cmu0'
18:18:07 INFO    opendrift.readers.reader_ROMS_native:250: Did not find complete set of GLS parameters
18:18:07 WARNING opendrift.readers.basereader.structured:50: No proj string or projection could be derived, using 'fakeproj'. This assumes that the variables are structured and gridded approximately equidistantly on the surface (i.e. in meters). This must be guaranteed by the user. You can get rid of this warning by supplying a valid projection to the reader.
18:18:07 INFO    opendrift.readers.basereader.structured:83: Loading previously saved interpolator for lon,lat to x,y conversion.
18:18:07 INFO    opendrift.models.basemodel.environment:247: Fallback values will be used for the following variables which have no readers: 
18:18:07 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wave_significant_height: 0.000000
18:18:07 INFO    opendrift.models.basemodel.environment:250: 	x_wind: 0.000000
18:18:07 INFO    opendrift.models.basemodel.environment:250: 	y_wind: 0.000000
18:18:07 INFO    opendrift.models.basemodel.environment:250: 	ocean_vertical_diffusivity: 0.010000
18:18:07 INFO    opendrift.models.basemodel.environment:250: 	ocean_mixed_layer_thickness: 30.000000
18:18:07 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wave_stokes_drift_x_velocity: 0.000000
18:18:07 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wave_stokes_drift_y_velocity: 0.000000
18:18:07 WARNING opendrift.models.basemodel.environment:465: Simulation has no simulation_extent, cannot check reader coverage
18:18:07 INFO    opendrift.readers.reader_ROMS_native:319: Using mask_rho for mask_rho
18:18:07 INFO    opendrift:492: start_time: 2009-11-19 12:00:00, end_time: 2009-11-19 15:45:00, steps: 45.0, duration: 0 days 03:45:00
18:18:07 INFO    opendrift.models.basemodel:908: Using existing reader for land_binary_mask
18:18:07 INFO    opendrift.models.basemodel:920: All points are in ocean
18:18:07 WARNING opendrift.models.basemodel:701: Seafloor check not being run because sea_surface_height is missing. This will happen the first time the function is run but if it happens subsequently there is probably a problem.
18:18:07 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:00:00 - step 1 of 45 - 10 active elements (0 deactivated)
18:18:07 INFO    opendrift.readers.reader_ROMS_native:370: Using zeta for sea surface height
18:18:07 INFO    opendrift.readers.reader_ROMS_native:340: Using mask_u for mask_u
18:18:08 INFO    opendrift.readers.reader_ROMS_native:592: Time: 0:00:00.160127
18:18:08 INFO    opendrift.readers.reader_ROMS_native:361: Using mask_v for mask_v
18:18:08 INFO    opendrift.readers.reader_ROMS_native:384: Using angle from Dataset.
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:05:00 - step 2 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:10:00 - step 3 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:15:00 - step 4 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:20:00 - step 5 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:25:00 - step 6 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:30:00 - step 7 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:35:00 - step 8 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:40:00 - step 9 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:45:00 - step 10 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:50:00 - step 11 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:55:00 - step 12 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:00:00 - step 13 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:05:00 - step 14 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:10:00 - step 15 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:15:00 - step 16 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:20:00 - step 17 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:25:00 - step 18 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:30:00 - step 19 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:35:00 - step 20 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:40:00 - step 21 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:45:00 - step 22 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:50:00 - step 23 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:55:00 - step 24 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:00:00 - step 25 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:05:00 - step 26 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:10:00 - step 27 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:15:00 - step 28 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:20:00 - step 29 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:25:00 - step 30 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:30:00 - step 31 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:35:00 - step 32 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:40:00 - step 33 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:45:00 - step 34 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:50:00 - step 35 of 45 - 10 active elements (0 deactivated)
18:18:08 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:55:00 - step 36 of 45 - 10 active elements (0 deactivated)
18:18:09 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:00:00 - step 37 of 45 - 10 active elements (0 deactivated)
18:18:09 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:05:00 - step 38 of 45 - 10 active elements (0 deactivated)
18:18:09 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:10:00 - step 39 of 45 - 10 active elements (0 deactivated)
18:18:09 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:15:00 - step 40 of 45 - 10 active elements (0 deactivated)
18:18:09 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:20:00 - step 41 of 45 - 10 active elements (0 deactivated)
18:18:09 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:25:00 - step 42 of 45 - 10 active elements (0 deactivated)
18:18:09 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:30:00 - step 43 of 45 - 10 active elements (0 deactivated)
18:18:09 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:35:00 - step 44 of 45 - 10 active elements (0 deactivated)
18:18:09 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:40:00 - step 45 of 45 - 10 active elements (0 deactivated)
18:18:09 INFO    opendrift.export.io_netcdf:112: Wrote 4 steps to file None_initial
Plot
m.o.plot(linecolor="z", fast=True, cmap=cmo.deep_r)
18:18:09 WARNING opendrift.models.basemodel:2378: Plotting fast. This will make your plots less accurate.
_images/ab569834704706f9c015dd448d29bea9393e457cee9c7a12800bc2817d062a30.png
(<GeoAxes: title={'center': 'OpenDrift - LarvalFish\n2009-11-19 12:00 to 2009-11-19 15:00 UTC (4 steps)'}>,
 <Figure size 1100x642.005 with 2 Axes>)
m.o.plot_property('length')
m.o.plot_property('weight')
m.o.plot_property('diameter')
m.o.plot_property('stage_fraction')
_images/5785e46e952777754e134d811f7127f2058e7016d41813412fbd980ec1f888a1.png _images/1403c56e79b08a6094c703f7932d78eb41a6ba5e3bd597938eb5d3f145c2aa02.png _images/fb528c0119dcf5e1464e220e12e1cee6f13f56c1d641b09e4f7878187e2ce867.png _images/e92078108566425f5267f3fcdc89ed7f316680677727beea19e905ecd64649f4.png

OpenOil

This model simulates the transport of oil. Processes optionally modeled (which are included in PTM by default) include:

  • “emulsification”

  • “dispersion”

  • “evaporation”

  • “update_oilfilm_thickness”

  • “biodegradation”

There are also specific seeding options for this model:

  • “m3_per_hour”

  • “oil_film_thickness”

  • “droplet_size_distribution”

  • “droplet_diameter_mu”

  • “droplet_diameter_sigma”

  • “droplet_diameter_min_subsea”

  • “droplet_diameter_max_subsea”

Initialize manager m

m = ptm.OpenDriftModel(drift_model="OpenOil", lon=-89.85, lat=28.08, number=10, steps=45,
                       z=-10, do3D=True, oil_type='GENERIC BUNKER C')
m.o.set_config('environment:constant:x_wind', -1)
m.o.set_config('environment:constant:y_wind', 1)
18:18:12 INFO    opendrift.models.basemodel:529: OpenDriftSimulation initialised (version 1.11.2)
18:18:12 INFO    opendrift:399: do3D is True so turning on vertical advection.

List available oil types from NOAA’s ADIOS database:

m.show_config(key="seed:oil_type")
{'type': 'enum',
 'enum': ['GENERIC BUNKER C',
  'GENERIC DIESEL',
  'GENERIC FUEL OIL No. 6',
  'GENERIC FUEL OIL No.2',
  'GENERIC GASOLINE',
  'GENERIC HEAVY CRUDE',
  'GENERIC HEAVY FUEL OIL',
  'GENERIC HOME HEATING OIL',
  'GENERIC INTERMEDIATE FUEL OIL 180',
  'GENERIC INTERMEDIATE FUEL OIL 300',
  'GENERIC LIGHT CRUDE',
  'GENERIC MEDIUM CRUDE',
  'AASGARD A 2003',
  'AASGARD BLEND, STATOIL',
  'AASTA HANSTEEN BLEND 2020',
  'ABOOZAR',
  'ABU AL BU KHOOSH',
  'ABU SAFAH, ARAMCO',
  'ADGO',
  'AGBAMI, STATOIL',
  'AIRILE, BP',
  'AL RAYYAN, BP',
  'ALASKA NORTH SLOPE',
  'ALASKA NORTH SLOPE',
  'ALASKA NORTH SLOPE (MIDDLE PIPELINE)',
  'ALASKA NORTH SLOPE (NORTHERN PIPELINE)',
  'ALASKA NORTH SLOPE (SOCSEX)',
  'ALASKA NORTH SLOPE (SOUTHERN PIPELINE)',
  'ALASKA NORTH SLOPE 2019',
  'ALASKA NORTH SLOPE, BP',
  'ALASKA NORTH SLOPE, OIL & GAS',
  'ALASKA NORTH SLOPE-PUMP STATION #9, BP',
  'ALBA',
  'ALBA',
  'ALBERTA',
  'ALBERTA SWEET MIXED BLEND',
  'ALBERTA SWEET MIXED BLEND (PETAWAWA)',
  'ALBERTA SWEET MIXED BLEND (REFERENCE #2)',
  'ALBERTA SWEET MIXED BLEND (REFERENCE #3)',
  'ALGERIAN BLEND',
  'ALGERIAN CONDENSATE, CITGO',
  'ALGERIAN CONDENSATE, SHELL OIL',
  'ALGERIAN CONDENSATE, STATOIL',
  'ALPINE',
  'ALPINE SALES OIL',
  'ALTA 2016',
  'ALVE 2010',
  'ALVE 2014',
  'ALVHEIM BLEND 2009',
  'ALVHEIM BOA 2009',
  'ALVHEIM KAMELEON 2009',
  'ALVHEIM KNELER 2009',
  'AMAULIGAK',
  'AMAULIGAK',
  'AMNA',
  'ANTAN, HUVENSA',
  'ARABIAN',
  'ARABIAN EXTRA LIGHT, ARAMCO',
  'ARABIAN EXTRA LIGHT, BOUCHARD',
  'ARABIAN EXTRA LIGHT, MOBIL OIL AUSTRALIA',
  'ARABIAN EXTRA LIGHT, PHILLIPS',
  'ARABIAN EXTRA LIGHT, STAR ENTERPRISE',
  'ARABIAN HEAVY',
  'ARABIAN HEAVY, AMOCO',
  'ARABIAN HEAVY, ARAMCO',
  'ARABIAN HEAVY, CITGO',
  'ARABIAN HEAVY, EXXON',
  'ARABIAN HEAVY, STAR ENTERPRISE',
  'ARABIAN LIGHT',
  'ARABIAN LIGHT',
  'ARABIAN LIGHT, ARAMCO',
  'ARABIAN LIGHT, CITGO',
  'ARABIAN LIGHT, OIL & GAS',
  'ARABIAN LIGHT, PHILLIPS',
  'ARABIAN LIGHT, SHELL OIL',
  'ARABIAN LIGHT, STAR ENTERPRISE',
  'ARABIAN MEDIUM',
  'ARABIAN MEDIUM, AMOCO',
  'ARABIAN MEDIUM, CHEVRON',
  'ARABIAN MEDIUM, EXXON',
  'ARABIAN MEDIUM, PHILLIPS',
  'ARABIAN MEDIUM, SHELL OIL',
  'ARABIAN MEDIUM, STAR ENTERPRISE',
  'ARDJUNA, SHELL REFINING PTY ',
  'ARGYL',
  'ARGYLL, OIL & GAS',
  'ARIMBI',
  'ARUN CONDENSATE, SHELL OIL',
  'ASGARD, STATOIL',
  'ASHTART',
  'ATKINSON',
  'ATLA KONDENSAT 2013',
  'ATTAKA',
  'ATTAKA, SHELL REFINING PTY ',
  'AUK',
  'AUTOMOTIVE DIESEL FUEL, SHELL REFINING PTY ',
  'AUTOMOTIVE GASOLINE, EXXON',
  'AVALDSNES 2012',
  'AVALON',
  'AVALON',
  'AVIATION GASOLINE 100',
  'AVIATION GASOLINE 100LL, STAR ENTERPRISE',
  'AVIATION GASOLINE 80',
  'AVIATION GASOLINE 80',
  'AVIATION TURBINE FUEL, SHELL REFINING PTY ',
  'AZERI BTC, STATOIL',
  'AZERI LIGHT, STATOIL',
  'Aasgard Blend',
  'Access West Blend Winter',
  'Alaminos Canyon Block 25',
  'Alaska North Slope',
  'Alaska North Slope [2002]',
  'Alaska North Slope [2010]',
  'Alaska North Slope [2011]',
  'Alaska North Slope [2012]',
  'Alaska North Slope [2015]',
  'Alberta Sweet Mixed Blend #4',
  'Alberta Sweet Mixed Blend #5',
  'Amauligak',
  'Anadarko HIA-376',
  'Arabian Heavy [2004]',
  'Arabian Light [2002]',
  'Atkinson',
  'Azeri Light',
  'BACH HO',
  'BACH HO, SHELL REFINING PTY ',
  'BACHAGUERO, CITGO',
  'BACHAQUERO',
  'BACHAQUERO 17, EXXON',
  'BACHAQUERO, SHELL OIL',
  'BACHAQUERO-DELAWARE RIVER, CITGO',
  'BACHEQUERO HEAVY',
  'BACHEQUERO MEDIUM',
  'BADAK',
  'BADAK, SHELL OIL',
  'BAHIA',
  'BAHRGANSAR/NOWRUZ',
  'BAKR',
  'BALDER 2002',
  'BALDER BLEND 2010',
  'BANOCO ABU SAFAH, ARAMCO',
  'BARROW ISLAND',
  'BARROW ISLAND, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'BARROW ISLAND, OIL & GAS',
  'BARROW, BP',
  'BASRAH',
  'BASRAH HEAVY',
  'BASRAH LIGHT',
  'BASRAH LIGHT, MOBIL OIL AUSTRALIA',
  'BASRAH MEDIUM',
  'BASRAH, EXXON',
  'BASRAH, OIL & GAS',
  'BASS STRAIT',
  'BCF 13',
  'BCF 17',
  'BCF 17, AMOCO',
  'BCF 22, CITGO',
  'BCF 24',
  'BEATRICE',
  'BEKAPAI',
  'BEKOK',
  'BEKOPAI, CALTEX',
  'BELAYIM',
  'BELAYIM (LAND)',
  'BELAYIM (MARINE)',
  'BELAYIM, OIL & GAS',
  'BELIDA',
  'BELIDA, BP',
  'BELIDA, CALTEX',
  'BELIDA, MOBIL OIL AUSTRALIA ',
  'BELIDA, OIL & GAS',
  'BELINDA, AMSA',
  'BELRIDGE HEAVY',
  'BENIN RIVER, CHEVRON',
  'BENT HORN',
  'BENT HORN A-02',
  'BERRI',
  'BERRI A-21, ARAMCO',
  'BERYL',
  'BETA',
  'BETA PRODUCTION, SHELL OIL',
  'BFC 21.9, CITGO',
  'BINTULU',
  'BLINA, BP',
  'BOLOBO',
  'BOMBAY HIGH',
  'BONITO P/L SOUR, SHELL OIL',
  'BONNY LIGHT',
  'BONNY LIGHT, CITGO',
  'BONNY LIGHT, SHELL OIL',
  'BONNY MEDIUM',
  'BONNY MEDIUM, AMOCO',
  'BONNY MEDIUM, CITGO',
  'BONTANG MIX, BP',
  'BORHOLLA',
  'BOSCAN',
  'BOSCAN, AMOCO',
  'BOSCAN, OIL & GAS',
  'BOW RIVER BLENDED',
  'BOW RIVER HEAVY',
  'BOYLA CRUDE 2016',
  'BRAE',
  'BRAGE 2013',
  'BRASS RIVER',
  'BRASS RIVER, CITGO',
  'BRASS RIVER, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'BRASS RIVER, PHILLIPS',
  'BRASS RIVER, SHELL OIL',
  'BRASSE 2018',
  'BREAM 2011',
  'BREGA',
  'BREGA, ARCO',
  'BREIDABLIKK 2023',
  'BRENT',
  'BRENT BLEND',
  'BRENT MIX, EXXON',
  'BRENT SPAR',
  'BRENT, CITGO',
  'BRENT, OIL & GAS',
  'BRENT, PHILLIPS',
  'BRENT, SUN',
  'BRIGHT STOCK 145, STAR ENTERPRISE',
  'BRIGHT STOCK 150, STAR ENTERPRISE',
  'BRYNHILD CRUDE 2015',
  'BUCHAN',
  'BUNK FUEL OIL (IRVING WHALE)',
  'BUNKER C FUEL OIL',
  'BUNKER C FUEL OIL',
  'BUNKER C FUEL OIL (ALASKA)',
  'BUNKER C FUEL OIL (IRVING WHALE)',
  'BUNYU',
  'BURGAN',
  'Bakken',
  'Balder Blend',
  'Banyu Urip',
  'Basrah',
  'Basrah Heavy',
  'Bonga',
  'Brent Blend',
  'Bunker C - IFO-300 [1994]',
  'Bunker C [1987]',
  'CABINDA',
  'CABINDA BLEND, SHELL OIL',
  'CABINDA, CITGO',
  'CABINDA, PHILLIPS',
  'CALIFORNIA (API 11)',
  'CALIFORNIA (API 15)',
  'CAMAR',
  'CANADON SECO',
  'CANDON SEC, PHILLIPS',
  'CANO LIMON',
  'CANO LIMON',
  'CANO LIMON, CITGO',
  'CANO LIMON, PHILLIPS',
  'CARPINTERIA',
  'CATALYTIC CRACKING FEED',
  'CAURUS 2011',
  'CEUTA',
  'CHALLIS, BHP PETROLEUM',
  'CHAMPION EXPORT',
  'CHERVIL, NOVUS WA PTY LTD',
  'CINTA',
  'CINTA, SHELL REFINING PTY ',
  'CLOV',
  'CLOV, STATOIL',
  'COAL OIL POINT SEEP OIL',
  'COBAN BLEND',
  'COBAN BLEND, PHILLIPS',
  'COGNAC-BLOCK 194, SHELL OIL',
  'COHASSET',
  'COHASSET',
  'COLD LAKE BITUMEN',
  'COLD LAKE BLEND',
  'COLD LAKE BLEND, ESSO',
  'COLD LAKE DILUENT, ESSO',
  'COLD LAKE, EXXON',
  'CONDENSATE (SWEET), ENCANA CORP.',
  'COOK INLET, DRIFT RIVER TERMINAL',
  'COOPER BASIN',
  'COOPER BASIN FULL RANGE NAPHTHA, SANTOS LTD',
  'COOPER BASIN HEAVY NAPHTHA, SANTOS LTD',
  'COOPER BASIN LIGHT NAPHTHA, SANTOS LTD',
  'COOPER BASIN, SANTOS LTD',
  'CORMORANT',
  'CORMORANT NORTH',
  'CORMORANT SOUTH',
  'COSSACK',
  'CRACKER FEED, MOBIL OIL AUSTRALIA ',
  'CUSIANA',
  'CUSIANA',
  'CUSIANA, MOTIVA ENTERPRISES LLC',
  'CYRUS, ITOPF',
  'Chayvo',
  'Cold Lake Blend',
  'Cold Lake Blend Summer [2014]',
  'Cold Lake Blend Winter [2013]',
  'Cold Lake Blend Winter [2015]',
  'Cook Inlet [2003]',
  'Curlew',
  'DAI HUNG',
  'DALIA, STATOIL',
  'DAN',
  'DANISH NORTH SEA',
  'DANMARK',
  'DAQIN',
  'DESTIN DOME CIS, MMS',
  'DF2 SUMMER (DIESEL), TESORO',
  'DF2 WINTER (DIESEL), TESORO',
  'DIA HUNG, OIL & GAS',
  'DIESEL',
  'DIESEL FUEL OIL (ALASKA)',
  'DIESEL FUEL OIL (CANADA)',
  'DIESEL FUEL OIL (SOUTHERN USA 1994)',
  'DIESEL FUEL OIL (SOUTHERN USA 1997)',
  'DIESEL FUEL OIL NO.2 (BONDED), TESORO',
  'DIESEL/HEATING OIL NO.2, CHEVRON',
  'DJENO BLEND',
  'DJENO, PHILLIPS',
  'DJENO, SHELL OIL',
  'DOBA',
  'DORROOD',
  'DOS CUADRAS',
  'DRAUGEN 2008',
  'DRIVIS 2017',
  'DUAL PURPOSE KEROSINE,  MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'DUBAI',
  'DUBAI, CITGO',
  'DUBAI, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'DUGONG 2022',
  'DUKHAN',
  'DUNLIN',
  'DURI, OIL & GAS',
  'DURI, PHILLIPS',
  'DUVA 2021',
  'DVALIN 2020',
  'Dalia',
  'Diesel [2002]',
  'Doba Blend',
  'Dos Cuadros HE-05 [2011]',
  'Dos Cuadros HE-26 [2011]',
  'EAGLE FORD SHALE',
  'EAST SPAB, MOBIL OIL AUSTRALIA',
  'EAST TEXAS',
  'EAST ZEIT MIX',
  'EC 195-CONDENSATE, PHILLIPS',
  'EKOFISK',
  'EKOFISK',
  'EKOFISK 2002',
  'EKOFISK BLEND 2002',
  'EKOFISK BLEND 2015',
  'EKOFISK J 2015',
  'EKOFISK, OIL & GAS',
  'ELDFISK 2002',
  'ELDFISK B 2015',
  'ELDFISK BLEND 2015',
  'ELDFISK KOMPLEKS 2015',
  'ELECTRICAL INSULATING OIL (VIRGIN)',
  'ELECTRICAL INSULATING OIL (VOLTESSO 35)',
  'ELLI 1999',
  'ELLI SOUTH 1999',
  'EMBLA 2002',
  'EMERALD',
  'EMPIRE',
  'EMPIRE ISLAND, AMOCO',
  'ENDICOTT',
  'EOCENE',
  'ERAWAN CONDENSATE, SHELL OIL',
  'ERAWAN, MOBIL OIL AUSTRALIA ',
  'ES SIDER',
  'ESCALANTE',
  'ESCALANTE, ITS',
  'ESCALANTE, PHILLIPS',
  'ESCRAVOS',
  'ESCRAVOS SWAMP BLEND, CHEVRON',
  'ESCRAVOS, AMOCO',
  'ESCRAVOS, CHEVRON',
  'ESCRAVOS, OIL & GAS',
  'ESCRAVOS, SHELL OIL',
  'ESPOIR',
  'ETCHEGOIN, SHELL OIL',
  'EUGENE ISLAND BLOCK 32',
  'EUGENE ISLAND BLOCK 43',
  'EVERDELL',
  'Ebok',
  'Ekofisk',
  'Endicott',
  'Erha',
  'FAO, CITGO',
  'FCC FEED',
  'FCC HEAVY CYCLE OIL',
  'FCC MEDIUM CYCLE OIL',
  'FCC VGO',
  'FEDERATED',
  'FEDERATED (1994)',
  'FEDERATED (1998)',
  'FEDERATED (SOCSEX)',
  'FEDERATED LIGHT AND MEDIUM',
  'FENJA (PIL) 2015',
  'FLOTTA',
  'FLOTTA',
  'FLOTTA MIX',
  'FLOTTA, CITGO',
  'FLOTTA, OIL & GAS',
  'FLOTTA, PHILLIPS',
  'FLOTTA, SHELL OIL',
  'FLUID CATALYTIC CRACKER FEED',
  'FLUID CATALYTIC CRACKER HEAVY CYCLE OIL',
  'FLUID CATALYTIC CRACKER LIGHT CYCLE OIL',
  'FLUID CATALYTIC CRACKER MEDIUM CYCLE OIL',
  'FLUID CATALYTIC CRACKER VIRGIN GAS OIL',
  'FOGELBERG CONDENSATE 2021',
  'FORCADOS',
  'FORCADOS BLEND',
  'FORCADOS, AMOCO',
  'FORCADOS, BP',
  'FORCADOS, CITGO',
  'FORCADOS, SHELL OIL',
  'FORKED ISLAND TERMINAL, AMOCO',
  'FOROOZAN',
  'FORSETI 2002',
  'FORTIES',
  'FORTIES BLEND',
  'FORTIES, OIL & GAS',
  'FORTIES, SHELL OIL',
  'FORTIES, STATOIL',
  'FOSSEKALL 2013',
  'FOSTERTON',
  'FRAM 2013',
  'FROSK 2020',
  'FROY 1996',
  'FUEL OIL NO.1 (AVJET A), STAR ENTERPRISE',
  'FUEL OIL NO.1 (DIESEL/HEATING FUEL), PETRO STAR',
  'FUEL OIL NO.1 (JET B, ALASKA)',
  'FUEL OIL NO.1 (JET FUEL A)',
  'FUEL OIL NO.1 (JET FUEL A-1)',
  'FUEL OIL NO.1 (JET FUEL B)',
  'FUEL OIL NO.1 (JP-4)',
  'FUEL OIL NO.1 (JP-6)',
  'FUEL OIL NO.1 (KEROSENE) ',
  'FUEL OIL NO.2 (DIESEL), STAR ENTERPRISE',
  'FUEL OIL NO.2 (HIGH AROMATIC CONTENT HEATING OIL)',
  'FUEL OIL NO.2 (HO/DIESEL), EXXON',
  'FUEL OIL NO.2, AMOCO',
  'FUEL OIL NO.6',
  'FULMAR',
  'FURRIAL, CITGO',
  'FURRIAL, SHELL OIL',
  'FURRIAL/MESA 28, EXXON',
  'Forties Blend',
  'Fuel Oil # 5',
  'GALEOTA MIX',
  'GALEOTA MIX, AMOCO',
  'GAMBA',
  'GARANTIANA 2013',
  'GARDEN BANKS BLOCK 387',
  'GARDEN BANKS BLOCK 426',
  'GAS OIL 10 ppm S 2017',
  'GAS OIL, EXXON',
  'GAS OIL, TESORO',
  'GASOLINE (UNLEADED), SHELL',
  'GASOLINE BLENDING STOCK (ALKYLATE), EXXON',
  'GASOLINE BLENDING STOCK (REFORMATE), EXXON',
  'GAUPE 2011',
  'GENESIS',
  'GIMBO, STATOIL',
  'GINA KROG CRUDE 2018',
  'GIPPSLAND',
  'GIPPSLAND MIX, ITOPF',
  'GIPPSLAND, AMSA',
  'GIPPSLAND, BHP PETROLEUM',
  'GIPPSLAND, EXXON',
  'GIPPSLAND, SHELL OIL',
  'GIPPSLAND, SHELL REFINING PTY ',
  'GIRASSOL',
  'GIRASSOL, STATOIL',
  'GJOA 2011',
  'GLITNE 2002',
  'GOLIAT BLEND 50/50 2008',
  'GOLIAT BLEND 70/30 2008',
  'GOLIAT KOBBE 2008',
  'GOLIAT REALGRUNNEN 2001',
  'GOLIAT REALGRUNNEN 2008',
  'GORM',
  'GRANE 1997',
  'GRANITE POINT',
  'GREEN CANYON BLOCK 109',
  'GREEN CANYON BLOCK 184',
  'GREEN CANYON BLOCK 65',
  'GREEN CANYON, SHELL OIL',
  'GRIFFIN',
  'GRIFFIN, AMSA',
  'GRIFFIN, BHP PETROLEUM',
  'GRIFFIN, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'GROSBEAK 2012',
  'GUAFITA, CITGO',
  'GUDRUN 2012',
  'GUDRUN 2019',
  'GULF ALBERTA LIGHT AND MEDIUM',
  'GULF OF SUEZ MIX',
  'GULF OF SUEZ, PHILLIPS',
  'GULLFAKS',
  'GULLFAKS A BLEND 2010',
  'GULLFAKS C BLEND 2010',
  'GULLFAKS SOR 1996',
  'GULLFAKS, EXXON',
  'GULLFAKS, OIL & GAS',
  'GYDA 2002',
  'Gail Well E010',
  'Gail Well E019',
  'Gindungo',
  'Gippsland Blend',
  'Girassol',
  'Gorgon',
  'Grane',
  'Green Canyon Block 200',
  'Gudrun Blend',
  'Gullfaks Blend',
  'HANDIL',
  'HANDIL, BP',
  'HANDIL, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'HARDING, SHELL OIL',
  'HARRIET, APACHE ENERGY LTD',
  'HAVIS 2013',
  'HEAVY CAT CYCLE OIL, EXXON',
  'HEAVY DISTILLATE MARINE ECA 50 2017',
  'HEAVY LAKE MIX',
  'HEAVY REFORMATE',
  'HEBRON',
  'HEIDRUN',
  'HEIDRUN AaRE 2004',
  'HEIDRUN EXPORT BLEND 2004',
  'HEIDRUN TILJE 2004',
  'HFO 6303 [2002]',
  'HI 317, PHILLIPS',
  'HI 330/349 CONDENSATE, PHILLIPS',
  'HI 561-GRAND CHENIER, PHILLIPS',
  'HI A-310-B/CONDENSATE, PHILLIPS',
  'HIBERNIA',
  'HIBERNIA (EPA 86)',
  'HIBERNIA BLEND, STATOIL',
  'HIGH ISLAND BLOCK 154, PHILLIPS',
  'HIGH ISLAND SWEET, SHELL OIL',
  'HIGH ISLAND, AMOCO',
  'HIGH VISCOSITY FUEL OIL',
  'HOME HEATING OIL',
  'HONDO BLEND',
  'HONDO MONTEREY',
  'HONDO SANDSTONE',
  'HOOPS BLEND, ExxonMobil',
  'HOOPS Blend',
  'HOUT',
  'HUIZHOU',
  'HULDRA KONDENSAT 1998',
  'HUNGO BLEND, STATOIL',
  'HUNTINGTON BEACH, SHELL OIL',
  'HUTTON',
  'HYDRA',
  'Harmony',
  'Hebron',
  'Hebron M-04 [2005]',
  'Hebron [2018]',
  'Heritage HE 05',
  'Heritage HE 26',
  'Hibernia Blend',
  'Hibernia [1999]',
  'Hibernia [2018]',
  'Hungo Blend',
  'Husky Energy SGS',
  'IF-30 FUEL OIL',
  'IF-30 FUEL OIL (SVALBARD)',
  'IF-30 FUEL OIL 180',
  'IFO 180',
  'IFO 180',
  'IFO 300',
  'IFO-180LS 2014',
  'IFO-180NS 2014',
  'IFO-380LS 2014',
  'IFO-80LS 2014',
  'IMA, CALTEX',
  'INTERMEDIATE FUEL OIL 180 (SOCSEX)',
  'INTERMEDIATE FUEL OIL 300',
  'INTERMEDIATE FUEL OIL 300 (SOCSEX)',
  'INTERPROVINCIAL',
  'IPPL LIGHT SOUR BLEND',
  'IRANIAN HEAVY',
  'IRANIAN LIGHT',
  'IRIS CONDENSATE 2020',
  'ISSUNGNAK',
  'ISTHMUS',
  'ISTHMUS, CITGO',
  'ISTHMUS, PHILLIPS',
  'ISTHMUS, SHELL OIL',
  'ISTHMUS/MAYA BLEND',
  'ISTHMUS/REFORMA/CACTUS, API',
  'IVAR AASEN 2012',
  'Independent Hub',
  'Issungnak',
  'JABIRU 1A, BHP PETROLEUM',
  'JABIRU, BHP PETROLEUM',
  'JABIRU, SHELL OIL',
  'JACKSON, BP',
  'JATIBARANG',
  'JET A-1,  MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'JET B',
  'JET B (ALASKA)',
  'JET FUEL, TESORO',
  'JOBO',
  'JOBO/MORICHAL, ITOPF',
  'JORDBAER 2011',
  'JOTUN, OIL & GAS JOURNAL',
  'JP-4',
  'JP-5',
  'JP-8',
  'JP-8',
  'Jotun Blend',
  'KABINDA, GALLAGER MARINE',
  'KERAPU, BP',
  'KERN COUNTY BLEND',
  'KERN RIVER-SWEPI, SHELL OIL',
  'KHAFJI',
  'KHAFJI,  MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'KHAFJI, BP',
  'KHALDA',
  'KIMKOL',
  'KIRKUK',
  'KIRKUK BLEND',
  'KIRKUK, EXXON',
  'KIRKUK, OIL & GAS',
  'KIRKUK, SHELL OIL',
  'KITTIWAKE',
  'KOAKOAK',
  'KOAKOAK 0-22',
  'KOAKOAK 0-22A',
  'KOLE MARINE BLEND',
  'KOLE MARINE, AMOCO',
  'KOLE, SHELL OIL',
  'KOME',
  'KOMINEFT',
  'KOPANOAR',
  'KOPANOAR 2I-44',
  'KOPANOAR M-13',
  'KOPANOAR M-13A',
  'KRISTIN 2006',
  'KUKAPU, CALTEX',
  'KUPARUK',
  'KUTUBU',
  'KUTUBU LIGHT, BHP PETROLEUM',
  'KUTUBU LIGHT, MOBIL OIL AUSTRALIA ',
  'KUTUBU, AMSA',
  'KUTUBU, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'KUTUBU, SHELL OIL',
  'KUWAIT',
  'KUWAIT',
  'KUWAIT CRUDE OIL (LITERATURE VALUES)',
  'KUWAIT EXPORT, OIL & GAS',
  'KUWAIT LIGHT, PHILLIPS',
  'KUWAIT, ARCO',
  'KUWAIT, BP',
  'KVITEBJORN 2009',
  'KVITEBJORN 2019',
  'Kearl',
  'Kissanje Blend',
  'Kutubu',
  'LA ROSA',
  'LA ROSA MEDIUM, OIL & GAS',
  'LABUAN BLEND',
  'LABUAN, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'LAGO',
  'LAGO MEDIO',
  'LAGO TRECO',
  'LAGO TRECO, CITGO',
  'LAGOCINCO, SHELL OIL',
  'LAGOMAR, SHELL OIL',
  'LAGOMEDIO',
  'LAGOTRECO',
  'LAGOTRECO, SHELL OIL',
  'LAGUNA',
  'LAGUNA 22, CITGO',
  'LAGUNA BLEND 24, CITGO',
  'LAGUNA, CITGO',
  'LALANG',
  'LALANG, SHELL REFINING PTY ',
  'LARG TRECO MEDIUM, CITGO',
  'LAVRANS 1997',
  'LEDUC WOODBEND',
  'LEONA',
  'LEONA, CITGO',
  'LIGHT CAT CYCLE OIL, EXXON',
  'LIGHT LOUISIANNA SWEET, BP',
  'LIGHT NAPHTHA, EXXON',
  'LIGHT SOUR BLEND',
  'LILLE PRINSEN 2022',
  'LILLEFRIGG KONDENSAT 1996',
  'LINERLE 2005',
  'LISBURNE',
  'LIUHUA, AMOCO',
  'LIVERPOOL BAY',
  'LLOYDMINSTER',
  'LLOYDMINSTER, OIL & GAS',
  'LLOYDMINSTER, SHELL OIL',
  'LOKELE, CITGO',
  'LOKELE, EXXON',
  'LOKELE, SHELL OIL',
  'LORETO',
  'LORETO, SHELL OIL',
  'LOUISIANA',
  'LOW SULFUR VACUUM GAS OIL, CHEVRON',
  'LOW SULFUR WAXY GAS OIL',
  'LOW SULFUR WAXY RESIDUE, AMSA',
  'LOW SULFUR WAXY RESIDUUM',
  'LUBRICATING OIL (AIR COMPRESSOR) NEW',
  'LUBRICATING OIL (AIR COMPRESSOR) USED',
  'LUBRICATING OIL (AUTO ENGINE OIL, VIRGIN)',
  'LUCINA MARINE',
  'LUCINA, SHELL OIL',
  'LUCKENBACH FUEL OIL',
  'LUCULA',
  'LUFENG, STATOIL',
  'LUNO 2011',
  'LUNO II 2014',
  'Liza',
  'MAGNUS',
  'MAIN PASS 140, PENNZOIL',
  'MAIN PASS 49 CONDENSATE, SHELL OIL',
  'MAIN PASS BLOCK 306',
  'MAIN PASS BLOCK 37',
  'MALONGO',
  'MANDJI',
  'MANDJI, SHELL OIL',
  'MARALAGO 22, CITGO',
  'MARGHAM',
  'MARGHAM LIGHT',
  'MARGHAM, BP',
  'MARIA 2013',
  'MARIB, PHILLIPS',
  'MARINE DIESEL F-76, MANCHESTER FUEL',
  'MARINE DIESEL FUEL OIL',
  'MARINE DIESEL FUEL OIL',
  'MARINE DIESEL, U.S. NAVY',
  'MARINE GAS OIL 500 ppm S 2017',
  'MARINE INTERMEDIATE FUEL OIL',
  'MARJAN/ZULUF, ARAMCO',
  'MARS BLEND',
  'MARS TLP',
  'MARTIN LINGE CONDENSATE 2016',
  'MARTIN LINGE CRUDE 2016',
  'MARULK 2014',
  'MAUI B, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'MAUI F SAND, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'MAUI, SHELL REFINING PTY ',
  'MAUREEN',
  'MAYA',
  'MAYA (1997)',
  'MAYA, AMOCO',
  'MAYA, CITGO',
  'MAYA, EXXON',
  'MAYA, OIL & GAS',
  'MAYA, PHILLIPS',
  'MAYA, SHELL OIL',
  'MAYOGIAK',
  'MCARTHUR RIVER',
  'MCKEE BLEND 10% NGAT-1, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'MCKEE BLEND 10% NGAT-2, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'MCKEE BLEND 10% NGAT-3, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'MCKEE BLEND 25%, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'MCKEE BLEND 50%, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'MCKEE BLEND, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'MCKEE, SHELL REFINING PTY ',
  'MEDANITO',
  'MEDANITO, OIL & GAS',
  'MENEMOTA',
  'MENEMOTA, CITGO',
  'MEREY',
  'MEREY, OIL & GAS',
  'MESA 28, CITGO',
  'MESA 30, CITGO',
  'MIANDOUM',
  'MIDDLE GROUND SHOAL',
  'MIDGARD 2003',
  'MILNE POINT',
  'MINAS, SHELL REFINING PTY ',
  'MINERAL TURPS, SHELL REFINING PTY ',
  'MIRI LIGHT',
  'MIRI LIGHT, BP',
  'MIRI LIGHT, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'MISSISSIPPI CANYON BLOCK 194',
  'MISSISSIPPI CANYON BLOCK 72',
  'MIX GEISUM, GEISUM OIL',
  'MONTEREY, TORCH',
  'MONTROSE',
  'MORICHAL',
  'MORVIN 2008',
  'MOTOR GASOLINE-LEADED, SHELL REFINING PTY ',
  'MOTOR GASOLINE-PREMIUM UNLEADED, SHELL REFINING PTY ',
  'MOTOR GASOLINE-UNLEADED, SHELL REFINING PTY ',
  'MOUSSE MIX (PETAWAWA)',
  'MTBE, EXXON',
  'MUBAREK',
  'MURBAN',
  'MURBAN, MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'MURBAN, OIL & GAS',
  'MURBAN, SHELL OIL',
  'MURBAN, SHELL REFINING PTY ',
  'MURCHISON',
  'MV Arrow [2015]',
  'Marib Light',
  'Marine Diesel [2018]',
  'Mars TLP [2000]',
  'Maya [2004]',
  'Mondo',
  'Morpeth Block EW921',
  'Mostarda',
  "N'KOSSA EXP BLEND, CHEVRON",
  'NANNAI LIGHT, BP',
  'NAPHTHA CRACKING FRACTION, EXXON',
  'NAPHTHA N+A, MAPCO',
  'NAPHTHA, EXXON',
  'NAPO',
  'NEKTORALIK K-59',
  'NEKTORALIK K-59A',
  'NEMBA, GALLAGER MARINE',
  'NEPTUNE SPAR',
  'NERLERK',
  'NERLERK M-98B',
  'NERLERK M-98C',
  'NEWFOUNDLAND OFFSHORE BURN EXP SAMPLE #1',
  'NEWFOUNDLAND OFFSHORE BURN EXP SAMPLE #12',
  'NEWFOUNDLAND OFFSHORE BURN EXP SAMPLE #15',
  'NEWFOUNDLAND OFFSHORE BURN EXP SAMPLE #4',
  'NEWFOUNDLAND OFFSHORE BURN EXP SAMPLE #5',
  'NEWFOUNDLAND OFFSHORE BURN EXP SAMPLE #7',
  'NEWFOUNDLAND OFFSHORE BURN EXPERIMENT',
  'NIGERIAN EXP. B1',
  'NIGERIAN LGT G',
  'NIGERIAN LGT M',
  'NIGERIAN LIGHT',
  'NIGERIAN MEDIUM',
  'NIKISKI',
  'NINIAN',
  'NINIAN BLEND',
  'NINIAN BLEND',
  'NINIAN, CITGO',
  'NJORD 1997',
  'NJORD 2002',
  'NJORD 2003',
  'NKOSSA, SHELL REFINING PTY ',
  'NORMAN WELLS',
  'NORNE 2010',
  'NORNE BLEND 2010',
  'NORNE CRUDE 2017',
  'NORTH EAST TEXAS',
  'NORTH GEISUM, GEISUM OIL',
  'NORTH SLOPE',
  'NORTH SLOPE, CITGO',
  'NORTH SLOPE, PHILLIPS',
  'NORTHSTAR',
  'NORTHWEST CHARGE STOCK, CHEVRON',
  'NOWRUZ',
  'NSW CONDENSATE, AMSA',
  'Neptune BHP [2009]',
  'Norman Wells',
  'North Star',
  'ODA 2019',
  'ODUDU, EXXON',
  'OFELIA 2023',
  'OGUENDJO, AMOCO',
  'OLMECA, CITGO',
  'OLMECA, OIL & GAS',
  'OLMECA, SHELL OIL',
  'OMAN',
  'OMAN EXPORT',
  'OMAN,  MARITIME SAFETY AUTHORITY OF NEW ZEALAND',
  'OMAN, PHILLIPS',
  'OMAN, SHELL OIL',
  'OMAN, SHELL REFINING PTY ',
  'OQUENDJO',
  'ORIENTE',
  'ORIENTE',
  'ORIENTE, CITGO',
  'ORIENTE, OIL & GAS',
  'ORIENTE, SHELL OIL',
  'ORIMULSION',
  'ORIMULSION-100',
  'ORMEN LANGE KONDENSAT 2008',
  'OSEBERG',
  'OSEBERG',
  'OSEBERG A 2013',
  'OSEBERG BLEND 2007',
  'OSEBERG C 1995',
  'OSEBERG C 2013',
  'OSEBERG OST 1998',
  'OSEBERG OST 2013',
  'OSEBERG SOR 2000',
  'OSEBERG SOR 2013',
  'OSEBERG, EXXON',
  'OSEBERG, OIL & GAS',
  'OSELVAR 2012',
  'Odoptu',
  'Ormen Lange',
  'Oseberg Blend',
  'Oso Condensate',
  'PALANCA',
  'PALANCA, SHELL OIL',
  'PANUCO',
  'PANUKE',
  'PANUKE',
  'PARENTIS',
  'PECAN ISLAND, AMOCO',
  'PECAN ISLAND, SHELL OIL',
  'PEMBINA',
  'PENNINGTON',
  'PIERCE, OIL & GAS JOURNAL',
  'PILON',
  'PILON, CITGO',
  'PILON-ANACO WAX, CITGO',
  'PIPER',
  'PITAS POINT',
  'PITAS POINT',
  'PL COMPOSITE, STAR ENTERPRISE',
  'PLATFORM B',
  'PLATFORM GAIL',
  'PLATFORM HOLLY',
  'PLATFORM IRENE',
  'POINT ARGUELLO COMINGLED',
  'POINT ARGUELLO HEAVY',
  'POINT ARGUELLO LIGHT',
  'PORT HUENEME',
  'POSIDEN, EQUILON',
  'POUI, AMOCO',
  'PREMIUM UNLEADED GASOLINE, STAR ENTERPRISE',
  'PROPYLENE TETRAMER',
  'PRUDHOE BAY',
  'PRUDHOE BAY (1995)',
  'PULAI',
  'Pazflor',
  'Petronius Block VK786A',
  'Platform Ellen A038',
  'Platform Ellen A040',
  'Platform Elly',
  'Platform Irene',
  'Platform Irene Comingled',
  'Prudhoe Bay [2004]',
  'QATAR LAND, MOBIL OIL AUSTRALIA ',
  'QATAR MARINE',
  'QATAR MARINE, MOBIL OIL AUSTRALIA',
  'QATAR NORTH FIELD CONDENSATE (NFR-1), MOBIL',
  'QATAR/DUKHAM, CHEVRON',
  'QUA IBOE',
  'QUA IBOE, PHILLIPS',
  'QUA IBOE, SHELL OIL',
  'Qua Iboe',
  'RABBI, COASTAL EAGLE POINT OIL',
  'RABI BLEND, SHELL OIL',
  'RABI, MOTIVA ENTERPRISES LLC',
  'RABI-KOUNGA, SHELL OIL',
  'RAGUSA',
  'RAINBOW LIGHT AND MEDIUM, OIL & GAS',
  'RANGELAND-SOUTH LIGHT AND MEDIUM',
  'RANGELAND-SOUTH, OIL & GAS',
  'RANGELY',
  'RAS LANUF',
  'RATNA',
  'REDWATER',
  'RESIDUAL FUEL 900, TESORO',
  'RINCON DE LOS SAUCES',
  'RINCON DE LOS SAUCES, OIL & GAS',
  'RINGHORNE 2002',
  'RIO ZULIA',
  'ROSSIIELF, RUSSIAN JOINT STOCK CO',
  'ROSTAM',
  'ROTTERDAM DIESEL 2017',
  'Rail Bitumen',
  'Rock',
  'SABLE ISLAND CONDENSATE',
  'SAHARAN BLEND',
  'SAHARAN BLEND ARZEW, SHELL OIL',
  'SAHARAN BLEND BEJAIA, SHELL OIL',
  'SAHARAN BLEND, OIL & GAS',
  'SAJAA CONDENSATE, BP',
  'SAKHALIN',
  'SAKHALIN II',
  'SALADIN',
  'SALAWATI',
  'SALMON',
  'SAN JOACHIM',
  'SANGA SANGA',
  'SANTA CLARA',
  'SANTA CRUZ',
  'SANTA MARIA',
  'SARIR',
  'SARIR, ITOPF',
  'SCHIEHALLION BLEND, STATOIL',
  'SCHOONEBEEK',
  'SCOTIAN LIGHT',
  'SENIPAH, CALTEX',
  'SEPINGGAN-YAKIN MIXED (4:1)',
  'SEPINGGAN-YAKIN MIXED, OIL & GAS',
  'SERIA LIGHT',
  'SF NORD BRENT 2021',
  'SHARJAH',
  ...],
 'default': 'GENERIC MEDIUM CRUDE',
 'level': 1,
 'description': 'Oil type to be used for the simulation, from the NOAA ADIOS database.',
 'value': 'GENERIC BUNKER C',
 'od_mapping': 'seed:oil_type',
 'ptm_level': 1}

The drift_model-specific parameters chosen by the user and PTM for this simulation are:

m.drift_model_config()
[('environment:fallback:ocean_mixed_layer_thickness', 30),
 ('general:use_auto_landmask', False),
 ('drift:current_uncertainty', 0),
 ('general:coastline_action', 'previous'),
 ('seed:number', 10),
 ('drift:horizontal_diffusivity', 0),
 ('drift:wind_uncertainty', 0),
 ('seed:z', -10),
 ('seed:wind_drift_factor', 0.02),
 ('seed:oil_film_thickness', 1),
 ('drift:vertical_mixing', True),
 ('vertical_mixing:timestep', 60),
 ('vertical_mixing:diffusivitymodel', 'windspeed_Large1994'),
 ('drift:wind_drift_depth', 0.02),
 ('drift:stokes_drift', True),
 ('general:seafloor_action', 'previous'),
 ('seed:seafloor', False),
 ('seed:m3_per_hour', 1),
 ('seed:droplet_size_distribution', 'uniform'),
 ('seed:droplet_diameter_mu', 0.001),
 ('seed:droplet_diameter_sigma', 0.0005),
 ('seed:droplet_diameter_min_subsea', 0.0005),
 ('seed:droplet_diameter_max_subsea', 0.005),
 ('processes:dispersion', True),
 ('processes:evaporation', True),
 ('processes:emulsification', True),
 ('processes:biodegradation', True),
 ('processes:update_oilfilm_thickness', True),
 ('seed:oil_type', 'GENERIC BUNKER C'),
 ('drift:vertical_advection', True),
 ('drift:truncate_ocean_model_below_m', None),
 ('drift:use_tabularised_stokes_drift', True),
 ('model', 'opendrift'),
 ('lon', -89.85),
 ('lat', 28.08),
 ('seed_flag', 'elements'),
 ('start_time', Timestamp('2009-11-19 12:00:00')),
 ('run_forward', True),
 ('time_step', 300),
 ('time_step_output', 3600),
 ('steps', 45),
 ('duration', Timedelta('0 days 03:45:00')),
 ('end_time', Timestamp('2009-11-19 15:45:00')),
 ('ocean_model', 'user_input'),
 ('ocean_model_local', False),
 ('do3D', True),
 ('use_static_masks', True),
 ('drift_model', 'OpenOil'),
 ('export_variables',
  ['z',
   'origin_marker',
   'object_type',
   'object_type',
   'diameter',
   'neutral_buoyancy_salinity',
   'stage_fraction',
   'hatched',
   'length',
   'weight',
   'diameter',
   'neutral_buoyancy_salinity',
   'stage_fraction',
   'hatched',
   'length',
   'weight',
   'diameter',
   'neutral_buoyancy_salinity',
   'stage_fraction',
   'hatched',
   'length',
   'weight',
   'diameter',
   'neutral_buoyancy_salinity',
   'stage_fraction',
   'hatched',
   'length',
   'weight',
   'mass_oil',
   'density',
   'mass_evaporated',
   'mass_dispersed',
   'mass_biodegraded',
   'viscosity',
   'water_fraction',
   'mass_oil',
   'density',
   'mass_evaporated',
   'mass_dispersed',
   'mass_biodegraded',
   'viscosity',
   'water_fraction']),
 ('radius', 1000.0),
 ('radius_type', 'gaussian'),
 ('log', 'low')]

Add reader and run

m.add_reader(ds=ds)
m.run_all()
18:18:13 INFO    opendrift:359: Since ocean_model is user-input, changing horizontal_diffusivity parameter from None to 0.0.
                    You can also set it to a specific value with `m.horizontal_diffusivity=[number]`.
18:18:13 INFO    opendrift:439: ocean_model is not one of ['NWGOA', 'CIOFS', 'CIOFSOP'].
18:18:13 INFO    opendrift:575: Using remote output for ocean_model user_input
18:18:13 INFO    opendrift:586: Retaining vertical velocity (w) because do3D is True
18:18:13 INFO    opendrift:603: Retaining wind variables because stokes_drift, wind_drift_factor, wind_uncertainty, or vertical_mixing are on or drift_model is 'OpenOil'
18:18:13 INFO    opendrift:614: Retaining salt and temp variables because drift_model is LarvalFish or OpenOil
18:18:13 INFO    opendrift:625: Retaining ice variables because drift_model is OpenOil
18:18:13 INFO    opendrift:634: Dropping wetdry masks because using static masks instead.
18:18:13 INFO    opendrift:754: setting reader start_time as simulation start_time
18:18:13 INFO    opendrift:769: Narrowed model output to simulation time
18:18:13 INFO    opendrift.readers.reader_ROMS_native:249: 'gls_cmu0'
18:18:13 INFO    opendrift.readers.reader_ROMS_native:250: Did not find complete set of GLS parameters
18:18:13 WARNING opendrift.readers.basereader.structured:50: No proj string or projection could be derived, using 'fakeproj'. This assumes that the variables are structured and gridded approximately equidistantly on the surface (i.e. in meters). This must be guaranteed by the user. You can get rid of this warning by supplying a valid projection to the reader.
18:18:13 INFO    opendrift.readers.basereader.structured:83: Loading previously saved interpolator for lon,lat to x,y conversion.
18:18:13 INFO    opendrift.models.openoil.openoil:1664: Using uniform droplet size distribution between 0.0005 and 0.005 m for elements seeded below sea surface.
18:18:13 INFO    opendrift.models.openoil.adios.dirjs:90: Querying ADIOS database for oil: GENERIC BUNKER C
18:18:13 INFO    opendrift.models.openoil.openoil:1721: Using density 971.1 and viscosity 0.0005020658058702914 of oiltype GENERIC BUNKER C
18:18:13 INFO    opendrift.models.basemodel.environment:247: Fallback values will be used for the following variables which have no readers: 
18:18:13 INFO    opendrift.models.basemodel.environment:250: 	upward_sea_water_velocity: 0.000000
18:18:13 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wave_significant_height: 0.000000
18:18:13 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wave_stokes_drift_x_velocity: 0.000000
18:18:13 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wave_stokes_drift_y_velocity: 0.000000
18:18:13 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wave_period_at_variance_spectral_density_maximum: 0.000000
18:18:13 INFO    opendrift.models.basemodel.environment:250: 	sea_surface_wave_mean_period_from_variance_spectral_density_second_frequency_moment: 0.000000
18:18:13 INFO    opendrift.models.basemodel.environment:250: 	sea_ice_area_fraction: 0.000000
18:18:13 INFO    opendrift.models.basemodel.environment:250: 	sea_ice_x_velocity: 0.000000
18:18:13 INFO    opendrift.models.basemodel.environment:250: 	sea_ice_y_velocity: 0.000000
18:18:13 INFO    opendrift.models.basemodel.environment:250: 	ocean_vertical_diffusivity: 0.020000
18:18:13 INFO    opendrift.models.basemodel.environment:250: 	ocean_mixed_layer_thickness: 30.000000
18:18:13 INFO    opendrift:492: start_time: 2009-11-19 12:00:00, end_time: 2009-11-19 15:45:00, steps: 45.0, duration: 0 days 03:45:00
18:18:13 INFO    opendrift.models.basemodel:908: Using existing reader for land_binary_mask
18:18:13 INFO    opendrift.readers.reader_ROMS_native:319: Using mask_rho for mask_rho
18:18:13 INFO    opendrift.models.basemodel:920: All points are in ocean
18:18:13 INFO    opendrift.models.openoil.openoil:691: Oil-water surface tension is 0.035282 Nm
18:18:13 INFO    opendrift.models.openoil.openoil:704: Max water fraction not available for GENERIC BUNKER C, using default
18:18:13 WARNING opendrift.models.basemodel:701: Seafloor check not being run because sea_surface_height is missing. This will happen the first time the function is run but if it happens subsequently there is probably a problem.
18:18:13 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:00:00 - step 1 of 45 - 10 active elements (0 deactivated)
18:18:13 INFO    opendrift.readers.reader_ROMS_native:370: Using zeta for sea surface height
18:18:13 INFO    opendrift.readers.reader_ROMS_native:340: Using mask_u for mask_u
18:18:13 INFO    opendrift.readers.reader_ROMS_native:592: Time: 0:00:00.160282
18:18:13 INFO    opendrift.readers.reader_ROMS_native:361: Using mask_v for mask_v
18:18:13 INFO    opendrift.readers.reader_ROMS_native:384: Using angle from Dataset.
18:18:13 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:05:00 - step 2 of 45 - 10 active elements (0 deactivated)
18:18:13 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:10:00 - step 3 of 45 - 10 active elements (0 deactivated)
18:18:13 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:15:00 - step 4 of 45 - 10 active elements (0 deactivated)
18:18:13 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:20:00 - step 5 of 45 - 10 active elements (0 deactivated)
18:18:13 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:25:00 - step 6 of 45 - 10 active elements (0 deactivated)
18:18:13 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:30:00 - step 7 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:35:00 - step 8 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:40:00 - step 9 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:45:00 - step 10 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:50:00 - step 11 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 12:55:00 - step 12 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:00:00 - step 13 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:05:00 - step 14 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:10:00 - step 15 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:15:00 - step 16 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:20:00 - step 17 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:25:00 - step 18 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:30:00 - step 19 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:35:00 - step 20 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:40:00 - step 21 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:45:00 - step 22 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:50:00 - step 23 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 13:55:00 - step 24 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:00:00 - step 25 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:05:00 - step 26 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:10:00 - step 27 of 45 - 10 active elements (0 deactivated)
18:18:14 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:15:00 - step 28 of 45 - 10 active elements (0 deactivated)
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:20:00 - step 29 of 45 - 10 active elements (0 deactivated)
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:25:00 - step 30 of 45 - 10 active elements (0 deactivated)
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:30:00 - step 31 of 45 - 10 active elements (0 deactivated)
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:35:00 - step 32 of 45 - 10 active elements (0 deactivated)
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:40:00 - step 33 of 45 - 10 active elements (0 deactivated)
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:45:00 - step 34 of 45 - 10 active elements (0 deactivated)
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:50:00 - step 35 of 45 - 10 active elements (0 deactivated)
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 14:55:00 - step 36 of 45 - 10 active elements (0 deactivated)
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:00:00 - step 37 of 45 - 10 active elements (0 deactivated)
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:05:00 - step 38 of 45 - 10 active elements (0 deactivated)
18:18:15 WARNING opendrift.models.basemodel:2297: Missing variables: ['x_sea_water_velocity', 'y_sea_water_velocity', 'land_binary_mask']
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:10:00 - step 39 of 45 - 9 active elements (1 deactivated)
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:15:00 - step 40 of 45 - 9 active elements (1 deactivated)
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:20:00 - step 41 of 45 - 9 active elements (1 deactivated)
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:25:00 - step 42 of 45 - 9 active elements (1 deactivated)
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:30:00 - step 43 of 45 - 9 active elements (1 deactivated)
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:35:00 - step 44 of 45 - 9 active elements (1 deactivated)
18:18:15 INFO    opendrift.models.basemodel:2011: 2009-11-19 15:40:00 - step 45 of 45 - 9 active elements (1 deactivated)
18:18:15 INFO    opendrift.export.io_netcdf:112: Wrote 4 steps to file None_initial

Plot

m.o.plot(linecolor="z", fast=True, cmap=cmo.deep_r)
18:18:15 WARNING opendrift.models.basemodel:2378: Plotting fast. This will make your plots less accurate.
_images/b0ae4aad752ba59b8d2cc5a118cddc9fd1bc431f6be7c6770d0f9a0d5f83fbe7.png
(<GeoAxes: title={'center': 'OpenDrift - OpenOil (GENERIC BUNKER C)\n2009-11-19 12:00 to 2009-11-19 15:00 UTC (4 steps)'}>,
 <Figure size 1100x699.183 with 2 Axes>)

Plot the oil budget.

m.o.plot_oil_budget(show_wind_and_current=False)
_images/1d33da351f4fea5ebd2d4f8f75807e162f36373d8182963255a27edab479f508.png