FvExtractor¶
- class tfv.extractor.FvExtractor(file: Union[Path, str, xarray.Dataset], lazy_load: bool = True, is_spherical: bool = True, warmup: Union[str, Timedelta] = '0D')¶
Class that extracts data from a TUFLOW FV netCDF4 result file.
- Parameters
file (string) – Model result file path.
is_spherical (bool) – True if model geometry defined in spherical coordinate reference system.
- nc2¶
Number of 2D mesh cells
- Type
int
- nv2¶
Number of 2D mesh vertices
- Type
int
- is_tri¶
Logical index of triangular elements
- Type
1D np.ndarray
- is_quad¶
Logical index of quadrilateral elements
- Type
1D np.ndarray
- edge_node¶
Tuple defining start node, end node and cell for each mesh half edge
- Type
tuple
- weights¶
A (n, 4) array defining weighting of each cell gives to each mesh vertex
- Type
2D np.ndarray
- tri_cell_node¶
A (n, 3) array defining each mesh cell/element by three node indices
- Type
2D np.ndarray
- tri_cell_index¶
A (n,) array mapping triangular mesh elements to base mesh elements
- Type
1D np.ndarray
- nc¶
Dataset object
- Type
netCDF4.Dataset
- nz¶
A (nc2,) array defining number of vertical cells in each 2D model mesh cell
- Type
np.ndarray
- idx2¶
A (nc3,) array defining the 2D model mesh cell index for each 3D cell
- Type
np.ndarray
- idx3¶
A (nc2,) array defining the surface 3D model mesh cell index for each 2D model mesh cell
- Type
np.ndarray
- idx4¶
A (nc3+nc2,) array defining the 2D model mesh cell index for each 3D vertical layer face
- Type
np.ndarray
- wli¶
A (nc2,) array defining the surface vertical layer face index for each 2D model mesh cell
- Type
np.ndarray
- bli¶
A (nc2,) array defining the bed vertical layer face index for each 2D model mesh cell
- Type
np.ndarray
- get_curtain_cell(**kwargs)¶
Query to extract data in a 2D slice format (‘curtain’) at the cell centroids for a given time step. It does this along the polyline specified.
- Parameters
variable (string) – Name of time varying data set to be extracted.
ii (integer) – Time index at which to extract the data.
polyline (2D np.ndarray) – Polyline as [x, y] used to slice 3D data.
x_data (tuple) – Model edge intersection(x) data returned by self.get_intersections.
index (tuple) – Curtain index data returned by self.get_curtain_cell_index.
- Returns
data – A 2D slice ‘curtain’ of the relevant variable at time step ii.
- Return type
np.ndarray
- get_curtain_cell_geo(ii: int, polyline: ndarray, x_data: Optional[tuple] = None, index: Optional[tuple] = None, return_unit_vector=False)¶
Query to extract geometry data for a 2D vertical slice (‘curtain’) along a given polyline.
- Parameters
ii (integer) – Time index at which to extract the data.
polyline (2D np.ndarray) – Polyline as [x, y] used to slice 3D data.
x_data (tuple) – Model edge intersection(x) data returned by self.get_intersections.
index (tuple) – Curtain index data returned by self.get_curtain_cell_index.
- Returns
geo – A tuple containing the geometry of the 2D vertical slice as (node_x, node_y, cell_node).
- Return type
tuple
- get_curtain_cell_index(polyline: ndarray, x_data: Optional[tuple] = None)¶
Query to extract 3D cell indices of 2D vertical slice (‘curtain’) for a given polyline.
- Parameters
polyline (2D np.ndarray) – Polyline as [x, y] used to slice 3D data.
x_data (tuple) – Model edge intersection(x) data returned by self.get_intersections.
- Returns
index – Index data defined by line index & cell index (line_index, cell_index). The line index provides the 1D polyline segment indices for each cell in the 2D vertical slice. The cell index provides the 3D model cell indices for each cell in the 2D vertical slice.
- Return type
tuple
- get_curtain_edge()¶
Query to extract data in a 2D slice format (‘curtain’) at the cell centroids for a given time step. It does this along the polyline specified.
This function is currently not supported.
- get_curtain_grid(variable: str, ii: int, polyline: ndarray, xg, yg, x_data=None, index=None, grid_index=None)¶
Query to extract data in a 2D slice format (‘curtain’) at fixed grid points for a given time step. It does this along the polyline specified.
- Parameters
variable (string) – Name of time varying data set to be extracted.
ii (integer) – Time index at which to extract the data.
polyline (2D np.ndarray) – Polyline as [x, y] used to slice 3D data.
grid_x (1D np.ndarray) – Horizontal grid point values
grid_y (1D np.ndarray) – Vertical grid point values
x_data (tuple) – Model edge intersection(x) data returned by self.get_intersections.
index (tuple) – Curtain index data returned by self.get_curtain_cell_index.
grid_index (2D np.ndarray) – Curtain cell index for each grid point
- Returns
data – A gridded 2D slice ‘curtain’ of the relevant variable at time step ii.
- Return type
2D np.ndarray
- get_integral_data(ii: int, datum: str, limits: tuple)¶
Query to extract data for vertical integration at given time step. Principle data is the integral limit (z2 - z1) for each 2D model cell/node and dz for each 3D model cell/node.
- Parameters
ii (integer) – Time index at which to extract the vertical layer faces.
datum (str) – {‘sigma’, ‘depth’, ‘height’, ‘elevation’} Vertical depth-averaging datum i.e sigma, depth, height, elevation, top, bottom.
limits (tuple) – Vertical depth-averaging limits (z1, z2) relative to vertical datum.
- Returns
z_data – The elevation limits (z2 - z1) for each 2D cell/node & dz for each 3D cell/node
- Return type
tuple, (z2_z1, dz)
- get_mask_vector(ii: int)¶
Query to extract an array that defines invalid model data.
- Parameters
ii (integer) – Time index at which to extract the stat array.
- Returns
mask – Logical index, True if model cells/nodes are invalid (i.e dry cells).
- Return type
np.ndarray
- get_profile_cell(**kwargs)¶
Query to extract data as 1D vertical profile of cells at the given time step. It does this at the point specified.
- Parameters
variable (string) – Name of time varying data set to be extracted.
ii (integer) – Time index at which to extract the data.
point (tuple) – Point (x, y) of profile location.
index (integer) – Index of cell which contains the point.
- Returns
data – A 1D section of the vertical values of the relevant variable.
- Return type
np.ndarray
- get_raw_data(variable: str, ii: int)¶
Query to extract raw data at a time step (if time-varying).
- Parameters
variable (string) – Name of time varying data set to be extracted.
ii (integer) – The time vector index at which to extract the data.
- Returns
data – The raw data as 1D or 2D numpy array
- Return type
np.ndarray
- get_sheet_cell(**kwargs)¶
Query to extract data in a 2D map format (‘sheet’) at model cell centroids for a given time step. If model data is 3D then it is depth-averaged according to the depth-averaging vertical datum and vertical limits.
- Parameters
variable (string) – Name of time varying data set to be extracted.
ii (integer) – Time index at which to extract the data.
datum ({'sigma', 'depth', 'height', 'elevation'}) – Vertical depth-averaging datum i.e sigma, depth, height, elevation, top, bottom.
limits (tuple) – Vertical depth-averaging limits (z1, z2) relative to vertical datum.
z_data (tuple, optional) – Vertical integration data returned by
`self.get_integral_data`
- Returns
data – A 2D spatial ‘sheet’ of the relevant variable at time step ii.
- Return type
np.ndarray
- get_sheet_grid(variable: str, ii: int, xg: ndarray, yg: ndarray, datum='sigma', limits=(0, 1), agg='mean', z_data: Optional[tuple] = None, grid_index: Optional[ndarray] = None)¶
Query to extract data in a 2D map format (‘sheet’) at fixed grid points for a given time step. If model data is 3D then it is depth-averaged according to the depth-averaging vertical datum and vertical limits.
- Parameters
variable (string) – Name of time varying data set to be extracted.
ii (integer) – Time index at which to extract the data.
grid_x (1D np.ndarray) – Horizontal grid point values
grid_y (1D np.ndarray) – Vertical grid point values
datum ({'sigma', 'depth', 'height', 'elevation'}) – Vertical depth-averaging datum i.e sigma, depth, height, elevation, top, bottom.
limits (tuple) – Vertical depth-averaging limits (z1, z2) relative to vertical datum.
z_data (tuple, optional) – Vertical integration data returned by self.get_integral_data
grid_index (2D np.ndarray) – Mesh cell index for each grid point returned by self.get_grid_index
- Returns
data – A gridded 2D spatial ‘sheet’ of the relevant variable at time step ii.
- Return type
2D np.ndarray
- get_sheet_node(**kwargs)¶
Query to extract data in a 2D map format (‘sheet’) at model cell vertices for a given time step. If model data is 3D then it is depth-averaged according to the depth-averaging vertical datum and vertical limits.
- Parameters
variable (string) – Name of time varying data set to be extracted.
ii (integer) – Time index at which to extract the data.
datum ({'sigma', 'depth', 'height', 'elevation'}) – Vertical depth-averaging datum i.e sigma, depth, height, elevation, top, bottom.
limits (tuple) – Vertical depth-averaging limits (z1, z2) relative to vertical datum.
z_data (tuple, optional) – Vertical integration data returned by self.get_integral_data
- Returns
data – A 2D spatial ‘sheet’ of the relevant variable at time step ii.
- Return type
np.ndarray
- get_z_layer_faces(ii: int)¶
Query to extract an array that defines the vertical layer faces of a 3D model.
- Parameters
ii (integer) – Time index at which to extract the vertical layer faces.
- Returns
lfz – Vertical layer faces. If model is 2D returns None.
- Return type
np.darray
- write_data_to_ascii(out_file: Union[Path, str], data: ndarray, resolution: float, precision: int = 2, bbox: Optional[list] = None, grid_index: Optional[ndarray] = None)¶
Query data at cell centroids to gridded raster ASCII file.
- Parameters
out_file (string) – File path of .asc file to write data to.
data (1D np.ndarray) – Cell centred TUFLOW FV data as numpy array.
resolution (float) – Grid resolution at which to output data.
precision (int) – Output precision as number of decimal places.
bbox (list, optional) – The bounding box to trim the data with as [left, bottom, right, top].
grid_index (2D np.ndarray, optional) – Mesh cell index for each grid point returned by self.get_grid_index
- write_time_series_file(out_file: Union[Path, str], locations: dict, variables: Optional[list] = None)¶
Query that writes 2D & 3D point time series data from a TUFLOW FV netCDF4 results file.
- Parameters
out_file (string) – File path to write time series file.
locations (dictionary) – Extraction points as dict(SITE_1=(x, y), SITE_2=(x, y)).
variables (list) – List of variables to extract. Default is all variables