NCEPLIBS-ip
5.0.0
|
Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grids A through D. More...
Data Types | |
type | ip_rot_equid_cylind_grid |
Functions/Subroutines | |
subroutine | gdswzd_rot_equid_cylind (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA) |
GDS wizard for rotated equidistant cylindrical. More... | |
subroutine | init_grib1 (self, g1_desc) |
Initializes a Rotated equidistant cylindrical grid given a grib1_descriptor object. More... | |
subroutine | init_grib2 (self, g2_desc) |
Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object. More... | |
subroutine | rot_equid_cylind_error (IOPT, FILL, RLAT, RLON, XPTS, YPTS, NPTS) |
Error handler. More... | |
subroutine | rot_equid_cylind_grid_area (CLATR, FILL, AREA) |
Grid box area for rotated equidistant cylindrical grids - non "e" stagger. More... | |
subroutine | rot_equid_cylind_map_jacob (FILL, RLON, CLATR, CLAT, SLAT, CLON, XLON, XLAT, YLON, YLAT) |
Map jacobians for rotated equidistant cylindrical grids - non "e" stagger. More... | |
subroutine | rot_equid_cylind_vect_rot (RLON, CLATR, SLATR, CLAT, SLAT, CLON, CROT, SROT) |
Vector rotation fields for rotated equidistant cylindrical grids - non "e" stagger. More... | |
Variables | |
real(kind=kd) | clat0 |
Local copy of clat0. More... | |
real(kind=kd) | dlats |
Local copy of dlats. More... | |
real(kind=kd) | dlons |
Local copy of dlons. More... | |
integer | irot |
Local copy of irot. More... | |
integer, parameter | kd = real64 |
Fortran kind for reals. More... | |
real(kind=kd) | rerth |
Radius of the Earth. More... | |
real(kind=kd) | rlon0 |
Local copy of rlon0. More... | |
real(kind=kd) | slat0 |
Local copy of slat0. More... | |
Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grids A through D.
(To handle the E grid, see ip_rot_equid_cylind_egrid_mod).
See more info about Awakawa grids.
Octet numbers refer to GRIB2 - GRID DEFINITION TEMPLATE 3.1 Rotate Latitude/Longitude.
|
private |
GDS wizard for rotated equidistant cylindrical.
This subprogram decodes the grib 2 grid definition template (passed in integer form as decoded by the ncep g2 library) and returns one of the following:
Works for non-"e" staggered rotated equidistant cylindrical projections. the scan mode (section 3, octet 72, bits 5-6) determine whether this is an "h" or "v" grid.
If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values. The actual number of valid points computed is returned too.
Optionally, the vector rotations, the map jacobians and the grid box areas may be returned as well.
To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present. To compute the grid box areas, the optional argument 'area' must be present.
Date | Programmer | Comments |
---|---|---|
2010-jan-15 | gayno | based on routines gdswzdcb and gdswzdca |
2015-jan-21 | gayno | merger of gdswizcd and gdswzdcd. make crot,sort,xlon,xlat,ylon,ylat and area optional arguments. make part of a module. move vector rotation, map jacobian and grid box area computations to separate subroutines. |
2015-jul-13 | gayno | convert to grib 2. replace grib 1 kgds array with grib 2 grid definition template array. rename as "gdswzd_rot_equid_cylind." |
2018-07-20 | wesley | add threads. |
[in] | self | Module reference. |
[in] | iopt | integer option flag
|
[in] | npts | integer maximum number of coordinates |
[in] | fill | real fill value to set invalid output data (must be impossible value; suggested value: -9999.) |
[in,out] | xpts | real (npts) grid x point coordinates if iopt>0 |
[in,out] | ypts | real (npts) grid y point coordinates if iopt>0 |
[in,out] | rlon | real (npts) earth longitudes in degrees e if iopt<0 (acceptable range: -360. to 360.) |
[in,out] | rlat | real (npts) earth latitudes in degrees n if iopt<0 (acceptable range: -90. to 90.) |
[out] | nret | integer number of valid points computed |
[out] | crot | real, optional (npts) clockwise vector rotation cosines |
[out] | srot | real, optional (npts) clockwise vector rotation sines (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth) |
[out] | xlon | real, optional (npts) dx/dlon in 1/degrees |
[out] | xlat | real, optional (npts) dx/dlat in 1/degrees |
[out] | ylon | real, optional (npts) dy/dlon in 1/degrees |
[out] | ylat | real, optional (npts) dy/dlat in 1/degrees |
[out] | area | real, optional (npts) area weights in m**2 |
Definition at line 256 of file ip_rot_equid_cylind_grid_mod.F90.
References clat0, dlats, dlons, irot, rerth, rlon0, rot_equid_cylind_error(), rot_equid_cylind_grid_area(), rot_equid_cylind_map_jacob(), rot_equid_cylind_vect_rot(), and slat0.
|
private |
Initializes a Rotated equidistant cylindrical grid given a grib1_descriptor object.
[in,out] | self | The grid to initialize |
[in] | g1_desc | A grib1_descriptor |
Definition at line 73 of file ip_rot_equid_cylind_grid_mod.F90.
References ip_constants_mod::dpr.
|
private |
Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object.
[in,out] | self | The grid to initialize |
[in] | g2_desc | A grib2_descriptor |
Definition at line 139 of file ip_rot_equid_cylind_grid_mod.F90.
|
private |
Error handler.
Upon an error, this subprogram assigns a "fill" value to the output fields.
[in] | iopt | integer option flag
|
[in] | fill | real fill value to set invalid output data (must be impossible value; suggested value: -9999.) |
[out] | rlat | real (npts) earth latitudes in degrees n if iopt<0 |
[out] | rlon | real (npts) earth longitudes in degrees e if iopt<0 |
[out] | xpts | real (npts) grid x point coordinates if iopt>0 |
[out] | ypts | real (npts) grid y point coordinates if iopt>0 |
[in] | npts | integer maximum number of coordinates |
Definition at line 462 of file ip_rot_equid_cylind_grid_mod.F90.
Referenced by gdswzd_rot_equid_cylind().
|
private |
Grid box area for rotated equidistant cylindrical grids - non "e" stagger.
This subprogram computes the grid box area for a rotated equidistant cylindrical grid - non "e" stagger.
Date | Programmer | Comments |
---|---|---|
2015-01-21 | Gayno | initial version |
2015-07-19 | gayno | rename as "rot_equid_cylind_grid_area." |
2018-07-20 | wesley | pass in clatr for threading |
[in] | clatr | cosine of unrotated latitude (real) |
[in] | fill | fill value for undefined points (real) |
[out] | area | area weights in m**2 (real) |
Definition at line 603 of file ip_rot_equid_cylind_grid_mod.F90.
References dlats, dlons, and rerth.
Referenced by gdswzd_rot_equid_cylind().
|
private |
Map jacobians for rotated equidistant cylindrical grids - non "e" stagger.
This subprogram computes the map jacobians for a rotated equidistant cylindrical grid - non "e" stagger.
Date | Programmer | Comments |
---|---|---|
2015-01-21 | gayno | initial version |
2015-09-17 | gayno | rename as "rot_equid_cylind_map_jacob". |
2018-07-20 | wesley | pass in clatr, clat, slat, clon to allow threading. |
[in] | fill | fill value for undefined points (real) |
[in] | rlon | longitude in degrees (real) |
[in] | clatr | cosine of unrotated latitude (real) |
[in] | clat | cosine of latitude (real) |
[in] | slat | sine of latitude (real) |
[in] | clon | cosine of latitude (real) |
[out] | xlon | dx/dlon in 1/degrees (real) |
[out] | xlat | dx/dlat in 1/degrees (real) |
[out] | ylon | dy/dlon in 1/degrees (real) |
[out] | ylat | dy/dlat in 1/degrees (real) |
Definition at line 558 of file ip_rot_equid_cylind_grid_mod.F90.
References clat0, dlats, dlons, rlon0, and slat0.
Referenced by gdswzd_rot_equid_cylind().
|
private |
Vector rotation fields for rotated equidistant cylindrical grids - non "e" stagger.
This subprogram computes the vector rotation sines and cosines for a rotated equidistant cylindrical grid - non "e" stagger.
Date | Programmer | Comments |
---|---|---|
2015-01-21 | gayno | initial version |
2015-07-19 | gayno | rename as "rot_equid_cylind_vect_rot." |
2018-07-20 | wesley | pass in clatr, slatr, clat, slat, clon for threading. |
[in] | rlon | longitude in degrees (real) |
[in] | clatr | cosine of rotated latitude (real) |
[in] | slatr | sine of rotated latitude (real) |
[in] | clat | cosine of latitude (real) |
[in] | slat | sine of latitude (real) |
[in] | clon | cosine of longitude (real) |
[out] | crot | clockwise vector rotation cosines (real) |
[out] | srot | clockwise vector rotation sines (real) (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth) |
Definition at line 507 of file ip_rot_equid_cylind_grid_mod.F90.
References clat0, irot, rlon0, and slat0.
Referenced by gdswzd_rot_equid_cylind().
|
private |
Local copy of clat0.
Definition at line 58 of file ip_rot_equid_cylind_grid_mod.F90.
Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_map_jacob(), and rot_equid_cylind_vect_rot().
|
private |
Local copy of dlats.
Definition at line 59 of file ip_rot_equid_cylind_grid_mod.F90.
Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_grid_area(), and rot_equid_cylind_map_jacob().
|
private |
Local copy of dlons.
Definition at line 60 of file ip_rot_equid_cylind_grid_mod.F90.
Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_grid_area(), and rot_equid_cylind_map_jacob().
|
private |
Local copy of irot.
Definition at line 56 of file ip_rot_equid_cylind_grid_mod.F90.
Referenced by gdswzd_rot_equid_cylind(), and rot_equid_cylind_vect_rot().
|
private |
Fortran kind for reals.
Definition at line 30 of file ip_rot_equid_cylind_grid_mod.F90.
|
private |
Radius of the Earth.
Definition at line 57 of file ip_rot_equid_cylind_grid_mod.F90.
Referenced by gdswzd_rot_equid_cylind(), and rot_equid_cylind_grid_area().
|
private |
Local copy of rlon0.
Definition at line 61 of file ip_rot_equid_cylind_grid_mod.F90.
Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_map_jacob(), and rot_equid_cylind_vect_rot().
|
private |
Local copy of slat0.
Definition at line 62 of file ip_rot_equid_cylind_grid_mod.F90.
Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_map_jacob(), and rot_equid_cylind_vect_rot().