Modules

The behavior of the plugin depends on the input and is subdivided into 4 modules:

Module

Description

Shear Stress Module

Analysis of spatial change in bed mobility

Velocity Module

Analysis of spatial change in larval motility

Acoustics Module

Analysis of acoustic propagation and thresholds

Power Module

Analysis of power generated by WEC/CEC array

Shear Stress Module

The shear_stress_module.py is a component of SEAT. It’s aimed at assessing the impact of shear stressors on sediment mobility in aquatic environments. This module provides insights into how various devices or conditions can affect shear stress by allowing comparison between scenarios with and without these elements present.

Data

Input

  • NetCDF files: Contain shear stress data for scenarios with and without devices present.

  • Optional:

    • Receptor file: Contains critical shear stress values.

    • Probability/Boundary Condition file: Used to weight different run scenarios.

Output

  • GeoTIFF raster files: Visualize shear stress with and without devices, shear stress changes, and mobility classifications.

    • Output layers are interpolated onto structured grids.

    • calculated_stressor.tif : The probability weight difference between with devices and baseline models results.

    • calculated_stressor_with_receptor.tif

      • Shear Stress: the mobility (Tau/TauCrit) difference using the grain size in the receptor file.

    • receptor.tif : the receptor file interpolated to the same grid as the output

    • calculated_stressor_reclassified.tif :

      • Shear Stress: reclassified into increase erosion or deposition compared to the no device model run.

  • CSV files: Contain statistics of area changes and mobility classifications.

    • The stressor values are binned into 25 bins and the surface area in which that change occurred, the percent of the overall model domain, and number of cells within the stressor is saved to a csv file.

      • Lat/Lon converted to UTM (meter) coordinates for calculation.

      • UTM remains in the original unit of measure

  • When a receptor is included, the stressor and stressor with receptor values are further segmented by unique receptor values.

    • For acoustics, the threshold exceeded, the species percent, and species density are generated.

  • For Shear Stress and Velocity, the area of each unique reclassified value is defined and for each unique receptor value when included.

Sources

Default

SEAT is designed to read Delft3D, DelftFM *.map data files with structured and unstructured grids for shear stress and velocity.

  • Shear Stress variables:

    • Structured : TAUMAX

    • Unstructured : taus

  • Velocity variables:

    • Structured : U1, V1

    • Unstructured : ucxa, ucya

Coordinates are determined from the variable attributes

Alternative
  • Structured

    • Variable name TAUMAX

    • concatenated model runs [run number, depth, xcor, ycor]

    • Individual model runs [depth, xcor, ycor]

  • Unstructured

    • Variable name taus

    • concatenated model runs [run number, depth, xcor, ycor]

    • Individual model runs [depth, xcor, ycor]

  • Coordinate variable names must be in the variable attributes such that:

    • xcor, ycor = netcdf_dataset.variables[variable].coordinates.split()

Core Functions:

Function

Description

critical_shear_stress()

Calculates critical shear stress from grain size.

classify_mobility()

Classifies sediment mobility from device runs to no device runs.

check_grid_define_vars()

Determines the type of grid and corresponding shear stress variable name and coordinate names.

calculate_shear_stress_stressors()

Calculates the stressor layers as arrays from model and parameter input.

run_shear_stress_stressor()

Creates GeoTIFFs and area change statistics files for shear stress change.

Velocity Module

The velocity_module.py is a component of SEAT aimed at assessing the impact of velocity stressors on larval motility in aquatic environments. This module provides insights into how various devices or conditions can affect velocity by allowing comparison between scenarios with and without these elements present.

Data

Input

  • NetCDF files: Contain velocity data for scenarios with and without devices present.

  • Optional:

    • Receptor file: Contains critical velocity values.

    • Probability/Boundary Condition file: Used to weight different run scenarios.

Output

  • GeoTIFF raster files: Visualize velocity with and without devices, velocity changes, and motility classifications.

    • Output layers are interpolated onto structured grids.

    • calculated_stressor.tif : The probability weight difference between with devices and baseline models results.

    • calculated_stressor_with_receptor.tif

      • Velocity: the motility (Vel/VelCrit) difference using the critical velocity in the receptor file.

    • receptor.tif : the receptor file interpolated to the same grid as the output

    • calculated_stressor_reclassified.tif :

      • Velocity : reclassified into increase motility or no change compared to the no device model run.

  • CSV files: Contain statistics of area changes and motility classifications.

    • The stressor values are binned into 25 bins and the surface area in which that change occurred, the percent of the overall model domain, and number of cells within the stressor is saved to a csv file. + Lat/Lon converted to UTM (meter) coordinates for calculation. + UTM remains in the original unit of measure

  • When a receptor is included, the stressor and stressor with receptor values are further segmented by unique receptor values.

  • For Velocity, the area of each unique reclassified value is defined and for each unique receptor value when included.

Sources

Default

The acoustics module is designed for paracousti data sources (https://sandialabs.github.io/Paracousti/).

Acoustics variables:

  • The variable is specified in the receptor file to allow for various weighting, sound pressure level, or sound exposure level thresholds.

Coordinates are determined from the variable attributes

Alternative
  • Structured

    • Variable names : U1, V1

    • concatenated model runs [run number, time, depth, xcor, ycor]

    • Individual model runs [time, depth, xcor, ycor]

  • Unstructured

    • Variable names : ucxa, ucya

    • concatenated model runs [run number, time, depth, xcor, ycor]

    • Individual model runs [time, depth, xcor, ycor]

  • Coordinate variable names must be in the variable attributes such that:

    • xcor, ycor = netcdf_dataset.variables[variable].coordinates.split()

Core Functions:

Function

Description

classify_motility()

This function classifies larval motility into various categories such as Reduced, Increased, or New Motility based on the comparison of device runs and baseline (no device) runs.

check_grid_define_vars()

Determines the type of grid (structured/unstructured) and defines corresponding velocity and coordinate variable names.

calculate_velocity_stressors()

Main function that loads data, performs calculations, and computes various metrics including velocity differences and motility classifications.

run_velocity_stressor()

Creates GeoTIFFs and CSV files to visualize and quantify velocity changes and motility classifications.

Acoustics Module

The acoustics_module.py is a component of the SEAT aimed at assessing the impact of acoustic signal changes from paracoustic files. This module facilitates the understanding and visualization of how different acoustic variables alter in aquatic environments, especially when devices are present.

Data

Input

  • NetCDF files: Contain acoustic data for scenarios with and without devices present.

  • Optional:

    • Receptor file: Contains threshold values for acoustic variables.

    • Probability/Boundary Condition file: Used to weight different run scenarios.

    • Species files: Contains density or percent data of species.

Output

  • GeoTIFF raster files: Visualize calculated paracoustic, calculated stressor, threshold exceeded receptor, species percent and species density.

    • Output layers are interpolated onto structured grids.

    • calculated_stressor.tif : The probability weight difference between with devices and baseline models results.

      • for acoustics assumes baseline=0 if no baseline model files provided.

    • receptor.tif : the receptor file interpolated to the same grid as the output

    • calculate_paracousti.tif : the calculated with device probability weighted paracousti file.

    • Threshold_exceeded_receptor.tif : the percent of time the acoustic threshold was exceeded.

    • species_percent.tif : the threshold exceeded and weighted species percent.

    • species_density.tif : the threshold exceeded and weighted species density.

  • CSV files: Contain statistics of area calculations for various layers.

    • The stressor values are binned into 25 bins and the surface area in which that change occurred, the percent of the overall model domain, and number of cells within the stressor is saved to a csv file.

      • Lat/Lon converted to UTM (meter) coordinates for calculation.

      • UTM remains in the original unit of measure

  • When a receptor is included, the stressor and stressor with receptor values are further segmented by unique receptor values.

    • For acoustics, the threshold exceeded, the species percent, and species density are generated.

Sources

Default

The acoustics module is designed for paracousti data sources (https://sandialabs.github.io/Paracousti/).

Acoustics variables:

  • The variable is specified in the receptor file to allow for various weighting, sound pressure level, or sound exposure level thresholds.

Coordinates are determined from the variable attributes

Alternative

The Acoustics module can utilize alternate datasets with the following requirements:

  • Variable name must be specified in the receptor file.

  • Variable attributes must include the coordinates variable names, such that:

    • xcor, ycor = netcdf_dataset.variables[variable].coordinates.split()

  • The coordinates units attribute must include “degrees” if the coordinates are lat/lon such that:

    • ‘degrees’ in ds.variables[<xcor variable>].units is True for lat/lon

Core Functions:

Function

Description

create_species_array()

Interpolates or creates an array of percent or density of species from input files and coordinates.

calculate_acoustic_stressors()

Calculates the stressor layers as arrays from model and parameter input.

run_acoustics_stressor()

Creates GeoTIFFs and area change statistics files for acoustic stressor change.

redefine_structured_grid()

(From stressor_utils) Redefines grids to regular spacing, used in calculate_acoustic_stressors.

resample_structured_grid()

(From stressor_utils) Resamples grids, used in calculate_acoustic_stressors.

Power Module

The power_module.py is a component of SEAT crafted to calculate the power output from a device array, providing a systematic means of evaluating and visualizing the spatial distribution, location, and power output from the devices in a specific marine environment.

Data

Input

  • .OUT files: Contain power data for different scenarios.

  • .pol file: Contains information on the obstacle polygon configurations.

  • Optional: - Probability/Boundary Condition file: Used to weight different run scenarios.

Output

When a directory is specified for the device power the following are generated.

  • CSV:

    • BC_probability_wPower.csv : probabilities input file with appended power generated for each scenario

    • Obstacle_Matching.csv : Obstacle pairs corresponding to a single device and centroid X,Y.

    • Power_per_device_annual.csv : Total power generated (Watts) per device over the annual timespan (probabilities file).

    • Power_per_device_per_scenario.csv : Table of total power generated (Watts) with device (row), and power file (column).

  • PNG:

    • Scaled_Power_per_device_per_scenario.png : subplots of bar graph of power generated for each run per device.

    • Scaled_Power_per_device_per_obstacle.png : subplots of bar graph of power generated for each run per obstacle.

    • Total_Scaled_Power_Bars_per_Run.png : Bar graph of total power generated for each run scenario (probabilities file).

    • Total_Scaled_Power_Bars_per_obstacle.png : Bar graph of total power generated for each obstacle.

    • Total_Scaled_Power_per_Device.png : Bar graph of total power generated for each device

    • Obstacle_Locations.png : Spatial plot of XY coordinates for each obstacle endpoint.

    • Device Number Locations.png : Spatial plot of XY coordinates for each device.

    • Device_Power.png : Spatial heat map of total power generated (mega watts) for each device.

Core Functions:

Function

Description

read_obstacle_polygon_file()

Reads the obstacle polygon file to obtain xy coordinates of each obstacle.

find_mean_point_of_obstacle_polygon()

Calculates the center of each obstacle based on xy coordinates.

plot_test_obstacle_locations()

Creates a plot showing the spatial distribution and location of each obstacle.

centroid_diffs()

Determines the closest centroid pair among obstacles.

extract_device_location()

Creates a dictionary summary of each device location.

pair_devices()

Determines the two intersecting obstacles that create a device.

create_power_heatmap()

Creates a heatmap visualizing device location and power output.

read_power_file()

Reads power file and extracts final set of converged data.

sort_data_files_by_runorder()

Sorts data files by run order based on boundary conditions data.

sort_bc_data_by_runorder()

Sorts boundary condition data by run order.

reset_bc_data_order()

Resets the order of boundary condition data.

calculate_power()

Reads the power files, calculates the total annual power based on hydrodynamic probabilities, and saves data and visualizations.