Skip to contents

This function calculates the horizontal gradient (dVar/dx, dVar/dy) of a 4D variable [lon, lat, lev, time] using finite differences.

Usage

gradient(variable, lon, lat, nthreads = 1)

Arguments

variable

variable [lon, lat, lev, time].

lon

longitude coordinates [lon] (degrees east).

lat

latitude coordinates [lat] (degrees north).

nthreads

an integer specifying the number of threads to use for computation (OpenMP). Default is 1.

Value

A list with two 4D arrays:

  • grad_x: The gradient in the x (longitude) direction [lon, lat, lev, time].

  • grad_y: The gradient in the y (latitude) direction [lon, lat, lev, time].

Details

The derivatives are approximated using finite differences. Grid spacing is computed using Haversine formula.

Examples

data("ERA5_pl")
ua <- ERA5_pl$ua
va <- ERA5_pl$va
lon <- ERA5_pl$lon
lat <- ERA5_pl$lat

grad_ua <- gradient(ua, lon, lat)
grad_va <- gradient(va, lon, lat)

div <- divergence(
  ua, va,
  lon, lat
)
div2 <- grad_ua$grad_x +
  grad_va$grad_y

identical(div, div2)
#> [1] TRUE