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/contributed.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
begin
type = "png"
wks = gsn_open_wks(type,"2026PBLH")
gsn_define_colormap(wks,"BlAqGrYeOrRe")
; 1. 读取两组WRF输出文件
; files1 = systemfunc("ls ../nobrc_fdda/wrfout_d01_2019-01-06_0*") ; 第一组文件
; files2 = systemfunc("ls ../yes_brc_fdda/wrfout_d01_2019-01-06_0*") ; 第二组文件
; files1 = systemfunc("ls ../yes_brc_nofdda/wrfout_d01_2019-*") ; 第一组文件
; files2 = systemfunc("ls ../nobrc_nofdda/wrfout_d01_2019-*") ; 第二组文件
; 用短的文件代替减少运行时间
files1 = systemfunc("ls ../yes_brc_nofdda/wrfout_d01_2019-01*") ; 第一组文件
files2 = systemfunc("ls ../nobrc_nofdda/wrfout_d01_2019-01*") ; 第二组文件
a = addfiles(files1, "r") ; yes
b = addfiles(files2, "r") ; no
wlat=a[0]->XLAT(0,:,:)
wlon=a[0]->XLONG(0,:,:)
; 2. 读取边界层高度
var1 = wrf_user_getvar(a,"PBLH",-1) ; [time,lat,lon] yes
var2 = wrf_user_getvar(b,"PBLH",-1) ; no
delta_PBLH = var1 - var2 ; yes - no
delta_PBLH_2d = dim_avg_n_Wrap(delta_PBLH,0) ; 对时间求平均
; 此时delta值没有属性,需要赋属性
printVarSummary(var1) ; [Time | 280] x [south_north | 202] x [west_east | 200]
printVarSummary(delta_PBLH) ; [280] x [202] x [200]
printVarSummary(delta_PBLH_2d) ; [202] x [200]
; 赋属性
files_ctl = systemfunc("ls -1 ../yes_brc_nofdda/wrfout_d01_2019-01-12*")
f_ctl = addfiles(files_ctl,"r")
;;;;;;;;;;;;;;获得属性
PBLH_m = wrf_user_getvar(f_ctl, "PBLH", -1)
PBLH_m_2d = PBLH_m(0,:,:)
printVarSummary(PBLH_m_2d)
;;;;;用PBLH_m_2d给x赋属性
copy_VarMeta(PBLH_m_2d , delta_PBLH_2d)
printVarSummary(delta_PBLH_2d) ; [south_north | 202] x [west_east | 200]
; 此时属性赋值成功
pblh = delta_PBLH_2d
; 设置res属性
res = True
res@vpXF = 0.2
res@vpYF = 0.9
res@vpWidthF = 0.6
res@vpHeightF = 0.6
res@cnFillOn = True
res@cnLinesOn = False
res@cnLineLabelsOn = False
;res@cnLevelSelectionMode = "ManualLevels" ;"ExplicitLevels"
res@cnLevelSelectionMode = "ExplicitLevels"
;res@lbOrientation = "vertical"
res@gsnDraw = False
res@gsnFrame = False
res@tmXBLabelFont = 26 ;; Set font to times-roman
res@tmYLLabelFont = 26
res@lbLabelFont = 26
res@lbLabelFontHeightF = 0.021
res@tmXBLabelFontHeightF = 0.021
res@tmYLLabelFontHeightF = 0.021
res@pmTickMarkDisplayMode = "Always" ; turn on tickmarks
res@tmXTOn = False ; turn off top labels
res@tmYROn = False ; turn off right labels
res@tmXBMajorLengthF = 0.007
res@tmXBMajorOutwardLengthF = 0.0
res@mpDataBaseVersion = "MediumRes"
res@mpDataSetName = "Earth..4"
res@mpOutlineSpecifiers = (/"China:states"/)
res@mpGeophysicalLineThicknessF = 2.0 ;3
res@mpNationalLineThicknessF = 2.0 ;4
res@mpUSStateLineThicknessF = 2.0 ;2.5
nx = dimsizes(wlat(0,:))
ny = dimsizes(wlat(:,0))
res@mpProjection = "LambertConformal"
res@mpLambertParallel1F = f_ctl[0]@TRUELAT1
res@mpLambertParallel2F = f_ctl[0]@TRUELAT2
res@mpLambertMeridianF = f_ctl[0]@STAND_LON
;res@mpLimitMode = "Corners"
res@mpLimitMode = "LatLon"
res@mpMinLatF=28
res@mpMaxLatF=44
res@mpMinLonF=110
res@mpMaxLonF=123
;设置经纬度网格线
res@mpGridAndLimbOn = True ; 启用网格线和地图边界
;res@mpGridSpacingF = 5.0 ; 网格间距(单位:度)
res@mpGridLineDashPattern = 2 ; 虚线样式(1=实线,2=虚线,3=点线)
res@mpGridLineThicknessF = 1.0 ; 线粗细
res@mpGridLineColor = "gray50"; 网格线颜色
res@mpGridLatSpacingF = 2.0 ; 纬度网格间距
res@mpGridLonSpacingF = 2.0 ; 经度网格间距
pblh@lat2d = wlat
pblh@lon2d = wlon
plot = gsn_csm_contour_map(wks,pblh(:,:),res)
end