[ncl-talk] WRF streamlines in ncl
Zilore Mumba
zmumba at gmail.com
Thu Oct 6 14:03:52 MDT 2022
I am wondering if there is anybody drawing streamlines with WRF output. My
search has yielded nothing and my attempt has been disastrous.
I am having two problems:
1. how do I attach lon/lat units to the u, v components
(check_for_y_lat_coord: Warning: Data either does not contain
a valid latitude coordinate array or doesn't contain one at all... errors).
See code pasted below.
2. The streamlines are drawn, but in the wrong place over a global map.
If there is anyone who is able to draw streamlines, I will appreciate to
learn from them.
my doe so far, below
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
begin
;
; Read in data.
;;;;;;;;;;;;;;
;
f =
addfile("/home/zmumba/DA/OUTPUT/2022092800/noda/wrfout_d01_2022-09-28_00:00:
00.nc","r")
; What times and how many time steps are in the data set?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
times = wrf_user_getvar(f,"times",-1) ; get all times in the file
ntimes = dimsizes(times) ; number of times in the file
; The specific pressure levels that we want the data interpolated to.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
pressure_levels = (/ 850., 700., 500., 300./) ; pressure levels to plot
nlevels = dimsizes(pressure_levels) ; number of pressure
levels
tc = wrf_user_getvar(f,"tc",-1) ; T in C
u = wrf_user_getvar(f,"ua",-1) ; u averaged to mass points
v = wrf_user_getvar(f,"va",-1) ; v averaged to mass points
p = wrf_user_getvar(f, "pressure",-1) ; pressure is our vertical
coordinate
z = wrf_user_getvar(f, "z",-1) ; grid point height
rh = wrf_user_getvar(f,"rh",-1) ; relative humidity
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;lat2d = wrf_user_getvar(f,"XLAT",0)
;lon2d = wrf_user_getvar(f,"XLONG",0)
lat2d = f->XLAT(0,:,:)
lon2d = f->XLONG(0,:,:)
lat = lat2d(:,0) ; create classic 1D coordinate arrays
lon = lon2d(0,:)
;u&lat at units = "degrees_north"
;u&lon at units = "degrees_east"
;v&lat at units = "degrees_north"
;v&lon at units = "degrees_east"
;lat at units= "degrees_north"
;lon at units= "degrees_east"
;lat!0 = "lat"
;lon!0 = "lon"
;lat&lat = lat
;lon&lon = lon
;pressure = pressure_levels(level)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
pressure = pressure_levels(0)
tc_plane = wrf_user_intrp3d(tc,p,"h",pressure,0.,False)
z_plane = wrf_user_intrp3d( z,p,"h",pressure,0.,False)
rh_plane = wrf_user_intrp3d(rh,p,"h",pressure,0.,False)
u_plane = wrf_user_intrp3d( u,p,"h",pressure,0.,False)
v_plane = wrf_user_intrp3d( v,p,"h",pressure,0.,False)
spd = (u_plane*u_plane + v_plane*v_plane)^(0.5) ; m/sec
spd at description = "Wind Speed"
spd at units = "m/s"
u_plane = u_plane*1.94386 ; kts
v_plane = v_plane*1.94386 ; kts
u_plane at units = "kts"
v_plane at units = "kts"
wks = gsn_open_wks("x11","gsn_csm_streamline_map")
res = True
res at gsnAddCyclic = False
res at gsnMaximize = True
res at gsnDraw = False ; don't draw yet
res at gsnFrame = False ; don't advance yet
res at tiMainString = "WRF Streamlines" ; draw a title
res at gsnLeftString = ""
res at gsnRightString = ""
res at gsnCenterString = " "
res at mpProjection = "Mercator"
;---Zoom in on map and plot again
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;res at cnLineThicknessF = 2 ; make lines thicker, Default: 1
;res at mpMinLatF = min(lat) ; zoom in on lat/lon area
;res at mpMaxLatF = max(lat)
;res at mpMinLonF = min(lon)
;res at mpMaxLonF = max(lon)
res at mpDataBaseVersion = "MediumRes" ; better and more map
outlines
res at mpDataSetName = "Earth..4"
res at mpOutlineBoundarySets = "AllBoundaries"
res at mpOutlineOn = True
res at mpNationalLineThicknessF = 2.5 ; turn on country
boundaries
res at lbOrientation = "Vertical"
res at tiMainOffsetYF = -0.03 ; Move the title down
plot = gsn_csm_streamline_map(wks,u_plane,v_plane,res)
;Define shapefiles
;*****************
shp_filename =
("$HOME/DA/SCRIPTS/06_Utility_Files/Shapefiles/Lesotho/lso_admbnda_adm1_FAO_MLGCA_2019.shp")
;Set shapefile resources
;***********************
shpres = True
shpres at gsLineThicknessF = 1 ; increase line thickness
shpres at gsLineColor = "Black" ; line colorgsLineThicknessF
shpres at gsLineDashPattern = 1
shp= gsn_add_shapefile_polylines(wks,plot,shp_filename,shpres)
draw(plot)
frame(wks)
end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20221006/4e4c92b5/attachment.htm>
More information about the ncl-talk
mailing list