[ncl-talk] Doubt about interpolation from hybrid sigma level coordinate to height of 10m
Dennis Shea
shea at ucar.edu
Sun Jun 11 22:00:58 MDT 2017
Sorry, I am not sure how to do this.
You can readily get the height and wind components at the lowest model
level. The method I suggested is my only guess. Maybe someone else has
abetter idea.
Good Luck
On Tue, Jun 6, 2017 at 1:43 PM, <leilane.passos at inpe.br> wrote:
> Dear Denis,
>
> Thank you for the answer.
>
> I tried to make in another way. I interpolated from hybrid-sigma levels to
> pressure using the NCL script vinth2p_ecmwf.ncl, that is for CESM hybrid
> coordinates to pressure coordinates but uses an ECMWF formulation to
> extrapolate values below ground (https://bb.cgd.ucar.edu/
> converting-hybrid-levels-pressures). This interpolation was good, so I
> tried to do the interpolation from pressure to height, like your
> suggestions in this post: https://www.ncl.ucar.edu/
> Support/talk_archives/2004/0394.html
>
> And the interpolation was not good. Is there any NCL script to interpolate
> wind from pressure levels to 10m height? I need the wind in 10m just over
> the ocean.
>
> My script is attached.
>
> Best regards.
>
> Leilane
>
>
>
> Em 22-05-2017 16:49, Dennis Shea escreveu:
>
> The wrf_* functions were developed for the WRF model(s) with the WRF 'eta'
> vertical coordinate system.
> [ https://www.researchgate.net/post/Does_WRF_simulation_use_
> sigma_or_eta_vertical_coordinate_system ]
>
> Hence, these functions are not appropriate for CAM data.
> ---
> The calculation of CAM U10 is non-trivial. Many factors are involved:
> surface roughness, atmospheric stability, ...
>
> Over the oceans, for neutral stability something like the following is
> used:
>
> U10 = UL / [ 1 + (sqrt(CN10)/k)*log(ZL/10-PSI)] ; [1]
>
> The following variables are readily available at each grid point
>
> UL - zonal component of the wind at the Lowest model level
> ZL - geopotential height at the Lowest model level
> PSI - Sfc. geopotential
>
> The CN10 must be derived:
>
> CN10 - drag Coefficient at 10-m height and Neutral stability
>
> where:
> CN10 = (C4/U10) + C5 + C6*U10 [2]
>
> and, over the ocean,
> C4=0.0027 m/s , C5=0.000142, C6=0.0000764 m/s
>
> Note that U10 appears in both [1] and [2]. Hence the solution requires
> iteration.
> ----
> Over land, ?????
> ---
> If you need 'numbers' as a filler then maybe using a simple u10 =
> U*log(..) could be used.
>
> Attached is a VERY SIMPLE function. The function requires 'surface
> roughness length' which can be a function of time (season). This
> information may be available online.
>
> Also, as noted within the function, the approximation is most valid in the
> lowest 100m of the atmosphere.
>
> Good Luck
>
>
>
> On Mon, May 15, 2017 at 1:09 PM, <leilane.passos at inpe.br> wrote:
>
>> Hi,
>>
>> 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:
>>
>> 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?
>>
>> 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?
>>
>>
>>
>> ; -------------- LOAD FUNCTIONS AND PROCEDURES ----------------
>>
>> load "/usr/share/ncarg/nclscripts/csm/gsn_code.ncl"
>> load "/usr/share/ncarg/nclscripts/csm/gsn_csm.ncl"
>> load "/usr/share/ncarg/nclscripts/csm/contributed.ncl"
>> load "/usr/share/ncarg/nclscripts/csm/shea_util.ncl"
>> load "/usr/share/ncarg/nclscripts/wrf/WRFUserARW.ncl"
>> load "/usr/share/ncarg/nclscripts/acentos.ncl"
>>
>> ; -------------- BEGINING OF NCL SCRIPT ----------------
>>
>> begin
>>
>> outfile = "test_U10mV10m.1985.20thC.nc"
>>
>> if (isfilepresent(outfile)) then
>> system("rm -rf "+outfile) ;-- make sure that file does
>> not exist
>> end if
>>
>> ;-- open data file
>>
>> in_u = addfile("224331.U.1985.20thC.U.nc","r")
>> in_v = addfile("224331.V.1985.20thC.V.nc","r")
>> in_z = addfile("239928.Z3.1985.20thC.Z3.nc","r")
>>
>> ;-- get variable t and its dimensions and dimension sizes
>>
>> u = in_u->U ;(time, lev, lat, lon) ;-- get
>> variable u
>> v = in_v->V ;(time, lev, lat, lon) ;-- get
>> variable v
>> z = in_z->Z3 ;(time, lev, lat, lon) ;-- get
>> variable u
>>
>> time = in_u->time ;-- get dimension time
>> lev = in_u->lev ;-- get dimension lev
>> lat = in_u->lat ;-- get dimension lat
>> lon = in_u->lon ;-- get dimension lon
>>
>> ntim = dimsizes(time) ;-- get dimension sizes of time
>> nlev = dimsizes(lev) ;-- get dimension sizes of lev
>> nlat = dimsizes(lat) ;-- get dimension sizes of lat
>> nlon = dimsizes(lon) ;-- get dimension sizes of lon
>>
>> ;-- Interpolate u and v to 10m:
>> ;u10m = u ;-- copy
>> variable and its dimensions and attributes
>> u10m = wrf_user_intrp3d(u,z,"h",10.0,0.,False) ;--
>> interpolate u
>> u10m at units = "m/s" ;--
>> define new units
>> ;v10m = v ;-- copy
>> variable and its dimensions and attributes
>> v10m = wrf_user_intrp3d(v,z,"h",10.0,0.,False) ;--
>> interpolate v
>> v10m at units = "m/s" ;--
>> define new units
>> ;print(u10m)
>>
>> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>> ;-- create new netCDF file
>> fout = addfile(outfile,"c")
>>
>> ;-- begin output file settings
>> setfileoption(fout,"DefineMode",True) ;-- explicitly declare file
>> definition mode
>>
>> ;-- create global attributes of the file
>> fAtt = True ;-- assign file attributes
>> fAtt at title = "NCL Efficient Approach to netCDF Creation"
>> fAtt at source_file = "CCSM4.nc"
>> fAtt at Conventions = "CF"
>> fAtt at creation_date = systemfunc ("date")
>> fAtt at history = "NCL script: ex_netcdf_2.ncl"
>> fAtt at comment = "Convert variable t: Kelvin to Celsius"
>> fileattdef(fout,fAtt) ;-- copy file attributes
>>
>> ;-- predefine the coordinate variables and their dimensionality
>> dimNames = (/"time", "lat", "lon"/)
>> dimSizes = (/ -1 , nlat, nlon /)
>> dimUnlim = (/ True , False, False/)
>> filedimdef(fout,dimNames,dimSizes,dimUnlim)
>>
>> ;-- predefine the the dimensionality of the variables to be written
>> out
>> filevardef(fout, "time" ,typeof(time),getvardims(time))
>> filevardef(fout, "lat" ,typeof(lat), getvardims(lat))
>> filevardef(fout, "lon" ,typeof(lon), getvardims(lon))
>> filevardef(fout, "u10m" ,typeof(u10m), getvardims(u10m))
>> filevardef(fout, "v10m" ,typeof(v10m), getvardims(v10m))
>>
>> ;-- copy attributes associated with each variable to the file
>> filevarattdef(fout,"time" ,time) ;-- copy time attributes
>> filevarattdef(fout,"lat" ,lat) ;-- copy lat attributes
>> filevarattdef(fout,"lon" ,lon) ;-- copy lon attributes
>> filevarattdef(fout,"u10m" ,u10m) ;-- copy u10m attributes
>> filevarattdef(fout,"v10m" ,v10m) ;-- copy v10m attributes
>>
>> ;-- explicitly exit file definition mode (not required)
>> setfileoption(fout,"DefineMode",False)
>>
>> ;-- output only the data values since the dimensionality and such
>> have been predefined.
>> ;-- The "(/", "/)" syntax tells NCL to only output the data values to
>> the predefined
>> ;-- locations on the file.
>> fout->time = (/time/) ;-- write time to new netCDF
>> file
>>
>> fout->lat = (/lat/) ;-- write lat to new netCDF
>> file
>> fout->lon = (/lon/) ;-- write lon to new netCDF
>> file
>> fout->u10m = (/u10m/) ;-- write variable to new
>> netCDF file
>> fout->v10m = (/v10m/) ;-- write variable to new
>> netCDF file
>>
>> end
>>
>>
>>
>>
>>
>> Best regards,
>>
>> Leilane
>>
>>
>> _______________________________________________
>> ncl-talk mailing list
>> ncl-talk at ucar.edu
>> 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/20170611/c512ee64/attachment.html
More information about the ncl-talk
mailing list