gnome.movers

__init__.py for the gnome.movers package

Submodules

Package Contents

Classes

Mover

Base class from which all Python movers/weatherers can inherit

Process

Base class from which all Python movers/weatherers can inherit

CyMover

Base class from which all Python movers/weatherers can inherit

PyMover

Base class from which all Python movers/weatherers can inherit

SimpleMover

simple_mover

PointWindMover

Python wrapper around the Cython wind_mover module.

c_GridWindMover

Base class from which all Python movers/weatherers can inherit

IceWindMover

Base class from which all Python movers/weatherers can inherit

ShipDriftMover

Base class from which all Python movers/weatherers can inherit

RandomMover

"Random Walk" diffusion mover

IceAwareRandomMover

"Random Walk" diffusion mover

RandomMover3D

This mover class inherits from CyMover and contains CyRandomMover3D

RiseVelocityMover

This mover class inherits from CyMover and contains CyRiseVelocityMover

TamocRiseVelocityMover

The only thing this adds (so far)

WindMover

WindMover implemented in Python. Uses the .wind attribute to move particles.

CurrentMover

CurrentMover implemented in Python. Uses the .current attribute to move particles.

Functions

constant_point_wind_mover(speed, direction[, units])

utility function to create a point wind mover with a constant wind

point_wind_mover_from_file(filename, **kwargs)

Creates a wind mover from a wind time-series file (OSM long wind format)

Attributes

mover_schemas

class gnome.movers.Mover(on=True, make_default_refs=True, active_range=(InfDateTime('-inf'), InfDateTime('inf')), _automanaged=True, **kwargs)

Bases: Process

Base class from which all Python movers/weatherers can inherit

It defines the base functionality for mover/weatherer.

NOTE: Since base class is not Serializable, it does not need

a class level _schema attribute.

Initialize default Mover/Weatherer parameters

All parameters are optional (kwargs)

Parameters:
  • on – boolean as to whether the object is on or not. Default is on

  • active_range (2-tuple of datetimes) – Range of datetimes for when the mover should be active

get_move(sc, time_step, model_time_datetime)

Compute the move in (long,lat,z) space. It returns the delta move for each element of the spill as a numpy array of size (number_elements X 3) and dtype = gnome.basic_types.world_point_type

Base class returns an array of numpy.nan for delta to indicate the get_move is not implemented yet.

Each class derived from Mover object must implement it’s own get_move

Parameters:
  • sc – an instance of gnome.spill_container.SpillContainer class

  • time_step – time step in seconds

  • model_time_datetime – current model time as datetime object

All movers must implement get_move() since that’s what the model calls

get_bounds()

Return a bounding box surrounding the grid data.

class gnome.movers.Process(on=True, make_default_refs=True, active_range=(InfDateTime('-inf'), InfDateTime('inf')), _automanaged=True, **kwargs)

Bases: gnome.GnomeId

Base class from which all Python movers/weatherers can inherit

It defines the base functionality for mover/weatherer.

NOTE: Since base class is not Serializable, it does not need

a class level _schema attribute.

Initialize default Mover/Weatherer parameters

All parameters are optional (kwargs)

Parameters:
  • on – boolean as to whether the object is on or not. Default is on

  • active_range (2-tuple of datetimes) – Range of datetimes for when the mover should be active

property active
property active_range
property data_start
property data_stop
_check_active_startstop(active_start, active_stop)
datetime_to_seconds(model_time)

Put the time conversion call here - in case we decide to change it, it only updates here

prepare_for_model_run()

Override this method if a derived mover class needs to perform any actions prior to a model run

prepare_for_model_step(sc, time_step, model_time_datetime)

sets active flag based on time_span and on flag. Object is active if following hold and ‘on’ is True:

  1. active start <= (model_time + time_step/2) so object is on for more than half the timestep

  2. (model_time + time_step/2) <= active_stop so again the object is on for at least half the time step flag to true.

Parameters:
  • sc – an instance of gnome.spill_container.SpillContainer class

  • time_step – time step in seconds

  • model_time_datetime – current model time as datetime object

model_step_is_done(sc=None)

This method gets called by the model when after everything else is done in a time step. Put any code need for clean-up, etc in here in subclassed movers.

post_model_run()

Override this method if a derived class needs to perform any actions after a model run is complete (StopIteration triggered)

class gnome.movers.CyMover(**kwargs)

Bases: Mover

Base class from which all Python movers/weatherers can inherit

It defines the base functionality for mover/weatherer.

NOTE: Since base class is not Serializable, it does not need

a class level _schema attribute.

Base class for python wrappers around cython movers. Uses super(CyMover, self).__init__(**kwargs) to call Mover class __init__ method

All cython movers (CyWindMover, CyRandomMover) are instantiated by a derived class, and then contained by this class in the member ‘movers’. They will need to extract info from spill object.

We assumes any derived class will instantiate a ‘mover’ object that has methods like: prepare_for_model_run, prepare_for_model_step,

All kwargs passed on to super class

prepare_for_model_run()

Calls the contained cython mover’s prepare_for_model_run()

prepare_for_model_step(sc, time_step, model_time_datetime)
Default implementation of prepare_for_model_step(…)
  • Sets the mover’s active flag if time is within specified timespan (done in base class Mover)

  • Invokes the cython mover’s prepare_for_model_step

Parameters:
  • sc – an instance of gnome.spill_container.SpillContainer class

  • time_step – time step in seconds

  • model_time_datetime – current model time as datetime object

Uses super to invoke Mover class prepare_for_model_step and does a couple more things specific to CyMover.

get_move(sc, time_step, model_time_datetime)

Base implementation of Cython wrapped C++ movers Override for things like the PointWindMover since it has a different implementation

Parameters:
  • sc – spill_container.SpillContainer object

  • time_step – time step in seconds

  • model_time_datetime – current model time as datetime object

prepare_data_for_get_move(sc, model_time_datetime)

organizes the spill object into inputs for calling with Cython wrapper’s get_move(…)

Parameters:
  • sc – an instance of gnome.spill_container.SpillContainer class

  • model_time_datetime – current model time as datetime object

model_step_is_done(sc=None)

This method gets called by the model after everything else is done in a time step, and is intended to perform any necessary clean-up operations. Subclassed movers can override this method.

class gnome.movers.PyMover(default_num_method='RK2', **kwargs)

Bases: Mover

Base class from which all Python movers/weatherers can inherit

It defines the base functionality for mover/weatherer.

NOTE: Since base class is not Serializable, it does not need

a class level _schema attribute.

Initialize default Mover/Weatherer parameters

All parameters are optional (kwargs)

Parameters:
  • on – boolean as to whether the object is on or not. Default is on

  • active_range (2-tuple of datetimes) – Range of datetimes for when the mover should be active

_schema
delta_method(method_name=None)

Returns a delta function based on its registered name

Usage: delta = self.delta_method(‘RK2’)(**kwargs)

Note: We do not handle any key errors resulting from passing in a bad registered name.

get_delta_Euler(sc, time_step, model_time, pos, vel_field)
get_delta_RK2(sc, time_step, model_time, pos, vel_field)
get_delta_RK4(sc, time_step, model_time, pos, vel_field)
class gnome.movers.SimpleMover(velocity=0, uncertainty_scale=0.5, **kwargs)

Bases: gnome.movers.Mover

simple_mover

a really simple mover – moves all LEs a constant speed and direction

(not all that different than a constant wind mover, now that I

think about it)

simple_mover (velocity)

create a simple_mover instance

Parameters:
  • velocity – a (u, v, w) triple – in meters per second

  • uncertainty_scale=0.5 – the scale of the uncertainty of the velocity

Remaining kwargs are passed onto Mover’s __init__ using super. See Mover documentation for remaining valid kwargs.

_schema
__repr__()

Return repr(self).

get_move(spill, time_step, model_time)

moves the particles defined in the spill object

Parameters:
  • spill – spill is an instance of the gnome.spills.Spill class

  • time_step – time_step in seconds

  • model_time – current model time as a datetime object

In this case, it uses the positions and status_code data arrays.

Returns delta:

Nx3 numpy array of movement – in (long, lat, meters) units

class gnome.movers.PointWindMover(wind=None, **kwargs)

Bases: WindMoversBase

Python wrapper around the Cython wind_mover module. This class inherits from CyMover and contains CyWindMover

The real work is done by the CyWindMover object. CyMover sets everything up that is common to all movers.

Uses super to call CyMover base class __init__

Parameters:

wind – wind object – provides the wind time series for the mover

Remaining kwargs are passed onto WindMoversBase __init__ using super. See Mover documentation for remaining valid kwargs.

Note

Can be initialized with wind=None; however, wind must be set before running. If wind is not None, toggle make_default_refs to False since user provided a valid Wind and does not wish to use the default from the Model.

property wind
property data_start
property data_stop
_schema
_ref_as = 'wind_mover'
_req_refs
__repr__()

Return repr(self).

__str__()

Return str(self).

prepare_for_model_run()

if wind attribute is not set, raise ReferencedObjectNotSet excpetion

gnome.movers.constant_point_wind_mover(speed, direction, units='m/s')

utility function to create a point wind mover with a constant wind

Parameters:
  • speed – wind speed

  • direction – wind direction in degrees true (direction from, following the meteorological convention)

  • units='m/s' – the units that the input wind speed is in. options: ‘m/s’, ‘knot’, ‘mph’, others…

Returns:

returns a gnome.movers.WindMover object all set up.

Note

The time for a constant wind timeseries is irrelevant. This function simply sets it to datetime.now() accurate to hours.

gnome.movers.point_wind_mover_from_file(filename, **kwargs)

Creates a wind mover from a wind time-series file (OSM long wind format)

Parameters:
  • filename – The full path to the data file

  • kwargs – All keyword arguments are passed on to the WindMover constructor

Returns mover:

returns a wind mover, built from the file

class gnome.movers.c_GridWindMover(filename=None, topology_file=None, extrapolate=False, time_offset=0, **kwargs)

Bases: WindMoversBase

Base class from which all Python movers/weatherers can inherit

It defines the base functionality for mover/weatherer.

NOTE: Since base class is not Serializable, it does not need

a class level _schema attribute.

Parameters:
  • wind_file – file containing wind data on a grid

  • filename – file containing wind data on a grid

  • topology_file – Default is None. When exporting topology, it is stored in this file

  • wind_scale – Value to scale wind data

  • extrapolate – Allow current data to be extrapolated before and after file data

  • time_offset – Time zone shift if data is in GMT

Pass optional arguments to base class uses super: super(c_GridWindMover,self).__init__(**kwargs)

property data_start
property data_stop
_schema
wind_scale
extrapolate
time_offset
__repr__()
__str__()

Return str(self).

get_grid_data()
get_cells()

Invokes the GetCellDataHdl method of TimeGridWind_c object. Cross-references point data to get cell coordinates.

get_points()
get_cell_center_points()

Right now the cython mover only gets the triangular center points, so we need to calculate centers based on the cells themselves.

Cells will have the format (tl, tr, bl, br) We need to get the rectangular centers Center will be: (tl + ((br - tl) / 2.))

get_center_points()
get_scaled_velocities(time)
Parameters:

model_time=0

export_topology(topology_file)
Parameters:

topology_file=None – absolute or relative path where topology file will be written.

extrapolate_in_time(extrapolate)
Parameters:

extrapolate=false – Allow current data to be extrapolated before and after file data.

offset_time(time_offset)
Parameters:

offset_time=0 – Allow data to be in GMT with a time zone offset (hours).

class gnome.movers.IceWindMover(filename=None, topology_file=None, extrapolate=False, time_offset=0, **kwargs)

Bases: WindMoversBase

Base class from which all Python movers/weatherers can inherit

It defines the base functionality for mover/weatherer.

NOTE: Since base class is not Serializable, it does not need

a class level _schema attribute.

Initialize an IceWindMover

Parameters:
  • filename – absolute or relative path to the data file: could be netcdf or filelist

  • topology_file=None – absolute or relative path to topology file. If not given, the IceMover will compute the topology from the data file.

  • active_range (2-tuple of datetimes) – Range of datetimes for when the mover should be active

  • wind_scale – Value to scale wind data

  • extrapolate – Allow current data to be extrapolated before and after file data

  • time_offset – Time zone shift if data is in GMT

uses super, super(IceWindMover,self).__init__(**kwargs)

_schema
__repr__()

Return repr(self).

__str__()

Return str(self).

get_grid_data()
get_center_points()
get_scaled_velocities(model_time)
Parameters:

model_time=0

get_ice_velocities(model_time)
Parameters:

model_time=0

get_movement_velocities(model_time)
Parameters:

model_time=0

get_ice_fields(model_time)
Parameters:

model_time=0

export_topology(topology_file)
Parameters:

topology_file=None – absolute or relative path where topology file will be written.

extrapolate_in_time(extrapolate)
Parameters:

extrapolate=false – allow current data to be extrapolated before and after file data.

offset_time(time_offset)
Parameters:

offset_time=0 – allow data to be in GMT with a time zone offset (hours).

get_offset_time()
Parameters:

offset_time=0 – allow data to be in GMT with a time zone offset (hours).

class gnome.movers.ShipDriftMover(wind_file=None, topology_file=None, grid_type=1, drift_angle=0, time_offset=0, **kwargs)

Bases: gnome.movers.Mover

Base class from which all Python movers/weatherers can inherit

It defines the base functionality for mover/weatherer.

NOTE: Since base class is not Serializable, it does not need

a class level _schema attribute.

Parameters:
  • wind_file – file containing wind data on a grid

  • topology_file – Default is None. When exporting topology, it is stored in this file

  • wind_scale – Value to scale wind data

  • extrapolate – Allow current data to be extrapolated before and after file data

  • time_offset – Time zone shift if data is in GMT

Pass optional arguments to base class uses super: super(ShipDriftMover,self).__init__(**kwargs)

_schema
wind_scale
extrapolate
time_offset
__repr__()
__str__()

Return str(self).

export_topology(topology_file)
Parameters:

topology_file=None – absolute or relative path where topology file will be written.

prepare_for_model_run()

Override this method if a derived mover class needs to perform any actions prior to a model run

prepare_for_model_step(sc, time_step, model_time_datetime)

Call base class method using super Also updates windage for this timestep

Parameters:
  • sc – an instance of gnome.spill_container.SpillContainer class

  • time_step – time step in seconds

  • model_time_datetime – current time of model as a date time object

prepare_data_for_get_move(sc, model_time_datetime)

organizes the spill object into inputs for calling with Cython wrapper’s get_move(…)

Parameters:
  • sc – an instance of gnome.spill_container.SpillContainer class

  • model_time_datetime – current model time as datetime object

get_move(sc, time_step, model_time_datetime)

Override base class functionality because mover has a different get_move signature

Parameters:
  • sc – an instance of the gnome.SpillContainer class

  • time_step – time step in seconds

  • model_time_datetime – current time of the model as a date time object

model_step_is_done(sc=None)

This method gets called by the model after everything else is done in a time step, and is intended to perform any necessary clean-up operations. Subclassed movers can override this method.

class gnome.movers.RandomMover(diffusion_coef=100000.0, uncertain_factor=2.0, **kwargs)

Bases: gnome.movers.CyMover

“Random Walk” diffusion mover

Moves the elements each time step in a random direction, according to the specified diffusion coefficient.

Parameters:
  • diffusion_coef (float or integer in units of cm^2/s) – Diffusion coefficient for random diffusion. Default is 100,000 cm2/sec

  • uncertain_factor – Uncertainty factor. Default is 2.0

Remaining kwargs are passed onto gnome.movers.Mover __init__

See Mover documentation for remaining valid kwargs.

property data_start
property data_stop
property diffusion_coef
property uncertain_factor
_schema
__repr__()

Return repr(self).

class gnome.movers.IceAwareRandomMover(ice_concentration=None, **kwargs)

Bases: RandomMover

“Random Walk” diffusion mover

Moves the elements each time step in a random direction, according to the specified diffusion coefficient.

Parameters:
  • diffusion_coef (float or integer in units of cm^2/s) – Diffusion coefficient for random diffusion. Default is 100,000 cm2/sec

  • uncertain_factor – Uncertainty factor. Default is 2.0

Remaining kwargs are passed onto gnome.movers.Mover __init__

See Mover documentation for remaining valid kwargs.

_schema
_req_refs
classmethod from_netCDF(filename=None, dataset=None, grid_topology=None, units=None, time=None, ice_concentration=None, grid=None, grid_file=None, data_file=None, **kwargs)
get_move(sc, time_step, model_time_datetime)

Base implementation of Cython wrapped C++ movers Override for things like the PointWindMover since it has a different implementation

Parameters:
  • sc – spill_container.SpillContainer object

  • time_step – time step in seconds

  • model_time_datetime – current model time as datetime object

class gnome.movers.RandomMover3D(vertical_diffusion_coef_above_ml=5, vertical_diffusion_coef_below_ml=0.11, horizontal_diffusion_coef_above_ml=100000, horizontal_diffusion_coef_below_ml=126, mixed_layer_depth=10.0, surface_is_allowed=False, **kwargs)

Bases: gnome.movers.CyMover

This mover class inherits from CyMover and contains CyRandomMover3D

The real work is done by CyRandomMover3D. CyMover sets everything up that is common to all movers.

Parameters:
  • vertical_diffusion_coef_above_ml – Vertical diffusion coefficient for random diffusion above the mixed layer. Default is 5 cm2/s

  • vertical_diffusion_coef_below_ml – Vertical diffusion coefficient for random diffusion below the mixed layer. Default is .11 cm2/s

  • mixed_layer_depth – Mixed layer depth. Default is 10 meters

  • horizontal_diffusion_coef_above_ml – Horizontal diffusion coefficient for random diffusion above the mixed layer. Default is 100000 cm2/s

  • horizontal_diffusion_coef_below_ml – Horizontal diffusion coefficient for random diffusion below the mixed layer. Default is 126 cm2/s

  • surface_is_allowed – Vertical diffusion will ignore surface particles if this is True. Default is False.

Remaining kwargs are passed onto Mover’s __init__ using super.

See Mover documentation for remaining valid kwargs.

property horizontal_diffusion_coef_above_ml
property horizontal_diffusion_coef_below_ml
property vertical_diffusion_coef_above_ml
property vertical_diffusion_coef_below_ml
property mixed_layer_depth
property surface_is_allowed
_schema
__repr__()

Return repr(self).

class gnome.movers.RiseVelocityMover(**kwargs)

Bases: gnome.movers.CyMover

This mover class inherits from CyMover and contains CyRiseVelocityMover

The real work is done by CyRiseVelocityMover. CyMover sets everything up that is common to all movers.

Uses super to invoke base class __init__ method.

Optional parameters (kwargs) used to initialize CyRiseVelocityMover

Parameters:
  • water_density – Default is 1020 kg/m3

  • water_viscosity – Default is 1.e-6

Remaining kwargs are passed onto Mover’s __init__ using super. See Mover documentation for remaining valid kwargs.

_schema
__repr__()
get_move(sc, time_step, model_time_datetime)

Override base class functionality because mover has a different get_move signature

Parameters:
  • sc – an instance of the gnome.SpillContainer class

  • time_step – time step in seconds

  • model_time_datetime – current time of the model as a date time object

class gnome.movers.TamocRiseVelocityMover(*args, **kwargs)

Bases: RiseVelocityMover

The only thing this adds (so far)

are droplet_diameter and density array types

Uses super to invoke base class __init__ method.

Optional parameters (kwargs) used to initialize CyRiseVelocityMover

Parameters:
  • water_density – Default is 1020 kg/m3

  • water_viscosity – Default is 1.e-6

Remaining kwargs are passed onto Mover’s __init__ using super. See Mover documentation for remaining valid kwargs.

class gnome.movers.WindMover(wind=None, time_offset=0, uncertain_duration=3.0 * 3600, uncertain_time_delay=0, uncertain_speed_scale=2.0, uncertain_angle_scale=0.4, scale_value=1, default_num_method='RK2', filename=None, **kwargs)

Bases: gnome.movers.movers.PyMover

WindMover implemented in Python. Uses the .wind attribute to move particles. The .at() interface is expected on the .wind attribute

Initialize a WindMover :param wind: Environment object representing wind to be

used.

Parameters:
  • active_range (2-tuple of datetimes) – Range of datetimes for when the mover should be active

  • scale_value – Value to scale wind data

  • uncertain_duration – how often does a given uncertain element get reset

  • uncertain_time_delay – when does the uncertainly kick in.

  • uncertain_speed_scale – Scale for uncertainty of wind speed

  • uncertain_angle_scale – Scale for uncertainty of wind angle

  • time_offset – Time zone shift if data is in GMT

  • num_method – Numerical method for calculating movement delta. Choices:(‘Euler’, ‘RK2’, ‘RK4’) Default: RK2

property data_start
property data_stop
_schema
_ref_as = 'py_wind_movers'
_req_refs
classmethod from_netCDF(filename=None, time_offset=0, scale_value=1, uncertain_duration=3 * 3600, uncertain_time_delay=0, uncertain_speed_scale=2.0, uncertain_angle_scale=0.4, default_num_method='RK2', **kwargs)
prepare_for_model_run()

reset uncertainty

prepare_for_model_step(sc, time_step, model_time_datetime)

Call base class method using super Also updates windage for this timestep

Parameters:
  • sc – an instance of gnome.spill_container.SpillContainer class

  • time_step – time step in seconds

  • model_time_datetime – current time of model as a date time object

model_step_is_done(sc)

remove any off map les

get_bounds()

Return a bounding box surrounding the grid data. This function exists because it is part of the top level Mover API

update_uncertainty(num_les, elapsed_time)

update uncertainty

Parameters:
  • num_les – the number released so far

  • elapsed_time – time in seconds since model run started

update_uncertainty_values(elapsed_time)

update uncertainty values

Parameters:

elapsed_time – time in seconds since model run started

allocate_uncertainty(num_les)

add uncertainty

Parameters:

num_les – the number of les released so far

add_uncertainty(deltas, time_step)

add uncertainty

Parameters:

deltas – the movement for the current time step

get_move(sc, time_step, model_time_datetime, num_method=None)

Compute the move in (long,lat,z) space. It returns the delta move for each element of the spill as a numpy array of size (number_elements X 3) and dtype = gnome.basic_types.world_point_type

Base class returns an array of numpy.nan for delta to indicate the get_move is not implemented yet.

Each class derived from Mover object must implement it’s own get_move

Parameters:
  • sc – an instance of gnome.spill_container.SpillContainer class

  • time_step – time step in seconds

  • model_time_datetime – current model time as datetime object

All movers must implement get_move() since that’s what the model calls

class gnome.movers.CurrentMover(current=None, time_offset=0, scale_value=1, uncertain_duration=24 * 3600, uncertain_time_delay=0, uncertain_along=0.5, uncertain_cross=0.25, default_num_method='RK2', filename=None, **kwargs)

Bases: gnome.movers.movers.PyMover

CurrentMover implemented in Python. Uses the .current attribute to move particles. The .at() interface is expected on the .current attribute

Initialize a CurrentMover

Parameters:
  • current (Any Current or Current-like that implements the .at() function) – Environment object representing ocean currents to be used.

  • active_range (2-tuple of datetimes) – Range of datetimes for when the mover should be active

  • scale_value – Value to scale current data

  • uncertain_duration – how often does a given uncertain element get reset in seconds

  • uncertain_time_delay – when does the uncertainly kick in in seconds

  • uncertain_cross – Scale for uncertainty perpendicular to the flow

  • uncertain_along – Scale for uncertainty parallel to the flow

  • time_offset – Time zone shift: not functional

  • default_num_method – Numerical method for calculating movement delta. Choices:(‘Euler’, ‘RK2’, ‘RK4’) Default: RK2

property filename
property data_start
property data_stop
_schema
_ref_as = 'py_current_movers'
_req_refs
classmethod from_netCDF(filename=None, name=None, time_offset=0, scale_value=1, uncertain_duration=24 * 3600, uncertain_time_delay=0, uncertain_along=0.5, uncertain_cross=0.25, **kwargs)

Function for specifically creating a CurrentMover from a file

get_bounds()

Return a bounding box surrounding the grid data. This function exists because it is part of the top level Mover API

get_move(sc, time_step, model_time_datetime, num_method=None)

Compute the move in (long,lat,z) space. It returns the delta move for each element of the spill as a numpy array of size (number_elements X 3) and dtype = gnome.basic_types.world_point_type

Base class returns an array of numpy.nan for delta to indicate the get_move is not implemented yet.

Each class derived from Mover object must implement it’s own get_move

Parameters:
  • sc – an instance of gnome.spill_container.SpillContainer class

  • time_step – time step in seconds

  • model_time_datetime – current model time as datetime object

All movers must implement get_move() since that’s what the model calls

_update_uncertainty(num_les, elapsed_time)

update uncertainty

Parameters:
  • num_les – the number released so far

  • elapsed_time – time in seconds since model run started

_update_uncertainty_values(elapsed_time)

update uncertainty values

Parameters:

elapsed_time – time in seconds since model run started

_allocate_uncertainty(num_les)

add uncertainty

Parameters:

num_les – the number of les released so far

_add_uncertainty(deltas)

add uncertainty

Parameters:

deltas – the movement for the current time step

prepare_for_model_run()

reset uncertainty

prepare_for_model_step(sc, time_step, model_time_datetime)

add uncertainty

model_step_is_done(sc)

remove any off map les

gnome.movers.mover_schemas