epygram.geometries.VGeometry — Vertical Geometry class

Contains the class for Vertical geometry of fields.


class epygram.geometries.VGeometry.VGeometry(typeoffirstfixedsurface, levels, typeofsecondfixedsurface=None, toplevel=None, bottomlevel=None, grid=None, position_on_grid='__unknown__')[source]

Bases: epygram.util.RecursiveObject

Handles the vertical geometry for fields.

Here, the grid defines the vertical position of each level between a bottom and a top positions.

The position of points w/r to the vertical grid (mass or flux points), is interpreted as:

  • mass: points are located on same levels as the grid points.

  • flux: points are located on half-levels, hence are N+1.

levels is a list with one item for each level represented in data. Each item can be:

  • a scalar (constant value for all the data point),

  • an array with the horizontal geographic shape (level constant in time but varying on the horizontal),

  • an array with the first dimension corresponding to the validity lengthy and other dimensions to represent the horizotal.

It is not allowed to have a level varying in time and constant on the geographic domain.

Parameters
  • structure (str) – must be ‘V’

  • typeoffirstfixedsurface (int) – Type of horizontal level, as of GRIB2 norm (inspired from GRIB_API).

  • levels (list) – Effective levels on which data is available.

  • grid (dict) – Handles description of the vertical grid.

  • position_on_grid (str) – Position of points w/r to the vertical grid. (among [‘mass’, ‘flux’, ‘__unknown__’])

to_vgrid(**kwargs)[source]

Convert the VGeometry object to a vgrid one.

Other kwargs passed to HybridPressureVGrid() constructor.

what(out=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>, levels=True)[source]

Writes in file a summary of the geometry.

Parameters
  • out – the output open file-like object

  • levels – if True, writes the levels of the geometry


Functions

epygram.geometries.VGeometry.hybridP2pressure(hybridP_geometry, Psurf, vertical_mean, gridposition=None)[source]

Converts a ‘hybrid_pressure’ VGeometry to a ‘pressure’ (in hPa) VGeometry.

Parameters
  • hybridP_geometry (VGeometry) – the initial vertical coordinate

  • Psurf (float) – the surface pressure in Pa, needed for integration of Ai and Bi.

  • vertical_mean (str) – defines the kind of averaging done on the vertical to compute half-levels from full-levels, or inverse: ‘geometric’ or ‘arithmetic’.

  • gridposition (str) – (= ‘mass’ or ‘flux’) is the target grid position. By default the data position in the origin geometry is taken.

Return type

VGeometry

epygram.geometries.VGeometry.hybridH2pressure(hybridH_geometry, P, position)[source]

Converts a hybrid_height coordinate grid into pressure (in hPa).

Parameters
  • P – the vertical profile of pressure to use

  • position – the position of P values on the grid (‘mass’ or ‘flux’)

Return type

VGeometry

epygram.geometries.VGeometry.hybridP2altitude(hybridP_geometry, R, T, Psurf, vertical_mean, Pdep=None, Phi_surf=None)[source]

Converts a hybrid_pressure coordinate grid into altitude of mass levels.

Parameters
  • hybridP_geometry (VGeometry) – the initial vertical coordinate

  • R (list,numpy.ndarray) – the profile of specific gas constant (J/kg/K).

  • T (list,numpy.ndarray) – the profile of temperature (K).

  • Psurf (float) – the surface pressure, needed for integration of Ai and Bi.

  • vertical_mean (str) – defines the kind of averaging done on the vertical to compute half-levels from full-levels, or inverse: ‘geometric’ or ‘arithmetic’.

  • Pdep (list,numpy.ndarray) – the optional profile of NH pressure departures.

  • Phi_surf (float) – the optional surface geopotential. If given, the final coordinate is altitude above sea level, else height above ground surface.

Return type

VGeometry

epygram.geometries.VGeometry.hybridH2altitude(hybridH_geometry, Zsurf, gridposition=None, conv2height=False)[source]

Converts a hybrid_height coordinate grid into altitude.

Parameters
  • Zsurf – the surface height, needed for integration of Ai and Bi.

  • gridposition – if given (‘mass’ or ‘flux’), the target grid is computed accordingly. By default the data position in the origin geometry is taken.

  • conv2height – if True, conversion into height is performed instead of altitude.

Return type

VGeometry

epygram.geometries.VGeometry.pressure2altitude(pressure_geometry, R, T, vertical_mean, Pdep=0.0, Phi_surf=0.0)[source]

Converts a pressure coordinate grid (on mass or flux levels) to altitude on mass levels).

Parameters
  • R – the profile of specific gas constant (J/kg/K).

  • T – the profile of temperature (K).

  • Pdep – the optional profile of NH pressure departures.

  • Phi_surf – the optional surface geopotential. If given, the final coordinate is altitude above sea level, else height above ground surface.

  • vertical_mean – defines the kind of averaging done on the vertical to compute half-levels from full-levels, or inverse: ‘geometric’ or ‘arithmetic’.

epygram.geometries.VGeometry.hybridP_coord_and_surfpressure_to_3D_pressure_field(hybridP_geometry, Psurf, vertical_mean, gridposition=None)[source]

From a hybridP VGeometry and a surface pressure (in Pa) H2D field, compute a 3D field containing the pressure (in hPa) at each hybridP level for each gridpoint.

Parameters
  • hybridP_geometry (VGeometry) – the hybridP VGeometry

  • Psurf (H2DField) – the surface pressure H2DField in Pa, needed for integration of Ai and Bi.

  • vertical_mean (str) – defines the kind of averaging done on the vertical to compute half-levels from full-levels, or inverse: ‘geometric’ or ‘arithmetic’.

  • gridposition (str) – (= ‘mass’ or ‘flux’) is the target grid position. By default the data position in the origin geometry is taken.

Return type

D3Field

epygram.geometries.VGeometry.hybridP_coord_to_3D_altitude_field(hybridP_geometry, Psurf, vertical_mean, t3D, q3D, ql3D=None, qi3D=None, qr3D=None, qs3D=None, qg3D=None, Pdep3D=None, Phi_surf=None)[source]

From a hybridP VGeometry, a surface pressure (in Pa) H2D field, and temperature and specific humidity 3D fields, compute a 3D field containing the altitude (in m) at each hybridP level for each gridpoint.

Hydrometeors 3D fields can be provided for more accurate R computation.

Parameters
  • hybridP_geometry (VGeometry) – the hybridP VGeometry

  • Psurf (H2DField) – the surface pressure H2DField in Pa, needed for integration of Ai and Bi.

  • vertical_mean (str) – defines the kind of averaging done on the vertical to compute half-levels from full-levels, or inverse: ‘geometric’ or ‘arithmetic’.

  • t3D (D3Field) – temperature D3Field

  • q3D (D3Field) – specific humidity D3Field

  • ql3D (D3Field) – liquid water content D3Field

  • qi3D (D3Field) – ice water content D3Field

  • qr3D (D3Field) – rain water content D3Field

  • qs3D (D3Field) – snow water content D3Field

  • qg3D (D3Field) – graupel water content D3Field

  • Pdep3D (D3Field) – non-hydrostatic pressure departure D3Field

  • Phi_surf (H2DField) – surface geopotential H2DField (for altitude vs. height)

Return type

D3Field