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:
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
|
||||
Reference in New Issue
Block a user