[ncl-talk] Question on interpolation

Dennis Shea shea at ucar.edu
Tue Sep 3 18:21:36 MDT 2019


Sorry if what I wrote was not clear.

A sketch of a script follows.
===========================
  dirHWRF  = "..."
  filHWRF   = "..."
  pthHWRF = dirHWRF + filHWRF
  nfil    = *dimsizes*(filHWRF)

; Trick to have NCL do book-keeping of 'time'.
; Have NCL's addfiles create a 'time' array that spans all times
; It is assumed that there is one time step per file
;;setfileoption("grb","SingleElementDimensions",(/"Initial_time",
"Forecast_time"/))
  *setfileoption*
<https://www.ncl.ucar.edu/Document/Functions/Built-in/setfileoption.shtml>("grb","SingleElementDimensions",
 "Initial_time")

  fadd    = *addfiles*
<https://www.ncl.ucar.edu/Document/Functions/Built-in/addfiles.shtml>
(pthHWRF,"r")
  time    = fadd*[:]*->initial_time0_hours   ; times acriss all files
  time!0  = "time"
  ntim    = *dimsizes*(time)
  ymdh    = c*d_calendar*(time,-3)
  ymdh!0  = "time"
  print(time+"  "+ymdh)
  print("------------")

  if (ntim.ne.nfil) then
      print("nim="+ntim+" : nfil="+nfil: should be equal)
      exit
  end if

  plev    = *ff[0]*->lv_ISBL0   ; get from 1st file [invariant]
  plev!0  = "plev"
  print(plev)
  delete(fadd)

;---Sonde locations

  SLAT = (/lat1, lat2, lat3/)   ; one or more Sonde lat
  SLON = (/lon1, lon2, lon3/)
  npts = dimsizes(SLAT)

  xsonde = new((/ntim,klev,npts/),"float", -1e10)   ; allocate space for
variable
;;ysonde = new((/ntim,klev,npts/),"float", -1e10)
;;zsonde = new((/ntim,klev,npts/),"float", -1e10)

  do nf=0,nfil-1    one time step per file; lat_0, lon_0 coordinates may
change
       f = *addfile*(pthHWRF*(nf)*,"r")
       x = f->X        ; X( initial_time0_hours0, lv_ISBL0, lat_0, lon_0 )
       xsonde(nf,:,:)) =  *linint2_points_Wrap*
<https://www.ncl.ucar.edu/Document/Functions/Contributed/linint2_points_Wrap.shtml>(x&lon_0,
x&lat_0, x, False,SLAT,SLON 0)
  end do

  xsonde!0       = "time"
  xsonde&time =  time
  xsonde!1       = "plev"
  xsonde&plev =  plev
  xsonde!2       = "sonde"

  *printVarSummary*(xsonde)


On Tue, Sep 3, 2019 at 3:51 PM Andrew Kren - NOAA Affiliate <
andrew.kren at noaa.gov> wrote:

> So what you are saying is that I should interpolate to the location first.
> Then after I do that, I can interpolate multiple locations to the time?
> This is how I understand it given the limitation.
>
> Thanks,
>
> On Tue, Sep 3, 2019 at 2:59 PM Dennis Shea <shea at ucar.edu> wrote:
>
>> I assume you are processing multiple GRIB2 files using *addfiles.*
>> This is appropriate if the same grid is applicable to all files.
>> *addfiles *will concatenate all the file times. You only need to use one
>> grid.
>> ---
>> In the case of the HWRF grids (possibly) changing at each time step, you
>> will have to step through the files manually. This means you will have to
>> do some book-keeping.
>>
>>   dirHWRF = "..."
>>   filHWRF  = "..."
>>   pthHWRF = dirHWRF + filHWRF
>>   nfil = dimsizes(filHWRF)
>>
>>   SLAT =    ; one or more Sonde lat
>>   SLON =
>>
>>   do nf=0,nfil-1
>>        f = addfile(pthHWRF(nf),"r")
>>        x = f->X
>>        xsonde(nf.....) =  *linint2_points*(x&lon_0, x&lat_0,
>> False,SLAT,SLON 0)
>>
>>      end do
>>
>> Good Luck
>>
>> On Tue, Sep 3, 2019 at 1:19 PM Andrew Kren - NOAA Affiliate via ncl-talk <
>> ncl-talk at ucar.edu> wrote:
>>
>>> Dear ncl-talk,
>>>
>>> I am working to interpolate a high-resolution model dataset (HWRF) to
>>> the time and location of a dropsonde location. In the past for other
>>> datasets, I have used linint1_n and linint2_points to interpolate in time
>>> and space to the dropsonde position.
>>>
>>> However, HWRF, which is 6-hour analysis output, has a varying grid every
>>> 6 hours as the domain "moves" with the tropical cyclone. Hence, the lat/lon
>>> locations are not fixed in time. They have the same dimension sizes but the
>>> points vary depending on the cyclone center. This led to an error in my
>>> linint2_points function:
>>>
>>> fatal:linint2_points: If xi is not one-dimensional, then it must have
>>> one less dimension than fi
>>>
>>>
>>>
>>> I know why this is happening. I read in two HWRF files around the
>>> dropsonde time to do the interpolation. I used "join" to join the files and
>>> my lat/lon arrays are (time, lat) and (time, lon). So I get the error.
>>>
>>>
>>> But my question is how best to proceed? This is technically not an
>>> unstructured grid, but could be considered one. Should I use ESMF?
>>>
>>>
>>> Thanks,
>>>
>>> --
>>> Andrew Kren
>>> Assistant Scientist
>>> University of Miami CIMAS - NOAA/AOML
>>> Global Observing Systems Analysis (GOSA) Group
>>> NOAA/AOML Quantitative Observing System Assessment Program (QOSAP)
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>
>>
>
> --
> Andrew Kren
> Assistant Scientist
> University of Miami CIMAS - NOAA/AOML
> Global Observing Systems Analysis (GOSA) Group
> NOAA/AOML Quantitative Observing System Assessment Program (QOSAP)
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20190903/f5afbabc/attachment.html>


More information about the ncl-talk mailing list