NCL Home > Documentation > Functions > WRF, Interpolation


Interpolates ARW WRF model data vertically or horizontally (deprecated).


load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"      ; These two libraries are automatically
load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"    ; loaded from NCL V6.4.0 onward.
                                                              ; No need for user to explicitly load.

	function wrf_user_intrp3d (
		var3d      : numeric,  
		vert       : numeric,  
		plot_type  : string,   
		loc    [*] : numeric,  ; up to four values
		angle      : numeric,  
		res    [1] : logical   

	return_val  :  numeric



Data on model levels that will be interpolated. The rightmost dimensions of this array is nz x ny x nx.


Array of vertical coordinates for var3d. This must either be pressure/height. Dimensions must be the same as those of var3d.

If vert is pressure, the units may be either hPa or Pa. If vert is height, then the units of the field must be in m.


Plot orientation. Use "h" for horizontal plots, and "v" for vertical cross sections.


Interpolation information. Can contain up to four scalar values:

  • Horizontal plots

    Use a single value to indicate the level or height to interpolate to, for example, 500 for 500hPa or 2000 for 2km.

  • Cross sections

    Use two values if plotting a plane through a given point on the model domain. The two values represent the x/y location through which the plane will pass. The angle argument will be required in this case.

    Use four values if plotting from point A to point B. The four values represent the x/y locations of points A and B. The values should be ordered as (xstart,xend,ystart,yend).


Only valid for cross sections where a plane will be plotted through a given point on the model domain. 0.0 represents a S-N cross section and 90.0 a W-E cross section.


Set to True if plotting a cross section from point A to point B; otherwise set to False.

Return value

Data interpolated to a horizontal or vertical plane.


This function is deprecated in NCL version 6.6.0. Use wrf_user_interp_level for horizontal interpolations and wrf_user_vert_cross for vertical cross sections.

This function interpolates a three-dimensional variable to either a horizontal or vertical plane. The script can interpolate to either height or pressure coordinates.

Note: in NCL V6.5.0 a bug was fixed in this routine and in wrf_user_intrp2d in which the 0th grid point was not being included when setting up the output domain, causing the output array to be missing a grid point in the rightmost dimension.

For vertical cross sections, the vertical levels are automatically chosen to be at approximately 1% increments from minimum height to maximum height (or maximum pressure to minimum pressure).

Note: in NCL V6.0.0, the default missing value was changed from -999999 to the default missing for an NCL float or double (9.96921e+36 or 9.969209968386869e+36, depending on output type).

wrf_user_intrp3d is part of a library of functions and procedures in WRFUserARW.ncl written to help users plot ARW WRF model data.

See Also

wrf_user_interp_level, wrf_user_vert_cross, wrf_user_interp_line


Example 1

  a = addfile("","r")

  time = 1
  tc = wrf_user_getvar(a,"tc",time)        ; T [C]
  rh = wrf_user_getvar(a,"rh",time)        ; relative humidity
  z  = wrf_user_getvar(a, "z",time)        ; grid point height
  p  = wrf_user_getvar(a, "pressure",time) ; total pressure

  dimsrh = dimsizes(rh)

  plane = (/ dimsrh(2)/2, dimsrh(1)/2 /)    ; pivot point is center of domain

  ; Extract data on a N-S cross section that runs through "plane"
  ; Interpolate to height
  rh_plane1 = wrf_user_intrp3d(rh,z,"v",plane,0.0,False)
  tc_plane1 = wrf_user_intrp3d(tc,z,"v",plane,0.0,False)

  ; Extract data on a W-E cross section that runs through "plane" 
  ; Interpolate to pressure
  rh_plane2 = wrf_user_intrp3d(rh,p,"v",plane,90.0,False)
  tc_plane2 = wrf_user_intrp3d(tc,p,"v",plane,90.0,False)
Example 2

  a = addfile("","r")

  time = 1
  tc = wrf_user_getvar(a,"tc",time)   ; T [C]
  z  = wrf_user_getvar(a,"z",time)    ; z on mass points

  plane = (/  40,81 , 259,81  /) ; approx. START x;y and END x;y point

  ; Extract cross section from point A to point B, as defined in "plane",
  ; and vertically interpolate to height coordinates ("z")
  tc_plane = wrf_user_intrp3d(tc,z,"v",plane,0.,True)
Example 3

  a = addfile("","r")

  time = 1
  tc = wrf_user_getvar(a,"tc",time)       ; T [C]
  p  = wrf_user_getvar(a,"pressure",time) ; total pressure

  ; Horizontally interpolate to pressure coordinates ("p")
  pressure = 850.   ; 850 hPa
  tc_plane = wrf_user_intrp3d(tc,p,"h",pressure,0.,False)
You can see some other example scripts and their resultant images at: