<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html><body>
<p>Hi,</p>
<p>I need to interpolate the wind results from CCSM4(CAM) in hybrid sigma level coordinate to height of 10 m. Then, I tried to use the function wrf_user_intrp3d with the u, v and the geopotential height (Z3), but the interpolated field has undefined values and I don't know the reason. I have the following questions:</p>
<p>1) I think that I should find the interpolated values in the entire domain. But why did I find undefined values in certain areas like Andes Chain?</p>
<p>2) If I use the command vinth2p to interpolate from hybrid to pressure coordinates, what is a similar function that I could use to convert from pressure to height of 10 m?</p>
<p>&nbsp;</p>
<p>; --------------&nbsp; LOAD FUNCTIONS AND PROCEDURES ----------------<br /><br />&nbsp;&nbsp;&nbsp; load "/usr/share/ncarg/nclscripts/csm/gsn_code.ncl"<br />&nbsp;&nbsp;&nbsp; load "/usr/share/ncarg/nclscripts/csm/gsn_csm.ncl"<br />&nbsp;&nbsp;&nbsp; load "/usr/share/ncarg/nclscripts/csm/contributed.ncl"<br />&nbsp;&nbsp;&nbsp; load "/usr/share/ncarg/nclscripts/csm/shea_util.ncl"<br />&nbsp;&nbsp;&nbsp; load "/usr/share/ncarg/nclscripts/wrf/WRFUserARW.ncl"<br />&nbsp;&nbsp;&nbsp; load "/usr/share/ncarg/nclscripts/acentos.ncl"<br /><br />&nbsp;&nbsp;&nbsp; ; --------------&nbsp; BEGINING OF NCL SCRIPT ----------------<br /><br />&nbsp;&nbsp;&nbsp; begin<br /><br />&nbsp;&nbsp;&nbsp; outfile = "test_U10mV10m.1985.20thC.nc"<br /><br />&nbsp;&nbsp;&nbsp; if (isfilepresent(outfile)) then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; system("rm -rf "+outfile)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- make sure that file does not exist<br />&nbsp;&nbsp;&nbsp; end if<br /><br />&nbsp;&nbsp;&nbsp; ;-- open data file<br /><br />&nbsp;&nbsp;&nbsp; in_u = addfile("224331.U.1985.20thC.U.nc","r")<br />&nbsp;&nbsp;&nbsp; in_v = addfile("224331.V.1985.20thC.V.nc","r")<br />&nbsp;&nbsp;&nbsp; in_z = addfile("239928.Z3.1985.20thC.Z3.nc","r")<br /><br />&nbsp;&nbsp;&nbsp; ;-- get variable t and its dimensions and dimension sizes<br /><br />&nbsp;&nbsp;&nbsp; u&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; in_u-&gt;U ;(time, lev, lat, lon)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- get variable u<br />&nbsp;&nbsp;&nbsp; v&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; in_v-&gt;V ;(time, lev, lat, lon)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- get variable v<br />&nbsp;&nbsp;&nbsp; z&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; in_z-&gt;Z3 ;(time, lev, lat, lon)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- get variable u<br /><br />&nbsp;&nbsp;&nbsp; time&nbsp; =&nbsp; in_u-&gt;time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- get dimension time<br />&nbsp;&nbsp;&nbsp; lev&nbsp;&nbsp; =&nbsp; in_u-&gt;lev&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- get dimension lev<br />&nbsp;&nbsp;&nbsp; lat&nbsp;&nbsp; =&nbsp; in_u-&gt;lat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- get dimension lat<br />&nbsp;&nbsp;&nbsp; lon&nbsp;&nbsp; =&nbsp; in_u-&gt;lon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- get dimension lon<br /><br />&nbsp;&nbsp;&nbsp; ntim&nbsp; =&nbsp; dimsizes(time)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- get dimension sizes of time<br />&nbsp;&nbsp;&nbsp; nlev&nbsp; =&nbsp; dimsizes(lev)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- get dimension sizes of lev<br />&nbsp;&nbsp;&nbsp; nlat&nbsp; =&nbsp; dimsizes(lat)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- get dimension sizes of lat<br />&nbsp;&nbsp;&nbsp; nlon&nbsp; =&nbsp; dimsizes(lon)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- get dimension sizes of lon<br /><br />&nbsp;&nbsp;&nbsp; ;--&nbsp; Interpolate u and v to 10m:<br />&nbsp;&nbsp;&nbsp; ;u10m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = u&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- copy variable and its dimensions and attributes<br />&nbsp;&nbsp;&nbsp; u10m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = wrf_user_intrp3d(u,z,"h",10.0,0.,False)&nbsp;&nbsp; ;-- interpolate u<br />&nbsp;&nbsp;&nbsp; u10m@units&nbsp; = "m/s"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- define new units<br />&nbsp;&nbsp;&nbsp; ;v10m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- copy variable and its dimensions and attributes<br />&nbsp;&nbsp;&nbsp; v10m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = wrf_user_intrp3d(v,z,"h",10.0,0.,False) ;-- interpolate v<br />&nbsp;&nbsp;&nbsp; v10m@units&nbsp; = "m/s"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- define new units<br />&nbsp;&nbsp;&nbsp; ;print(u10m)<br /><br />&nbsp;&nbsp;&nbsp; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />&nbsp;&nbsp;&nbsp; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />&nbsp;&nbsp;&nbsp; ;-- create new netCDF file<br />&nbsp;&nbsp;&nbsp; fout = addfile(outfile,"c")<br /><br />&nbsp;&nbsp;&nbsp; ;-- begin output file settings<br />&nbsp;&nbsp;&nbsp; setfileoption(fout,"DefineMode",True) ;-- explicitly declare file definition mode<br /><br />&nbsp;&nbsp;&nbsp; ;-- create global attributes of the file<br />&nbsp;&nbsp;&nbsp; fAtt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp; True&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- assign file attributes<br />&nbsp;&nbsp;&nbsp; fAtt@title&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = "NCL Efficient Approach to netCDF Creation"<br />&nbsp;&nbsp;&nbsp; fAtt@source_file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = "CCSM4.nc"<br />&nbsp;&nbsp;&nbsp; fAtt@Conventions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = "CF"<br />&nbsp;&nbsp;&nbsp; fAtt@creation_date&nbsp;&nbsp;&nbsp; =&nbsp; systemfunc ("date")<br />&nbsp;&nbsp;&nbsp; fAtt@history&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp; "NCL script: ex_netcdf_2.ncl"<br />&nbsp;&nbsp;&nbsp; fAtt@comment&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = "Convert variable t: Kelvin to Celsius"<br />&nbsp;&nbsp;&nbsp; fileattdef(fout,fAtt)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- copy file attributes<br /><br />&nbsp;&nbsp;&nbsp; ;-- predefine the coordinate variables and their dimensionality<br />&nbsp;&nbsp;&nbsp; dimNames = (/"time", "lat", "lon"/)<br />&nbsp;&nbsp;&nbsp; dimSizes = (/ -1&nbsp;&nbsp; , nlat,&nbsp; nlon /)<br />&nbsp;&nbsp;&nbsp; dimUnlim = (/ True , False, False/)<br />&nbsp;&nbsp;&nbsp; filedimdef(fout,dimNames,dimSizes,dimUnlim)<br /><br />&nbsp;&nbsp;&nbsp; ;-- predefine the the dimensionality of the variables to be written out<br />&nbsp;&nbsp;&nbsp; filevardef(fout, "time" ,typeof(time),getvardims(time))<br />&nbsp;&nbsp;&nbsp; filevardef(fout, "lat"&nbsp; ,typeof(lat), getvardims(lat))<br />&nbsp;&nbsp;&nbsp; filevardef(fout, "lon"&nbsp; ,typeof(lon), getvardims(lon))<br />&nbsp;&nbsp;&nbsp; filevardef(fout, "u10m" ,typeof(u10m),&nbsp; getvardims(u10m))<br />&nbsp;&nbsp;&nbsp; filevardef(fout, "v10m" ,typeof(v10m),&nbsp; getvardims(v10m))<br /><br />&nbsp;&nbsp;&nbsp; ;-- copy attributes associated with each variable to the file<br />&nbsp;&nbsp;&nbsp; filevarattdef(fout,"time" ,time)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- copy time attributes<br />&nbsp;&nbsp;&nbsp; filevarattdef(fout,"lat"&nbsp; ,lat)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- copy lat attributes<br />&nbsp;&nbsp;&nbsp; filevarattdef(fout,"lon"&nbsp; ,lon)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- copy lon attributes<br />&nbsp;&nbsp;&nbsp; filevarattdef(fout,"u10m" ,u10m)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- copy u10m attributes<br />&nbsp;&nbsp;&nbsp; filevarattdef(fout,"v10m" ,v10m)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- copy v10m attributes<br /><br />&nbsp;&nbsp;&nbsp; ;-- explicitly exit file definition mode (not required)<br />&nbsp;&nbsp;&nbsp; setfileoption(fout,"DefineMode",False)<br /><br />&nbsp;&nbsp;&nbsp; ;-- output only the data values since the dimensionality and such have been predefined.<br />&nbsp;&nbsp;&nbsp; ;-- The "(/", "/)" syntax tells NCL to only output the data values to the predefined<br />&nbsp;&nbsp;&nbsp; ;-- locations on the file.<br />&nbsp;&nbsp;&nbsp; fout-&gt;time&nbsp;&nbsp; =&nbsp; (/time/)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- write time to new netCDF file<br /><br />&nbsp;&nbsp;&nbsp; fout-&gt;lat&nbsp;&nbsp;&nbsp; =&nbsp; (/lat/)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- write lat to new netCDF file<br />&nbsp;&nbsp;&nbsp; fout-&gt;lon&nbsp;&nbsp;&nbsp; =&nbsp; (/lon/)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- write lon to new netCDF file<br />&nbsp;&nbsp;&nbsp; fout-&gt;u10m&nbsp;&nbsp; =&nbsp; (/u10m/)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- write variable to new netCDF file<br />&nbsp;&nbsp;&nbsp; fout-&gt;v10m&nbsp;&nbsp; =&nbsp; (/v10m/)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;-- write variable to new netCDF file<br /><br />end<br /><br /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Best regards,</p>
<p>Leilane</p>
<div>&nbsp;</div>
</body></html>