mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			130 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ;*****************************************************
 | |
| ; cru_8.ncl
 | |
| ;
 | |
| ; Concepts illustrated:
 | |
| ;   - Plotting CRU (Climate Research Unit)/ BADC data
 | |
| ;   - Selecting a sub-period
 | |
| ;   - calculating a climatology
 | |
| ;   - Drawing raster contours; very basic graphics
 | |
| ;
 | |
| ;*****************************************************
 | |
| 
 | |
| load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"    ; not needed 6.20 onward 
 | |
| load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"   
 | |
| load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
 | |
| 
 | |
| ; create references (pointers) to the files
 | |
| 
 | |
|   diri = "./"
 | |
|   fcld = addfile(diri+"cru_ts3.21.1901.2012.cld.dat.nc", "r")
 | |
|   fdtr = addfile(diri+"cru_ts3.21.1901.2012.dtr.dat.nc", "r")
 | |
|   ffrs = addfile(diri+"cru_ts3.21.1901.2012.frs.dat.nc", "r")
 | |
|   fpet = addfile(diri+"cru_ts3.21.1901.2012.pet.dat.nc", "r")
 | |
|   fpre = addfile(diri+"cru_ts3.21.1901.2012.pre.dat.nc", "r")
 | |
|   ftmn = addfile(diri+"cru_ts3.21.1901.2012.tmn.dat.nc", "r")
 | |
|   ftmp = addfile(diri+"cru_ts3.21.1901.2012.tmp.dat.nc", "r")
 | |
|   ftmx = addfile(diri+"cru_ts3.21.1901.2012.tmx.dat.nc", "r")
 | |
|   fvap = addfile(diri+"cru_ts3.21.1901.2012.vap.dat.nc", "r")
 | |
|   fwet = addfile(diri+"cru_ts3.21.1901.2012.wet.dat.nc", "r")
 | |
| 
 | |
| ; specify start & last dates (arbitrary)
 | |
| 
 | |
|   ymStrt = 199101
 | |
|   ymLast = 200012
 | |
|   
 | |
| ; get index values of start/lat dates
 | |
| 
 | |
|   time   = fcld->time
 | |
|   yyyymm = cd_calendar(time, -1)
 | |
|   
 | |
|   ntStrt = ind(yyyymm.eq.ymStrt)   ; index values
 | |
|   ntLast = ind(yyyymm.eq.ymLast)
 | |
|   
 | |
| ; read time segment
 | |
| 
 | |
|   cld    = fcld->cld(ntStrt:ntLast,:,:)
 | |
|   dtr    = fdtr->dtr(ntStrt:ntLast,:,:)
 | |
|   frs    = ffrs->frs(ntStrt:ntLast,:,:) 
 | |
|   pet    = fpet->pet(ntStrt:ntLast,:,:)  
 | |
|   pre    = fpre->pre(ntStrt:ntLast,:,:) 
 | |
|   tmn    = ftmn->tmn(ntStrt:ntLast,:,:) 
 | |
|   tmp    = ftmp->tmp(ntStrt:ntLast,:,:)      
 | |
|   tmx    = ftmx->tmx(ntStrt:ntLast,:,:)   
 | |
|   vap    = fvap->vap(ntStrt:ntLast,:,:) 
 | |
|   wet    = fwet->wet(ntStrt:ntLast,:,:) 
 | |
|   
 | |
|   printVarSummary(cld)        ;  [time | 120] x [lat | 360] x [lon | 720]
 | |
|   
 | |
| ; calculate monthly climatologies
 | |
| 
 | |
|   cldclm = clmMonTLL(cld)     
 | |
|   dtrclm = clmMonTLL(dtr)
 | |
|   frsclm = clmMonTLL(frs)
 | |
|   petclm = clmMonTLL(pet)
 | |
|   preclm = clmMonTLL(pre)
 | |
|   tmnclm = clmMonTLL(tmn)
 | |
|   tmpclm = clmMonTLL(tmp)
 | |
|   tmxclm = clmMonTLL(tmx)
 | |
|   vapclm = clmMonTLL(vap)
 | |
|   wetclm = clmMonTLL(wet)
 | |
|   
 | |
|     
 | |
|   printVarSummary(cldclm)     ;  [month | 12] x [lat | 360] x [lon | 720]
 | |
|  
 | |
| ;************************************
 | |
| ; create plots ... very simple
 | |
| ;************************************
 | |
|  
 | |
|   nt     = 6                         
 | |
|   month  = "July"
 | |
|   yrStrt = ymStrt/100
 | |
|   yrLast = ymLast/100
 | |
|   title  = month+": "+yrStrt+"-"+yrLast
 | |
| 
 | |
|   wks = gsn_open_wks("ps","cru")          ; open a ps  file
 | |
|   gsn_define_colormap(wks,"ncl_default")  ; choose colormap; not needed 6.20 onward 
 | |
|   plot = new(2,graphic)                   ; create graphic array
 | |
| 
 | |
|   res                      = True
 | |
|   res@cnFillOn             = True         ; turn on color fill; not needed 6.20 onward 
 | |
|   res@cnFillMode           = "RasterFill" ; Raster Mode
 | |
|   res@cnLinesOn            = False        ; Turn off contour lines
 | |
|   
 | |
|   res@gsnDraw              = False        ; do not draw picture
 | |
|   res@gsnFrame             = False        ; do not advance frame
 | |
|   res@lbOrientation        = "Vertical"   ; vertical label bar
 | |
|   
 | |
|   resp                     = True
 | |
|   resp@gsnMaximize         = True         ; make ps, eps, pdf large
 | |
| 
 | |
|   resp@txString            = title+": CLD, FRS"
 | |
|   plot(0)=gsn_csm_contour_map_ce(wks,cldclm(nt,:,:),res)
 | |
|   plot(1)=gsn_csm_contour_map_ce(wks,frsclm(nt,:,:),res)
 | |
|   gsn_panel(wks,plot,(/2,1/),resp)
 | |
|   
 | |
|   resp@txString            = title+": PET, VAP"
 | |
|   plot(0)=gsn_csm_contour_map_ce(wks,petclm(nt,:,:),res)
 | |
|   plot(1)=gsn_csm_contour_map_ce(wks,vapclm(nt,:,:),res)
 | |
|   gsn_panel(wks,plot,(/2,1/),resp)
 | |
| 
 | |
|   resp@txString            = title+": TMN, TMX"
 | |
|   plot(0)=gsn_csm_contour_map_ce(wks,tmnclm(nt,:,:),res)
 | |
|   plot(1)=gsn_csm_contour_map_ce(wks,tmxclm(nt,:,:),res)
 | |
|   gsn_panel(wks,plot,(/2,1/),resp)
 | |
| 
 | |
|   resp@txString            = title+": TMP, DTR"
 | |
|   plot(0)=gsn_csm_contour_map_ce(wks,tmpclm(nt,:,:),res)
 | |
|   plot(1)=gsn_csm_contour_map_ce(wks,dtrclm(nt,:,:),res)
 | |
|   gsn_panel(wks,plot,(/2,1/),resp)
 | |
| 
 | |
|   resp@txString            = title+": WET, PRE"
 | |
|   plot(0)=gsn_csm_contour_map_ce(wks,wetclm(nt,:,:),res)
 | |
| 
 | |
|  ;colors = (/ ... /)             
 | |
|  ;res@cnFillPalette    = colors                ; optional: distinct colors for categories
 | |
|   res@cnLevelSelectionMode = "ExplicitLevels"  ; use unequal spacing
 | |
|   res@cnLevels             = (/2.0,10,25,37.5,50,75,100,125,150,175,200,300,400,500,750/) 
 | |
| 
 | |
|   plot(1)=gsn_csm_contour_map_ce(wks,preclm(nt,:,:),res)
 | |
|   gsn_panel(wks,plot,(/2,1/),resp)
 |