; Purpose: Calculate T Profile from Ensemble averages ; . ; ; Programmer: Brandon Fisel ; Department of Geological and Atmospheric Sciences ; Iowa State University ; ; Date: 02/14/2009 ; ; Use: ncl < wrf_fields.ncl ; ; Input: WRF OUTPUT ; ; Output: T Profile ; ; References: NCL reference webpage: http://www.ncl.ucar.edu/ ; ; ; Load NCL library files load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl" load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl" load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" load "WRFUserARW.ncl" ; begin ; ; Set IO directory pointers diri = "/u1/uaf/fisel/wrf3.1.1/wrfout/" ; dir pointer mo = (/"06","07","08","09","10","11","12"/) mol = (/"June","July","August","September","October","November","December"/) nmo = dimsizes(mo) case0 = "cf_f_runx1/" ; wrf case case1 = "cf_f_runx2/" ; wrf case case2 = "cf_f_runx3/" ; wrf case case3 = "cf_f_runx4/" ; wrf case csub = "wrf/" ; wrfpost file pointer dstr0 = diri+case0+csub ; wrfpost file dir dstr1 = diri+case1+csub ; wrfpost file dir dstr2 = diri+case2+csub ; wrfpost file dir dstr3 = diri+case3+csub ; wrfpost file dir vdes = "profiles/" ; output sub dir diro = diri+"DIAG/graphics/"+vdes ; output dir do n=0,nmo-1 csho0 = "f07ens1_"+mo(n) ; short name of case csho1 = "f07ens2_"+mo(n) ; short name of case csho2 = "f07ens3_"+mo(n) ; short name of case csho3 = "f07ens4_"+mo(n) ; short name of case ; ; Set pointers to wrf output files var1 = "TT" ; var to process varName0 = "T_p" f0 = addfile(dstr0+csho0+"_"+var1+".nc","r") ; wrfpost var output file f1 = addfile(dstr1+csho1+"_"+var1+".nc","r") ; wrfpost var output file f2 = addfile(dstr2+csho2+"_"+var1+".nc","r") ; wrfpost var output file f3 = addfile(dstr3+csho3+"_"+var1+".nc","r") ; wrfpost var output file ; Get times for each of the files TimeChar = f0->time year = f0->year month = f0->month day = f0->day hour = f0->hour minute = f0->minute month_h = month(::4) day_h = day(::4) print(year + "_" + month + "_" + day + "_" + hour + "_" + minute) DimTimeChar = dimsizes(TimeChar) print("TimeChar dimsizes:" + DimTimeChar) nTime = TimeChar(:) ; 1=00Z nTimes = dimsizes(TimeChar) - 1 print("nTime:" + nTime + "and nt: " + nTimes) ; ; Set basic attributes lat = f0->lat(:,:) lon = f0->lon(:,:) ; ; Begin processing f_var0 = f0->$varName0$(:,:,:,:) f_var1 = f1->$varName0$(:,:,:,:) f_var2 = f2->$varName0$(:,:,:,:) f_var3 = f3->$varName0$(:,:,:,:) lat2d = lat lon2d = lon lat2 = conform(f_var0,lat,(/2,3/)) lon2 = conform(f_var0,lon,(/2,3/)) ; ; AREA MASK a_mask0 = new(dimsizes(f_var0),typeof(f_var0),f_var0@_FillValue) a_mask01 = new(dimsizes(f_var0),typeof(f_var0),f_var0@_FillValue) a_mask02 = new(dimsizes(f_var0),typeof(f_var0),f_var0@_FillValue) a_mask1 = new(dimsizes(f_var1),typeof(f_var1),f_var1@_FillValue) a_mask11 = new(dimsizes(f_var1),typeof(f_var1),f_var1@_FillValue) a_mask12 = new(dimsizes(f_var1),typeof(f_var1),f_var1@_FillValue) a_mask2 = new(dimsizes(f_var2),typeof(f_var2),f_var2@_FillValue) a_mask21 = new(dimsizes(f_var2),typeof(f_var2),f_var2@_FillValue) a_mask22 = new(dimsizes(f_var2),typeof(f_var2),f_var2@_FillValue) a_mask3 = new(dimsizes(f_var3),typeof(f_var3),f_var3@_FillValue) a_mask31 = new(dimsizes(f_var3),typeof(f_var3),f_var3@_FillValue) a_mask32 = new(dimsizes(f_var3),typeof(f_var3),f_var3@_FillValue) a_mask0 = where((lon2.ge.-134 .and. lon2.le.169),f_var0@_FillValue,f_var0) a_mask01 = where(lat2.lt.72,f_var0@_FillValue,a_mask0) a_mask02 = where(lat2.gt.86,f_var0@_FillValue,a_mask01) a_mask1 = where((lon2.ge.-134 .and. lon2.le.169),f_var1@_FillValue,f_var1) a_mask11 = where(lat2.lt.72,f_var1@_FillValue,a_mask1) a_mask12 = where(lat2.gt.86,f_var1@_FillValue,a_mask11) a_mask2 = where((lon2.ge.-134 .and. lon2.le.169),f_var2@_FillValue,f_var2) a_mask21 = where(lat2.lt.72,f_var2@_FillValue,a_mask2) a_mask22 = where(lat2.gt.86,f_var2@_FillValue,a_mask21) a_mask3 = where((lon2.ge.-134 .and. lon2.le.169),f_var3@_FillValue,f_var3) a_mask31 = where(lat2.lt.72,f_var3@_FillValue,a_mask3) a_mask32 = where(lat2.gt.86,f_var3@_FillValue,a_mask31) a_mask02!0 = "time" a_mask02!1 = "pressure" a_mask02!2 = "lat" a_mask02!3 = "lon" a_mask12!0 = "time" a_mask12!1 = "pressure" a_mask12!2 = "lat" a_mask12!3 = "lon" a_mask22!0 = "time" a_mask22!1 = "pressure" a_mask22!2 = "lat" a_mask22!3 = "lon" a_mask32!0 = "time" a_mask32!1 = "pressure" a_mask32!2 = "lat" a_mask32!3 = "lon" ; ; Daily average f_day = a_mask02(::4,:,:,:) ; trick ntJump = 4 ; 6-hr step ntStrt = 0 ; start at 0 time ntLast = ntJump-1 ; end every 4 steps if (mo(n) .eq. "12") then ; fix for early december cut-off nTimes = nTimes-3 else nTimes = nTimes end if do na=0,nTimes,4 f_day(na/4,:,:,:) = ( dim_avg_Wrap(a_mask02(pressure|:,lat|:,lon|:,time|ntStrt:ntLast)) + \ dim_avg_Wrap(a_mask12(pressure|:,lat|:,lon|:,time|ntStrt:ntLast)) + \ dim_avg_Wrap(a_mask22(pressure|:,lat|:,lon|:,time|ntStrt:ntLast)) + \ dim_avg_Wrap(a_mask32(pressure|:,lat|:,lon|:,time|ntStrt:ntLast)) )/4 ntStrt = ntStrt+ntJump ntLast = ntLast+ntJump end do f_day = f_day - 273.15 ; convert to degC delete(a_mask02) delete(a_mask12) delete(a_mask22) delete(a_mask32) delete(ntStrt) delete(ntLast) printVarSummary(f_day) ; ; Monthly average f_mon = dim_avg_Wrap(f_day(pressure|:,lat|:,lon|:,time|:)) f_mon@lat2d = lat2d f_mon@lon2d = lon2d ; ; Begin plot ; delete(res) delete(date) delete(TimeChar) delete(year) delete(month) delete(day) delete(hour) delete(minute) delete(month_h) delete(day_h) delete(nTime) delete(nTimes) end do end