mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
168 lines
4.4 KiB
Plaintext
168 lines
4.4 KiB
Plaintext
; 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
|