NCEPLIBS-ip  4.1.0
gdswzd_c.F90
Go to the documentation of this file.
1 
4 
8  use gdswzd_mod
9  implicit none
10 
11 contains
12 
173  SUBROUTINE gdswzd_c(IGDTNUM,IGDTMPL,IGDTLEN,IOPT,NPTS,FILL, &
174  XPTS,YPTS,RLON,RLAT,NRET,CROT,SROT, &
175  XLON,XLAT,YLON,YLAT,AREA) bind(C, NAME='gdswzd')
176  use, INTRINSIC :: iso_c_binding
177 
178  USE gdswzd_mod
179 
180  IMPLICIT NONE
181 
182  INTEGER(KIND=C_INT), INTENT(IN) :: IGDTMPL(IGDTLEN)
183  INTEGER(KIND=C_INT), VALUE, INTENT(IN) :: IGDTNUM, IGDTLEN
184  INTEGER(KIND=C_INT), VALUE, INTENT(IN) :: IOPT, NPTS
185  INTEGER(KIND=C_INT), INTENT(OUT) :: NRET
186 
187 #if (LSIZE==D)
188  REAL(KIND=c_double), VALUE, INTENT(IN) :: fill
189  REAL(KIND=c_double), INTENT(INOUT) :: xpts(npts),ypts(npts),rlon(npts),rlat(npts)
190  REAL(KIND=c_double), INTENT(OUT) :: crot(npts),srot(npts),xlon(npts),xlat(npts)
191  REAL(KIND=c_double), INTENT(OUT) :: ylon(npts),ylat(npts),area(npts)
192 #else
193  REAL(KIND=c_float), VALUE, INTENT(IN) :: fill
194  REAL(KIND=c_float), INTENT(INOUT) :: xpts(npts),ypts(npts),rlon(npts),rlat(npts)
195  REAL(KIND=c_float), INTENT(OUT) :: crot(npts),srot(npts),xlon(npts),xlat(npts)
196  REAL(KIND=c_float), INTENT(OUT) :: ylon(npts),ylat(npts),area(npts)
197 #endif
198 
199  CALL gdswzd(igdtnum,igdtmpl,igdtlen,iopt,npts,fill, &
200  xpts,ypts,rlon,rlat,nret, &
201  crot,srot,xlon,xlat,ylon,ylat,area)
202 
203  END SUBROUTINE gdswzd_c
204 
252  SUBROUTINE gdswzd_c_grib1(KGDS,IOPT,NPTS,FILL,XPTS,YPTS,RLON,RLAT,NRET, &
253  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA) bind(C, NAME='gdswzd_grib1')
254  use, INTRINSIC :: iso_c_binding
255 
256  USE gdswzd_mod
257 
258  IMPLICIT NONE
259 
260  INTEGER(KIND=C_INT), INTENT(IN) :: KGDS(200)
261  INTEGER(KIND=C_INT), VALUE, INTENT(IN) :: IOPT
262  INTEGER(KIND=C_INT), VALUE, INTENT(IN) :: NPTS
263  INTEGER(KIND=C_INT), INTENT(OUT) :: NRET
264 
265 #if (LSIZE==D)
266  REAL(KIND=c_double), VALUE, INTENT(IN) :: fill
267  REAL(KIND=c_double), INTENT(INOUT) :: xpts(npts),ypts(npts),rlon(npts),rlat(npts)
268  REAL(KIND=c_double), INTENT(OUT) :: crot(npts),srot(npts),xlon(npts),xlat(npts)
269  REAL(KIND=c_double), INTENT(OUT) :: ylon(npts),ylat(npts),area(npts)
270 #else
271  REAL(KIND=c_float), VALUE, INTENT(IN) :: fill
272  REAL(KIND=c_float), INTENT(INOUT) :: xpts(npts),ypts(npts),rlon(npts),rlat(npts)
273  REAL(KIND=c_float), INTENT(OUT) :: crot(npts),srot(npts),xlon(npts),xlat(npts)
274  REAL(KIND=c_float), INTENT(OUT) :: ylon(npts),ylat(npts),area(npts)
275 #endif
276 
277  CALL gdswzd(kgds,iopt,npts,fill,xpts,ypts,rlon,rlat,nret, &
278  crot,srot,xlon,xlat,ylon,ylat,area)
279 
280  END SUBROUTINE gdswzd_c_grib1
281 
282 end module gdswzd_c_mod
Module that contains C wrapper for routine gdswzd().
Definition: gdswzd_c.F90:7
subroutine gdswzd_c_grib1(KGDS, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
C wrapper for routine gdswzd.
Definition: gdswzd_c.F90:254
subroutine gdswzd_c(IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
C wrapper for routine gdswzd().
Definition: gdswzd_c.F90:176
Driver module for gdswzd routines.
Definition: gdswzd_mod.F90:25