# [ncl-talk] Calculating Geostrophic Winds in the WRF using NCL

Dennis Shea shea at ucar.edu
Tue Aug 12 08:40:21 MDT 2014

```Brian,

wrfhelp is being cc'd. They are the WRF experts and may know how to compute
geostrophic winds.

===

You have obviously put a lot of work into trying to derive geostrophic
winds from WRF variables. Unfortunately, the steps you have used will not
return the results you wish. A few comments:

[0]
The ftp area was 100% full. Thus, your files could not be accommodated. The
IT people have cleaned up the ftp file system. That said, transmitting 9GB
file(s) is not commonly done for ncl-talk related questions. You should use
tools (say, netCDF operators or NCL) to subset the data. For example, only
one time step.
ncks -O -d Time,0 WrfBigFile.nc  WrfLittleFile.nc

[1]
z2geos works *only* for rectilinear grids with variables on isobaric
levels. The documentation has been changed to make this more explicit.

http://www.ncl.ucar.edu/Document/Functions/Built-in/z2geouv.shtml

**Generally,** WRF grids are curvilinear. The following operation does
*not* make make a curvilinear grid and rectilinear grid

lat  = f->XLAT(0,:,0)        ; lat(south_north)
lon  = f->XLONG(0,0,:)    ; lon(west_east)

Yes, lat and lon are one-dimensional BUT they do not represent a
rectilinear grid orientation.
Use of the above lat & lon would be erroneous. You will get numbers but
they are not the correct numbers.

[2]
Using, say, the ESMF regridding to interpolate the WRF curvilinear gridded
data to a rectilinear grid is a possibility *if* working with data on a

[a] Attached is a simple (*untested*) function that will interpolate a WRF
(mass) variable on eta levels to user specified isobaric levels;.

function eta2isop_wrf(fwrf, varName[1]:string, prs_iso[*]:numeric \
,itime:integer, linlog[1]:integer,
opt[1]:logical)
Usage:

plev = (/ 1000,925,850,700,600,500,400,300,250 \   ; integer,
float, double
,  200,150,100,70,50/)
plev!0     = "plev"
plev at units = "hPa"

linlog = 0
itime  = -1
z_iso = eta2isop_wrf(f, "geopotential", plev, itime, linlog, False)

[b] You could now use z2geouv to calculate the geostrophic components

[c] Unfortunately, reinterpolating the components [b] back to the WRF grid
will not yield geostrophic winds.

===

Good Luck

On Mon, Aug 11, 2014 at 8:55 PM, brianjs @iastate.edu <brianjs at iastate.edu>
wrote:

> Good Evening,
>
> I am attempting to calculate both the u and v components of the
> geostrophic winds in the WRF.
>
> The function z2geouv (which calculates both components using the
> geopotential height, as well as the latitude and longitude of gridded data)
> must utilize the geopotential height on a constant pressure surface. WRF
> data however, is on constant eta levels/terrain following coordinates, and
> as such, this function applied to WRF data could only work if data is
> converted to a constant pressure surface from its original eta coordinate
> system.
>
> Attached is the WRF code with issues. I have attempted to calculate the
> geostrophic wind components (ug and vg) by using the z2geouv with a height
> variable that has been interpolated on to a constant pressure coordinate
> (z_const_p). I first attempted to interpolate z_const_p with a geopotential
> height variable that was not terrain following (z_model). When I do this, I
> get realistic values for the geostrophic wind components, but I obviously
> would not get the lower levels (below 1000 generally) to be interpolated. I
> also interpolated z_const_p with an original terrain following geostrophic
> height or geostrophic height above ground level (AGLheight_model), but then
>
> I have also taken a similar approach by calculating the ug and vg
> components separately without using z2geouv, but I am still getting
>
> I wish to implement this routine in order to plot the geostrophic winds on
> maps of constant height (above ground level) hence the ug/vg interpolations
> thereafter to constant height levels
>
> For reference, I sent the used RUC and WRF output to the ncl-talk FTP
> account given their large size. I did get the message "451 Failure writing
> to local file" so I am not sure if they made it over there successfully.
> The wrf file is rather large (approximately 9 GB) so maybe the account
> could not hold it?
>
> I was wondering if someone could guide me to improve this code to get
> geostrophic winds interpolated on constant height fields from an original
> terrain following (eta) coordinate system (i.e. 200-2000 m at 100 m
> intervals), or if someone could assist by making a recommendation for an
> alternate approach?  I have also attached my RUC code for plotting RUC
> Analysis geostrophic winds along with some sample images of what I believe
> the WRF profile should look generally like (as the RUC data is already on
> constant pressure surface).
>
> Any suggestions would be greatly appreciated!
>
> Brian Squitieri
> Iowa State University
>
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20140812/55e862dc/attachment.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: eta2iso_wrf.ncl
Type: application/octet-stream
Size: 1638 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20140812/55e862dc/attachment.obj
```