106 XPTS,YPTS,RLON,RLAT,NRET, &
107 CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
109 class(
ip_grid),
intent(in) :: grid
110 INTEGER,
INTENT(IN ) :: IOPT, NPTS
111 INTEGER,
INTENT( OUT) :: NRET
113 REAL,
INTENT(IN ) :: FILL
114 REAL,
INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
115 REAL,
INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
116 REAL,
OPTIONAL,
INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
117 REAL,
OPTIONAL,
INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
118 REAL,
OPTIONAL,
INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
120 INTEGER :: IS1, IM, JM, NM, KSCAN, NSCAN, N
121 INTEGER :: IOPF, NN, I, J
127 if(grid%descriptor%grid_num.eq.-1)
then
146 type is(ip_rot_equid_cylind_egrid)
156 i=(n-im*(j-1))*2-mod(j+kscan,2)
161 IF (mod(jm,2)==0.AND.mod(i,2)==0.AND.kscan==0) j = j + 1
162 IF (mod(jm,2)==0.AND.mod(i,2)==0.AND.kscan==1) j = j - 1
164 xpts(n)=is1+(i-(j-kscan))/2
165 ypts(n)=(i+(j-kscan))/2
167 type is(ip_station_points_grid)
195 call grid%gdswzd(iopf,npts,fill, &
196 xpts,ypts,rlon,rlat,nret, &
197 crot,srot,xlon,xlat,ylon,ylat,area)
279 XPTS,YPTS,RLON,RLAT,NRET, &
280 CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
284 INTEGER,
INTENT(IN ) :: IGDTNUM, IGDTLEN
285 INTEGER,
INTENT(IN ) :: IGDTMPL(IGDTLEN)
286 INTEGER,
INTENT(IN ) :: IOPT, NPTS
287 INTEGER,
INTENT( OUT) :: NRET
289 REAL,
INTENT(IN ) :: FILL
290 REAL,
INTENT(INOUT) :: RLON, RLAT
291 REAL,
INTENT(INOUT) :: XPTS, YPTS
292 REAL,
OPTIONAL,
INTENT( OUT) :: CROT, SROT
293 REAL,
OPTIONAL,
INTENT( OUT) :: XLON, XLAT
294 REAL,
OPTIONAL,
INTENT( OUT) :: YLON, YLAT, AREA
296 REAL :: RLONA(1),RLATA(1)
297 REAL :: XPTSA(1),YPTSA(1)
298 REAL :: CROTA(1),SROTA(1)
299 REAL :: XLONA(1),XLATA(1)
300 REAL :: YLONA(1),YLATA(1),AREAA(1)
311 IF (.NOT.
PRESENT(crot) .AND. &
312 .NOT.
PRESENT(srot) .AND. &
313 .NOT.
PRESENT(xlon) .AND. &
314 .NOT.
PRESENT(xlat) .AND. &
315 .NOT.
PRESENT(ylon) .AND. &
316 .NOT.
PRESENT(ylat) .AND. &
317 .NOT.
PRESENT(area) )
THEN
320 xptsa,yptsa,rlona,rlata,nret)
331 IF (
PRESENT(crot) .AND. &
332 PRESENT(srot) .AND. &
333 .NOT.
PRESENT(xlon) .AND. &
334 .NOT.
PRESENT(xlat) .AND. &
335 .NOT.
PRESENT(ylon) .AND. &
336 .NOT.
PRESENT(ylat) .AND. &
337 .NOT.
PRESENT(area) )
THEN
340 xptsa,yptsa,rlona,rlata,nret,crota,srota)
353 IF (
PRESENT(crot) .AND. &
354 PRESENT(srot) .AND. &
355 PRESENT(xlon) .AND. &
356 PRESENT(xlat) .AND. &
357 PRESENT(ylon) .AND. &
358 PRESENT(ylat) .AND. &
362 xptsa,yptsa,rlona,rlata,nret, &
363 crota,srota,xlona,xlata,ylona,ylata,areaa)
460 XPTS,YPTS,RLON,RLAT,NRET, &
461 CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
465 INTEGER,
INTENT(IN ) :: IGDTNUM, IGDTLEN
466 INTEGER,
INTENT(IN ) :: IGDTMPL(IGDTLEN)
467 INTEGER,
INTENT(IN ) :: IOPT, NPTS
468 INTEGER,
INTENT( OUT) :: NRET
470 REAL,
INTENT(IN ) :: FILL
471 REAL,
INTENT(INOUT) :: RLON(:,:),RLAT(:,:)
472 REAL,
INTENT(INOUT) :: XPTS(:,:),YPTS(:,:)
473 REAL,
OPTIONAL,
INTENT( OUT) :: CROT(:,:),SROT(:,:)
474 REAL,
OPTIONAL,
INTENT( OUT) :: XLON(:,:),XLAT(:,:)
475 REAL,
OPTIONAL,
INTENT( OUT) :: YLON(:,:),YLAT(:,:),AREA(:,:)
478 xpts,ypts,rlon,rlat,nret, &
479 crot,srot,xlon,xlat,ylon,ylat,area)
666 XPTS,YPTS,RLON,RLAT,NRET, &
667 CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
668 INTEGER,
INTENT(IN ) :: IGDTNUM, IGDTLEN
669 INTEGER,
INTENT(IN ) :: IGDTMPL(IGDTLEN)
670 INTEGER,
INTENT(IN ) :: IOPT, NPTS
671 INTEGER,
INTENT( OUT) :: NRET
673 REAL,
INTENT(IN ) :: FILL
674 REAL,
INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
675 REAL,
INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
676 REAL,
OPTIONAL,
INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
677 REAL,
OPTIONAL,
INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
678 REAL,
OPTIONAL,
INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
681 class(
ip_grid),
allocatable :: grid
687 xpts,ypts,rlon,rlat,nret, &
688 crot,srot,xlon,xlat,ylon,ylat,area)
758 SUBROUTINE gdswzd_grib1(KGDS,IOPT,NPTS,FILL,XPTS,YPTS,RLON,RLAT,NRET, &
759 CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
760 INTEGER,
INTENT(IN ) :: IOPT, KGDS(200), NPTS
761 INTEGER,
INTENT( OUT) :: NRET
763 REAL,
INTENT(IN ) :: FILL
764 REAL,
INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
765 REAL,
INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
766 REAL,
OPTIONAL,
INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
767 REAL,
OPTIONAL,
INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
768 REAL,
OPTIONAL,
INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
772 class(
ip_grid),
allocatable :: grid
778 xpts,ypts,rlon,rlat,nret, &
779 crot,srot,xlon,xlat,ylon,ylat,area)
851 CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
854 INTEGER,
INTENT(IN ) :: IOPT, KGDS(200), NPTS
855 INTEGER,
INTENT( OUT) :: NRET
857 REAL,
INTENT(IN ) :: FILL
858 REAL,
INTENT(INOUT) :: RLON(:,:),RLAT(:,:)
859 REAL,
INTENT(INOUT) :: XPTS(:,:),YPTS(:,:)
860 REAL,
OPTIONAL,
INTENT( OUT) :: CROT(:,:),SROT(:,:)
861 REAL,
OPTIONAL,
INTENT( OUT) :: XLON(:,:),XLAT(:,:)
862 REAL,
OPTIONAL,
INTENT( OUT) :: YLON(:,:),YLAT(:,:),AREA(:,:)
866 class(
ip_grid),
allocatable :: grid
872 xpts,ypts,rlon,rlat,nret, &
873 crot,srot,xlon,xlat,ylon,ylat,area)
Driver module for gdswzd routines.
subroutine, public gdswzd_grib1(KGDS, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
Decodes the grib grid description section and returns one of the following (for 1-d arrays):
subroutine gdswzd_grid(grid, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
Returns one of the following for a grid object:
subroutine, public gdswzd_2d_array_grib1(KGDS, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
Decodes the grib grid description section and returns one of the following (for 2-d arrays):
subroutine gdswzd_scalar(IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
Decodes the grib 2 grid definition template and returns one of the following (for scalars):
subroutine gdswzd_1d_array(IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
Decodes the grib 2 grid definition template and returns one of the following:
subroutine gdswzd_2d_array(IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
Decodes the grib 2 grid definition template and returns one of the following (for 2d-arrays):
Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
Routines for creating an ip_grid given a Grib descriptor.
Re-export the individual grids.
Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
Grib-2 descriptor containing a grib2 GDT represented by an integer array.
Abstract grid that holds fields and methods common to all grids.