NCEPLIBS-ip  5.0.0
ip_mercator_grid_mod Module Reference

GDS wizard for mercator cylindrical. More...

Data Types

type  ip_mercator_grid
 

Functions/Subroutines

subroutine gdswzd_mercator (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
 GDS wizard for mercator cylindrical. More...
 
subroutine init_grib1 (self, g1_desc)
 Initializes a mercator grid given a grib1_descriptor object. More...
 
subroutine init_grib2 (self, g2_desc)
 Init GRIB2. More...
 
subroutine mercator_grid_area (RLAT, AREA)
 Grid box area for mercator cylindrical grids. More...
 
subroutine mercator_map_jacob (RLAT, XLON, XLAT, YLON, YLAT)
 Map jacobians for mercator cylindrical grids. More...
 
subroutine mercator_vect_rot (CROT, SROT)
 Vector rotation fields for mercator cylindrical grids. More...
 

Variables

real dlon
 Longitudinal direction grid length. More...
 
real dphi
 Latitudinal direction grid length. More...
 
real rerth
 Radius of the Earth. More...
 

Detailed Description

GDS wizard for mercator cylindrical.

Octet numbers refer to GRIB2 - GRID DEFINITION TEMPLATE 3.10 - Mercator.

Author
Iredell
Date
96-04-10

Function/Subroutine Documentation

◆ gdswzd_mercator()

subroutine ip_mercator_grid_mod::gdswzd_mercator ( class(ip_mercator_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 mercator cylindrical.

This routine 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 mercator cylindrical 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 the grid box areas may be returned. 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
96-10-01 iredell protected against unresolvable points
97-10-20 iredell include map options
2015-01-21 gayno merger of gdswiz01() and gdswzd01(). 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-07-13 gayno convert to grib 2. replace grib 1 kgds array with grib 2 grid definition template array. Rename.
2018-07-20 wesley add threads.
Parameters
[in]selfgrid descriptor.
[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 198 of file ip_mercator_grid_mod.F90.

References dlon, dphi, mercator_grid_area(), mercator_map_jacob(), mercator_vect_rot(), and rerth.

◆ init_grib1()

subroutine ip_mercator_grid_mod::init_grib1 ( class(ip_mercator_grid), intent(inout)  self,
type(grib1_descriptor), intent(in)  g1_desc 
)
private

Initializes a mercator grid given a grib1_descriptor object.

Parameters
[in,out]selfip_mercator_grid object.
[in]g1_descGRIB1 descriptor.
Author
Iredell
Date
96-04-10

Definition at line 52 of file ip_mercator_grid_mod.F90.

References ip_constants_mod::dpr.

◆ init_grib2()

subroutine ip_mercator_grid_mod::init_grib2 ( class(ip_mercator_grid), intent(inout)  self,
type(grib2_descriptor), intent(in)  g2_desc 
)
private

Init GRIB2.

Parameters
[in,out]selfip_mercator_grid object.
[in]g2_descGRIB2 descriptor.
Author
Iredell
Date
96-04-10

Definition at line 100 of file ip_mercator_grid_mod.F90.

◆ mercator_grid_area()

subroutine ip_mercator_grid_mod::mercator_grid_area ( real, intent(in)  RLAT,
real, intent(out)  AREA 
)
private

Grid box area for mercator cylindrical grids.

This subprogram computes the grid box area for a mercator cylindrical grid.

Program History Log

Date Programmer Comments
2015-01-21 gayno initial version
2015-09-17 gayno rename as "mercator_grid_area"
Parameters
[in]rlatlatitude of grid point in degrees (real)
[out]areaarea weights in m**2 (real)
Author
Gayno
Date
2015-01-21

Definition at line 387 of file ip_mercator_grid_mod.F90.

References dlon, dphi, and rerth.

Referenced by gdswzd_mercator().

◆ mercator_map_jacob()

subroutine ip_mercator_grid_mod::mercator_map_jacob ( real, intent(in)  RLAT,
real, intent(out)  XLON,
real, intent(out)  XLAT,
real, intent(out)  YLON,
real, intent(out)  YLAT 
)
private

Map jacobians for mercator cylindrical grids.

This subprogram computes the map jacobians for a mercator cylindrical grid.

Program History Log

Date Programmer Comments
2015-01-21 gayno initial version
2015-09-17 gayno rename as "mercator_map_jacob"
Parameters
[in]rlatlatitude in degrees (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 359 of file ip_mercator_grid_mod.F90.

References dlon, and dphi.

Referenced by gdswzd_mercator().

◆ mercator_vect_rot()

subroutine ip_mercator_grid_mod::mercator_vect_rot ( real, intent(out)  CROT,
real, intent(out)  SROT 
)
private

Vector rotation fields for mercator cylindrical grids.

This subprogram computes the vector rotation sines and cosines for a mercator cylindrical grid.

Program History Log

Date Programmer Comments
2015-01-21 gayno initial version
2015-09-17 gayno rename as "mercator_vect_rot".
Parameters
[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 331 of file ip_mercator_grid_mod.F90.

Referenced by gdswzd_mercator().

Variable Documentation

◆ dlon

real ip_mercator_grid_mod::dlon
private

Longitudinal direction grid length.

Definition at line 40 of file ip_mercator_grid_mod.F90.

Referenced by gdswzd_mercator(), mercator_grid_area(), and mercator_map_jacob().

◆ dphi

real ip_mercator_grid_mod::dphi
private

Latitudinal direction grid length.

Definition at line 41 of file ip_mercator_grid_mod.F90.

Referenced by gdswzd_mercator(), mercator_grid_area(), and mercator_map_jacob().

◆ rerth

real ip_mercator_grid_mod::rerth
private

Radius of the Earth.

Definition at line 42 of file ip_mercator_grid_mod.F90.

Referenced by gdswzd_mercator(), and mercator_grid_area().