gdxyvval

FORTRAN

integer ier, gdxyvval
ier = gdxyvval(gdid, uuvals, vvvals, uuin, vvin, x, y, n)
integer gdid,n
real uuvals(n), vvvals(n), uuin(*), vvin(*), x(n), y(n)

C

int c_gdxyvval(int gdid, float *uuvals, float *vvvals, float *uuin, float *vvin, 
               float *x, float *y, int n)

Routine description

gdllvval does a bi-dimensional vector interpolation on the values contained in uuin and vvin, themselves defined on grid gdid, at selected x/y points. Interpolated values are returned in uuvals and vvvals, in grid coordinates consistent with grid gdid. The degree of interpolation is the one currently defined by the last call to ezsetopt (set to cubic (3) by default).

 

Description of parameters

gdid

a valid grid identifier (returned by ezqkdef or ezgdef) that will be used as the source (input) grid.

uuvals, vvals

Output interpolated winds, in grid coordinates based on gdid. There is 1:1 relationship with uuvals,vvals, x and y; that is, interpolated values at point x(1), y(1) are uuvals(1), vvals(1).

uuin, vvin

Input (source) winds. uuin and vvin are assumed to have the dimensions referred by gdid (the input grid).

x

Stream of grid positions

y

Stream of grid positions

n

Number of points

?

Sample FORTRAN code :

We want to interpolate data from a GEM grid to selected x-y points. Assume necessary memory space has been allocated.

      datev = -1
      etiket = '        '
      typvar = ' '
      nomuu = 'UU'
      nomvv = 'VV'
      
      ip1 = 500
      ip2 = 0
      ip3 = -1
      iun = 13
      
***   read fld info and data
      key = FSTINF(iun, NI, NJ, NK, datev, etiket, ip1, ip2, ip3, typvar,
     $     nomuu) 
      ier = FSTPRM(uukey, DATEO, DEET, NPAS, NI, NJ, NK, NBITS, DATYP, IP1,
     $     IP2, IP3, TYPVAR, NOMVAR, ETIKET, GRTYP, IG1, IG2, IG3,
     $     IG4, SWA, LNG, DLTF, UBC, EX1, EX2, EX3)
     
      ier = FSTLUK(uugem, key, NI, NJ, NK)
      key = FSTINF(iun, NI, NJ, NK, datev, etiket, ip1, ip2, ip3, typvar,
     $     nomvar) 
      ier = FSTPRM(vvkey, DATEO, DEET, NPAS, NI, NJ, NK, NBITS, DATYP, IP1,
     $     IP2, IP3, TYPVAR, NOMVAR, ETIKET, GRTYP, IG1, IG2, IG3,
     $     IG4, SWA, LNG, DLTF, UBC, EX1, EX2, EX3)
      ier = FSTLUK(vvgem, key, NI, NJ, NK)
      
***   Define input grid         
      
      gdgem = ezqkdef(nigem,njgem ,'Z',ig1, ig2, ig3, ig4, iun)
***   Define latlon values
      lat(1)  =   45.73
      lon(1)  =  -73.75
      lat(2)  =   43.40
      lon(2)  =  -79.38
      lat(3)  =   49.18
      lon(3)  = -123.18
***   Convert the latlon values to x-y coordinates 
      ier = gdxyfll(gdgem, x, y, lat, lon, 3)
***   Do vector interpolation, returned values are in x,y coordinates,
***   uval is x-component (east-west) of the wind
***   vval is y-component (north-south) of the wind
      call gdxyvval(gdgem, uuvals, vvals, uugem, vvgem, x, y, 3)

      do i=1,3
         print *, x(i), y(i), uval(i),vval(i)
      enddo

 

Go to the list of functions, or the general index.