gnome.movers.movers
Classes
Base class from which all Python movers/weatherers can inherit |
|
Base class from which all Python movers can inherit |
|
Base class for pure Python movers |
|
Base class for all Cython/C based movers |
Module Contents
- class gnome.movers.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
- on = True
- make_default_refs = True
- property active
- property active_range
- 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 the following hold and ‘on’ is True:
active start <= (model_time + time_step/2) so object is on for more than half the time step
(model_time + time_step/2) <= active_stop so the object is on for at least half the time 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
- model_step_is_done(sc=None)
This method gets called by the model after everything else is done in a time step. Put any code needed 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)
- property data_start
- property data_stop
- class gnome.movers.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 can inherit
It defines the base functionality for a mover.
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 its 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.movers.PyMover(default_num_method='RK2', **kwargs)
Bases:
Mover
Base class for pure Python movers
Uses
super(PyMover, self).__init__(**kwargs)
to call Mover class __init__ methodWe assume 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
- num_methods
- default_num_method = 'RK2'
- 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.movers.CyMover(**kwargs)
Bases:
Mover
Base class for all Cython/C based movers
Base class for python wrappers around cython movers. Uses
super(CyMover, self).__init__(**kwargs)
to call Mover class __init__ methodAll 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 assume 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
- model_time = 0
- positions
- delta
- status_codes
- spill_type = 0
- 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.