FES

  • Reads files for Finite Element Solution (FES), Empirical Ocean Tide (EOT), and Hamburg direct data Assimilation Methods for Tides (HAMTIDE) models

    • ascii

    • netCDF4

  • Spatially interpolates tidal constituents to input coordinates

Calling Sequence

import pyTMD.io
amp,ph = pyTMD.io.FES.extract_constants(ilon, ilat, model_files,
   type='z',
   version=version,
   method='spline',
   compressed=True,
   scale=1.0/100.0)

Source code

pyTMD.io.FES.extract_constants(ilon: ndarray, ilat: ndarray, model_files: str | list | Path | None = None, **kwargs)[source]

Reads files for a FES ascii or netCDF4 tidal model

Makes initial calculations to run the tide program

Spatially interpolates tidal constituents to input coordinates

Parameters:
ilon: np.ndarray

longitude to interpolate

ilat: np.ndarray

latitude to interpolate

model_files: str, list, pathlib.Path or NoneType, default None

list of model files for each constituent

type: str, default ‘z’

Tidal variable to read

  • 'z': heights

  • 'u': horizontal transport velocities

  • 'v': vertical transport velocities

version: str or NoneType, default None

Model version to read

  • 'FES1999'

  • 'FES2004'

  • 'FES2012'

  • 'FES2014'

  • 'FES2022'

  • 'EOT20'

  • 'HAMTIDE11'

compressed: bool, default False

Input files are gzip compressed

crop: bool, default False

Crop tide model data to (buffered) bounds

bounds: list or NoneType, default None

Boundaries for cropping tide model data

buffer: float or NoneType, default None

Buffer angle for cropping tide model data

method: str, default ‘spline’

Interpolation method

  • 'bilinear': quick bilinear interpolation

  • 'spline': scipy bivariate spline interpolation

  • 'linear', 'nearest': scipy regular grid interpolations

extrapolate: bool, default False

Extrapolate model using nearest-neighbors

cutoff: float, default 10.0

Extrapolation cutoff in kilometers

Set to np.inf to extrapolate for all points

scale: float, default 1.0

Scaling factor for converting to output units

Returns:
amplitude: np.ndarray

amplitudes of tidal constituents

phase: np.ndarray

phases of tidal constituents

pyTMD.io.FES.read_constants(model_files: str | list | Path | None = None, **kwargs)[source]

Reads files for a FES ascii or netCDF4 tidal model

Parameters:
model_files: str, list, pathlib.Path or NoneType, default None

list of model files for each constituent

type: str, default ‘z’

Tidal variable to read

  • 'z': heights

  • 'u': horizontal transport velocities

  • 'v': vertical transport velocities

version: str or NoneType, default None

Model version to read

  • 'FES1999'

  • 'FES2004'

  • 'FES2012'

  • 'FES2014'

  • 'FES2022'

  • 'EOT20'

  • 'HAMTIDE11'

compressed: bool, default False

Input files are gzip compressed

crop: bool, default False

Crop tide model data to (buffered) bounds

bounds: list or NoneType, default None

Boundaries for cropping tide model data

buffer: int or float, default 0

Buffer angle for cropping tide model data

Returns:
constituents: obj

complex form of tide model constituents

pyTMD.io.FES.interpolate_constants(ilon: ndarray, ilat: ndarray, constituents, **kwargs)[source]

Interpolate constants from FES tidal models to input coordinates

Makes initial calculations to run the tide program

Parameters:
ilon: np.ndarray

longitude to interpolate

ilat: np.ndarray

latitude to interpolate

constituents: obj

Tide model constituents (complex form)

method: str, default ‘spline’

Interpolation method

  • 'bilinear': quick bilinear interpolation

  • 'spline': scipy bivariate spline interpolation

  • 'linear', 'nearest': scipy regular grid interpolations

extrapolate: bool, default False

Extrapolate model using nearest-neighbors

cutoff: float, default 10.0

Extrapolation cutoff in kilometers

Set to np.inf to extrapolate for all points

scale: float, default 1.0

Scaling factor for converting to output units

Returns:
amplitude: np.ndarray

amplitudes of tidal constituents

phase: np.ndarray

phases of tidal constituents

pyTMD.io.FES.read_ascii_file(input_file: str | Path, **kwargs)[source]

Read FES (Finite Element Solution) tide model file

Parameters:
input_file: str or pathlib.Path

model file

compressed: bool, default False

Input file is gzip compressed

Returns:
hc: np.ndarray

complex form of tidal constituent oscillation

lon: np.ndarray

longitude of tidal model

lat: np.ndarray

latitude of tidal model

pyTMD.io.FES.read_netcdf_file(input_file: str | Path, **kwargs)[source]

Read FES (Finite Element Solution) tide model netCDF4 file

Parameters:
input_file: str or pathlib.Path

model file

type: str or NoneType, default None

Tidal variable to read

  • 'z': heights

  • 'u': horizontal transport velocities

  • 'v': vertical transport velocities

version: str or NoneType, default None

FES model version

  • 'FES2012'

  • 'FES2014'

  • 'FES2022'

  • 'EOT20'

  • 'HAMTIDE11'

compressed: bool, default False

Input file is gzip compressed

Returns:
hc: np.ndarray

complex form of tidal constituent oscillation

lon: np.ndarray

longitude of tidal model

lat: np.ndarray

latitude of tidal model

pyTMD.io.FES.output_netcdf_file(FILE: str | Path, hc: ndarray, lon: ndarray, lat: ndarray, constituent: str, **kwargs)[source]

Writes tidal constituents to netCDF4 files in FES2014/2022 format

Parameters:
FILE: str

output FES model file name

hc: np.ndarray

Eulerian form of tidal constituent

lon: np.ndarray

longitude coordinates

lat: np.ndarray

latitude coordinates

constituent: str

tidal constituent ID

type: str or NoneType, default None

Tidal variable to output

  • 'z': heights

  • 'u': horizontal transport velocities

  • 'v': vertical transport velocities

pyTMD.io.FES._extend_array(input_array: ndarray, step_size: float)[source]

Extends a longitude array

Parameters:
input_array: np.ndarray

array to extend

step_size: float

step size between elements of array

Returns:
temp: np.ndarray

extended array

pyTMD.io.FES._extend_matrix(input_matrix: ndarray)[source]

Extends a global matrix

Parameters:
input_matrix: np.ndarray

matrix to extend

Returns:
temp: np.ndarray

extended matrix

pyTMD.io.FES._crop(input_matrix: ndarray, ilon: ndarray, ilat: ndarray, bounds: list | tuple, buffer: int | float = 0)[source]

Crop tide model data to bounds

Parameters:
input_matrix: np.ndarray

matrix to crop

ilon: np.ndarray

longitude of tidal model

ilat: np.ndarray

latitude of tidal model

bounds: list, tuple

bounding box: [xmin, xmax, ymin, ymax]

buffer: int or float, default 0

buffer to add to bounds for cropping

Returns:
temp: np.ndarray

cropped matrix

lon: np.ndarray

cropped longitude

lat: np.ndarray

cropped latitude

pyTMD.io.FES._shift(input_matrix: ndarray, ilon: ndarray, lon0: int | float = 180, cyclic: int | float = 360, direction: str = 'west')[source]

Shift global grid east or west to a new base longitude

Parameters:
input_matrix: np.ndarray

input matrix to shift

ilon: np.ndarray

longitude of tidal model

lon0: int or float, default 180

Starting longitude for shifted grid

cyclic: int or float, default 360

width of periodic domain

direction: str, default ‘west’

Direction to shift grid

  • 'west'

  • 'east'

Returns:
temp: np.ndarray

shifted matrix

lon: np.ndarray

shifted longitude