pylag.data_reader module
Abstract base class for PyLag DataReaders.
- class pylag.data_reader.DataReader
Bases:
object
Abstract base class for PyLag data readers
PyLag DataReaders provide a common interface through which it is possible to access input data that is used to drive the particle tracking model. The desired input data is returned in a common format, irrespective of its origin. By subclassing PyLag DataReader, it becomes possible to extend the model to accept input data in many different formats. Examples of input data include fluid velocity vectors and eddy diffusivities. These may come from an analytical model, or be defined on a discrete numerical grid, as used by a particular hydrodynamic of ocean general circulation model; all of these can be supported by subclassing DataReader and implementing code that extracts and returns the required information.
For efficiency reasons, DataReader has been implemented in Cython and only part of its API is exposed in Python. In order to make it possible to use DataReader objects in Python, a set of Python wrappers have been added to the DataReader base class. These are documented here.
- find_host_using_global_search_wrapper(self, ParticleSmartPtr particle)
Python wrapper for finding and setting the host element using a global search
- Parameters
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
- Returns
Flag signifying whether the host element was found successfully.
- Return type
- find_host_using_local_search_wrapper(self, ParticleSmartPtr particle)
Python wrapper for finding and setting the host element using a local search
- Parameters
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
- Returns
Flag signifying whether the host element was found successfully.
- Return type
- find_host_wrapper(self, ParticleSmartPtr particle_old, ParticleSmartPtr particle_new)
Python wrapper for finding and setting the particle’s host element
- Parameters
particle_old (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its last known position.
particle_new (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its new position.
- Returns
Flag signifying whether the new host element was found successfully.
- Return type
- get_boundary_intersection_wrapper(self, ParticleSmartPtr particle_old, ParticleSmartPtr particle_new)
Python wrapper for finding the point no the boundary the particle intersected
This can be used when imposing horizontal boundary conditions.
- Parameters
particle_old (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its last known position.
particle_new (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its new position.
- Returns
start_point (NumPy array) – Start coordinates of the side the particle crossed.
end_point (NumPy array) – End coordinates of the side the particle crossed.
intersection (NumPy array) – Coordinates of the intersection point.
- get_environmental_variable_wrapper(self, str var_name, DTYPE_FLOAT_t time, ParticleSmartPtr particle)
Python wrapper for getting environmental variables
- Parameters
var_name (str) – The variable name
time (float) – The time
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
- Returns
The value of the environmental variable at the particle’s current position
- Return type
- get_grid_names(self)
Return a list of grid names on which data are defined
- Returns
A list of grid names
- Return type
- get_horizontal_eddy_diffusivity_derivative_wrapper(self, DTYPE_FLOAT_t time, ParticleSmartPtr particle, Ah_prime)
Python wrapper for getting the horizontal eddy diffusivity at the particle’s position
- Parameters
time (float) – The current time.
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
Ah_prime (1D NumPy array of length two.) – The derivative of the horizontal eddy diffusivity
- Return type
None
- get_horizontal_eddy_diffusivity_wrapper(self, DTYPE_FLOAT_t time, ParticleSmartPtr particle)
Python wrapper for getting the horizontal eddy diffusivity at the particle’s position
- Parameters
time (float) – The current time.
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
vel (1D NumPy array of length two.) – The velocity vector.
- Returns
The horizontal eddy diffusivity
- Return type
- get_horizontal_velocity_wrapper(self, DTYPE_FLOAT_t time, ParticleSmartPtr particle, vel)
Python wrapper for getting the horizontal velocity at the particle’s position
This function will return a two component vector giving the fluid velocity at the given time and the particle’s current location. The velocity is passed back through the supplied argument vel.
- Parameters
time (float) – The current time.
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
vel (1D NumPy array of length two.) – The velocity vector.
- Return type
None
- get_surface_stokes_drift_velocity_wrapper(self, DTYPE_FLOAT_t time, ParticleSmartPtr particle)
Return surface Stoke’s drift velocity
This function will return a two component vector giving the surface Stoke’s drift velocity at the given time and the particle’s location.
- Parameters
time (float) – The current time.
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
- Returns
stokes_drift – The surface Stoke’s drift velocity.
- Return type
1D NumPy array of length two.
- get_ten_meter_wind_velocity_wrapper(self, DTYPE_FLOAT_t time, ParticleSmartPtr particle)
Return the 10 m wind velocity
This function will return a two component vector giving the 10 m wind velocity at the given time and the particle’s current location.
- Parameters
time (float) – The current time.
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
- Returns
wind_velocity – The horizontal wind velocity.
- Return type
1D NumPy array of length two.
- get_velocity_wrapper(self, DTYPE_FLOAT_t time, ParticleSmartPtr particle, vel)
Python wrapper for getting the velocity at the particle’s position
This function will return a three component vector giving the fluid velocity at the given time and the particle’s current location. The velocity is passed back through the supplied argument vel.
- Parameters
time (float) – The current time.
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
vel (1D NumPy array of length three.) – The velocity vector.
- Return type
None
- get_vertical_eddy_diffusivity_derivative_wrapper(self, DTYPE_FLOAT_t time, ParticleSmartPtr particle)
Python wrapper for getting the vertical eddy diffusivity derivative at the particle’s position
- Parameters
time (float) – The current time.
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
- Returns
The vertical eddy diffusivity
- Return type
- get_vertical_eddy_diffusivity_wrapper(self, DTYPE_FLOAT_t time, ParticleSmartPtr particle)
Python wrapper for getting the vertical eddy diffusivity at the particle’s position
- Parameters
time (float) – The current time.
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
- Returns
The vertical eddy diffusivity
- Return type
- get_xmin(self) DTYPE_FLOAT_t
Python wrapper for getting the minimum x value across the grid
Primarily introduced to increase the number of significant figures used when computing changes in particle positions on small domains.
- Returns
The minimum x value
- Return type
- get_ymin(self) DTYPE_FLOAT_t
Python wrapper for getting the minimum y value across the grid
Primarily introduced to increase the number of significant figures used when computing changes in particle positions on small domains.
- Returns
The minimum y value
- Return type
- get_zmax_wrapper(self, DTYPE_FLOAT_t time, ParticleSmartPtr particle)
Python wrapper for getting the maximum z value at the particle’s position
Typically, the maximum z-value will correspond to the free surface height at the given time and the particle’s current position.
- Parameters
time (float) – The current time.
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
- Returns
The maximum z value
- Return type
- get_zmin_wrapper(self, DTYPE_FLOAT_t time, ParticleSmartPtr particle)
Python wrapper for getting the minimum z value at the particle’s position
Typically, the minimum z-value will correspond to the bathymetry at the given time and the particle’s current position.
- Parameters
time (float) – The current time.
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
- Returns
The minimum z value
- Return type
- is_wet_wrapper(self, DTYPE_FLOAT_t time, ParticleSmartPtr particle)
Python wrapper for getting the wet/dry status of the particle
- Parameters
time (float) – The current time.
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
- Returns
Flag identifying whether the current cell is wet or dry
- Return type
- read_data(self, DTYPE_FLOAT_t time)
Read in time dependent variable data from file
time is used to test if new data should be read in from file.
- Parameters
time (float) – The current time.
- set_default_location_wrapper(self, ParticleSmartPtr particle)
Python wrapper for setting the default location of a particle
Can be used to set a particle’s position to a default location within an element (for example, should it not be possible to strictly apply the horizontal boundary condition).
- Parameters
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
- Return type
None
- set_local_coordinates_wrapper(self, ParticleSmartPtr particle)
Python wrapper for setting particle local coordinates
Used to set particle local horizontal coordinates (e.g. within its host element).
- Parameters
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
- Return type
None
- set_vertical_grid_vars_wrapper(self, DTYPE_FLOAT_t time, ParticleSmartPtr particle)
Python wrapper for setting particle vertical grid variables
Vertical grid variables include local vertical coordinates and indices identifying the current vertical level within which the particle resides.
- Parameters
particle (pylag.particle_cpp_wrapper.ParticleSmartPtr) – The particle at its current position.
- Returns
Flag signifying whether or not the operation was a success.
- Return type
- setup_data_access(self, start_datetime, end_datetime)
Setup access to time dependant variables
Setup access to input data using the supplied datatime arguments.
- Parameters
start_datetime (datetime.datetime) – The simulation state time/date
end_datetime (datetime.datetime) – The simulation end time/date