mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	adding NCL language
This commit is contained in:
		
							
								
								
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							| @@ -644,3 +644,6 @@ | |||||||
| [submodule "vendor/grammars/smali-sublime"] | [submodule "vendor/grammars/smali-sublime"] | ||||||
| 	path = vendor/grammars/smali-sublime | 	path = vendor/grammars/smali-sublime | ||||||
| 	url = https://github.com/ShaneWilton/sublime-smali | 	url = https://github.com/ShaneWilton/sublime-smali | ||||||
|  | [submodule "vendor/grammars/language-ncl"] | ||||||
|  | 	path = vendor/grammars/language-ncl | ||||||
|  | 	url = https://github.com/rpavlick/language-ncl.git | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								Rakefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Rakefile
									
									
									
									
									
								
							| @@ -62,7 +62,7 @@ namespace :benchmark do | |||||||
|  |  | ||||||
|     corpus = File.expand_path(ENV["CORPUS"] || "samples") |     corpus = File.expand_path(ENV["CORPUS"] || "samples") | ||||||
|  |  | ||||||
|     require 'linguist/language' |     require 'linguist' | ||||||
|  |  | ||||||
|     results = Hash.new |     results = Hash.new | ||||||
|     Dir.glob("#{corpus}/**/*").each do |file| |     Dir.glob("#{corpus}/**/*").each do |file| | ||||||
|   | |||||||
| @@ -320,6 +320,8 @@ vendor/grammars/language-hy: | |||||||
| vendor/grammars/language-javascript: | vendor/grammars/language-javascript: | ||||||
| - source.js | - source.js | ||||||
| - source.js.regexp | - source.js.regexp | ||||||
|  | vendor/grammars/language-ncl: | ||||||
|  | - source.ncl | ||||||
| vendor/grammars/language-python: | vendor/grammars/language-python: | ||||||
| - source.python | - source.python | ||||||
| - source.regexp.python | - source.regexp.python | ||||||
|   | |||||||
| @@ -274,6 +274,12 @@ module Linguist | |||||||
|       end |       end | ||||||
|     end |     end | ||||||
|  |  | ||||||
|  |     disambiguate "Text", "NCL" do |data| | ||||||
|  |       if data.include?("THE_TITLE") | ||||||
|  |         Language["Text"] | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |  | ||||||
|     disambiguate "NL", "NewLisp" do |data| |     disambiguate "NL", "NewLisp" do |data| | ||||||
|       if /^(b|g)[0-9]+ /.match(data) |       if /^(b|g)[0-9]+ /.match(data) | ||||||
|         Language["NL"] |         Language["NL"] | ||||||
|   | |||||||
| @@ -2049,6 +2049,14 @@ Myghty: | |||||||
|   tm_scope: none |   tm_scope: none | ||||||
|   ace_mode: text |   ace_mode: text | ||||||
|  |  | ||||||
|  | NCL: | ||||||
|  |   type: programming | ||||||
|  |   color: #28431f | ||||||
|  |   extensions: | ||||||
|  |   - .ncl | ||||||
|  |   tm_scope: source.ncl | ||||||
|  |   ace_mode: text | ||||||
|  |  | ||||||
| NL: | NL: | ||||||
|   type: data |   type: data | ||||||
|   extensions: |   extensions: | ||||||
| @@ -3261,6 +3269,7 @@ Text: | |||||||
|   extensions: |   extensions: | ||||||
|   - .txt |   - .txt | ||||||
|   - .fr |   - .fr | ||||||
|  |   - .ncl | ||||||
|   tm_scope: none |   tm_scope: none | ||||||
|   ace_mode: text |   ace_mode: text | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										109
									
								
								samples/NCL/PrnOscPat_driver.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								samples/NCL/PrnOscPat_driver.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,109 @@ | |||||||
|  | undef("PrnOscPat_driver") | ||||||
|  | function PrnOscPat_driver(eof[*][*][*]:numeric, eof_ts[*][*]:numeric, kPOP[1]:integer) | ||||||
|  | ; ================================================================= | ||||||
|  | ; compute Principal Oscillation Patterns (POPs) | ||||||
|  | ; ================================================================= | ||||||
|  | local dim_ts, dim_eof, neof, ntim, nlat, mlon, dnam_ts, dnam_eof, neof, j \ | ||||||
|  |     , cov0, cov1, cov0_inverse, A, z, Z, pr, pi, zr, zi, mean, stdev      \ | ||||||
|  |     , evlr, eigi, eigr    | ||||||
|  | begin | ||||||
|  |  | ||||||
|  |   dim_ts  = dimsizes(eof_ts)        ; (neof,ntim) | ||||||
|  |   dim_eof = dimsizes(eof)           ; (neof,nlat,mlon) | ||||||
|  |  | ||||||
|  |   ntim    = dim_ts(1) | ||||||
|  |   neof    = dim_eof(0) | ||||||
|  |   nlat    = dim_eof(1) | ||||||
|  |   mlon    = dim_eof(2) | ||||||
|  |  | ||||||
|  |   dnam_ts = getvardims(eof_ts)      ; dimension names | ||||||
|  |   dnam_eof= getvardims(eof)         ; used at end for meta data | ||||||
|  |  | ||||||
|  | ; ================================================================= | ||||||
|  | ; lag-0 and lag-1  matrices  | ||||||
|  | ; ================================================================= | ||||||
|  |  | ||||||
|  |   if (get_ncl_version().eq."6.1.2") then                ; bug in 6.1.2 | ||||||
|  |       cov0    = covcorm(eof_ts,(/1,0/))			; lag-0 covariance matrix | ||||||
|  |   else | ||||||
|  |       cov0    = covcorm(eof_ts,(/0,1/))			; lag-0 covariance matrix (n x n) | ||||||
|  |   end if | ||||||
|  |                                                         ; either | ||||||
|  |   cov1    = covcorm_xy(eof_ts, eof_ts, (/0,1,0/))       ; lag-1  | ||||||
|  |  ;cov1    = covcorm_xy(eof_ts(:,0:ntim-2) \             ; alternative, brute force | ||||||
|  |  ;                    ,eof_ts(:,1:ntim-1), (/0,0,0/))  | ||||||
|  |  ;printVarSummary(cov1) | ||||||
|  |  | ||||||
|  | ; ================================================================= | ||||||
|  | ; matrix A contains information for evolution of the POP system.  | ||||||
|  | ; POPs are eigenvectors of A.   | ||||||
|  | ; ================================================================= | ||||||
|  |  | ||||||
|  |   cov0_inverse = inverse_matrix(cov0) | ||||||
|  |   A = cov1#inverse_matrix(cov0)                         ; [*][*] => neof x neof | ||||||
|  |  | ||||||
|  | ; ================================================================= | ||||||
|  | ; NCL 6.1.1 of dgeevx:  evlr(2,2,N,N) ; (left(0)/right(1), real(0)/imag(1),:,:) | ||||||
|  | ; Eigenvalues are returned as attributes: eigi  = evlr@eigi  ; eigr  = evlr@eigr | ||||||
|  | ; ================================================================= | ||||||
|  |  | ||||||
|  |   evlr  = dgeevx_lapack(A, "B", "V", "V", "B", False)   | ||||||
|  |  | ||||||
|  | ; ================================================================= | ||||||
|  | ; POP time series from eigenvalues and right eigenvectors  | ||||||
|  | ; =================================================================  | ||||||
|  |  ;PR   = (/ evlr(1,0,:,:) /)         ; right ev (1), real part (0) | ||||||
|  |  ;PI   = (/ evlr(1,1,:,:) /)         ; right ev (1), imag part (1) | ||||||
|  |                                      ; kPOP is what we want; use righteigenvector | ||||||
|  |   pr   = (/ evlr(1,0,kPOP-1,:) /)    ; right ev (1), real part (0), row 'kPOP-1'  | ||||||
|  |   pi   = (/ evlr(1,1,kPOP-1,:) /)    ; right ev (1), imag part (1), row 'kPOP-1' | ||||||
|  |     | ||||||
|  |   z    = inverse_matrix( (/ (/sum(pr*pr), sum(pr*pi)/) \ | ||||||
|  |                           , (/sum(pr*pi), sum(pi*pi)/) /))#(/pr,pi/)#eof_ts | ||||||
|  |     | ||||||
|  |                                                         ; complex conjugate | ||||||
|  |   z    = (/z(0,:), -z(1,:)/)       		    	; real & imag series | ||||||
|  |   z    = dim_rmvmean_n(z,1) | ||||||
|  |   mean = dim_avg_n(z,1)                                 ; calculate mean | ||||||
|  |   stdev= dim_stddev_n(z,1)                              ; calculate stdev | ||||||
|  |   z    = dim_standardize_n(z,1,1)			; standardize time series | ||||||
|  |  | ||||||
|  |   z!0     = "nPOP"				        ; add meta data | ||||||
|  |   z!1     = dnam_ts(1)		 | ||||||
|  |   z&nPOP  = (/0,1/) | ||||||
|  |   z&$dnam_ts(1)$ = eof_ts&$dnam_ts(1)$             | ||||||
|  |   z@stdev = stdev				 | ||||||
|  |   z@mean  = mean			 | ||||||
|  |   z@long_name = "POP timeseries"			 | ||||||
|  |  ;printVarSummary(z) | ||||||
|  |  | ||||||
|  | ; ================================================================= | ||||||
|  | ; POP spatial patterns | ||||||
|  | ; ================================================================= | ||||||
|  |  | ||||||
|  |   zr = pr(0)*eof(0,:,:)			; construct POP spatial domain | ||||||
|  |   zi = pi(0)*eof(0,:,:) | ||||||
|  |   do j=1,neof-1 | ||||||
|  |      zr = zr + pr(j)*eof(j,:,:) | ||||||
|  |      zi = zi + pi(j)*eof(j,:,:) | ||||||
|  |   end do | ||||||
|  |  | ||||||
|  |   Z   = (/zr*stdev(0), -zi*stdev(1)/)	; scale patterns by time series stdev | ||||||
|  |  | ||||||
|  |   Z!0 = "nPOP"				; add meta data | ||||||
|  |   Z!1 = dnam_eof(1) | ||||||
|  |   Z!2 = dnam_eof(2) | ||||||
|  |  | ||||||
|  |   Z&nPOP          = (/0,1/)                              | ||||||
|  |   Z&$dnam_eof(1)$ = eof&$dnam_eof(1)$     | ||||||
|  |   Z&$dnam_eof(2)$ = eof&$dnam_eof(2)$     | ||||||
|  |   Z@long_name     = "POP pattern" | ||||||
|  |  ;printVarSummary(Z) | ||||||
|  |  | ||||||
|  | ; ================================================================= | ||||||
|  | ; return POP time series and POP spatial patterns as a  | ||||||
|  | ; variable of type 'list' which contains 2 variables | ||||||
|  | ; ================================================================= | ||||||
|  |  | ||||||
|  |   return( [/z, Z/] )    ; this is type "list"       | ||||||
|  | end | ||||||
							
								
								
									
										115
									
								
								samples/NCL/WRF_static_2.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								samples/NCL/WRF_static_2.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,115 @@ | |||||||
|  | ;************************************************* | ||||||
|  | ; WRF static: panel different variables  | ||||||
|  | ;************************************************ | ||||||
|  | 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/wrf/WRF_contributed.ncl" | ||||||
|  | begin | ||||||
|  | ;************************************************ | ||||||
|  | ; open file and read in data | ||||||
|  | ;************************************************ | ||||||
|  |   f     = addfile("static.wrfsi.nc", "r") | ||||||
|  | ;************************************************ | ||||||
|  | ; Read variables | ||||||
|  | ;************************************************ | ||||||
|  |   use   = f->use(0,0,:,:)           ; land use dominant category | ||||||
|  |   stl   = f->stl(0,0,:,:)           ; top layer (0-30cm) dom cat soiltype | ||||||
|  |   sbl   = f->sbl(0,0,:,:)           ; bottom layer (30-90cm) dom cat soiltype | ||||||
|  |   lat2d = f->lat(0,0,:,:) | ||||||
|  |   lon2d = f->lon(0,0,:,:) | ||||||
|  |   lsMask= f->lnd(0,0,:,:)           ; land (1) water (0) mas | ||||||
|  |  | ||||||
|  | ;************************************************ | ||||||
|  | ; Use mask function to set all ocean areas to _FillValue | ||||||
|  | ;************************************************ | ||||||
|  |   use   = mask(use,lsMask,1) | ||||||
|  |   stl   = mask(stl,lsMask,1) | ||||||
|  |   sbl   = mask(sbl,lsMask,1) | ||||||
|  |  | ||||||
|  | ;************************************************ | ||||||
|  | ; Associate 2D coordinates with variables for plotting | ||||||
|  | ;************************************************ | ||||||
|  |   use@lat2d = lat2d | ||||||
|  |   use@lon2d = lon2d | ||||||
|  |   stl@lat2d = lat2d | ||||||
|  |   stl@lon2d = lon2d | ||||||
|  |   sbl@lat2d = lat2d | ||||||
|  |   sbl@lon2d = lon2d | ||||||
|  |  | ||||||
|  | ;************************************************   | ||||||
|  | ; The file should be examined via: ncdump -v grid_type static.wrsi  | ||||||
|  | ; This will print the print type. then enter below.  | ||||||
|  | ;************************************************   | ||||||
|  |   projection = "mercator"    | ||||||
|  |  | ||||||
|  | ;************************************************ | ||||||
|  | ; create plots   | ||||||
|  | ;************************************************ | ||||||
|  |   wks = gsn_open_wks("ps" ,"WRF_static")      ; ps,pdf,x11,ncgm,eps | ||||||
|  |   gsn_define_colormap(wks ,"BlAqGrYeOrReVi200"); choose colormap | ||||||
|  |  | ||||||
|  |   res                       = True             ; plot mods desired | ||||||
|  |   res@gsnSpreadColors       = True             ; use full range of colormap | ||||||
|  |   res@cnFillOn              = True             ; color plot desired | ||||||
|  |   res@cnLinesOn             = False            ; turn off contour lines | ||||||
|  |   res@cnLineLabelsOn        = False            ; turn off contour labels | ||||||
|  |   res@cnLevelSpacingF       = 1                ; manually specify interval | ||||||
|  |   res@cnFillMode            = "RasterFill"     ; activate raster mode | ||||||
|  |   res@lbLabelAutoStride     = True             ; let NCL figure lb stride | ||||||
|  |  | ||||||
|  | ;************************************************ | ||||||
|  | ; Turn on lat / lon labeling | ||||||
|  | ;************************************************ | ||||||
|  | ;;res@pmTickMarkDisplayMode = "Always"         ; turn on tickmarks | ||||||
|  |  | ||||||
|  |   dimll = dimsizes(lat2d) | ||||||
|  |   nlat  = dimll(0) | ||||||
|  |   mlon  = dimll(1) | ||||||
|  |  | ||||||
|  |   res@mpProjection          = projection | ||||||
|  |   res@mpLimitMode           = "Corners"   | ||||||
|  |   res@mpLeftCornerLatF      = lat2d(0,0) | ||||||
|  |   res@mpLeftCornerLonF      = lon2d(0,0) | ||||||
|  |   res@mpRightCornerLatF     = lat2d(nlat-1,mlon-1) | ||||||
|  |   res@mpRightCornerLonF     = lon2d(nlat-1,mlon-1) | ||||||
|  |  | ||||||
|  |   res@mpCenterLonF          = f->LoV          ; set center logitude          | ||||||
|  |                                      | ||||||
|  |   if (projection.eq."LambertConformal") then     | ||||||
|  |       res@mpLambertParallel1F   = f->Latin1     | ||||||
|  |       res@mpLambertParallel2F   = f->Latin2    | ||||||
|  |       res@mpLambertMeridianF    = f->LoV      | ||||||
|  |   end if | ||||||
|  |  | ||||||
|  |   res@mpFillOn              = False            ; turn off map fill | ||||||
|  |   res@mpOutlineDrawOrder    = "PostDraw"       ; draw continental outline last | ||||||
|  |   res@mpOutlineBoundarySets = "GeophysicalAndUSStates" ; state boundaries | ||||||
|  |  | ||||||
|  | ;;res@tfDoNDCOverlay        = True             ; True only for 'native' grid | ||||||
|  |   res@gsnAddCyclic          = False            ; data are not cyclic | ||||||
|  |  | ||||||
|  | ;************************************************ | ||||||
|  | ; allocate array for 3 plots | ||||||
|  | ;************************************************ | ||||||
|  |   plts                      = new (3,"graphic")    | ||||||
|  |  | ||||||
|  | ;************************************************ | ||||||
|  | ; Tell NCL not to draw or advance frame for individual plots | ||||||
|  | ;************************************************ | ||||||
|  |   res@gsnDraw               = False            ; (a) do not draw  | ||||||
|  |   res@gsnFrame              = False            ; (b) do not advance 'frame' | ||||||
|  |  | ||||||
|  |   plts(0)                   = gsn_csm_contour_map(wks,use,res) | ||||||
|  |   plts(1)                   = gsn_csm_contour_map(wks,stl,res) | ||||||
|  |   plts(2)                   = gsn_csm_contour_map(wks,sbl,res) | ||||||
|  | ;************************************************ | ||||||
|  | ; create panel: panel plots have their own set of resources | ||||||
|  | ;************************************************ | ||||||
|  |   resP                  = True                   ; modify the panel plot | ||||||
|  |   resP@txString         = "Land Use and Soil Type"      | ||||||
|  |   resP@gsnMaximize      = True                   ; maximize panel area | ||||||
|  |   resP@gsnPanelRowSpec  = True                   ; specify 1 top, 2 lower level   | ||||||
|  |   gsn_panel(wks,plts,(/1,2/),resP)               ; now draw as one plot | ||||||
|  |  | ||||||
|  | end | ||||||
|  |  | ||||||
							
								
								
									
										160
									
								
								samples/NCL/WRF_track_1.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								samples/NCL/WRF_track_1.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,160 @@ | |||||||
|  | ;******************************************************** | ||||||
|  | ; Plot storm stracks from wrfout files. | ||||||
|  | ;******************************************************** | ||||||
|  | ; | ||||||
|  | ; JUN-18-2005  | ||||||
|  | ; So-Young Ha (MMM/NCAR) | ||||||
|  | ; SEP-01-2006 | ||||||
|  | ; Slightly modified by Mary Haley to add some extra comments. | ||||||
|  | ; =========================================== | ||||||
|  |  | ||||||
|  | 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/WRF_contributed.ncl" | ||||||
|  | load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | begin | ||||||
|  |  | ||||||
|  | ; DATES | ||||||
|  |   date = (/1512,1600,1612,1700,1712,1800,1812,1900/) | ||||||
|  |   ndate = dimsizes(date) | ||||||
|  |  | ||||||
|  |   sdate = sprinti("%4.0i",date) | ||||||
|  |  | ||||||
|  | ; Experiment name (for legend) | ||||||
|  |   EXP = (/"EXP_I"/)                ; (/"EXP_I","EXP_II","EXP_III"/) | ||||||
|  |   nexp = dimsizes(EXP) | ||||||
|  |  | ||||||
|  | ; To get lat/lon info. | ||||||
|  |  | ||||||
|  |   a = addfile("wrfout_d01_2003-07-15_00:00:00.nc","r") | ||||||
|  |  | ||||||
|  |   lat2d = a->XLAT(0,:,:) | ||||||
|  |   lon2d = a->XLONG(0,:,:) | ||||||
|  |   dimll = dimsizes(lat2d) | ||||||
|  |   nlat  = dimll(0) | ||||||
|  |   mlon  = dimll(1) | ||||||
|  |  | ||||||
|  | ; Sea Level Pressure | ||||||
|  |   slp = wrf_user_getvar(a,"slp",0) | ||||||
|  |   dims = dimsizes(slp) | ||||||
|  |  | ||||||
|  | ; Array for track | ||||||
|  |   time = new(ndate,string) | ||||||
|  |   imin = new(ndate,integer) | ||||||
|  |   jmin = new(ndate,integer) | ||||||
|  |   smin = new(ndate,integer) | ||||||
|  |  | ||||||
|  | ; ======= | ||||||
|  | ;  ndate | ||||||
|  | ; ======= | ||||||
|  |   fs = systemfunc("ls wrfout*00") | ||||||
|  |   nfs= dimsizes(fs) | ||||||
|  |   if(nfs .ne. ndate) then | ||||||
|  |      print("Check input data:"+nfs+" .ne. "+ndate) | ||||||
|  |   end if | ||||||
|  |  | ||||||
|  |   do ifs=0,nfs-1 | ||||||
|  |     f = addfile(fs(ifs)+".nc","r") | ||||||
|  |     time(ifs) = wrf_user_list_times(f) | ||||||
|  | ;    print(time(ifs)) | ||||||
|  |     slp2d = wrf_user_getvar(f,"slp",0) | ||||||
|  |  | ||||||
|  | ; We need to convert 2-D array to 1-D array to find the minima. | ||||||
|  |     slp1d     = ndtooned(slp2d) | ||||||
|  |     smin(ifs) = minind(slp1d) | ||||||
|  |  | ||||||
|  | ; Convert the index for 1-D array back to the indeces for 2-D array. | ||||||
|  |     minij     = ind_resolve(ind(slp1d.eq.min(slp2d)),dims) | ||||||
|  |     imin(ifs) = minij(0,0) | ||||||
|  |     jmin(ifs) = minij(0,1) | ||||||
|  |  | ||||||
|  | ;    print(time(ifs)+" : "+min(slp2d)+" ("+imin(ifs)+","+jmin(ifs)+")") | ||||||
|  |   end do | ||||||
|  | ; | ||||||
|  |  | ||||||
|  | ; Graphics section | ||||||
|  |  | ||||||
|  |   wks=gsn_open_wks("ps","track")              ; Open PS file. | ||||||
|  |   gsn_define_colormap(wks,"BlGrYeOrReVi200")  ; Change color map. | ||||||
|  |  | ||||||
|  |   res                     = True | ||||||
|  |   res@gsnDraw             = False             ; Turn off draw. | ||||||
|  |   res@gsnFrame            = False             ; Turn off frame advance. | ||||||
|  |   res@gsnMaximize         = True              ; Maximize plot in frame. | ||||||
|  |  | ||||||
|  |   res@tiMainString = "Hurricane Isabel"       ; Main title | ||||||
|  |  | ||||||
|  |   WRF_map_c(a,res,0)                          ; Set up map resources | ||||||
|  |                                               ;    (plot options) | ||||||
|  |   plot = gsn_csm_map(wks,res)                 ; Create a map. | ||||||
|  |  | ||||||
|  | ; Set up resources for polymarkers. | ||||||
|  |   gsres                = True | ||||||
|  |   gsres@gsMarkerIndex  = 16                  ; filled dot | ||||||
|  |   ;gsres@gsMarkerSizeF = 0.005               ; default - 0.007 | ||||||
|  |   cols                  = (/5,160,40/) | ||||||
|  |  | ||||||
|  | ; Set up resources for polylines. | ||||||
|  |   res_lines                      = True | ||||||
|  |   res_lines@gsLineThicknessF     = 3.           ; 3x as thick | ||||||
|  |  | ||||||
|  |   dot  = new(ndate,graphic)    ; Make sure each gsn_add_polyxxx call | ||||||
|  |   line = new(ndate,graphic)    ; is assigned to a unique variable. | ||||||
|  |  | ||||||
|  | ; Loop through each date and add polylines to the plot. | ||||||
|  |   do i = 0,ndate-2 | ||||||
|  |      res_lines@gsLineColor           = cols(0) | ||||||
|  |      xx=(/lon2d(imin(i),jmin(i)),lon2d(imin(i+1),jmin(i+1))/) | ||||||
|  |      yy=(/lat2d(imin(i),jmin(i)),lat2d(imin(i+1),jmin(i+1))/) | ||||||
|  |      line(i) = gsn_add_polyline(wks,plot,xx,yy,res_lines) | ||||||
|  |   end do | ||||||
|  |  | ||||||
|  |   lon1d = ndtooned(lon2d) | ||||||
|  |   lat1d = ndtooned(lat2d) | ||||||
|  |  | ||||||
|  | ; Loop through each date and add polymarkers to the plot. | ||||||
|  |   do i = 0,ndate-1 | ||||||
|  |      print("dot:"+lon1d(smin(i))+","+lat1d(smin(i))) | ||||||
|  |      gsres@gsMarkerColor  = cols(0) | ||||||
|  |      dot(i)=gsn_add_polymarker(wks,plot,lon1d(smin(i)),lat1d(smin(i)),gsres) | ||||||
|  |   end do | ||||||
|  |  | ||||||
|  | ; Date (Legend) | ||||||
|  |   txres               = True | ||||||
|  |   txres@txFontHeightF = 0.015 | ||||||
|  |   txres@txFontColor   = cols(0) | ||||||
|  |  | ||||||
|  |   txid1 = new(ndate,graphic) | ||||||
|  | ; Loop through each date and draw a text string on the plot. | ||||||
|  |   do i = 0, ndate-1 | ||||||
|  |      txres@txJust = "CenterRight" | ||||||
|  |      ix = smin(i) - 4 | ||||||
|  |      print("Eye:"+ix) | ||||||
|  |      if(i.eq.1) then | ||||||
|  |         txres@txJust = "CenterLeft" | ||||||
|  |         ix = ix + 8 | ||||||
|  |      end if | ||||||
|  |      txid1(i) = gsn_add_text(wks,plot,sdate(i),lon1d(ix),lat1d(ix),txres) | ||||||
|  |   end do | ||||||
|  |  | ||||||
|  | ; Add marker and text for legend. (Or you can just use "pmLegend" instead.) | ||||||
|  |   txres@txJust = "CenterLeft" | ||||||
|  |  | ||||||
|  |   txid2 = new(nexp,graphic) | ||||||
|  |   pmid2 = new(nexp,graphic) | ||||||
|  |   do i = 0,nexp-1 | ||||||
|  |      gsres@gsMarkerColor  = cols(i) | ||||||
|  |      txres@txFontColor    = cols(i) | ||||||
|  |      ii = ((/129,119,109/))  ; ilat | ||||||
|  |      jj = ((/110,110,110/))  ; jlon | ||||||
|  |      ji = ii*mlon+jj         ; col x row | ||||||
|  |      pmid2(i) = gsn_add_polymarker(wks,plot,lon1d(ji(i)),lat1d(ji(i)),gsres) | ||||||
|  |      txid2(i) = gsn_add_text(wks,plot,EXP(i),lon1d(ji(i)+5),lat1d(ji(i)),txres) | ||||||
|  |   end do | ||||||
|  |  | ||||||
|  |   draw(plot) | ||||||
|  |   frame(wks) | ||||||
|  | end | ||||||
							
								
								
									
										129
									
								
								samples/NCL/cru_8.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								samples/NCL/cru_8.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,129 @@ | |||||||
|  | ;***************************************************** | ||||||
|  | ; 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) | ||||||
							
								
								
									
										20
									
								
								samples/NCL/gsn_csm_xy2_time_series_inputs.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								samples/NCL/gsn_csm_xy2_time_series_inputs.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | ;******************** Inputs Regarding Input and Output Data  ************************************* | ||||||
|  |  | ||||||
|  | ;netCDFFilePath = "NULL-MYD04_L2.051-MIL2ASAE.0022-AERONET_AOD_L2.2-20112106165049.nc" | ||||||
|  | ;outputFilePath = "plot-output" | ||||||
|  |  | ||||||
|  | ;******************* Inputs Regarding Data Structure *********************************************** | ||||||
|  |  | ||||||
|  | ;lPlotVariablesList = "mean_AERONET_AOD_L2_2_AOD0558intrp_Ames,mean_MIL2ASAE_0022_AOD0866b_Ames" | ||||||
|  | ;rPlotVariablesList = "medn_MYD04_L2_051_AOD0550dpbl_l_Ames" | ||||||
|  |  | ||||||
|  | ;xDimName = "time" | ||||||
|  | ;xDimSize = 365 | ||||||
|  |  | ||||||
|  | ;******************* Inputs Regarding the View Annotations **************************************** | ||||||
|  |  | ||||||
|  | ;title = "MAPSS Time Series" | ||||||
|  | ;yLAxisLabel = "Mean AOD" | ||||||
|  | ;yRAxisLabel = "Median AOD" | ||||||
|  |  | ||||||
|  | ;*******************END INPUTS ******************************************************************** | ||||||
							
								
								
									
										128
									
								
								samples/NCL/hdf4sds_7.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								samples/NCL/hdf4sds_7.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,128 @@ | |||||||
|  | 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"  | ||||||
|  | ;************************************************************** | ||||||
|  | ; User Input | ||||||
|  | ;*************************************************************** | ||||||
|  |                                              ; INPUT | ||||||
|  |    diri   = "./"                             ; input directory | ||||||
|  |    fili   = "wv_LV3_MET08_20050102_12345678_L00013712E00013712.hdf" | ||||||
|  |  | ||||||
|  |    pltDir  = "./"                        ; directory for plot output | ||||||
|  |    sfx     = get_file_suffix(fili,1)  | ||||||
|  |   ;pltName = sfx@fBase                   ; output graphic name | ||||||
|  |    pltName = "hdf4sds" | ||||||
|  |    pltType = "ps"                                             | ||||||
|  |  | ||||||
|  | ;*************************************************************** | ||||||
|  | ; End User Input | ||||||
|  | ;*************************************************************** | ||||||
|  |  | ||||||
|  | ;*************************************************************** | ||||||
|  | ; Open SEVIRI L3 'wv' HDF file | ||||||
|  | ;*************************************************************** | ||||||
|  | ; Note the rather unusual data format: flag *prepended* to data value | ||||||
|  | ;*************************************************************** | ||||||
|  | ;     integer twc_lv3 ( fakeDim0, fakeDim1 ) | ||||||
|  | ;        long_name :    total water vapour column + flag | ||||||
|  | ;        units :        fmmmm | ||||||
|  | ;        format :       I4 | ||||||
|  | ;        valid_range :  ( 10000, 38000 ) | ||||||
|  | ;        _FillValue :   -99 | ||||||
|  | ;        legend_01 :    f = flag | ||||||
|  | ;        legend_02 :    f = 1 averaged level 2 values | ||||||
|  | ;        legend_03 :    f = 2 interpolated from averaged level 2 values | ||||||
|  | ;        legend_04 :    f = 3 gaps filled with NVAP climatology | ||||||
|  | ;        legend_05 :    mmmm = water vapour column in mm * 100. as integer | ||||||
|  | ;        legend_06 :    Example: 11025 means: flag = 1, 10.25 mm water vapour column | ||||||
|  | ;        min_lat :      -74.75 | ||||||
|  | ;        max_lat :      61.75 | ||||||
|  | ;        min_lon :      -75.25 | ||||||
|  | ;        max_lon :      75.25 | ||||||
|  | ;        dlat : 0.5 | ||||||
|  | ;        dlon : 0.5 | ||||||
|  | ;--------------------------------------------------------------- | ||||||
|  |  | ||||||
|  |    f      = addfile (diri+fili, "r") | ||||||
|  |    ifx    = f->twc_lv3                  ; fmmmm (integer)                      | ||||||
|  |    printVarSummary(ifx) | ||||||
|  |  | ||||||
|  |    flag   = ifx/10000                   ; extract flag | ||||||
|  |    ix     = ifx - flag*10000            ; extract mmmm | ||||||
|  |    x      = ix*0.01                     ; scale | ||||||
|  |  | ||||||
|  | ; create meta data for 'x' | ||||||
|  |  | ||||||
|  |    dimx   = dimsizes(x) | ||||||
|  |    nlat   = dimx(0)                     ; grid size x(nlat,mlon) | ||||||
|  |    mlon   = dimx(1) | ||||||
|  |  | ||||||
|  |    lat    = fspan(ifx@min_lat, ifx@max_lat, nlat) | ||||||
|  |    lat@units = "degrees_north" | ||||||
|  |    lon    = fspan(ifx@min_lon, ifx@max_lon, mlon) | ||||||
|  |    lon@units = "degrees_east" | ||||||
|  |  | ||||||
|  |    x!0    = "lat" | ||||||
|  |    x!1    = "lon" | ||||||
|  |    x&lat  =  lat | ||||||
|  |    x&lon  =  lon | ||||||
|  |    x@long_name = "SEVIRI: Total Water Vapor" | ||||||
|  |    x@units     = "mm" | ||||||
|  |  | ||||||
|  |    delete( [/ifx, ix/] )                ; no longer needed | ||||||
|  |  | ||||||
|  | ;*************************************************************** | ||||||
|  | ; Create plot  | ||||||
|  | ;*************************************************************** | ||||||
|  |    wks    = gsn_open_wks(pltType, pltDir+pltName) | ||||||
|  |  | ||||||
|  |    plot   = new (2, "graphic") | ||||||
|  |     | ||||||
|  |    res                      = True     ; plot mods desired | ||||||
|  |    res@gsnAddCyclic         = False    ; data noty global | ||||||
|  |    res@gsnDraw              = False | ||||||
|  |    res@gsnFrame             = False | ||||||
|  |       | ||||||
|  |    res@cnFillOn             = True     ; turn on color fill | ||||||
|  |    res@cnLinesOn            = False    ; turn of contour lines | ||||||
|  |    res@cnFillMode           = "RasterFill" ; Raster Mode | ||||||
|  |    res@cnLinesOn            =  False       ; Turn off contour lines | ||||||
|  |    res@cnLineLabelsOn       =  False       ; Turn off contour lines | ||||||
|  |    res@cnMissingValFillColor= "background" ; "foreground" | ||||||
|  |     | ||||||
|  |    res@mpCenterLonF         = 0.5*(min(x&lon) + max(x&lon)) | ||||||
|  |    res@mpMinLatF            = min(x&lat) | ||||||
|  |    res@mpMaxLatF            = max(x&lat) | ||||||
|  |    res@mpMinLonF            = min(x&lon) | ||||||
|  |    res@mpMaxLonF            = max(x&lon) | ||||||
|  |  | ||||||
|  |   ;res@lbOrientation        = "Vertical" | ||||||
|  |  | ||||||
|  |    plot(0) = gsn_csm_contour_map_ce(wks,x, res) | ||||||
|  |  | ||||||
|  | ; plot flag | ||||||
|  |  | ||||||
|  |    copy_VarCoords(x, flag) | ||||||
|  |    flag@long_name = "Flag" | ||||||
|  |    flag@units     = "1=avg(L2), 2=int(L2), 3=NVAP" | ||||||
|  |    print(flag&lat+"   "+flag(:,{30})) | ||||||
|  |  | ||||||
|  |    res@cnLevelSelectionMode = "ManualLevels"     ; set manual contour levels | ||||||
|  |    res@cnMinLevelValF       =   2                ; set min contour level | ||||||
|  |    res@cnMaxLevelValF       =   3                ; one less than max | ||||||
|  |    res@cnLevelSpacingF      =   1                ; set contour spacing | ||||||
|  |   | ||||||
|  |    res@lbLabelStrings       = ispan(1,3,1)       ; 1, 2, 3 | ||||||
|  |    res@lbLabelPosition      = "Center"           ; label position | ||||||
|  |    res@lbLabelAlignment     = "BoxCenters" | ||||||
|  |   | ||||||
|  |    res@gsnLeftString        = "" | ||||||
|  |    res@gsnRightString       = "" | ||||||
|  |    res@gsnCenterString      = "flag: 1=avg(L2), 2=int(L2), 3=NVAP" | ||||||
|  |  | ||||||
|  |    plot(1) = gsn_csm_contour_map_ce(wks,flag, res) | ||||||
|  |  | ||||||
|  |    resP                     = True                ; modify the panel plot | ||||||
|  |    resP@txString            = fili | ||||||
|  |    resP@gsnMaximize         = True  | ||||||
|  |    gsn_panel(wks,plot,(/1,2/),resP)               ; now draw as one plot | ||||||
							
								
								
									
										125
									
								
								samples/NCL/mask_12.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								samples/NCL/mask_12.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,125 @@ | |||||||
|  | ;---------------------------------------------------------------------- | ||||||
|  | ; mask_12.ncl | ||||||
|  | ; | ||||||
|  | ; Concepts illustrated: | ||||||
|  | ;   - Using a worldwide shapefile to create a land/ocean mask | ||||||
|  | ;   - Masking a data array based on a geographical area | ||||||
|  | ;   - Attaching shapefile polylines to a map plot | ||||||
|  | ;   - Attaching lat/lon points to a map using gsn_coordinates | ||||||
|  | ;---------------------------------------------------------------------- | ||||||
|  | ; Downloaded GSHHS shapefiles from: | ||||||
|  | ; | ||||||
|  | ;  http://www.ngdc.noaa.gov/mgg/shorelines/data/gshhg/latest/ | ||||||
|  | ; | ||||||
|  | ; Used the "coarsest" one: "GSHHS_shp/c/GSHHS_c_L1.shp". | ||||||
|  | ;---------------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | 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 "./shapefile_mask_data.ncl" | ||||||
|  |  | ||||||
|  | ;---------------------------------------------------------------------- | ||||||
|  | ; Main code | ||||||
|  | ;---------------------------------------------------------------------- | ||||||
|  | begin | ||||||
|  |   WRITE_MASK = True | ||||||
|  |   DEBUG      = False | ||||||
|  |  | ||||||
|  | ;---Read data to plot and mask | ||||||
|  |   dir        = "$NCARG_ROOT/lib/ncarg/data/cdf/" | ||||||
|  |   cdf_prefix = "uv300" | ||||||
|  |   cdf_file   = dir + cdf_prefix + ".nc" | ||||||
|  |   fin        = addfile(cdf_file,"r") | ||||||
|  |   u          = fin->U(1,:,:) | ||||||
|  | ; | ||||||
|  | ; Create a mask array the same size as "u", using | ||||||
|  | ; lat/lon data read off a shapefile. | ||||||
|  | ; | ||||||
|  |   shpfile   = "GSHHS_shp/c/GSHHS_c_L1.shp" | ||||||
|  |   opt             = True | ||||||
|  |   opt@return_mask = True | ||||||
|  |  | ||||||
|  |   land_mask = shapefile_mask_data(u,shpfile,opt) | ||||||
|  |  | ||||||
|  | ;---Mask "u" against land and ocean. | ||||||
|  |   u_land_mask  = where(land_mask.eq.1,u,u@_FillValue) | ||||||
|  |   u_ocean_mask = where(land_mask.eq.0,u,u@_FillValue) | ||||||
|  |   copy_VarMeta(u,u_land_mask) | ||||||
|  |   copy_VarMeta(u,u_ocean_mask) | ||||||
|  |  | ||||||
|  | ;---Start the graphics | ||||||
|  |   wks = gsn_open_wks("ps","mask") | ||||||
|  |  | ||||||
|  |   res                       = True | ||||||
|  |  | ||||||
|  |   res@gsnMaximize           = True           ; maximize plot in frame | ||||||
|  |   res@gsnDraw               = False          ; don't draw plot yet | ||||||
|  |   res@gsnFrame              = False          ; don't advance frame yet | ||||||
|  |  | ||||||
|  |   res@cnFillOn              = True | ||||||
|  |   res@cnLineLabelsOn        = False | ||||||
|  |   res@cnLinesOn             = False | ||||||
|  |  | ||||||
|  | ;---Make sure both plots have same contour levels | ||||||
|  |   mnmxint                   = nice_mnmxintvl(min(u),max(u),25,False) | ||||||
|  |   res@cnLevelSelectionMode  = "ManualLevels" | ||||||
|  |   res@cnMinLevelValF        = mnmxint(0) | ||||||
|  |   res@cnMaxLevelValF        = mnmxint(1) | ||||||
|  |   res@cnLevelSpacingF       = mnmxint(2) | ||||||
|  |  | ||||||
|  |   res@lbLabelBarOn          = False | ||||||
|  |   res@gsnAddCyclic          = False | ||||||
|  |  | ||||||
|  |   res@mpFillOn              = False | ||||||
|  |   res@mpOutlineOn           = False | ||||||
|  |  | ||||||
|  |   res@gsnRightString        = "" | ||||||
|  |   res@gsnLeftString         = "" | ||||||
|  |  | ||||||
|  | ;---Create plot of original data and attach shapefile outlines | ||||||
|  |   res@tiMainString         = "Original data with shapefile outlines" | ||||||
|  |   map_data = gsn_csm_contour_map(wks,u,res) | ||||||
|  |   dum1     = gsn_add_shapefile_polylines(wks,map_data,shpfile,False) | ||||||
|  |  | ||||||
|  | ;---Create plots of masked data | ||||||
|  |   res@tiMainString         = "Original data masked against land" | ||||||
|  |   map_land_mask  = gsn_csm_contour_map(wks,u_land_mask,res) | ||||||
|  |   res@tiMainString         = "Original data masked against ocean" | ||||||
|  |   map_ocean_mask = gsn_csm_contour_map(wks,u_ocean_mask,res) | ||||||
|  |  | ||||||
|  |   if(DEBUG) then | ||||||
|  |     mkres                 = True | ||||||
|  | ;    mkres@gsMarkerSizeF   = 0.007 | ||||||
|  |     mkres@gsnCoordsAttach = True | ||||||
|  |     gsn_coordinates(wks,map_data,u,mkres) | ||||||
|  |     mkres@gsnCoordsNonMissingColor = "yellow" | ||||||
|  |     mkres@gsnCoordsMissingColor    = "black" | ||||||
|  |     gsn_coordinates(wks,map_land_mask,u_land_mask,mkres) | ||||||
|  |     gsn_coordinates(wks,map_ocean_mask,u_ocean_mask,mkres) | ||||||
|  |   end if | ||||||
|  |  | ||||||
|  | ;---Add shapefile outlines | ||||||
|  |   dum2 = gsn_add_shapefile_polylines(wks,map_land_mask,shpfile,False) | ||||||
|  |   dum3 = gsn_add_shapefile_polylines(wks,map_ocean_mask,shpfile,False) | ||||||
|  |  | ||||||
|  | ;---Draw all three plots on one page | ||||||
|  |   pres                  = True | ||||||
|  |   pres@gsnMaximize      = True | ||||||
|  |   pres@gsnPanelLabelBar = True | ||||||
|  |   gsn_panel(wks,(/map_data,map_land_mask,map_ocean_mask/),(/3,1/),pres) | ||||||
|  |  | ||||||
|  |   if(WRITE_MASK) then | ||||||
|  |     delete(fin)     ; Close file before we open again. | ||||||
|  | ; | ||||||
|  | ; Make copy of file so we don't overwrite original. | ||||||
|  | ; This is not necessary, but it's safer. | ||||||
|  | ; | ||||||
|  |     new_cdf_file = cdf_prefix + "_with_mask.nc" | ||||||
|  |     system("/bin/cp " + cdf_file + " " + new_cdf_file) | ||||||
|  |     finout = addfile(new_cdf_file,"w") | ||||||
|  |     filevardef(finout, "land_mask", typeof(land_mask), (/ "lat", "lon" /) ) | ||||||
|  |     finout->land_mask = (/land_mask/) | ||||||
|  |   end if | ||||||
|  | end | ||||||
|  |  | ||||||
							
								
								
									
										115
									
								
								samples/NCL/mcsst_1.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								samples/NCL/mcsst_1.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,115 @@ | |||||||
|  | ;***************************************************** | ||||||
|  | ; mcsst_1.ncl | ||||||
|  | ; | ||||||
|  | ; Concepts illustrated: | ||||||
|  | ;   - Plotting NAVO MCSST data | ||||||
|  | ;   - Using fbindirread to read in fortran binary data | ||||||
|  | ;   - Converting "byte" data to "float" | ||||||
|  | ;   - Adding meta data (attributes and coordinates) to a variable | ||||||
|  | ;   - Adding gray to an existing color map | ||||||
|  | ;   - Spanning all but the last two colors in a color map for contour fill | ||||||
|  | ;   - Drawing raster contours | ||||||
|  | ; | ||||||
|  | ;***************************************************** | ||||||
|  | load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" | ||||||
|  | load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl" | ||||||
|  | ;*************************************** | ||||||
|  | ; type of data available on file | ||||||
|  | ;*************************************** | ||||||
|  | ; ipar=0  Weekly Binned Sea Surface Temperature  | ||||||
|  | ; ipar=1  Number of Points in Bin  | ||||||
|  | ; ipar=2  Weekly Binned Sea Surface Temperature Anomaly  | ||||||
|  | ; ipar=3  Interpolated Sea Surface Temperature  | ||||||
|  | ; ipar=4  Interpolated Sea Surface Temperature Anomaly  | ||||||
|  | ;*************************************** | ||||||
|  | begin | ||||||
|  |   ipar  = 3 | ||||||
|  |   fname = "2001311d18N16.dat" | ||||||
|  |   tmp   = fbindirread(fname,ipar,(/1024,2048/),"byte") | ||||||
|  | ;*************************************** | ||||||
|  | ; convert to float and then change to true SST | ||||||
|  | ;*************************************** | ||||||
|  |   xslope = 0.15 | ||||||
|  |   if(ipar.eq.4.or.ipar.eq.2)then               ; anom has different intercept | ||||||
|  |     yint = -20.0 | ||||||
|  |   end if | ||||||
|  |   if(ipar.eq.3.or.ipar.eq.0)then | ||||||
|  |     yint = -3.0  | ||||||
|  |   end if | ||||||
|  |   sst  = new((/1024,2048/),"float")            ; create float var | ||||||
|  |   sst  = tmp*xslope+yint                       ; convert to float | ||||||
|  |   delete(tmp)                                  ; delete unecessary array | ||||||
|  | ;*************************************** | ||||||
|  | ; assign missing values. The original missing value was zero, but since it was | ||||||
|  | ; not assigned in NCL, it was not recognized. The new missing values are  | ||||||
|  | ; listed below. These will be changed later. | ||||||
|  | ;*************************************** | ||||||
|  |   if(ipar.eq.4)then | ||||||
|  |      sst@_FillValue = -20                     | ||||||
|  |   end if | ||||||
|  |   if(ipar.eq.3.or.ipar.eq.0)then | ||||||
|  |      sst@_FillValue = -3                      | ||||||
|  |   end if | ||||||
|  | ;*************************************** | ||||||
|  | ;   create coordinate variables | ||||||
|  | ;*************************************** | ||||||
|  |   nlat      = 1024 | ||||||
|  |   dy        = 180./nlat | ||||||
|  |   lat       = (90. -(ispan(0,1023,1)*dy))-dy/2 | ||||||
|  |   lat!0     = "lat" | ||||||
|  |   lat&lat   = lat | ||||||
|  |   lat@units = "degrees_north" | ||||||
|  |  | ||||||
|  |   nlon      = 2048 | ||||||
|  |   dx        = 360./nlon | ||||||
|  |   lon       = (ispan(0,2047,1)*dx)+dx/2-180. ; note -180. added by sjm to align | ||||||
|  |   lon!0     = "lon" | ||||||
|  |   lon&lon   = lon | ||||||
|  |   lon@units = "degrees_east"    | ||||||
|  | ;*************************************** | ||||||
|  | ;   fill out the netCDF data model | ||||||
|  | ;*************************************** | ||||||
|  |   sst!0          = "lat"               ; name dimensions | ||||||
|  |   sst!1          = "lon"               ; ditto | ||||||
|  |   sst            = sst(::-1,:)         ; reverse lat orientation | ||||||
|  |   sst@long_name  = "NAVO MCSST"        ; assign long_name | ||||||
|  |   sst@units      = "deg C"             ; assign units | ||||||
|  |   sst&lat        = lat                 ; assign lat cv | ||||||
|  |   sst&lon        = lon	               ; assign lon cv | ||||||
|  |   sst@_FillValue = -999.               ; assign missing value    | ||||||
|  | ;*************************************** | ||||||
|  | ;   get year and day from filename | ||||||
|  | ;*************************************** | ||||||
|  |   res   = True                          ; plot mods desired | ||||||
|  |   title = stringtochar(fname)           ; parse file name to get date | ||||||
|  |   year  = title(0:3) | ||||||
|  |   jday  = title(4:6) | ||||||
|  |   res@gsnCenterString = year+" "+jday   ; create center string | ||||||
|  | ;*************************************** | ||||||
|  | ;   create plot | ||||||
|  | ;*************************************** | ||||||
|  |   wks  = gsn_open_wks("ps","mcsst")    ; open workstation (plot destination) | ||||||
|  |   gsn_define_colormap(wks,"BlGrYeOrReVi200") ; choose colormap   | ||||||
|  | ; | ||||||
|  | ; This will not be necessary in V6.1.0 and later. Named colors can | ||||||
|  | ; be used without having to first add them to the color map. | ||||||
|  | ; | ||||||
|  |   d    = NhlNewColor(wks,0.8,0.8,0.8)   ; add gray to colormap | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   res@cnFillOn             = True        ; turn on color | ||||||
|  |   res@gsnSpreadColors      = True        ; use full range of colormap | ||||||
|  |   res@gsnSpreadColorStart  = 2           ; start at color 2 | ||||||
|  |   res@gsnSpreadColorEnd    = -3          ; don't use added gray | ||||||
|  |   res@cnLinesOn            = False       ; no contour lines | ||||||
|  |   res@cnFillDrawOrder      = "PreDraw"   ; draw contours before continents | ||||||
|  |   res@gsnMaximize          = True        ; maximize plot | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ; For a grid this size, it is better to use raster mode. It will be  | ||||||
|  | ; significantly faster, and will not go over NCL's 16mb default plot size. | ||||||
|  |   res@cnFillMode           = "RasterFill"       ; turn on raster mode | ||||||
|  |  | ||||||
|  |   plot = gsn_csm_contour_map_ce(wks,sst,res) ; contour the variable | ||||||
|  |  | ||||||
|  | end | ||||||
							
								
								
									
										3
									
								
								samples/NCL/primero.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								samples/NCL/primero.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | val=102 | ||||||
|  | a=val/4. | ||||||
|  | print(a) | ||||||
							
								
								
									
										172
									
								
								samples/NCL/topo_9.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								samples/NCL/topo_9.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,172 @@ | |||||||
|  | ;---------------------------------------------------------------------- | ||||||
|  | ; topo_9.ncl | ||||||
|  | ; | ||||||
|  | ; Concepts illustrated: | ||||||
|  | ;   - Recreating a jpeg topographic image as an NCL map object | ||||||
|  | ;   - Zooming in on a jpeg image | ||||||
|  | ;   - Drawing a box around an area of interest on a map | ||||||
|  | ;   - Attaching polylines to a map | ||||||
|  | ;   - Using "overlay" to overlay multiple contour plots | ||||||
|  | ;   - Using more than 256 colors per frame | ||||||
|  | ;   - Using functions for cleaner code | ||||||
|  | ;---------------------------------------------------------------------- | ||||||
|  | ; NOTE: This example will only work with NCL V6.1.0 and later. | ||||||
|  | ; | ||||||
|  | ; This script recreates a JPEG image that was converted to a NetCDF | ||||||
|  | ; file with color separated bands using the open source tool | ||||||
|  | ; "gdal_translate": | ||||||
|  | ; | ||||||
|  | ;  gdal_translate -ot Int16 -of netCDF EarthMap_2500x1250.jpg \ | ||||||
|  | ;           EarthMap_2500x1250.nc | ||||||
|  | ;---------------------------------------------------------------------- | ||||||
|  | load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"    | ||||||
|  | load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"    | ||||||
|  |  | ||||||
|  | ;---------------------------------------------------------------------- | ||||||
|  | ; This function imports a JPEG image that's on the whole globe, | ||||||
|  | ; and recreates it as an NCL map object that is zoomed in on the | ||||||
|  | ; southern tip of Africa. | ||||||
|  | ;---------------------------------------------------------------------- | ||||||
|  | undef("recreate_jpeg_image") | ||||||
|  | function recreate_jpeg_image(wks,minlat,maxlat,minlon,maxlon) | ||||||
|  | begin | ||||||
|  |   orig_jpg_filename = "EarthMap_2500x1250.jpg" | ||||||
|  |   nc_filename       = "EarthMap_2500x1250.nc" | ||||||
|  |  | ||||||
|  | ;--You could use a system call to do the NetCDF conversion | ||||||
|  | ;  cmd = "gdal_translate -ot Int16 -of netCDF " + jpeg_filename + \ | ||||||
|  | ;         " " + nc_filename) | ||||||
|  | ;  system(cmd) | ||||||
|  |  | ||||||
|  | ;---Read the three bands of data | ||||||
|  |   f     = addfile(nc_filename,"r") | ||||||
|  |   Band1 = where(f->Band1.gt.255, 255, f->Band1)  ; red channel | ||||||
|  |   Band2 = where(f->Band2.gt.255, 255, f->Band2)  ; green channel | ||||||
|  |   Band3 = where(f->Band3.gt.255, 255, f->Band3)  ; blue channel | ||||||
|  |  | ||||||
|  |   band_dims = dimsizes(Band3) | ||||||
|  |   nlat      = band_dims(0) | ||||||
|  |   nlon      = band_dims(1) | ||||||
|  |   print("dimensions of image = " + nlat + " x " + nlon) | ||||||
|  |  | ||||||
|  | ; | ||||||
|  | ; Add lat/lon data so we can overlay on a map, and/or  | ||||||
|  | ; overlay contours. We know the image is global, | ||||||
|  | ; cylindrical equidistant, and centered about lon=0. | ||||||
|  | ; | ||||||
|  |   lat       = fspan( -90, 90,nlat) | ||||||
|  |   lon       = fspan(-180,180,nlon) | ||||||
|  |   lat@units = "degrees_north" | ||||||
|  |   lon@units = "degrees_east" | ||||||
|  |  | ||||||
|  |   Band1!0   = "lat" | ||||||
|  |   Band1!1   = "lon" | ||||||
|  |   Band2!0   = "lat" | ||||||
|  |   Band2!1   = "lon" | ||||||
|  |   Band3!0   = "lat" | ||||||
|  |   Band3!1   = "lon" | ||||||
|  |   Band1&lat = lat | ||||||
|  |   Band1&lon = lon | ||||||
|  |   Band2&lat = lat | ||||||
|  |   Band2&lon = lon | ||||||
|  |   Band3&lat = lat | ||||||
|  |   Band3&lon = lon | ||||||
|  |  | ||||||
|  |   res                 = True | ||||||
|  |  | ||||||
|  |   res@gsnMaximize     = True | ||||||
|  |  | ||||||
|  |   res@gsnFrame        = False        ; Don't draw or advance | ||||||
|  |   res@gsnDraw         = False        ; frame yet. | ||||||
|  |  | ||||||
|  |   res@cnFillOn        = True          | ||||||
|  |   res@cnFillMode      = "RasterFill" ; Raster fill can be faster | ||||||
|  |  | ||||||
|  |   res@cnLevelSelectionMode  = "EqualSpacedLevels" | ||||||
|  |   res@cnMaxLevelCount       = 254   | ||||||
|  |   res@cnFillBackgroundColor = (/ 1., 1., 1., 1./) | ||||||
|  |  | ||||||
|  |   res@cnLinesOn       = False              ; Turn off contour lines      . | ||||||
|  |   res@cnLineLabelsOn  = False              ; Turn off contour labels | ||||||
|  |   res@cnInfoLabelOn   = False              ; Turn off info label | ||||||
|  |   res@lbLabelBarOn    = False              ; Turn off labelbar | ||||||
|  |   res@gsnRightString  = ""                 ; Turn off subtitles | ||||||
|  |   res@gsnLeftString   = "" | ||||||
|  |   res@pmTickMarkDisplayMode    = "Always" | ||||||
|  |  | ||||||
|  | ;---Construct RGBA colormaps... | ||||||
|  |   ramp   = fspan(0., 1., 255) | ||||||
|  |   reds   = new((/255, 4/), float) | ||||||
|  |   greens = new((/255, 4/), float) | ||||||
|  |   blues  = new((/255, 4/), float) | ||||||
|  |  | ||||||
|  |   reds   = 0 | ||||||
|  |   greens = 0 | ||||||
|  |   blues  = 0 | ||||||
|  |  | ||||||
|  |   reds(:,0)   = ramp | ||||||
|  |   greens(:,1) = ramp | ||||||
|  |   blues(:,2)  = ramp | ||||||
|  |  | ||||||
|  |   ; The red contour map is plotted fully opaque; the green and blue | ||||||
|  |   ; are plotted completely transparent. When overlain, the colors  | ||||||
|  |   ; combine (rather magically). | ||||||
|  |   reds(:,3)   = 1. | ||||||
|  |   greens(:,3) = 0  | ||||||
|  |   blues(:,3)  = 0 | ||||||
|  |  | ||||||
|  |   res@cnFillColors = greens  | ||||||
|  |   greenMap = gsn_csm_contour(wks, Band2, res)  | ||||||
|  |  | ||||||
|  |   res@cnFillColors = blues | ||||||
|  |   blueMap = gsn_csm_contour(wks, Band3, res)  | ||||||
|  |   | ||||||
|  | ;---This will be our base, so make it a map plot. | ||||||
|  |   res@cnFillColors             = reds  | ||||||
|  |   res@gsnAddCyclic             = False | ||||||
|  |  | ||||||
|  |   res@mpFillOn                 = False   | ||||||
|  |  | ||||||
|  | ;---Zoom in on area of interest | ||||||
|  |   res@mpMinLatF                = minlat | ||||||
|  |   res@mpMaxLatF                = maxlat | ||||||
|  |   res@mpMinLonF                = minlon | ||||||
|  |   res@mpMaxLonF                = maxlon | ||||||
|  |  | ||||||
|  |   redMap = gsn_csm_contour_map(wks, Band1, res)  | ||||||
|  |  | ||||||
|  | ;---Overlay everything to create the topo map | ||||||
|  |   overlay(redMap, greenMap) | ||||||
|  |   overlay(redMap, blueMap) | ||||||
|  |  | ||||||
|  |   return(redMap) | ||||||
|  | end | ||||||
|  |  | ||||||
|  | ;---------------------------------------------------------------------- | ||||||
|  | ; Main code | ||||||
|  | ;---------------------------------------------------------------------- | ||||||
|  | begin | ||||||
|  | ;---Recreating jpeg images only works for X11 and PNG. | ||||||
|  |   wks = gsn_open_wks("png","topo") | ||||||
|  |  | ||||||
|  | ;---Southern part of Africa | ||||||
|  |   minlat = -40 | ||||||
|  |   maxlat =  5 | ||||||
|  |   minlon = 10 | ||||||
|  |   maxlon = 40 | ||||||
|  |  | ||||||
|  |   map = recreate_jpeg_image(wks,minlat,maxlat,minlon,maxlon) | ||||||
|  |  | ||||||
|  | ;---Overlay a red box | ||||||
|  |   lonbox = (/ 15, 35, 35, 15, 15/) | ||||||
|  |   latbox = (/-30,-30,-10,-10,-30/) | ||||||
|  |  | ||||||
|  |   lnres                  = True | ||||||
|  |   lnres@gsLineColor      = "red" ; red box  | ||||||
|  |   lnres@gsLineThicknessF = 4.0   ; make box thicker | ||||||
|  |   box = gsn_add_polyline(wks,map,lonbox,latbox,lnres) | ||||||
|  |  | ||||||
|  |   draw(map)       ; Drawing the map will draw the red box | ||||||
|  |   frame(wks) | ||||||
|  |  | ||||||
|  | end | ||||||
							
								
								
									
										120
									
								
								samples/NCL/traj_3.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								samples/NCL/traj_3.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,120 @@ | |||||||
|  | ;************************************************* | ||||||
|  | ; traj_3.ncl | ||||||
|  | ;************************************************* | ||||||
|  | load          "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" | ||||||
|  | external TRAJ "./particle.so" | ||||||
|  | ;************************************************* | ||||||
|  | begin | ||||||
|  |  | ||||||
|  |   path  = "./data.asc" | ||||||
|  |   data  = asciiread(path,(/500,6/),"float") | ||||||
|  | ;************************************************* | ||||||
|  | ; some parameters | ||||||
|  | ;************************************************* | ||||||
|  |   np = 1 | ||||||
|  |   nq = 500 | ||||||
|  |   ncor= 8 | ||||||
|  |   xrot   = new((/np,nq/),float) | ||||||
|  |   yrot   = new((/np,nq/),float) | ||||||
|  |   xaxis  = new(ncor,float) | ||||||
|  |   yaxis  = new(ncor,float) | ||||||
|  | ;************************************************** | ||||||
|  | ; convert data into rotated format | ||||||
|  | ;************************************************** | ||||||
|  |   TRAJ::particle(path,xrot,yrot,nq,np,xaxis,yaxis,ncor) | ||||||
|  | ;************************************************** | ||||||
|  | ; create plot | ||||||
|  | ;************************************************** | ||||||
|  |   wks = gsn_open_wks("ps","traj")      ; Open an ps file | ||||||
|  |  | ||||||
|  |   xyres = True | ||||||
|  |   xyres@gsnFrame     = False      ; don't advance the frame | ||||||
|  |   xyres@gsnDraw      = False      ; don't draw indivdual plots | ||||||
|  |   xyres@tmXTBorderOn = False      ; don't draw top axis | ||||||
|  |   xyres@tmXBBorderOn = False      ; don't draw bottom axis | ||||||
|  |   xyres@tmYRBorderOn = False      ; don't draw right axis | ||||||
|  |   xyres@tmYLBorderOn = False      ; don't draw left axis | ||||||
|  |   xyres@tmXTOn       = False      ; don't draw top-axis tick marks  | ||||||
|  |   xyres@tmXBOn       = False      ; don't draw bottom-axis tick marks | ||||||
|  |   xyres@tmYROn       = False      ; don't draw right-axis tick marks | ||||||
|  |   xyres@tmYLOn       = False      ; don't draw left-axis tick marks | ||||||
|  |  | ||||||
|  |   xyres@xyLineColors      = (/"red"/)    ; set the line color to red | ||||||
|  |   xyres@xyLineThicknessF  = 4.0          ; 4 times the line thickness  | ||||||
|  |  | ||||||
|  |   xyres@trXMaxF      =  15000            ; choose range of axis even though | ||||||
|  |   xyres@trXMinF      = -10000            ; we don't see them | ||||||
|  |   xyres@trYMaxF      =  1000 | ||||||
|  |   xyres@trYMinF      = -1000 | ||||||
|  |  | ||||||
|  |   plot = gsn_xy(wks,xrot,yrot,xyres)     ; Draw trajectory | ||||||
|  | ;********************************************** | ||||||
|  | ; create arrays needed for the bounding box | ||||||
|  | ;********************************************** | ||||||
|  |   a1 = new(5,float) | ||||||
|  |   b1 = new(5,float) | ||||||
|  |   a2 = new(5,float) | ||||||
|  |   b2 = new(5,float) | ||||||
|  |   a3 = new(2,float) | ||||||
|  |   b3 = new(2,float) | ||||||
|  |   a4 = new(2,float) | ||||||
|  |   b4 = new(2,float) | ||||||
|  |   a5 = new(2,float) | ||||||
|  |   b5 = new(2,float) | ||||||
|  |   a6 = new(2,float) | ||||||
|  |   b6 = new(2,float) | ||||||
|  |   a0 = new(2,float) | ||||||
|  |   b0 = new(2,float) | ||||||
|  | ;********************************************** | ||||||
|  | ; determine values of each bounding line from information | ||||||
|  | ; returned from particle.f | ||||||
|  | ;********************************************** | ||||||
|  |   a1(0:3) = xaxis(:3)              | ||||||
|  |   b1(0:3) = yaxis(:3) | ||||||
|  |   a1(4)   = xaxis(0) | ||||||
|  |   b1(4)   = yaxis(0) | ||||||
|  |  | ||||||
|  |   a2(0:3) = xaxis(4:) | ||||||
|  |   b2(0:3) = yaxis(4:)  | ||||||
|  |   a2(4)   = xaxis(4) | ||||||
|  |   b2(4)   = yaxis(4)  | ||||||
|  |  | ||||||
|  |   a3      = xaxis(0:4:4) | ||||||
|  |   b3      = yaxis(0:4:4)  | ||||||
|  |   a4      = xaxis(1:5:4) | ||||||
|  |   b4      = yaxis(1:5:4) | ||||||
|  |   | ||||||
|  |   a5      = xaxis(2:6:4) | ||||||
|  |   b5      = yaxis(2:6:4)  | ||||||
|  |   a6      = xaxis(3:7:4) | ||||||
|  |   b6      = yaxis(3:7:4)  | ||||||
|  |  | ||||||
|  |   a0(0)   = xaxis(3) | ||||||
|  |   b0(0)   = yaxis(3) | ||||||
|  |   a0(1)   = xrot(0,0) | ||||||
|  |   b0(1)   = yrot(0,0) | ||||||
|  | ;***************************************************************  | ||||||
|  | ; create bounding box by drawing multiple xy plots on top of | ||||||
|  | ; each other. each with their individual axis turned off. | ||||||
|  | ;*************************************************************** | ||||||
|  |   xyres@xyLineColors      =  (/"black"/)   ; line color  | ||||||
|  |   xyres@xyLineThicknessF  = 1.0            ; regular line thickness  | ||||||
|  |  | ||||||
|  |   bottom = gsn_xy(wks,a1,b1,xyres) ; Draw the bottom bounding box. | ||||||
|  |   top    = gsn_xy(wks,a2,b2,xyres) ; Draw the top bounding box. | ||||||
|  |   side1  = gsn_xy(wks,a3,b3,xyres) ; Draw a side line. | ||||||
|  |   side2  = gsn_xy(wks,a4,b4,xyres) ; Draw a side line. | ||||||
|  |   side3  = gsn_xy(wks,a5,b5,xyres) ; Draw a side line. | ||||||
|  |   side4  = gsn_xy(wks,a6,b6,xyres) ; Draw a side line. | ||||||
|  | ;***************************************************************  | ||||||
|  | ; now draw a large brown line to represent the chimney | ||||||
|  | ;*************************************************************** | ||||||
|  |   xyres@xyLineColors      = (/"brown"/)   ; chimney color | ||||||
|  |   xyres@xyLineThicknessF  = 9.0           ; thick line  | ||||||
|  |   xyres@tiMainString      = "Pollutant Trajectory in a 3D Volume" | ||||||
|  |   chimney = gsn_xy(wks,a0,b0,xyres)       ; Draw the chimney. | ||||||
|  |  | ||||||
|  |   draw(wks) | ||||||
|  |   frame(wks) | ||||||
|  |  | ||||||
|  | end | ||||||
							
								
								
									
										167
									
								
								samples/NCL/tsdiagram_1.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										167
									
								
								samples/NCL/tsdiagram_1.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,167 @@ | |||||||
|  | ; Read potential temp (TEMP), salinity (SALT) | ||||||
|  | ; Compute potential density (PD) for specified range PD(t,s) | ||||||
|  | ; (use ncl function based on Yeager's algorithm for rho computation) | ||||||
|  | ; Assumes annual and zonally avgeraged input data set (i.e, one time slice) | ||||||
|  | ; Used K.Lindsay's "za" for zonal avg -- already binned into basins | ||||||
|  | ; Plots temp vs salt (scatter plot), pd overlay | ||||||
|  |  | ||||||
|  | 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/csm/shea_util.ncl"   | ||||||
|  |  | ||||||
|  | begin | ||||||
|  | ; ================================>  ; PARAMETERS | ||||||
|  |   case    = "PHC2_gx1v3" | ||||||
|  |   ocnfile = "za_PHC2_T_S_gx1v3.nc" | ||||||
|  |  | ||||||
|  |   depth_min = 14895.82   ; in cm, depth of first layer to be included  | ||||||
|  |   depth_max =  537499.9 | ||||||
|  | ; | ||||||
|  | ; plot limits | ||||||
|  | ; | ||||||
|  |   smincn = 32.5  | ||||||
|  |   smaxcn = 37.0 | ||||||
|  |   tmincn = -2. | ||||||
|  |   tmaxcn = 22. | ||||||
|  | ; | ||||||
|  | ; Choose basin index | ||||||
|  | ; | ||||||
|  | ; 0 = global  1 = southern ocean 2 = pacific 3 = indian 6 = atlantic  | ||||||
|  | ; 8 = labrador 9 = GIN 10 = arctic | ||||||
|  | ; | ||||||
|  |   bi = 2  | ||||||
|  |  | ||||||
|  | ;=====> basin check  | ||||||
|  |  | ||||||
|  |   if(bi.lt.0.or.bi.gt.10) then | ||||||
|  |     print("basin index "+ bi + " not supported") | ||||||
|  |     exit | ||||||
|  |   end if | ||||||
|  |  | ||||||
|  |   if(bi.eq.0) then | ||||||
|  |     basin = "Global" | ||||||
|  |     blab = "global" | ||||||
|  |   end if | ||||||
|  |   if(bi.eq.1) then | ||||||
|  |       basin = "Southern Ocean" | ||||||
|  |       blab = "so" | ||||||
|  |   end if | ||||||
|  |   if(bi.eq.2) then | ||||||
|  |     basin = "Pacific Ocean" | ||||||
|  |     blab = "pacific" | ||||||
|  |   end if | ||||||
|  |   if(bi.eq.3) then | ||||||
|  |     basin = "Indian Ocean" | ||||||
|  |     blab = "indian" | ||||||
|  |   end if | ||||||
|  |   if(bi.eq.6) then | ||||||
|  |     basin = "Atlantic Ocean" | ||||||
|  |     blab = "atlanticn" | ||||||
|  |   end if | ||||||
|  |   if(bi.eq.8) then | ||||||
|  |     basin = "Labrador Sea" | ||||||
|  |     blab = "lab" | ||||||
|  |   end if | ||||||
|  |   if(bi.eq.9) then | ||||||
|  |     basin = "GIN Sea" | ||||||
|  |     blab = "gin" | ||||||
|  |   end if | ||||||
|  |   if(bi.eq.10) then | ||||||
|  |     basin = "Arctic Ocean" | ||||||
|  |     blab = "arctic" | ||||||
|  |   end if | ||||||
|  |  | ||||||
|  | ;=====> initial resource settings | ||||||
|  |  | ||||||
|  |   wks = gsn_open_wks("ps","tsdiagram")    ; Open a Postscript file | ||||||
|  |  | ||||||
|  | ;===== data  | ||||||
|  |   focn = addfile(ocnfile, "r") | ||||||
|  |   salt = focn->SALT(0,:,{depth_min:depth_max},:)   ;(basins, z_t, lat_t) | ||||||
|  |   temp = focn->TEMP(0,:,{depth_min:depth_max},:) | ||||||
|  |  | ||||||
|  | ;====section out choice basin | ||||||
|  |   temp_ba = temp(bi,:,:) | ||||||
|  |   salt_ba = salt(bi,:,:) | ||||||
|  |  | ||||||
|  | ;===== put into scatter array format | ||||||
|  |   tdata_ba = ndtooned(temp_ba) | ||||||
|  |   sdata_ba = ndtooned(salt_ba) | ||||||
|  |  | ||||||
|  |   ydata = tdata_ba | ||||||
|  |   xdata = sdata_ba | ||||||
|  |  | ||||||
|  | ;============== compute potenial density (PD), using rho_mwjf | ||||||
|  | ; | ||||||
|  | ; for potential density, depth = 0. (i.e. density as if brought to surface) | ||||||
|  | ; | ||||||
|  | ;=========================================================================== | ||||||
|  | ; WARNING: T-S diagrams use POTENTIAL DENSITY... if set depth to something | ||||||
|  | ; other then 0, then you will be plotting density contours computed for the | ||||||
|  | ; specified depth layer. | ||||||
|  | ;=========================================================================== | ||||||
|  |  | ||||||
|  |   depth = 0.  ;in meters | ||||||
|  |   tspan = fspan(tmincn,tmaxcn,51) | ||||||
|  |   sspan = fspan(smincn,smaxcn,51) | ||||||
|  |  | ||||||
|  |   ; the more points the better... using Yeager's numbers | ||||||
|  |  | ||||||
|  |   t_range = conform_dims((/51,51/),tspan,0) | ||||||
|  |   s_range = conform_dims((/51,51/),sspan,1) | ||||||
|  |  | ||||||
|  |   pd = rho_mwjf(t_range,s_range,depth) | ||||||
|  |  | ||||||
|  |   pd!0    = "temp" | ||||||
|  |   pd!1    = "salt" | ||||||
|  |   pd&temp = tspan | ||||||
|  |   pd&salt = sspan | ||||||
|  |   pd      = 1000.*(pd-1.)        ; Put into kg/m3 pot den units | ||||||
|  |  | ||||||
|  | ;  printVarSummary(pd) | ||||||
|  | ;  printVarInfo(pd,"rho_mwjf") | ||||||
|  |  | ||||||
|  | ;=================Graphics | ||||||
|  |  | ||||||
|  | ;--- scatter plot | ||||||
|  |   res                     = True | ||||||
|  |   res@gsnMaximize         = True | ||||||
|  |   res@gsnDraw             = False | ||||||
|  |   res@gsnFrame            = False | ||||||
|  |  | ||||||
|  |   res@xyMarkLineModes     = "Markers" | ||||||
|  |   res@xyMarkers           = 16 | ||||||
|  |   res@xyMarkerColors      = "black" | ||||||
|  |   res@pmLegendDisplayMode = "Never" | ||||||
|  |   res@txFontHeightF       = 0.01 | ||||||
|  |   res@tiMainString        = case + " ANN AVG:  T-S Diagram" | ||||||
|  |   res@tiXAxisString       = salt@units | ||||||
|  |   res@tiXAxisFontHeightF  = 0.02 | ||||||
|  |   res@tiYAxisString       = temp@units | ||||||
|  |   res@tiYAxisFontHeightF  = 0.02 | ||||||
|  |   res@trXMinF             = smincn | ||||||
|  |   res@trXMaxF             = smaxcn | ||||||
|  |   res@trYMinF             = tmincn | ||||||
|  |   res@trYMaxF             = tmaxcn | ||||||
|  |   res@gsnRightString      = depth_min/100. + "-"+depth_max/100. +"m" | ||||||
|  |   res@gsnLeftString       = basin | ||||||
|  |  | ||||||
|  |   plot = gsn_csm_xy(wks,xdata,ydata,res) | ||||||
|  |  | ||||||
|  | ;----- pd overlay | ||||||
|  |   resov                          = True | ||||||
|  |   resov@gsnDraw                  = False | ||||||
|  |   resov@gsnFrame                 = False | ||||||
|  |   resov@cnLevelSelectionMode     = "AutomaticLevels" | ||||||
|  |   resov@cnInfoLabelOn            = "False" | ||||||
|  |   resov@cnLineLabelPlacementMode = "Constant" | ||||||
|  |   resov@cnLineLabelFontHeightF     = ".02" | ||||||
|  |    | ||||||
|  |   plotpd = gsn_csm_contour(wks,pd,resov) | ||||||
|  |   overlay(plot,plotpd) | ||||||
|  |  | ||||||
|  |   draw(plot) | ||||||
|  |   frame(wks) | ||||||
|  |  | ||||||
|  | end | ||||||
							
								
								
									
										141
									
								
								samples/NCL/unique_9.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								samples/NCL/unique_9.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,141 @@ | |||||||
|  | ;************************************ | ||||||
|  | ; unique_9.ncl | ||||||
|  | ; | ||||||
|  | ; Concepts illustrated: | ||||||
|  | ;   - Drawing raster contours over a map | ||||||
|  | ;   - Creating a topography plot using raster contours | ||||||
|  | ;   - Reading data from binary files | ||||||
|  | ;   - Manually creating lat/lon coordinate arrays | ||||||
|  | ;   - Customizing a labelbar for a contour plot | ||||||
|  | ;************************************ | ||||||
|  | ; This example generates a topo map over | ||||||
|  | ; the area of Trinidad, Colorado. | ||||||
|  | ;************************************ | ||||||
|  | load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" | ||||||
|  | load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl" | ||||||
|  |  | ||||||
|  | begin | ||||||
|  |  | ||||||
|  |  wks = gsn_open_wks("ps","unique") | ||||||
|  |  | ||||||
|  | ;----------------- read the west binary data ------------------------- | ||||||
|  |  binfile = "trinidad-w.bin" | ||||||
|  |  | ||||||
|  |  quad_name = fbinrecread(binfile,0,60,"character") | ||||||
|  |  | ||||||
|  |  map_cornersW = fbinrecread(binfile,1,4,"double") | ||||||
|  |  | ||||||
|  |  lonW = fbinrecread(binfile,2,(/1201/),"double") | ||||||
|  |  | ||||||
|  |  latW = fbinrecread(binfile,3,(/1201/),"double") | ||||||
|  |  | ||||||
|  |  minmax_elevW = fbinrecread(binfile,4,2,"double") | ||||||
|  |  | ||||||
|  |  tmpW = fbinrecread(binfile,5,(/1201,1201/),"integer") | ||||||
|  |   | ||||||
|  | ;----------------- read the east binary data ------------------------- | ||||||
|  |  binfile = "trinidad-e.bin" | ||||||
|  |  | ||||||
|  |  quad_name = fbinrecread(binfile,0,60,"character") | ||||||
|  |  | ||||||
|  |  map_cornersE = fbinrecread(binfile,1,4,"double") | ||||||
|  |  | ||||||
|  |  lonE = fbinrecread(binfile,2,(/1201/),"double") | ||||||
|  |  | ||||||
|  |  latE = fbinrecread(binfile,3,(/1201/),"double") | ||||||
|  |  | ||||||
|  |  minmax_elevE = fbinrecread(binfile,4,2,"double") | ||||||
|  |  | ||||||
|  |  tmpE = fbinrecread(binfile,5,(/1201,1201/),"integer") | ||||||
|  |   | ||||||
|  | ;---------------------------------------------------------------------- | ||||||
|  |  min_elev = min((/minmax_elevW(0),minmax_elevE(0)/))*3.28 | ||||||
|  |  max_elev = max((/minmax_elevW(1),minmax_elevE(1)/))*3.28 | ||||||
|  |  | ||||||
|  |  lat           = new(1201,"double") | ||||||
|  |  lat           = latW | ||||||
|  |  lat!0         = "lat" | ||||||
|  |  lat&lat       = latW               ; same as latE | ||||||
|  |  lat@long_name = "latitude" | ||||||
|  |  lat@units     = "degrees_north" | ||||||
|  |  | ||||||
|  |  lon            = new(2401,"double") | ||||||
|  |  lon(0:1200)    = lonW | ||||||
|  |  lon(1201:2400) = lonE(1:1200) | ||||||
|  |  lon!0          = "lon" | ||||||
|  |  lon&lon        = lon | ||||||
|  |  lon@long_name  = "longitude" | ||||||
|  |  lon@units      = "degrees_east" | ||||||
|  |  | ||||||
|  |  data     = new((/1201,2401/),"float")  ; (lat,lon) | ||||||
|  |  data!0   = "lat" | ||||||
|  |  data&lat = lat | ||||||
|  |  data!1   = "lon" | ||||||
|  |  data&lon = lon | ||||||
|  |  data(:,0:1200)    = (/tmpW*3.28/)            ; convert to feet | ||||||
|  |  data(:,1201:2400) = (/tmpE(:,1:1200)*3.28/)  ; convert to feet | ||||||
|  | ;------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | ; | ||||||
|  | ; Define colormap. | ||||||
|  | ; | ||||||
|  |   cmap = (/(/1.00, 1.00, 1.00/),(/0.00, 0.00, 0.00/), \ | ||||||
|  |            (/0.51, 0.13, 0.94/),(/0.00, 0.00, 0.59/), \ | ||||||
|  |            (/0.00, 0.00, 0.80/),(/0.25, 0.41, 0.88/), \ | ||||||
|  |            (/0.12, 0.56, 1.00/),(/0.00, 0.75, 1.00/), \ | ||||||
|  |            (/0.63, 0.82, 1.00/),(/0.82, 0.96, 1.00/), \ | ||||||
|  |            (/1.00, 1.00, 0.78/),(/1.00, 0.88, 0.20/), \ | ||||||
|  |            (/1.00, 0.67, 0.00/),(/1.00, 0.43, 0.00/), \ | ||||||
|  |            (/1.00, 0.00, 0.00/),(/0.78, 0.00, 0.00/), \ | ||||||
|  |            (/0.63, 0.14, 0.14/),(/1.00, 0.41, 0.70/)/) | ||||||
|  |  | ||||||
|  |  gsn_define_colormap(wks,cmap) | ||||||
|  |  | ||||||
|  |  res              = True | ||||||
|  |  res@gsnMaximize  = True | ||||||
|  |  res@gsnAddCyclic = False | ||||||
|  |  | ||||||
|  | ; map plot resources | ||||||
|  |  res@mpFillOn              = False | ||||||
|  |  res@mpLimitMode           = "Corners" | ||||||
|  |  res@mpDataBaseVersion     = "Ncarg4_1" | ||||||
|  |  res@mpOutlineBoundarySets = "AllBoundaries" | ||||||
|  |  res@mpLeftCornerLonF      = map_cornersW(0)  | ||||||
|  |  res@mpLeftCornerLatF      = map_cornersW(1) | ||||||
|  |  res@mpRightCornerLonF     = map_cornersE(2) | ||||||
|  |  res@mpRightCornerLatF     = map_cornersE(3) | ||||||
|  |  | ||||||
|  | ; contour resources | ||||||
|  |  res@cnFillOn             = True | ||||||
|  |  res@cnLinesOn            = False | ||||||
|  |  res@cnFillMode           = "RasterFill" | ||||||
|  |  res@cnLevelSelectionMode = "ExplicitLevels" | ||||||
|  |  res@cnLevels             = (/ 5000., 6000., 7000., 8000., 8500., 9000., \ | ||||||
|  |                                9500.,10000.,10500.,11000.,11500.,12000., \ | ||||||
|  |                               12500.,13000.,13500./) | ||||||
|  |  | ||||||
|  | ; tickmark resources | ||||||
|  |  res@pmTickMarkDisplayMode = "Always" | ||||||
|  |  res@tmXBLabelFontHeightF   = 0.010 | ||||||
|  |  | ||||||
|  | ; labelbar resources | ||||||
|  |  res@pmLabelBarWidthF         = 0.60 | ||||||
|  |  res@txFontHeightF            = 0.012 | ||||||
|  |  res@lbTitleString            = "elevation above mean sea level (feet)" | ||||||
|  |  res@lbTitleFontHeightF       = 0.012 | ||||||
|  |  res@lbLabelFontHeightF       = 0.008 | ||||||
|  |  res@lbTitleOffsetF           = -0.27 | ||||||
|  |  res@lbBoxMinorExtentF        = 0.15 | ||||||
|  |  res@pmLabelBarOrthogonalPosF = -.05 | ||||||
|  |  | ||||||
|  | ; title resources | ||||||
|  |  res@tiMainString      = "USGS DEM TRINIDAD (1 x 2 degrees)"  | ||||||
|  |  res@tiMainOffsetYF    = -0.02    ; Move title down towards graphic. | ||||||
|  |  res@tiMainFontHeightF = 0.015 | ||||||
|  |  res@gsnLeftString     = "Min Elevation: "+min_elev | ||||||
|  |  res@gsnRightString    = "Max Elevation: "+max_elev | ||||||
|  |  res@gsnCenterString   = "Scale 1:250,000" | ||||||
|  |  | ||||||
|  |  plot = gsn_csm_contour_map(wks,data,res) | ||||||
|  |  | ||||||
|  | end | ||||||
							
								
								
									
										131
									
								
								samples/NCL/viewport_4.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										131
									
								
								samples/NCL/viewport_4.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,131 @@ | |||||||
|  | ; *********************************************** | ||||||
|  | ; viewport_4.ncl | ||||||
|  | ; | ||||||
|  | ; Concepts illustrated: | ||||||
|  | ;   - Drawing an XY plot with multiple curves | ||||||
|  | ;   - Using drawNDCGrid to draw a nicely labeled NDC grid | ||||||
|  | ;   - Changing the size/shape of an XY plot using viewport resources | ||||||
|  | ;   - Drawing two XY plots on the same page using viewport resources | ||||||
|  | ;   - Drawing polylines, polymarkers, and text in NDC space | ||||||
|  | ;   - Using "getvalues" to retrieve resource values | ||||||
|  | ;   - Maximizing plots after they've been created | ||||||
|  | ; *********************************************** | ||||||
|  | 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/csm/shea_util.ncl" | ||||||
|  |  | ||||||
|  | ;******************************************************************** | ||||||
|  | ; Draw a box around the viewport of the given object.. | ||||||
|  | ;******************************************************************** | ||||||
|  | procedure draw_vp_box(wks,plot) | ||||||
|  | local vpx, vpy, vpw, vph, xbox, ybox, lnres, mkres, txres | ||||||
|  | begin | ||||||
|  |  | ||||||
|  | ; Retrieve the viewport values of the drawable object. | ||||||
|  |   getvalues plot | ||||||
|  |     "vpXF"      : vpx | ||||||
|  |     "vpYF"      : vpy | ||||||
|  |     "vpWidthF"  : vpw | ||||||
|  |     "vpHeightF" : vph | ||||||
|  |   end getvalues | ||||||
|  |  | ||||||
|  | ; Set up some marker resources. | ||||||
|  |   mkres                  = True | ||||||
|  |   mkres@gsMarkerIndex    = 16     ; filled dot | ||||||
|  |   mkres@gsMarkerSizeF    = 0.02   ; larger than default | ||||||
|  |   mkres@gsMarkerColor    = "Red" | ||||||
|  |  | ||||||
|  | ; Draw a single marker at the vpXF/vpYF location. | ||||||
|  |   gsn_polymarker_ndc(wks,vpx,vpy,mkres) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ; Set up some text resources. | ||||||
|  |   txres                       = True   | ||||||
|  |   txres@txJust                = "BottomLeft" | ||||||
|  |   txres@txFontHeightF         = 0.018 | ||||||
|  |   txres@txFontColor           = "Blue" | ||||||
|  |   txres@txBackgroundFillColor = "white" | ||||||
|  |  | ||||||
|  |   gsn_text_ndc(wks,"(vpXF="+vpx+", vpYF="+vpy+")",vpx,vpy+0.02,txres) | ||||||
|  | ; Set up some line resources. | ||||||
|  |   lnres                  = True | ||||||
|  |   lnres@gsLineColor      = "Red"       ; line color | ||||||
|  |   lnres@gsLineThicknessF = 2.0         ; 3.5 times as thick | ||||||
|  |  | ||||||
|  | ; Draw lines indicating the width and height | ||||||
|  |   xline = (/vpx,     vpx+vpw/) | ||||||
|  |   yline = (/vpy-0.05,vpy-0.05/) | ||||||
|  |   gsn_polyline_ndc(wks,xline,yline,lnres) | ||||||
|  |  | ||||||
|  |   xline = (/vpx+0.05,vpx+0.05/) | ||||||
|  |   yline = (/vpy,vpy-vph/) | ||||||
|  |   gsn_polyline_ndc(wks,xline,yline,lnres) | ||||||
|  |  | ||||||
|  |   txres@txJust                = "CenterCenter" | ||||||
|  |   gsn_text_ndc(wks,"vpWidthF = " + vpw,vpx+vpw/2.,vpy-0.05,txres) | ||||||
|  |  | ||||||
|  |   txres@txAngleF              = 90. | ||||||
|  |   gsn_text_ndc(wks,"vpHeightF = " + vph,vpx+0.05,vpy-vph/2.,txres) | ||||||
|  | end | ||||||
|  |  | ||||||
|  | ;******************************************************************** | ||||||
|  | ; Main code | ||||||
|  | ;******************************************************************** | ||||||
|  | begin | ||||||
|  | ;************************************************ | ||||||
|  | ; read in data | ||||||
|  | ;************************************************ | ||||||
|  |   f     = addfile ("$NCARG_ROOT/lib/ncarg/data/cdf/uv300.nc","r") | ||||||
|  |   u     = f->U                                    ; get u data | ||||||
|  | ;************************************************ | ||||||
|  | ; plotting parameters | ||||||
|  | ;************************************************ | ||||||
|  |   wks   = gsn_open_wks ("ps","viewport")          ; open workstation | ||||||
|  |    | ||||||
|  |   res                  = True                     ; plot mods desired | ||||||
|  |  | ||||||
|  |   res@gsnFrame         = False                    ; don't advance frame yet | ||||||
|  |  | ||||||
|  |   res@vpWidthF         = 0.8                      ; set width and height | ||||||
|  |   res@vpHeightF        = 0.3 | ||||||
|  |    | ||||||
|  | ; First plot   | ||||||
|  |   res@tiMainString     = "Plot 1" | ||||||
|  |  | ||||||
|  |   res@vpXF             = 0.15 | ||||||
|  |   res@vpYF             = 0.9        ; Higher on the page | ||||||
|  |  | ||||||
|  |   plot1  = gsn_csm_xy (wks,u&lat,u(0,:,{82}),res) ; create plot | ||||||
|  |    | ||||||
|  | ; Second plot   | ||||||
|  |   res@tiMainString     = "Plot 2" | ||||||
|  |  | ||||||
|  |   res@vpXF             = 0.15       ; Same X location as first plot | ||||||
|  |   res@vpYF             = 0.4        ; Lower on the page | ||||||
|  |  | ||||||
|  |   plot2  = gsn_csm_xy (wks,u&lat,u(0,:,{3}),res) ; create plot | ||||||
|  |  | ||||||
|  | ; Advance the frame | ||||||
|  |   frame(wks) | ||||||
|  |    | ||||||
|  | ; Now draw the two plots with illustrations. | ||||||
|  |  | ||||||
|  |   drawNDCGrid(wks)   ; Draw helpful grid lines showing NDC square. | ||||||
|  |  | ||||||
|  |   draw(plot1)        ; Draw the two plots | ||||||
|  |   draw(plot2) | ||||||
|  |  | ||||||
|  |   draw_vp_box(wks,plot1)  ; Draw boxes around the two viewports. | ||||||
|  |   draw_vp_box(wks,plot2) | ||||||
|  |  | ||||||
|  |   frame(wks)              ; Advance the frame. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ; | ||||||
|  | ; Uncomment the next two lines if you want to maximize these plots for | ||||||
|  | ; PS or PDF output. | ||||||
|  | ; | ||||||
|  | ;  psres = True                                                                | ||||||
|  | ;  maximize_output(wks,psres)  ; calls draw and frame for you  | ||||||
|  | end | ||||||
							
								
								
									
										120
									
								
								samples/NCL/weather_sym_6.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								samples/NCL/weather_sym_6.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,120 @@ | |||||||
|  | load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" | ||||||
|  |  | ||||||
|  | begin | ||||||
|  | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||||
|  | ; | ||||||
|  | ;  Example of plotting station model data over a map  | ||||||
|  | ;  illustrating how the wind barb directions are adjusted | ||||||
|  | ;  for the map projection. | ||||||
|  | ; | ||||||
|  | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||||
|  | ; | ||||||
|  | ;  City names. | ||||||
|  | ; | ||||||
|  |   cities = (/      "NCAR",       "Seattle", "San Francisco",    \ | ||||||
|  |             "Los Angeles",      "Billings",       "El Paso",    \ | ||||||
|  |                 "Houston",   "Kansas City",   "Minneapolis",    \ | ||||||
|  |                 "Chicago",       "Detroit",       "Atlanta",    \ | ||||||
|  |                   "Miami",      "New York",        "Eugene",    \ | ||||||
|  |                   "Boise",     "Salt Lake",       "Phoenix",    \ | ||||||
|  |             "Albuquerque",      "Bismarck",         "Tulsa",    \ | ||||||
|  |                  "Dallas",   "Little Rock",     "Lexington",    \ | ||||||
|  |               "Charlotte",       "Norfolk",        "Bangor"     \ | ||||||
|  |            /) | ||||||
|  |   city_lats = (/     40.0,            47.6,            37.8,    \ | ||||||
|  |                      34.1,            45.8,            31.8,    \ | ||||||
|  |                      29.8,            39.1,            45.0,    \ | ||||||
|  |                      41.9,            42.3,            33.8,    \ | ||||||
|  |                      25.8,            40.8,            44.1,    \ | ||||||
|  |                      43.6,            40.7,            33.5,    \ | ||||||
|  |                      35.1,            46.7,            36.0,    \ | ||||||
|  |                      32.8,            34.7,            38.1,    \ | ||||||
|  |                      35.2,            36.8,            44.8     \ | ||||||
|  |                /) | ||||||
|  |   city_lons = (/   -105.0,          -122.3,          -122.4,    \ | ||||||
|  |                    -118.3,          -108.5,          -106.5,    \ | ||||||
|  |                    -095.3,          -094.1,          -093.8,    \ | ||||||
|  |                    -087.6,          -083.1,          -084.4,    \ | ||||||
|  |                    -080.2,          -074.0,          -123.1,    \ | ||||||
|  |                    -116.2,          -111.9,          -112.1,    \ | ||||||
|  |                    -106.6,          -100.8,          -096.0,    \ | ||||||
|  |                    -096.8,          -092.3,          -084.1,    \ | ||||||
|  |                    -080.8,          -076.3,          -068.8     \ | ||||||
|  |               /) | ||||||
|  | ; | ||||||
|  | ;  Station model data for the 27 cities. | ||||||
|  | ; | ||||||
|  |   imdat = (/"11000000751126021360300004955054054600007757087712",  \ | ||||||
|  |             "11103100011104021080300004959055050600517043080369",  \ | ||||||
|  |             "11206200031102021040300004963056046601517084081470",  \ | ||||||
|  |             "11309300061000021020300004967057042602017125082581",  \ | ||||||
|  |             "11412400091002021010300004971058038602517166083592",  \ | ||||||
|  |             "11515500121004020000300004975050034603017207084703",  \ | ||||||
|  |             "11618600151006020030300004979051030603507248085814",  \ | ||||||
|  |             "11721700181008020050300004983052026604007289086925",  \ | ||||||
|  |             "11824800211009020070300004987053022604507323087036",  \ | ||||||
|  |             "11927900241011020110300004991054018605017364088147",  \ | ||||||
|  |             "11030000271013020130300004995055014605517405089258",  \ | ||||||
|  |             "11133100301015020170300004999056010606017446080369",  \ | ||||||
|  |             "11236200331017020200300004000057006606517487081470",  \ | ||||||
|  |             "11339300361019020230300004004058002607017528082581",  \ | ||||||
|  |             "11442400391021020250300004008050000607517569083692",  \ | ||||||
|  |             "11545500421023020270300004012051040608017603084703",  \ | ||||||
|  |             "11648600451025020290300004017052008608517644085814",  \ | ||||||
|  |             "11751700481027020310300004021053012609017685086925",  \ | ||||||
|  |             "11854800511029020330300004025054016609507726087036",  \ | ||||||
|  |             "11958900541031020360300004029055018610007767088147",  \ | ||||||
|  |             "11060000571033020380300004033056030610507808089258",  \ | ||||||
|  |             "11163100601035020410300004037057034611007849080369",  \ | ||||||
|  |             "11266200631037020430300004041058043611507883081470",  \ | ||||||
|  |             "11369300661039020470300004045050041612007924082581",  \ | ||||||
|  |             "11472400691041020500300004048051025612507965083692",  \ | ||||||
|  |             "11575500721043020530300004051052022613507996084703",  \ | ||||||
|  |             "11678600751048021580300004055053013614007337085814"   \ | ||||||
|  |           /) | ||||||
|  |  | ||||||
|  | ; | ||||||
|  | ;  Define a color map and open a workstation. | ||||||
|  | ; | ||||||
|  |   cmap = (/                      \ | ||||||
|  |             (/ 1., 1., 1. /),    \  ; color index 0 - white | ||||||
|  |             (/ 0., 0., 0. /)     \  ; color index 1 - black | ||||||
|  |          /) | ||||||
|  |   wks = gsn_open_wks("ps","weather_sym") | ||||||
|  |   gsn_define_colormap(wks,cmap) | ||||||
|  |  | ||||||
|  | ; | ||||||
|  | ;  Draw a world map. | ||||||
|  | ; | ||||||
|  |   mpres = True | ||||||
|  |   mpres@gsnFrame     = False | ||||||
|  |   mpres@mpSatelliteDistF  = 1.3 | ||||||
|  |   mpres@mpOutlineBoundarySets  = "USStates" | ||||||
|  |   mpres@mpCenterLatF =  40. | ||||||
|  |   mpres@mpCenterLonF = -97. | ||||||
|  |   mpres@mpCenterRotF =  35. | ||||||
|  |   map = gsn_map(wks,"Satellite",mpres) | ||||||
|  |  | ||||||
|  | ; | ||||||
|  | ;  Scale the station model plot (all aspects of the station | ||||||
|  | ;  model plots are scaled as per the size of the wind barb). | ||||||
|  | ; | ||||||
|  |   wmsetp("wbs",0.018) | ||||||
|  | ; | ||||||
|  | ;  In the middle of Nebraska, draw a wind barb for a north wind | ||||||
|  | ;  with a magnitude of 15 knots. | ||||||
|  | ; | ||||||
|  |   wmbarbmap(wks,42.,-99.,0.,-15.) | ||||||
|  |  | ||||||
|  | ; | ||||||
|  | ;  Draw the station model data at the selected cities.  The call | ||||||
|  | ;  to wmsetp informs wmstnm that the wind barbs will be drawn over | ||||||
|  | ;  a map.  To illustrate the adjustment for plotting the model | ||||||
|  | ;  data over a map, all winds are from the north. | ||||||
|  | ; | ||||||
|  |   wmsetp("ezf",1) | ||||||
|  |   wmstnm(wks,city_lats,city_lons,imdat) | ||||||
|  |  | ||||||
|  |   frame(wks) | ||||||
|  |  | ||||||
|  | end | ||||||
							
								
								
									
										151
									
								
								samples/NCL/xy_29.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										151
									
								
								samples/NCL/xy_29.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,151 @@ | |||||||
|  | ; xy_29.ncl | ||||||
|  | ; | ||||||
|  | ; Concepts illustrated: | ||||||
|  | ;   - Reading data from an ASCII file with headers | ||||||
|  | ;   - Creating a separate procedure to create a specific plot | ||||||
|  | ;   - Attaching polymarkers to an XY plot | ||||||
|  | ; | ||||||
|  | ; This script was originally from Dr. Birgit Hassler (NOAA) | ||||||
|  | ;**************************************************** | ||||||
|  |  | ||||||
|  | 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" | ||||||
|  |  | ||||||
|  | ;************************************************ | ||||||
|  | ;             Plot Procedure | ||||||
|  | ;************************************************ | ||||||
|  | procedure plotTCOPolym(pltName[1]:string, pltType[1]:string, filName[1]:string \ | ||||||
|  |                    ,xTitle[1]:string , yTitle[1]:string \  | ||||||
|  |                    ,year[*]:numeric, y[*]:numeric) | ||||||
|  | local wks, res, ntim, gsres, MarkerCol, OldYear, i, xmarker, ymarker | ||||||
|  |    | ||||||
|  | begin | ||||||
|  |   wks = gsn_open_wks(pltType,pltName) | ||||||
|  |   gsn_define_colormap(wks,"default") | ||||||
|  |    | ||||||
|  |   res = True | ||||||
|  |   res@gsnMaximize    = True            ; make "ps", "eps", "pdf" large | ||||||
|  |  | ||||||
|  |   res@vpHeightF      = 0.5             ; change aspect ratio of plot | ||||||
|  |   res@vpWidthF       = 0.75                  | ||||||
|  |   res@vpXF           = 0.15            ; start plot at x ndc coord  | ||||||
|  |   res@tiXAxisString  = xTitle      | ||||||
|  |   res@tiYAxisString  = yTitle      | ||||||
|  |   res@tiMainString   = filName | ||||||
|  |  | ||||||
|  |   ntim   = dimsizes(year) | ||||||
|  |   res@trXMinF = year(0)-1         | ||||||
|  |   res@trXMaxF = year(ntim-1)+1         | ||||||
|  |  | ||||||
|  |   res@gsnDraw        = False | ||||||
|  |   res@gsnFrame       = False | ||||||
|  |   res@xyMarkLineMode = "markers" | ||||||
|  |   res@xyMarker       = 16 | ||||||
|  |   res@xyMarkerColor  = "Background"                      | ||||||
|  |   plot               = gsn_csm_xy (wks,year,y,res) ; create plot frame ork | ||||||
|  |    | ||||||
|  |                      ; add different color polymarkers for each year  | ||||||
|  |   gsres     = True | ||||||
|  |   MarkerCol = 2 | ||||||
|  |   OldYear   = year(0) | ||||||
|  |    | ||||||
|  |   do i=0,ntim-1  | ||||||
|  |     xmarker = year(i) | ||||||
|  |     ymarker = y(i) | ||||||
|  |      | ||||||
|  |     if (i.gt.0) then  | ||||||
|  |       if (year(i).gt.OldYear) then | ||||||
|  |         MarkerCol = MarkerCol+1 | ||||||
|  |       end if | ||||||
|  |       OldYear = year(i) | ||||||
|  |     end if | ||||||
|  |      | ||||||
|  |     gsres@gsMarkerColor = MarkerCol | ||||||
|  |     gsres@gsMarkerIndex = 16 | ||||||
|  |    ;gsres@gsMarkerSizeF = 15.0 | ||||||
|  |                         ; add (attach) polymarkers to existing plot object  | ||||||
|  |     plot@$unique_string("dum")$ = gsn_add_polymarker(wks,plot,xmarker,ymarker,gsres) | ||||||
|  |   end do | ||||||
|  |  | ||||||
|  |   draw(plot) | ||||||
|  |   frame(wks) | ||||||
|  | end | ||||||
|  |  | ||||||
|  | ;*********************************************************** | ||||||
|  | ;                   MAIN | ||||||
|  | ;*********************************************************** | ||||||
|  |    pltType = "ps"      ; "ps", "eps", "png", "x11" | ||||||
|  |  | ||||||
|  |                        ; read multiple ascii file names | ||||||
|  |  ;;fili = "Southpole_TCOTimeSeries_11.dat" | ||||||
|  |  | ||||||
|  |    diri = "./" | ||||||
|  |    fili = systemfunc("cd "+diri+" ; ls *TCOT*dat") | ||||||
|  |    print(fili) | ||||||
|  |  | ||||||
|  |    nfil = dimsizes(fili) | ||||||
|  |  | ||||||
|  |    nhead= 4      ; number of header lines on ascii file(s) | ||||||
|  |    ncol = 4      ; year, month, day, O3 | ||||||
|  |  | ||||||
|  |    do nf=0,nfil-1 | ||||||
|  |       sfx  = get_file_suffix(fili(nf), 0) ; sfx = ".dat" | ||||||
|  |       filx = sfx@fBase                    ; filx= "Southpole_TCOTimeSeries_11" | ||||||
|  |                                           ; read ascii files | ||||||
|  |       data = readAsciiTable(diri+fili(nf), ncol, "float", nhead) | ||||||
|  |       dimd = dimsizes(data) | ||||||
|  |       ntim = dimd(0)                      ; # rows | ||||||
|  |  | ||||||
|  |       year = toint( data(:,0) )           ; user decision ... convert to integer | ||||||
|  |       mon  = toint( data(:,1) ) | ||||||
|  |       day  = toint( data(:,2) ) | ||||||
|  |   | ||||||
|  |       hour = new (ntim, "integer", "No_FillValue") | ||||||
|  |       mn   = new (ntim, "integer", "No_FillValue") | ||||||
|  |       sec  = new (ntim, "double" , "No_FillValue") | ||||||
|  |       hour = 0 | ||||||
|  |       mn   = 0 | ||||||
|  |       sec  = 0d0 | ||||||
|  |                                           ; create COARDS/udunits time variable | ||||||
|  |     ;;tunits = "days since 1900-01-01 00:00:0.0" | ||||||
|  |       tunits = "days since "+year(0)+"-"+mon(0)+"-"+day(0)+" 00:00:0.0" | ||||||
|  |       time   = cd_inv_calendar(year,mon,day,hour,mn,sec,tunits, 0) | ||||||
|  |       time!0 = "time" | ||||||
|  |       time&time = time | ||||||
|  |       ;printVarSummary(time) | ||||||
|  |  | ||||||
|  |                                           ; create a Gregorin 'date' variable | ||||||
|  |       date = year*10000 + mon*100 + day | ||||||
|  |       date!0 = "time" | ||||||
|  |       date@units = "yyyymmdd" | ||||||
|  |       date&time = time | ||||||
|  |      ;printVarSummary(date) | ||||||
|  |  | ||||||
|  |       O3   = data(:,3)  | ||||||
|  |       O3@long_name = "total column ozone" | ||||||
|  |       O3@units     = "DU" | ||||||
|  |  | ||||||
|  |       O3!0         = "time" | ||||||
|  |       O3&time      = time | ||||||
|  |      ;printVarSummary(O3) | ||||||
|  |      ;print(" ") | ||||||
|  |      ;print(date+"  "+time+"   "+O3) | ||||||
|  |  | ||||||
|  |                                           ; plot | ||||||
|  |       yTitle = O3@long_name | ||||||
|  |       year@long_name = "YEAR" | ||||||
|  |  | ||||||
|  |       plotTCOPolym (filx, pltType, fili(nf), year@long_name, yTitle,  year, O3)  | ||||||
|  |       | ||||||
|  |       delete(time) ; delete ... size (# rows) may change in the next file | ||||||
|  |       delete(date) | ||||||
|  |       delete(year) | ||||||
|  |       delete(mon ) | ||||||
|  |       delete(day ) | ||||||
|  |       delete(mn  ) | ||||||
|  |       delete(sec ) | ||||||
|  |       delete(O3  ) | ||||||
|  |       delete(data) | ||||||
|  |    end do | ||||||
|  |  | ||||||
							
								
								
									
										18
									
								
								samples/Text/01_top.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								samples/Text/01_top.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | <?xml version="1.0" encoding="ISO-8859-1"?> | ||||||
|  | <ncl id="topProperty" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile"> | ||||||
|  | 	<head> | ||||||
|  | 		 | ||||||
|  | 		<regionBase> | ||||||
|  | 			<region height="50%" id="imageReg" top="50%"/> | ||||||
|  | 		</regionBase> | ||||||
|  | 		 | ||||||
|  | 		<descriptorBase> | ||||||
|  | 			<descriptor id="imageDescriptor" region="imageReg"/> | ||||||
|  | 		</descriptorBase> | ||||||
|  | 		 | ||||||
|  | 	</head> | ||||||
|  | 	<body> | ||||||
|  | 		<port component="image" id="entry"/> | ||||||
|  | 		<media descriptor="imageDescriptor" id="image" src="../resources/images/background.jpg"/>  | ||||||
|  | 	</body> | ||||||
|  | </ncl> | ||||||
							
								
								
									
										34
									
								
								samples/Text/LIDARLite.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								samples/Text/LIDARLite.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | |||||||
|  | G04 DipTrace 2.4.0.2* | ||||||
|  | %INLIDARLite.ncl*% | ||||||
|  | %MOIN*% | ||||||
|  | %ADD11C,0.0394*% | ||||||
|  | %FSLAX44Y44*% | ||||||
|  | G04* | ||||||
|  | G70* | ||||||
|  | G90* | ||||||
|  | G75* | ||||||
|  | G01* | ||||||
|  | %LNBoardOutline*% | ||||||
|  | %LPD*% | ||||||
|  | X0Y23622D2* | ||||||
|  | D11* | ||||||
|  | X27953D1* | ||||||
|  | Y0D1* | ||||||
|  | X0D1* | ||||||
|  | Y23622D1* | ||||||
|  | X591Y23110D2* | ||||||
|  | X13819D1* | ||||||
|  | X591Y591D2* | ||||||
|  | Y11614D1* | ||||||
|  | Y12087D2* | ||||||
|  | Y23110D1* | ||||||
|  | X14291D2* | ||||||
|  | X27520D1* | ||||||
|  | X591Y591D2* | ||||||
|  | X13819D1* | ||||||
|  | X14291D2* | ||||||
|  | X27520D1* | ||||||
|  | Y11614D1* | ||||||
|  | Y12087D2* | ||||||
|  | Y23110D1* | ||||||
|  | M02* | ||||||
							
								
								
									
										22
									
								
								samples/Text/Site.local.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								samples/Text/Site.local.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | #define YmakeRoot $(DESTDIR)@prefix@ | ||||||
|  | #define ManRoot $(DESTDIR)@mandir@ | ||||||
|  | #define LibRoot $(DESTDIR)@libdir@/ncarg | ||||||
|  | #define SharePath $(DESTDIR)@datadir@ | ||||||
|  |  | ||||||
|  | #define BuildWithF90 TRUE | ||||||
|  | #define IncSearch -I/usr/include/netcdf -I/usr/include/udunits2 -I/usr/include/freetype2 -I/usr/include/gdal | ||||||
|  | #define LibSearch -L@libdir@/hdf | ||||||
|  |  | ||||||
|  | #define BuildNetCDF4 1 | ||||||
|  | #define NetCDF4lib -lnetcdf | ||||||
|  | #define BuildCAIRO 1 | ||||||
|  | #define CAIROlib -lcairo -lfreetype | ||||||
|  | #define BuildGDAL 1 | ||||||
|  | #define GDALlib -lgdal | ||||||
|  | #define BuildHDFEOS 0 | ||||||
|  | #define BuildHDFEOS5 0 | ||||||
|  | #define BuildTRIANGLE 0 | ||||||
|  | #define HDFlib -lmfhdf -ldf -ljpeg -lz | ||||||
|  | #define HDF5lib -lhdf5_hl -lhdf5 | ||||||
|  | #define BuildUdunits 1 | ||||||
|  | #define UdUnitslib -ludunits2 | ||||||
							
								
								
									
										46
									
								
								samples/Text/main.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								samples/Text/main.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | |||||||
|  | <?xml version="1.0" encoding="ISO-8859-1"?> | ||||||
|  |  | ||||||
|  | <!-- | ||||||
|  | 2008 PUC-RIO/LABORATORIO TELEMIDIA, | ||||||
|  | Some Rights Reserved. | ||||||
|  |  | ||||||
|  | This program is free software; you can redistribute it and/or modify it under  | ||||||
|  | the terms of the GNU General Public License version 2 as published by | ||||||
|  | the Free Software Foundation. | ||||||
|  |  | ||||||
|  | This program is distributed in the hope that it will be useful, but WITHOUT ANY  | ||||||
|  | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A  | ||||||
|  | PARTICULAR PURPOSE.  See the GNU General Public License version 2 for more  | ||||||
|  | details. | ||||||
|  |  | ||||||
|  | You should have received a copy of the GNU General Public License version 2 | ||||||
|  | along with this program; if not, write to the Free Software | ||||||
|  | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA | ||||||
|  | --> | ||||||
|  |  | ||||||
|  | <ncl id="teste" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile" | ||||||
|  |      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  | ||||||
|  |      xsi:schemaLocation="http://www.ncl.org.br/NCL3.0/EDTVProfile | ||||||
|  |      http://www.ncl.org.br/NCL3.0/profiles/NCL30EDTV.xsd"> | ||||||
|  |  | ||||||
|  | <head> | ||||||
|  |  | ||||||
|  | 	<regionBase> | ||||||
|  | 		<region id="luaRegion" width="100%" height="100%"/> | ||||||
|  | 	</regionBase> | ||||||
|  |  | ||||||
|  | 	<descriptorBase> | ||||||
|  | 		<descriptor id="luaDesc" region="luaRegion" focusIndex="luaIdx"/> | ||||||
|  | 	</descriptorBase>   | ||||||
|  | </head> | ||||||
|  |  | ||||||
|  | <body> | ||||||
|  | 	<port id="init" component="lua"/> | ||||||
|  | 	<media type="application/x-ginga-settings" id="programSettings"> | ||||||
|  | 		<property name="currentKeyMaster" value="luaIdx"/> | ||||||
|  | 	</media> | ||||||
|  |  | ||||||
|  | 	<media id="lua" descriptor="luaDesc" src="game.lua"/> | ||||||
|  | </body> | ||||||
|  |  | ||||||
|  | </ncl> | ||||||
							
								
								
									
										45
									
								
								samples/Text/min-help.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								samples/Text/min-help.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | |||||||
|  | THE_URL:file://localhost/Users/hubery/Public/ucar/Document/Functions/Built-in/min.shtml | ||||||
|  | THE_TITLE:min | ||||||
|  |    NCL Home > Documentation > Functions > General applied math | ||||||
|  |  | ||||||
|  | min | ||||||
|  |  | ||||||
|  |    Computes the minimum value of a multi-dimensional array. | ||||||
|  |  | ||||||
|  | Prototype | ||||||
|  |  | ||||||
|  |         function min ( | ||||||
|  |                 value  : numeric | ||||||
|  |         ) | ||||||
|  |  | ||||||
|  |         return_val [1] :  numeric | ||||||
|  |  | ||||||
|  | Arguments | ||||||
|  |  | ||||||
|  |    value | ||||||
|  |  | ||||||
|  |    An array of one or more numeric values of any dimension. | ||||||
|  |  | ||||||
|  | Return value | ||||||
|  |  | ||||||
|  |    Returns a scalar of the same type as value. | ||||||
|  |  | ||||||
|  | Description | ||||||
|  |  | ||||||
|  |    This function returns the minimum value for an array of any dimensionality. Missing values are ignored; a missing value | ||||||
|  |    is returned only if all values are missing. | ||||||
|  |  | ||||||
|  | See Also | ||||||
|  |  | ||||||
|  |    max, minind, maxind, dim_min, dim_max, dim_min_n, dim_max_n | ||||||
|  |  | ||||||
|  | Examples | ||||||
|  |  | ||||||
|  |    Example 1 | ||||||
|  |  | ||||||
|  |   f = (/2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8/) | ||||||
|  |   min_f = min(f) | ||||||
|  |   print(min_f)        ; Should be 2.1 | ||||||
|  |  | ||||||
|  |  | ||||||
|  |    ©2015 UCAR | Privacy Policy | Terms of Use | Contact the Webmaster | Sponsored by NSF | ||||||
							
								
								
									
										21
									
								
								samples/Text/receiver.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								samples/Text/receiver.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | <?xml version="1.0" encoding="ISO-8859-1"?> | ||||||
|  | <ncl id="sender" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile"> | ||||||
|  | 	<head> | ||||||
|  | 		<regionBase> | ||||||
|  | 			<region id="rTV" width="100%" height="100%" zIndex="1"/>		 | ||||||
|  | 		</regionBase> | ||||||
|  | 		 | ||||||
|  | 		 | ||||||
|  | 		<descriptorBase> | ||||||
|  | 			<descriptor id="dTV" region="rTV" /> | ||||||
|  | 		</descriptorBase> | ||||||
|  | 	</head> | ||||||
|  | 	 | ||||||
|  | 	<body> | ||||||
|  | 		 | ||||||
|  | 		<port id="pLua" component="lua" /> | ||||||
|  | 		 | ||||||
|  | 		<media id="lua" descriptor="dTV" src="receiver.lua" /> | ||||||
|  | 		 | ||||||
|  | 	</body> | ||||||
|  | </ncl> | ||||||
							
								
								
									
										40
									
								
								samples/Text/rmMonAnnCycLLT-help.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								samples/Text/rmMonAnnCycLLT-help.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | |||||||
|  | THE_URL:file://localhost/Users/hubery/Public/ucar/Document/Functions/Contributed/rmMonAnnCycLLT.shtml | ||||||
|  | THE_TITLE:rmMonAnnCycLLT | ||||||
|  |    NCL Home > Documentation > Functions > Climatology | ||||||
|  |  | ||||||
|  | rmMonAnnCycLLT | ||||||
|  |  | ||||||
|  |    Removes the annual cycle from "monthly" data. | ||||||
|  |  | ||||||
|  | Prototype | ||||||
|  |  | ||||||
|  | load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" | ||||||
|  |  | ||||||
|  |         function rmMonAnnCycLLT ( | ||||||
|  |                 x [*][*][*] : numeric | ||||||
|  |         ) | ||||||
|  |  | ||||||
|  |         return_val [dimsizes(x)] :  typeof(x) | ||||||
|  |  | ||||||
|  | Arguments | ||||||
|  |  | ||||||
|  |    x | ||||||
|  |  | ||||||
|  |    A three-dimensional array of monthly values, dimensioned lat x lon x time. The time dimension must be a multiple of 12. | ||||||
|  |  | ||||||
|  | Return value | ||||||
|  |  | ||||||
|  |    The results are returned in an array of the same type and dimensionality as x. If the input data contains metadata, these | ||||||
|  |    will be retained. | ||||||
|  |  | ||||||
|  | Description | ||||||
|  |  | ||||||
|  |    This function removes the annual cycle from month (number of months = 12) data and subtracts the long term means from | ||||||
|  |    each month. | ||||||
|  |  | ||||||
|  | See Also | ||||||
|  |  | ||||||
|  |    rmMonAnnCycLLT, rmMonAnnCycTLL, rmMonAnnCycLLLT | ||||||
|  |  | ||||||
|  |  | ||||||
|  |    ©2015 UCAR | Privacy Policy | Terms of Use | Contact the Webmaster | Sponsored by NSF | ||||||
							
								
								
									
										35
									
								
								samples/Text/zonalAve-help.ncl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								samples/Text/zonalAve-help.ncl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | THE_URL:file://localhost/Users/hubery/Public/ucar/Document/Functions/Contributed/zonalAve.shtml | ||||||
|  | THE_TITLE:zonalAve | ||||||
|  |    NCL Home > Documentation > Functions > General applied math | ||||||
|  |  | ||||||
|  | zonalAve | ||||||
|  |  | ||||||
|  |    Computes a zonal average of the input array. | ||||||
|  |  | ||||||
|  | Prototype | ||||||
|  |  | ||||||
|  | load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" | ||||||
|  |  | ||||||
|  |         function zonalAve ( | ||||||
|  |                 x  : numeric | ||||||
|  |         ) | ||||||
|  |  | ||||||
|  |         return_val  :  typeof(x) | ||||||
|  |  | ||||||
|  | Arguments | ||||||
|  |  | ||||||
|  |    x | ||||||
|  |  | ||||||
|  |    An array of any size and type. | ||||||
|  |  | ||||||
|  | Return value | ||||||
|  |  | ||||||
|  |    The results are returned in an array of the same type and one dimension smaller than x. Metadata are preserved. | ||||||
|  |  | ||||||
|  | Description | ||||||
|  |  | ||||||
|  |    This function computes a zonal average of the input array x. If the input array has a "long_name" or "short_name" | ||||||
|  |    attribute, it will be updated. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |    ©2015 UCAR | Privacy Policy | Terms of Use | Contact the Webmaster | Sponsored by NSF | ||||||
| @@ -122,7 +122,7 @@ class TestHeuristcs < Minitest::Test | |||||||
|     assert_heuristics({ |     assert_heuristics({ | ||||||
|       "Frege" => all_fixtures("Frege"), |       "Frege" => all_fixtures("Frege"), | ||||||
|       "Forth" => all_fixtures("Forth"), |       "Forth" => all_fixtures("Forth"), | ||||||
|       "Text" => all_fixtures("Text") |       "Text" => all_fixtures("Text", "*.fr") | ||||||
|     }) |     }) | ||||||
|   end |   end | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								vendor/grammars/language-ncl
									
									
									
									
										vendored
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								vendor/grammars/language-ncl
									
									
									
									
										vendored
									
									
										Submodule
									
								
							 Submodule vendor/grammars/language-ncl added at ae46014e68
									
								
							
		Reference in New Issue
	
	Block a user