NCEPLIBS-ip  5.0.0
ip_polar_stereo_grid_mod Module Reference

GDS wizard for polar stereographic azimuthal. More...

Data Types

type  ip_polar_stereo_grid
 

Functions/Subroutines

subroutine gdswzd_polar_stereo (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
 GDS wizard for polar stereographic azimuthal. More...
 
subroutine init_grib1 (self, g1_desc)
 Initializes a polar stereographic grid given a grib1_descriptor object. More...
 
subroutine init_grib2 (self, g2_desc)
 Initializes a polar stereographic grid given a grib2_descriptor object. More...
 
subroutine polar_stereo_grid_area (RLAT, DR2, AREA)
 Grid box area for polar stereographic grids. More...
 
subroutine polar_stereo_map_jacob (RLON, RLAT, DR2, XLON, XLAT, YLON, YLAT)
 Map jacobians for polar stereographic grids. More...
 
subroutine polar_stereo_vect_rot (RLON, CROT, SROT)
 Vector rotation fields for polar stereographic grids. More...
 

Variables

real de2
 Square of DE. More...
 
real dxs
 Local copy of dxs. More...
 
real dys
 Local copy of dys. More...
 
real e2
 Eccentricity squared. More...
 
real h
 Local copy of h. More...
 
integer irot
 Local copy of irot. More...
 
real orient
 Local copy of orient. More...
 
real rerth
 Radius of the Earth. More...
 

Detailed Description

GDS wizard for polar stereographic azimuthal.

Octet numbers refer to [GRIB2 - GRID DEFINITION TEMPLATE 3.20 Polar stereographic projection](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_temp3-20.shtml).

Author
Iredell
Date
96-04-10

Function/Subroutine Documentation

◆ gdswzd_polar_stereo()

subroutine ip_polar_stereo_grid_mod::gdswzd_polar_stereo ( class(ip_polar_stereo_grid), intent(in)  self,
integer, intent(in)  IOPT,
integer, intent(in)  NPTS,
real, intent(in)  FILL,
real, dimension(npts), intent(inout)  XPTS,
real, dimension(npts), intent(inout)  YPTS,
real, dimension(npts), intent(inout)  RLON,
real, dimension(npts), intent(inout)  RLAT,
integer, intent(out)  NRET,
real, dimension(npts), intent(out), optional  CROT,
real, dimension(npts), intent(out), optional  SROT,
real, dimension(npts), intent(out), optional  XLON,
real, dimension(npts), intent(out), optional  XLAT,
real, dimension(npts), intent(out), optional  YLON,
real, dimension(npts), intent(out), optional  YLAT,
real, dimension(npts), intent(out), optional  AREA 
)
private

GDS wizard for polar stereographic azimuthal.

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:

  • (iopt=+1) earth coordinates of selected grid coordinates
  • (iopt=-1) grid coordinates of selected earth coordinates

Works for polar stereographic azimuthal projections.

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, map jacobians, and grid box areas may be returned as well. Routine works for both spherical and elliptical earths with the exception of the map jacobians and grid box areas, which are only computed for spherical earths.

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.

Program History Log

Date Programmer Comments
96-04-10 iredell Initial
97-10-20 iredell include map options
09-05-13 gayno ensure area always positive
2015-01-21 gayno merger of gdswiz05 and gdswzd05. 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. include option for elliptical earths.
2015-07-13 gayno convert to grib 2. replace grib 1 kgds array with grib 2 grid definition template array. rename routine.
2018-07-20 wesley add threading.
Parameters
[in]selfgrid
[in]ioptoption flag
  • 1 to compute earth coords of selected grid coords
  • -1 to compute grid coords of selected earth coords
[in]nptsmaximum number of coordinates
[in]fillfill value to set invalid output data (must be impossible value; suggested value: -9999.)
[in,out]xpts(npts) grid x point coordinates if iopt>0
[in,out]ypts(npts) grid y point coordinates if iopt>0
[in,out]rlon(npts) earth longitudes in degrees e if iopt<0 (acceptable range: -360. to 360.)
[in,out]rlat(npts) earth latitudes in degrees n if iopt<0 (acceptable range: -90. to 90.)
[out]nretnumber of valid points computed
[out]crotoptional (npts) clockwise vector rotation cosines
[out]srotoptional (npts) clockwise vector rotation sines (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
[out]xlonoptional (npts) dx/dlon in 1/degrees
[out]xlatoptional (npts) dx/dlat in 1/degrees
[out]ylonoptional (npts) dy/dlon in 1/degrees
[out]ylatoptional (npts) dy/dlat in 1/degrees
[out]areaoptional (npts) area weights in m**2 (proportional to the square of the map factor)
Author
Iredell
Date
96-04-10

Definition at line 239 of file ip_polar_stereo_grid_mod.F90.

References de2, dxs, dys, e2, h, irot, orient, polar_stereo_grid_area(), polar_stereo_map_jacob(), polar_stereo_vect_rot(), and rerth.

◆ init_grib1()

subroutine ip_polar_stereo_grid_mod::init_grib1 ( class(ip_polar_stereo_grid), intent(inout)  self,
type(grib1_descriptor), intent(in)  g1_desc 
)
private

Initializes a polar stereographic grid given a grib1_descriptor object.

Parameters
[in,out]selfThe grid to initialize
[in]g1_descA grib1_descriptor
Author
Iredell
Date
96-04-10

Definition at line 63 of file ip_polar_stereo_grid_mod.F90.

References ip_constants_mod::dpr, ip_constants_mod::e2_wgs84, and ip_constants_mod::rerth_wgs84.

◆ init_grib2()

subroutine ip_polar_stereo_grid_mod::init_grib2 ( class(ip_polar_stereo_grid), intent(inout)  self,
type(grib2_descriptor), intent(in)  g2_desc 
)
private

Initializes a polar stereographic grid given a grib2_descriptor object.

Parameters
[in,out]selfThe grid to initialize
[in]g2_descA grib2_descriptor
Author
Iredell
Date
96-04-10

Definition at line 128 of file ip_polar_stereo_grid_mod.F90.

◆ polar_stereo_grid_area()

subroutine ip_polar_stereo_grid_mod::polar_stereo_grid_area ( real, intent(in)  RLAT,
real, intent(in)  DR2,
real, intent(out)  AREA 
)
private

Grid box area for polar stereographic grids.

This subprogram computes the grid box area for a polar stereographic azimuthal grid (spherical earth).

Program History Log

Date Programmer Comments
2015-01-21 gayno initial version
2015-09-17 gayno rename as "polar_stereo_grid_area".
2018-07-20 wesley pass in dr2 for threading.
Parameters
[in]rlatlatitude of grid point in degrees (real)
[in]dr2squared distance from pole (real)
[out]areaarea weights in m**2 (real)
Author
Gayno
Date
2015-01-21

Definition at line 563 of file ip_polar_stereo_grid_mod.F90.

References de2, dxs, dys, and rerth.

Referenced by gdswzd_polar_stereo().

◆ polar_stereo_map_jacob()

subroutine ip_polar_stereo_grid_mod::polar_stereo_map_jacob ( real, intent(in)  RLON,
real, intent(in)  RLAT,
real, intent(in)  DR2,
real, intent(out)  XLON,
real, intent(out)  XLAT,
real, intent(out)  YLON,
real, intent(out)  YLAT 
)
private

Map jacobians for polar stereographic grids.

This subprogram computes the map jacobians for a polar stereographic azimuthal grid (spherical earth).

Program History Log

Date Programmer Comments
2015-01-21 gayno initial version
2015-09-17 gayno rename as "polar_stereo_map_jacob"
2018-07-20 wesley pass in dr2 for threading.
Parameters
[in]rlonlongitude in degrees (real)
[in]rlatlatitude in degrees (real)
[in]dr2squared distance from pole (real)
[out]xlondx/dlon in 1/degrees (real)
[out]xlatdx/dlat in 1/degrees (real)
[out]ylondy/dlon in 1/degrees (real)
[out]ylatdy/dlat in 1/degrees (real)
Author
Gayno
Date
2015-01-21

Definition at line 520 of file ip_polar_stereo_grid_mod.F90.

References de2, dxs, dys, h, and orient.

Referenced by gdswzd_polar_stereo().

◆ polar_stereo_vect_rot()

subroutine ip_polar_stereo_grid_mod::polar_stereo_vect_rot ( real, intent(in)  RLON,
real, intent(out)  CROT,
real, intent(out)  SROT 
)
private

Vector rotation fields for polar stereographic grids.

This subprogram computes the vector rotation sines and cosines for a polar stereographic azimuthal grid.

Program History Log

Date Programmer Comments
2015-01-21 gayno initial version
2015-09-17 gayno rename as "polar_stereo_vect_rot"
Parameters
[in]rlongrid point longitude in degrees (real)
[in]crotclockwise vector rotation cosines (real)
[in]srotclockwise vector rotation sines (real) (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
Author
Gayno
Date
2015-01-21

Definition at line 482 of file ip_polar_stereo_grid_mod.F90.

References h, irot, and orient.

Referenced by gdswzd_polar_stereo().

Variable Documentation

◆ de2

real ip_polar_stereo_grid_mod::de2
private

Square of DE.

Definition at line 45 of file ip_polar_stereo_grid_mod.F90.

Referenced by gdswzd_polar_stereo(), polar_stereo_grid_area(), and polar_stereo_map_jacob().

◆ dxs

real ip_polar_stereo_grid_mod::dxs
private

Local copy of dxs.

Definition at line 46 of file ip_polar_stereo_grid_mod.F90.

Referenced by gdswzd_polar_stereo(), polar_stereo_grid_area(), and polar_stereo_map_jacob().

◆ dys

real ip_polar_stereo_grid_mod::dys
private

Local copy of dys.

Definition at line 47 of file ip_polar_stereo_grid_mod.F90.

Referenced by gdswzd_polar_stereo(), polar_stereo_grid_area(), and polar_stereo_map_jacob().

◆ e2

real ip_polar_stereo_grid_mod::e2
private

Eccentricity squared.

Definition at line 48 of file ip_polar_stereo_grid_mod.F90.

Referenced by gdswzd_polar_stereo().

◆ h

real ip_polar_stereo_grid_mod::h
private

Local copy of h.

Definition at line 50 of file ip_polar_stereo_grid_mod.F90.

Referenced by gdswzd_polar_stereo(), polar_stereo_map_jacob(), and polar_stereo_vect_rot().

◆ irot

integer ip_polar_stereo_grid_mod::irot
private

Local copy of irot.

Definition at line 44 of file ip_polar_stereo_grid_mod.F90.

Referenced by gdswzd_polar_stereo(), and polar_stereo_vect_rot().

◆ orient

real ip_polar_stereo_grid_mod::orient
private

Local copy of orient.

Definition at line 51 of file ip_polar_stereo_grid_mod.F90.

Referenced by gdswzd_polar_stereo(), polar_stereo_map_jacob(), and polar_stereo_vect_rot().

◆ rerth

real ip_polar_stereo_grid_mod::rerth
private

Radius of the Earth.

Definition at line 49 of file ip_polar_stereo_grid_mod.F90.

Referenced by gdswzd_polar_stereo(), and polar_stereo_grid_area().