undef("eta2isop_wrf") function eta2isop_wrf(fwrf, varName[1]:string, prs_iso[*]:numeric \ ,itime:integer, linlog[1]:integer, opt[1]:logical) ; ; interpolate a WRF variable on eta levels onto user specified isobaric levels ; Usage: ; f = addfile(...) , or, f = addfiles(...) ; ; plev = (/ 1000,925,850,700,600,500,400,300,250 \ ; integer, float, double ; , 200,150,100,70,50/) ; plev!0 = "plev" ; plev@units = "hPa" ; ; linlog = 0 ; itime = -1 ; z_iso = eta2isop_wrf(f, "geopotential", plev, itime, linlog, False) ; printVarSummary(z_iso) begin prs_eta = wrf_user_getvar(fwrf, "pressure", itime) if (prs_eta@units.ne.p_iso@units) then print("eta2isop_wrf: pressure unit mismatch") print("eta2isop_wrf: prs_eta@units="+prs_eta@units) print("eta2isop_wrf: prs_iso@units="+prs_iso@units) exit end if var_eta = wrf_user_getvar(fwrf, varName , itime) var_rank = dimsizes(dimsizes(var_eta)) if (var_rank.eq.4) then ; (Time, bottom_top, south_north, west_east) => (0,1,2,3) var_iso = int2p_n_Wrap (prs_eta,var_eta,prs_iso,linlog,1) else if (var_rank.eq.3) then ; (bottom_top, south_north, west_east) => (0,1,2) var_iso = int2p_n_Wrap (prs_eta,var_eta,prs_iso,linlog,0) else print("eta2isop_wrf: unexpected rank; rank="+var_rank+"; code expects rank=3 or 4 only") exit end if end if var_iso@tag = "NCL: Simple interpolation to isobaric levels via int2p_n_Wrap" return(var_iso) end