TfvDomain

class tfv.xarray.TfvDomain(xarray_obj)

Xarray accessor object for working with TUFLOW FV domain (spatial) netcdf files.

Extends the functionality of native xarray to add methods that assist with typical analyses.

To use this, call .tfv on an xarray dataset based on a TUFLOW FV domain file.

get_cell_index(x: float | ndarray, y: float | ndarray) ndarray

Returns the cell index(s) containing coordinate(s) x and y.

Multiple cell indexes will be returned using this command if x/y are 1D.

Parameters:
  • x ([float, np.ndarray]) – x-coordinate

  • y ([float, np.ndarray]) – y-coordinate

Returns:

index of corresponding cell containing coordinates (x,y)

Return type:

cell_index (int)

get_cell_inpolygon(polygon: ndarray) ndarray

Returns cell indexes intersected by a polygon.

The polygon should be provided as either a 2D Numpy ndarray (i.e., Nx2 array), or if the Shapely package is available, a WKT String polygon or shapely Polygon object can be provided.

Parameters:

polygon ([np.ndarray, str, shapely.geometry.Polygon]) – A single polygon feature, provided as a 2D numpy array (Nx2). If shapely is available, polygon may also be provided as a wkt string, or a shapely Polygon feature.

Returns:

indexes of cells falling inside the provided polygon.

Return type:

cell_indexes (np.ndarray)

get_contours(levels: list | ndarray, variable: str, time: str | Timestamp | int = 0, datum: str = 'sigma', limits: tuple = (0, 1), agg: str = 'mean')

Get contour polygon coordinates (Work in progress)

This function is currently experimental and may have issue with certain shapes, particularly when a contour is landbound

This function returns the equivalent polygon coordinates that you would see using fv.plot(…shading=’contour’) or SheetContour.

Parameters:
  • levels (Union[list, np.ndarray]) – List of contour levels to extract

  • variable (str) – Variable to extract contours from

  • time (Union[str, pd.Timestamp, int], optional) – Time to extract. Defaults to 0.

  • datum (['sigma', 'height', 'depth', 'elevation'], optional) – depth-averaging datum. Defaults to ‘sigma’. Choose from height, depth, elevation or sigma.

  • limits (tuple, optional) – depth-averaging limits. Defaults to (0,1).

  • agg (['min', 'mean', 'max'], optional) – depth-averaging aggregation function. Defaults to ‘mean’. Choose from min, mean, or max.

Returns:

A GeoDataFrame containing one row per contour polygon with columns level and geometry.

Return type:

gdf (gpd.GeoDataFrame)

get_curtain(polyline: ndarray, variables: str | list, time: str | int | Timestamp | slice = None)

Extract a 2D curtain timeseries, returned as an Xarray dataset.

Note

This is a work-in-progress method, and is not directly used in any other methods currently. If you wish to view curtain plots, please use the plot_curtain or plot_curtain_interactive methods

Parameters:
  • polyline (np.ndarray) – a Nx2 array containing the X and Y coordinates to extract the curtain over.

  • variables ([str, list]) – single or list of variables to extract

  • time ([str, pd.Timestamp, int, slice], optional) – time indexer for extraction. Defaults to the entire dataset.

Returns:

Xarray dataset object

Return type:

xr.Dataset

get_longsection(polyline: ndarray, variables: str | list, time: str | int | Timestamp | slice = None, datum: Literal['sigma', 'height', 'depth', 'elevation'] = 'sigma', limits: tuple = (0, 1), agg: Literal['min', 'mean', 'max'] = 'mean')

Get a 2D Longsection of model data

Parameters:
  • polyline (np.ndarray) – a Nx2 array containing the X and Y coordinates to extract the curtain over.

  • variables ([str, list]) – single or list of variables to extract

  • time ([str, pd.Timestamp, int, slice], optional) – time indexer for extraction. Defaults to the entire dataset.

  • datum (['sigma', 'height', 'depth', 'elevation'], optional) – depth-averaging datum. Defaults to ‘sigma’. Choose from height, depth, elevation or sigma.

  • limits (tuple, optional) – depth-averaging limits. Defaults to (0,1).

  • agg (['min', 'mean', 'max'], optional) – depth-averaging aggregation function. Defaults to ‘mean’. Choose from min, mean, or max.

get_profile(point: tuple | dict, time: slice = None, variables: list[str] = None)

Extract profile timeseries at a single location

Simple method to extract a profile timeseries at a single location. This returns a native Xarray dataset, and does not have the methods available using the TfvTimeseries Xarray accessor.

NOTE - This method does not currently support adding “meta” variables like “V” in lieu of hypot(V_x, V_y).

Parameters:
  • point ([tuple, dict]) – Single location to extract profile as a tuple (X,Y) or dictionary dict(loc_01=(X,Y)).

  • time ([str, pd.Timestamp, int, slice], optional) – time indexer for extraction. Defaults to the entire dataset.

  • variables (list[str], optional) – List of variables. Defaults to all variables.

Returns:

a native Xarray dataset containing the profile timeseries.

Return type:

xr.Dataset

get_sheet(variables: str | list, time: str | int | Timestamp | slice = None, datum: Literal['sigma', 'height', 'depth', 'elevation'] = 'sigma', limits: tuple = (0, 1), agg: Literal['min', 'mean', 'max'] = 'mean', mask_dry: bool = True, dask=False)

Extract a 2D sheet timeseries

General purpose method for extracting 2D sheet data from a TfvDomain object. This will handle dimension reduction of 3D variables (by default will average over the depth column, i.e., depth-averaged), as well as handling single or multiple timesteps or slices.

Parameters:
  • variables ([str, list]) – variables to extract. (“V” or “VDir” may be requested if “V_x” and “V_y” are present)

  • time ([str, pd.Timestamp, int, slice], optional) – time indexer for extraction. Defaults to the entire dataset.

  • datum (['sigma', 'height', 'depth', 'elevation'], optional) – depth-averaging datum. Defaults to ‘sigma’. Choose from height, depth, elevation or sigma.

  • limits (tuple, optional) – depth-averaging limits. Defaults to (0,1).

  • agg (['min', 'mean', 'max'], optional) – depth-averaging aggregation function. Defaults to ‘mean’. Choose from min, mean, or max.

  • mask_dry (bool, optional) – mask cells marked dry by stat. Defaults to True.

  • dask (bool, optional) – use to extract the sheet. (only agg=mean is supported.)

Returns:

new TfvDomain object with the requested timeseries variables

Return type:

TfvDomain

get_sheet_grid(variables: str | list = None, time: str | int | Timestamp | slice = None, bbox=None, dx=None, dy=None, nx=100, ny=100, method='nearest', crs=None, datum: Literal['sigma', 'height', 'depth', 'elevation'] = 'sigma', limits: tuple = (0, 1), agg: Literal['min', 'mean', 'max'] = 'mean', mask_dry=True)

Extract a 2D sheet grid timeseries

General purpose method for extracting 2D grid data from a TfvDomain object. This will handle dimension reduction of 3D variables (by default will average over the depth column, i.e., depth-averaged), as well as handling single or multiple timesteps or slices.

This method accepts either dx/dy (grid step in meters or degrees), or nx/ny (number of grid cells in x/y). Dx/dy are given higher priority.

There are three interpolation methods available: - (DEFAULT) ‘nearest’: takes the cell centered values onto the grid. Fastest method for extraction. - ‘linear’: Linear interpolation using Scipy’s LinearNDInterpolator - ‘cubic’: Cubic interpolation using Scipy’s CloughTocher2DInterpolator

If an optional EPSG CRS is supplied (crs), the output dataset will include CRS information. Requires pyproj to be available.

Parameters:
  • variables ([str, list], optional) – list of variables to extract. Defaults to all real variables.

  • time ([str, int, pd.Timestamp, slice], optional) – time indexer for extraction. Defaults to the entire dataset.

  • bbox ([tuple, list], optional) – Bounding box of the grid (xmin, ymin, xmax, ymax). Defaults to the entire model mesh.

  • dx (float, optional) – x grid step in mesh coordinates. If not supplied, variable nx will be used.

  • dy (float, optional) – y grid step in mesh coordinates. If not supplied, variable ny will be used.

  • nx (int, optional) – number of grid steps in x. Will be ignored if dx is supplied. Defaults to 100.

  • ny (int, optional) – number of grid steps in y. Will be ignored if dy is supplied. Defaults to 100.

  • method (str, optional) – Grid interpolation method. Defaults to ‘nearest’.

  • crs (int, optional) – epsg code of crs for attributes. must have pyproj library available. Defaults to None.

  • datum (['sigma', 'height', 'depth', 'elevation'], optional) – depth-averaging datum. Defaults to ‘sigma’. Choose from height, depth, elevation or sigma.

  • limits (tuple, optional) – depth-averaging limits. Defaults to (0,1).

  • agg (['min', 'mean', 'max'], optional) – depth-averaging aggregation function. Defaults to ‘mean’. Choose from min, mean, or max.

  • mask_dry (bool, optional) – flag to mask (hide) dry cells. Defaults to True.

Returns:

Xarray grid dataset

Return type:

xr.Dataset

get_statistics(stats: list[str], variables: list | str, time: slice = None, datum: str = 'sigma', limits: tuple = (0, 1), agg: str = 'mean', fillna=None, skipna=True)

Extract statistics on 2D variables.

General purpose method for extracting statistics using typical statistic functions (e.g., ‘mean’, ‘max’…).

Percentiles can be obtained using the string format ‘pX’ (e.g., for 10th and 90th: stats = [‘p10’, ‘p90’]).

This function will first call get_sheet to obtain the data for calculating statistics on. All arguments for get_sheet can be passed through to this method.

Parameters:
  • stats (list[str]) – list of statistics, e.g., [‘min’, ‘mean’, ‘p50’, ‘p95’]

  • variables ([list, str]) – variables to do statistics on

  • time ([list, slice], optional) – time indexer (e.g., slice(50) for the first 50 timesteps, or slice(‘2012-01-01’, ‘2012-02-01’))

  • datum (['sigma', 'height', 'depth', 'elevation'], optional) – depth-averaging datum. Defaults to ‘sigma’. Choose from height, depth, elevation or sigma.

  • limits (tuple, optional) – depth-averaging limits. Defaults to (0,1).

  • agg (['min', 'mean', 'max'], optional) – depth-averaging aggregation function. Defaults to ‘mean’. Choose from min, mean, or max.

  • fillna (float, optional) – Fill nan values (e.g., dried out cells) with this value before doing statistics. Defaults to None.

  • skipna (bool, optional) – Skip nan values. Defaults to True.

Returns:

new TfvDomain object with the requested timeseries variables

Return type:

TfvDomain

get_timeseries(variables: str | list, points: tuple | dict, time: str | int | Timestamp | slice = None, datum: Literal['sigma', 'height', 'depth', 'elevation'] = 'sigma', limits: tuple = (0, 1), agg: Literal['min', 'mean', 'max'] = 'mean')

Get timeseries at point location(s) in the model

Parameters:
  • variables ([str, list]) – variables to extract.

  • points ([tuple, dict]) – locations to extract (e.g., a tuple (x,y) or a dict {‘name’: (x,y), …})

  • time ([str, pd.Timestamp, int, slice], optional) – time indexer for extraction. Defaults to the entire dataset.

  • datum (['sigma', 'height', 'depth', 'elevation'], optional) – depth-averaging datum. Defaults to ‘sigma’. Choose from height, depth, elevation or sigma.

  • limits (tuple, optional) – depth-averaging limits. Defaults to (0,1).

  • agg (['min', 'mean', 'max'], optional) – depth-averaging aggregation function. Defaults to ‘mean’. Choose from min, mean, or max.

Returns:

A timeseries dataset in xarray format

Return type:

xr.Dataset

plot(variable: str = None, time: str | Timestamp | int = 0, colorbar=True, shading='patch', ax: matplotlib.pyplot.Axes = None, boundary=False, boundary_kwargs={}, colorbar_kwargs={}, mask_dry: bool = True, **kwargs)

General 2D sheet plot method

By default, this function will plot the first variable and timestep.

This function is a general wrapper around the tfv.visual “Sheet” methods. Kwargs will be supplied through to the underlying matplotlib function.

Depth-averaging logic can be handled by passing through the optional keywords datum, limits, and agg as required.

Several magic “variables” are available via this method including:

  • Plot bed elevation using variable 'Zb'.

  • Plot current speed or direction using 'V' or 'VDir'.

Parameters:
  • variable (str, optional) – Variable to plot. Defaults to the alphabetically first variable.

  • time (str, pd.Timestamp or int, optional) – Timestep to plot. Defaults to 0.

  • colorbar (bool, optional) – Show colorbar. This is often best turned off when making subplots.

  • shading ({'patch', 'interp', 'contour'}, optional) – Figure shading type. 'patch' uses tfv.visual.SheetPatch and Matplotlib’s PolyCollection. 'interp' uses tfv.visual.SheetPatch and Matplotlib’s TriMesh. 'contour' uses tfv.visual.SheetContour and Matplotlib’s TriContourSet. Defaults to 'patch'.

  • ax (matplotlib.pyplot.Axes, optional) – Matplotlib axis to draw on. If None, a new figure and axis are created.

  • boundary (bool, optional) – Show mesh boundary. Defaults to False.

  • boundary_kwargs (dict, optional) – Arguments passed through to the boundary line.

  • colorbar_kwargs (dict, optional) – Arguments passed through to the colorbar when colorbar=True.

  • mask_dry (bool, optional) – Mask cells marked dry by stat. Defaults to True.

  • **kwargs – Keyword arguments passed to the underlying Matplotlib method, unless they are tfv-specific options such as datum, limits, or agg. Common examples include cmap, clim, levels, and norm.

Returns:

Sheet visualisation object, depending on the shading option.

Return type:

SheetPatch, SheetContour or SheetVector

plot_curtain(polyline: ndarray, variable: str = None, time: str | Timestamp | int = 0, ax: matplotlib.pyplot.Axes = None, colorbar=True, crs=None, colorbar_kwargs={}, **kwargs)

General 2D curtain plot method

By default, this function will plot the first variable and timestep. A polyline is always required.

This function is a general wrapper around the tfv.visual.CurtainPatch method. kwargs will be supplied through to the underlying matplotlib function.

A polyline (Nx2 numpy.ndarray) needs to be supplied containing the X and Y coordinates in columns 0 and 1 respectively.

Parameters:
  • polyline (np.ndarray) – a Nx2 array containing the X and Y coordinates to extract the curtain over.

  • variable (str, optional) – variable to plot. Defaults to ‘V’ if available, otherwise the first variable alphabetically.

  • time ([str, pd.Timestamp, int], optional) – Timestep to plot, provided as str (e.g., ‘2010-01-01’), int, Timestamp object, etc. Defaults to 0.

  • ax (plt.Axes, optional) – Matplotlib axis to draw on. Default will create a new figure and axis.

  • colorbar (bool, optional) – Show colorbar (best to turn off if making subplots). Defaults to True.

  • crs (int, optional) – EPSG Code for accurate coordinate transformation for spherical models. Requires pyproj to be installed

  • colorbar_kwargs (dict, optional) – Arguments passed through to the colorbar if colorbar=True. Defaults to {}.

Returns:

tfv.visual.CurtainPatch object

Return type:

CurtainPatch

plot_curtain_interactive(polyline: ndarray, variable: str, ax: matplotlib.pyplot.Axes = None, vectors: bool = False, vector_kwargs={}, widget=None, **kwargs)

2D interactive matplotlib method for fast curtain viewing.

This function wraps the .plot_curtain and .plot_curtain_vector methods, with kwargs passed directly through to these methods. (see TfvDomain.plot_curtain e.g., ds.tfv.plot and TfvDomain.plot_curtain_vector e.g., ds.tfv.plot_curtain_vector).

A polyline (Nx2 numpy.ndarray) needs to be supplied containing the X and Y coordinates in columns 0 and 1 respectively.

This function requires matplotlib to be using an ipympl backend, typically in a Jupyter lab/notebook environment. Please first run %matplotlib widget before using this function.

Parameters:
  • polyline (np.ndarray) – a Nx2 array containing the X and Y coordinates to extract the curtain over.

  • variable (str) – Variable to plot

  • ax (plt.Axes, optional) – Matplotlib axis to draw on. Default will create a new figure and axis.

  • vectors ([bool, list, tuple], optional) – Flag to draw vectors. If True, the vectors will represent projected velocity (V_x, V_y projected to the curtain plane). Vertical velocity, W, will be included automatically if available in the model.

  • vector_kwargs (dict, optional) – a dictionary of kwargs that is passed directly through to the TfvDomain.plot_curtain_vector object.

  • widget (tuple, optional) – A pre-initalised ipympl widget box, generated using TfvDomain.prep_interactive_slider. This can be used to control multiple subplots using the single widget controller. Defaults to None.

  • kwargs (dict, optional) – Keyword arguments passed directly to TfvDomain.plot_curtain

plot_curtain_vector(polyline: ndarray, time: str | Timestamp | int = 0, variables: list | tuple = None, ax: matplotlib.pyplot.Axes = None, tangential=True, **kwargs)

General 2D curtain vector plot method

This method is designed to draw velocity vectors over a curtain. If W (vertical velocity) is available in the TUFLOW FV dataset, these vectors will be scaled to show vertical motion as well. To avoid vertical velocity scaling of the vectors, specify tangential=False as well.

Note

This method accepts a variables kwarg so that custom variables can be supplied, which will be scaled with vertical velocity W if present. To avoid this behaviour, also specify tangential=False.

This function is a general wrapper around the tfv.visual.CurtainVector method. kwargs will be supplied through to the underlying matplotlib function.

A polyline (Nx2 numpy.ndarray) needs to be supplied containing the X and Y coordinates in columns 0 and 1 respectively.

Parameters:
  • polyline (np.ndarray) – a Nx2 array containing the X and Y coordinates to extract the curtain over.

  • time ([str, pd.Timestamp, int], optional) – Timestep to plot, provided as str (e.g., ‘2010-01-01’), int, Timestamp object, etc. Defaults to 0.

  • variables ([list, tuple], optional) – Variables to create vector (X-comp, Y-comp). Defaults to None.

  • ax (plt.Axes, optional) – Matplotlib axis to draw on. Default will create a new figure and axis.

  • tangential (bool, optional) – Flag to scale vectors vertically using W, if present. Defaults to True.

Returns:

tfv.visual.CurtainVector object.

Return type:

CurtainVector

plot_hovmoller(point: tuple, variable: str, time_limits: slice = None, ax: matplotlib.pyplot.Axes = None, shading='patch', **kwargs)

Plots a Hovmoller Figure

Parameters:
  • point (tuple) – Tuple containing X,Y coordinates

  • variable (str) – Variable name to plot

  • time_limits (slice, optional) – Time limits. Supply a slice, with either integer or iso-date entries. Example format slice(‘2010-02-01 20:00’, ‘2010-02-04 12:00’)

  • ax (plt.Axes, optional) – matplotlib axis to draw profile. Defaults to None.

  • shading (_type_, optional) – Shading type. One of {‘patch’, ‘interp’, ‘contour’}. Defaults to ‘patch’

  • **kwargs (dict, optional) – Kwarg entries are passed to the matplotlib plotting function.

plot_interactive(variable: str, ax: matplotlib.pyplot.Axes = None, vectors: bool | list | tuple = False, vector_kwargs={}, widget=None, **kwargs)

2D interactive matplotlib plotting method for fast result viewing.

This function wraps the .plot and .plot_vector methods, with kwargs passed directly through to these methods. (see TfvDomain.plot e.g., ds.tfv.plot and TfvDomain.plot_vector e.g., ds.tfv.plot_vector).

This function requires matplotlib to be using an ipympl backend, typically in a Jupyter lab/notebook environment. Please first run %matplotlib widget before using this function.

Parameters:
  • variable (str) – Variable to plot

  • ax (plt.Axes, optional) – Matplotlib axis to draw on. Default will create a new figure and axis.

  • vectors ([bool, list, tuple], optional) – Flag to draw vectors. If a boolean (True) is supplied, the vectors will be velocity (V_x, V_y). A list/tuple of variable names can be supplied as required (E.g., W10_x, W10_y). Defaults to False.

  • vector_kwargs (dict, optional) – a dictionary of kwargs that is passed directly through to the TfvDomain.plot_vector object.

  • widget (tuple, optional) – A pre-initalised ipympl widget box, generated using TfvDomain.prep_interactive_slider. This can be used to control multiple subplots using the single widget controller. Defaults to None.

  • kwargs (dict, optional) – Keyword arguments passed directly to TfvDomain.plot

plot_mesh(ax: matplotlib.pyplot.Axes = None, mesh=True, mesh_kwargs=None, boundary=True, boundary_kwargs=None, return_artists=False, **kwargs)

Mesh plot method

Creates a visualization of the mesh, optionally showing mesh elements and/or boundary.

Parameters:
  • ax (matplotlib.pyplot.Axes, optional) – Matplotlib axis to draw on. If None, a new figure and axis are created.

  • mesh (bool, optional) – Show mesh elements. Defaults to True.

  • mesh_kwargs (dict, optional) – Arguments passed through to the mesh element PolyCollection.

  • boundary (bool, optional) – Show mesh boundary. Defaults to True.

  • boundary_kwargs (dict, optional) – Arguments passed through to the boundary line.

  • return_artists (bool, optional) – Whether to return created artist objects. Defaults to False.

  • **kwargs – Additional arguments passed to _prep_axis.

Returns:

  • fig (matplotlib.figure.Figure) – Figure object.

  • ax (matplotlib.pyplot.Axes) – Axes object.

  • artists (dict, optional) – Returned when return_artists=True. Contains 'mesh' and 'boundary' entries.

plot_profile(point: tuple, variable: str = None, time: str | Timestamp | int = 0, ax: matplotlib.pyplot.Axes = None, **kwargs)

Plot a profile curve

Parameters:
  • point (tuple) – Profile location as X and Y.

  • variable (str, optional) – Variable to plot. Defaults to the first variable.

  • time (Union[str, pd.Timestamp, int], optional) – Time index to plot. Defaults to 0.

  • ax (plt.Axes, optional) – matplotlib axis to draw profile. Defaults to None.

plot_profile_interactive(point: tuple, variable: str, ax: matplotlib.pyplot.Axes = None, widget=None, **kwargs)

Plot an interactive vertical profile through time.

Parameters:
plot_vector(variables: list | tuple = None, time: str | Timestamp | int = 0, plot_type: Literal['quiver'] = 'quiver', ax: matplotlib.pyplot.Axes = None, convention: Literal['cartesian', 'polar'] = 'cartesian', convention_base: Literal['north', 'east'] = 'east', convention_heading: Literal['CW', 'CCW'] = 'CCW', **kwargs)

General 2D vector plot method

Generic method to call tfv.visual’s SheetVector. This can be used to overlay vector plots on other figures. By default, this method will plot vectors using V_x and V_y to give velocity vectors, however a list/tuple of an x/y component can be provided.

kwargs passed to this function are supplied to the underlying matplotlib function (e.g., Quiver or Streamplot). The default vector scaling for velocity is usually ok; however in some cases you may need to scale the vectors (e.g., scale=100).

Vectors can also be set to a uniform length using normalised=True.

Depth-averaging logic can be handled by passing through the optional keywords datum, limits, agg as required.

Parameters:
  • variables ([list, tuple], optional) – Variables to create vector (X-comp, Y-comp). Defaults to None.

  • time ([str, pd.Timestamp, int], optional) – Timestep to plot, provided as str (e.g., ‘2010-01-01’), int, Timestamp object, etc. Defaults to 0.

  • plot_type (['quiver'], optional) – Plot type {‘quiver’}. Defaults to “quiver”.

  • ax (plt.Axes, optional) – Matplotlib axis to draw on. Default will create a new figure and axis.

  • convention (["cartesian", "polar"], optional) – Convention basis upon which to calculate vectors. Defaults to ‘cartesian’.

  • convention_base (["north", "east"]) – Base from which angles are measured from. Defaults to ‘east’

  • convention_heading (["CW", "CCW"]) – Direction which the angles are measured along. Defaults to ‘CCW’

  • kwargs (dict, optional) – Keyword arguments. These are passed to the underlying matplotlib method if not a tfv specific method (e.g., depth averaging kwargs). Common examples include: scale, normalised, datum, limits, agg.

Returns:

tfv.visual.SheetVector object.

Return type:

SheetVector

prep_interactive_slider()

Prepare an interactive ipympl widget box for controlling TfvDomain.plot_interactive

This method pre-initialises a widget box that can be used to control the interactive jupyter plotting method, and is called by default from the plot_interactive method.

To control multiple interactive plots using the one widget box, first call this method, e.g. widget=ds.tfv.prep_interactive_slider(), and then pass this widget through to the plot_interactive method.

tfv.xarray.convert_grid_to_tfv(ds, x='longitude', y='latitude', time='time', z='depth', flipz=True, spherical=True, use_tfv_naming=True)

Convert / cast an ordinary Xarray Model Dataset as a TfvDomain object

Tool to cast an typical model xarray dataset, with at minimum time, x and y, coordinates, to a TfvDomain file.

This function is dask enabled, and it is advisable to use this method with time chunked by 1 where possible. (E.g., chunks=dict(time=1))

Parameters:
  • ds (xr.Dataset) – Xarray model dataset

  • x (str, optional) – Name of the x coordinate. Defaults to ‘longitude’.

  • y (str, optional) – Name of the y coordinate. Defaults to ‘latitude’.

  • time (str, optional) – Name of the time coordinate. Defaults to ‘time’.

  • z (str, optional) – Name of the z coordinate, if available. Defaults to ‘depth’.

  • flipz (bool, optional) – Flag to flip the z-coordinate (e.g., depth to elevation). Defaults to True.

  • spherical (bool, optional) – Flag for whether the x/y coords are in degrees. Defaults to True.

  • use_tfv_naming (bool, optional) – Flag to rename common variables to standard TUFLOW FV names. Defaults to True.