windspharm.standard

Spherical harmonic vector wind computations.

class windspharm.standard.VectorWind(u, v, gridtype='regular', rsphere=6371200.0, legfunc='stored')[source]

Vector Wind computations (standard numpy interface).

Initialize a VectorWind instance.

Arguments:

u, v

Zonal and meridional wind components respectively. Their types should be either numpy.ndarray or numpy.ma.MaskedArray. u and v must have matching shapes and contain no missing values. u and v may be 2 or 3-dimensional with shape (nlat, nlon) or (nlat, nlon, nt), where nlat and nlon are the number of latitudes and longitudes respectively and nt is the number of fields. The latitude dimension must be oriented north-to-south. The longitude dimension should be oriented west-to-east.

Optional arguments:

gridtype

Type of the input grid, either ‘regular’ for evenly-spaced grids, or ‘gaussian’ for Gaussian grids. Defaults to ‘regular’.

rsphere

The radius in metres of the sphere used in the spherical harmonic computations. Default is 6371200 m, the approximate mean spherical Earth radius.

legfunc

‘stored’ (default) or ‘computed’. If ‘stored’, associated legendre functions are precomputed and stored when the class instance is created. This uses O(nlat**3) memory, but speeds up the spectral transforms. If ‘computed’, associated legendre functions are computed on the fly when transforms are requested. This uses O(nlat**2) memory, but slows down the spectral transforms a bit.

See also:

prep_data, recover_data, get_recovery, reverse_latdim, order_latdim.

Examples:

Initialize a VectorWind instance with zonal and meridional components of the vector wind on the default regular (evenly-spaced) grid:

from windspharm.standard import VectorWind w = VectorWind(u, v)

Initialize a VectorWind instance with zonal and meridional components of the vector wind specified on a Gaussian grid:

from windspharm.standard import VectorWind w = VectorWind(u, v, gridtype=’gaussian’)

magnitude()[source]

Wind speed (magnitude of vector wind).

Returns:

speed

The wind speed.

Example:

Magnitude of the vector wind:

spd = w.magnitude()
vrtdiv(truncation=None)[source]

Relative vorticity and horizontal divergence.

Optional argument:

truncation

Truncation limit (triangular truncation) for the spherical harmonic computation.

Returns:

vrt, div

The relative vorticity and divergence respectively.

See also:

vorticity, divergence.

Examples:

Compute the relative vorticity and divergence:

vrt, div = w.vrtdiv()

Compute the relative vorticity and divergence and apply spectral truncation at triangular T13:

vrtT13, divT13 = w.vrtdiv(truncation=13)
vorticity(truncation=None)[source]

Relative vorticity.

Optional argument:

truncation

Truncation limit (triangular truncation) for the spherical harmonic computation.

Returns:

vrt

The relative vorticity.

See also:

vrtdiv, absolutevorticity.

Examples:

Compute the relative vorticity:

vrt = w.vorticity()

Compute the relative vorticity and apply spectral truncation at triangular T13:

vrtT13 = w.vorticity(truncation=13)
divergence(truncation=None)[source]

Horizontal divergence.

Optional argument:

truncation

Truncation limit (triangular truncation) for the spherical harmonic computation.

Returns:

div

The divergence.

See also:

vrtdiv.

Examples:

Compute the divergence:

div = w.divergence()

Compute the divergence and apply spectral truncation at triangular T13:

divT13 = w.divergence(truncation=13)
planetaryvorticity(omega=None)[source]

Planetary vorticity (Coriolis parameter).

Optional argument:

omega

Earth’s angular velocity. The default value if not specified is 7.292x10**-5 s**-1.

Returns:

pvorticity

The planetary vorticity.

See also:

absolutevorticity.

Example:

Compute planetary vorticity using default values:

pvrt = w.planetaryvorticity()

Override the default value for Earth’s angular velocity:

pvrt = w.planetaryvorticity(omega=7.2921150)
absolutevorticity(omega=None, truncation=None)[source]

Absolute vorticity (sum of relative and planetary vorticity).

Optional arguments:

omega

Earth’s angular velocity. The default value if not specified is 7.292x10**-5 s**-1.

truncation

Truncation limit (triangular truncation) for the spherical harmonic computation.

Returns:

avorticity

The absolute (relative + planetary) vorticity.

See also:

vorticity, planetaryvorticity.

Examples:

Compute absolute vorticity:

avrt = w.absolutevorticity()

Compute absolute vorticity and apply spectral truncation at triangular T13, also override the default value for Earth’s angular velocity:

avrt = w.absolutevorticity(omega=7.2921150, truncation=13)
sfvp(truncation=None)[source]

Streamfunction and velocity potential.

Optional argument:

truncation

Truncation limit (triangular truncation) for the spherical harmonic computation.

Returns:

sf, vp

The streamfunction and velocity potential respectively.

See also:

streamfunction, velocitypotential.

Examples:

Compute streamfunction and velocity potential:

sf, vp = w.sfvp()

Compute streamfunction and velocity potential and apply spectral truncation at triangular T13:

sfT13, vpT13 = w.sfvp(truncation=13)
streamfunction(truncation=None)[source]

Streamfunction.

Optional argument:

truncation

Truncation limit (triangular truncation) for the spherical harmonic computation.

Returns:

sf

The streamfunction.

See also:

sfvp.

Examples:

Compute streamfunction:

sf = w.streamfunction()

Compute streamfunction and apply spectral truncation at triangular T13:

sfT13 = w.streamfunction(truncation=13)
velocitypotential(truncation=None)[source]

Velocity potential.

Optional argument:

truncation

Truncation limit (triangular truncation) for the spherical harmonic computation.

Returns:

vp

The velocity potential.

See also:

sfvp.

Examples:

Compute velocity potential:

vp = w.velocity potential()

Compute velocity potential and apply spectral truncation at triangular T13:

vpT13 = w.velocity potential(truncation=13)
helmholtz(truncation=None)[source]

Irrotational and non-divergent components of the vector wind.

Optional argument:

truncation

Truncation limit (triangular truncation) for the spherical harmonic computation.

Returns:

uchi, vchi, upsi, vpsi

Zonal and meridional components of irrotational and non-divergent wind components respectively.

See also:

irrotationalcomponent, nondivergentcomponent.

Examples:

Compute the irrotational and non-divergent components of the vector wind:

uchi, vchi, upsi, vpsi = w.helmholtz()

Compute the irrotational and non-divergent components of the vector wind and apply spectral truncation at triangular T13:

uchiT13, vchiT13, upsiT13, vpsiT13 = w.helmholtz(truncation=13)
irrotationalcomponent(truncation=None)[source]

Irrotational (divergent) component of the vector wind.

Note

If both the irrotational and non-divergent components are required then helmholtz should be used instead.

Optional argument:

truncation

Truncation limit (triangular truncation) for the spherical harmonic computation.

Returns:

uchi, vchi

The zonal and meridional components of the irrotational wind respectively.

See also:

helmholtz.

Examples:

Compute the irrotational component of the vector wind:

uchi, vchi = w.irrotationalcomponent()

Compute the irrotational component of the vector wind and apply spectral truncation at triangular T13:

uchiT13, vchiT13 = w.irrotationalcomponent(truncation=13)
nondivergentcomponent(truncation=None)[source]

Non-divergent (rotational) component of the vector wind.

Note

If both the non-divergent and irrotational components are required then helmholtz should be used instead.

Optional argument:

truncation

Truncation limit (triangular truncation) for the spherical harmonic computation.

Returns:

upsi, vpsi

The zonal and meridional components of the non-divergent wind respectively.

See also:

helmholtz.

Examples:

Compute the non-divergent component of the vector wind:

upsi, vpsi = w.nondivergentcomponent()

Compute the non-divergent component of the vector wind and apply spectral truncation at triangular T13:

upsiT13, vpsiT13 = w.nondivergentcomponent(truncation=13)
gradient(chi, truncation=None)[source]

Computes the vector gradient of a scalar field on the sphere.

Argument:

chi

A scalar field. Its shape must be either (nlat, nlon) or (nlat, nlon, nfields) where nlat and nlon are the same as those for the vector wind components that initialized the VectorWind instance.

Optional argument:

truncation

Truncation limit (triangular truncation) for the spherical harmonic computation.

Returns:

uchi, vchi

The zonal and meridional components of the vector gradient respectively.

Examples:

Compute the vector gradient of absolute vorticity:

avrt = w.absolutevorticity()
avrt_zonal, avrt_meridional = w.gradient(avrt)

Compute the vector gradient of absolute vorticity and apply spectral truncation at triangular T13:

avrt = w.absolutevorticity()
avrt_zonalT13, avrt_meridionalT13 = w.gradient(avrt, truncation=13)
truncate(field, truncation=None)[source]

Apply spectral truncation to a scalar field.

This is useful to represent other fields in a way consistent with the output of other VectorWind methods.

Argument:

field

A scalar field. Its shape must be either (nlat, nlon) or (nlat, nlon, nfields) where nlat and nlon are the same as those for the vector wind components that initialized the VectorWind instance.

Optional argument:

truncation

Truncation limit (triangular truncation) for the spherical harmonic computation. If not specified it will default to nlats - 1 where nlats is the number of latitudes.

Returns:

truncated_field

The field with spectral truncation applied.

Examples:

Truncate a scalar field to the computational resolution of the VectorWind instance:

scalar_field_truncated = w.truncate(scalar_field)

Truncate a scalar field to T21:

scalar_field_T21 = w.truncate(scalar_field, truncation=21)