[2015年 8月 17日 月曜日 12:05:39 JST]
[~/2015.Ibnu.Indian.Ocean/ECCO.dr080g/Map.Heat.Budget]
[am@aofd165]
::::::::::::::
pl.heat.budget.all.run.sh
::::::::::::::
#!/bin/bash
exe=pl.heat.budget.run.sh
if [ ! -f $exe ]; then
echo
echo Error in $0 : No such file, $exe
echo
exit 1
fi
yyyy=1993
yyyye=2014
ydlist="\
n10day_01_09 \
n10day_10_18 \
n10day_19_27 \
n10day_28_37 \
"
vlev=1
while [ $yyyy -le $yyyye ]; do
for yearday in $ydlist; do
if [ $yearday = "n10day_28_37" ]; then
de=4
else
de=3
fi
day=1
while [ $day -le $de ]; do
$exe $yyyy $yearday $day $vlev
day=$(expr $day + 1)
done #day
done # yearday
yyyy=$(expr $yyyy + 1)
done # yyyy
exit 0
::::::::::::::
pl.heat.budget.run.sh
::::::::::::::
#!/bin/sh
export LANC=C
exe=./runncl.sh
ncl=pl.heat.budget.ncl
if [ ! -f $ncl ]; then
echo
echo Error in $0 : No such file, $ncl
echo
exit 1
fi
# Default value
dataset=dr080g
yyyy=1993
yearday=n10day_01_09
day=01
vlev=1
# Read arguments
yyyy=$1
yearday=$2
day=$3
vlev=$4
indir=/work4/data/ECCO.dr080g/${dataset}_${yyyy}/${yearday}
if [ ! -d $indir ]; then
echo
echo Error in $0 : No such directory, $indir
echo
exit 1
fi
outdir=${HOME}/2015.Ibnu.Indian.Ocean/Fig/$(basename $(pwd))/\
$(basename $0 .sh)/${yyyy}
if [ ! -d $outdir ]; then
mkdir -vp $outdir
fi
if [ $yearday = "n10day_01_09" ]; then
datainfo="08_08.00001_02160_720"
elif [ $yearday = "n10day_10_18" ]; then
datainfo="08_08.02160_04320_720"
elif [ $yearday = "n10day_19_27" ]; then
datainfo="08_08.04320_06480_720"
elif [ $yearday = "n10day_28_37" ]; then
datainfo="08_08.06480_08880_720"
fi
$exe $ncl ${indir} ${datainfo} ${day} ${vlev} ${outdir}
echo
echo Done $(basename $0).
echo
::::::::::::::
runncl.sh
::::::::::::::
#!/bin/bash
#
# Universal wrapper script for ncl.
# Pass arguments from the command line to environment variables
#
# version 0.1, Thierry Corti, C2SM ETH Zurich
#
E_BADARGS=65
if [ ! -n "$1" ]
then
echo "Usage: `basename $0` script.ncl argument1 argument2 etc."
exit $E_BADARGS
fi
# save number of arguments to environment variable NCL_N_ARG
export NCL_N_ARGS=$#
# save command line arguments to environment variable NCL_ARG_#
for ((index=1; index<=$#; index++))
do
eval export NCL_ARG_$index=\$$index
done
# run ncl
ncl $1
::::::::::::::
pl.heat.budget.ncl
::::::::::::::
;
; Plot horizontal map of U,V,T,S & RHO ECCO dr080 dataset
;
; Refer to http://dx.doi.org/10.1002/2014JC010336 for details on dr080
;
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
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
wallClock1 = systemfunc("date") ; retrieve wall clock time
;
; Read command line arguments
;
scname = getenv("NCL_ARG_1")
indir = getenv("NCL_ARG_2")
datainfo = getenv("NCL_ARG_3")
day = getenv("NCL_ARG_4")
vlev = getenv("NCL_ARG_5")
outdir = getenv("NCL_ARG_6")
day_no=stringtointeger(day)
;
; Read input data
;
fExt =addfile(indir + "/gtExtave_" + datainfo + ".cdf" ,"r")
fRelax =addfile(indir + "/gtRelaxave_" + datainfo + ".cdf" ,"r")
fKF =addfile(indir + "/gtKFave_" + datainfo + ".cdf" ,"r")
fU =addfile(indir + "/gtUave_" + datainfo + ".cdf" ,"r")
fV =addfile(indir + "/gtVave_" + datainfo + ".cdf" ,"r")
fW =addfile(indir + "/gtWave_" + datainfo + ".cdf" ,"r")
fXdiff =addfile(indir + "/gtXdiffave_" + datainfo + ".cdf" ,"r")
fYdiff =addfile(indir + "/gtYdiffave_" + datainfo + ".cdf" ,"r")
fZdiff =addfile(indir + "/gtZdiffave_" + datainfo + ".cdf" ,"r")
fZdiffGM=addfile(indir + "/gtZdiffGMave_" + datainfo + ".cdf" ,"r")
fKPP =addfile(indir + "/gtKPPave_" + datainfo + ".cdf" ,"r")
ext = fExt->gtExtave(day_no-1,:,:,:)
relax = fRelax->gtRelaxave(day_no-1,:,:)
kf = fKF->gtKFave(day_no-1,:,:,:)
uadv = fU->gtUave(day_no-1,:,:,:)
vadv = fV->gtVave(day_no-1,:,:,:)
wadv = fW->gtWave(day_no-1,:,:,:)
xdif = fXdiff->gtXdiffave(day_no-1,:,:,:)
ydif = fYdiff->gtYdiffave(day_no-1,:,:,:)
zdif = fZdiff->gtZdiffave(day_no-1,:,:,:)
zdifG = fZdiffGM->gtZdiffGMave(day_no-1,:,:,:)
zdifK = fKPP->gtKPPave(day_no-1,:,:,:)
time=fU->time(day_no-1)
z1d=fU->depth
end
::::::::::::::
pl.heat.budget.BAK.ncl
::::::::::::::
;
; Plot horizontal map of U,V,T,S & RHO ECCO dr080 dataset
;
; Refer to http://dx.doi.org/10.1002/2014JC010336 for details on dr080
;
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
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
wallClock1 = systemfunc("date") ; retrieve wall clock time
;
; Read command line arguments
;
scname = getenv("NCL_ARG_1")
infle1 = getenv("NCL_ARG_2")
infle2 = getenv("NCL_ARG_3")
infle3 = getenv("NCL_ARG_4")
infle4 = getenv("NCL_ARG_5")
infle5 = getenv("NCL_ARG_6")
infle6 = getenv("NCL_ARG_7")
infle7 = getenv("NCL_ARG_8")
infle8 = getenv("NCL_ARG_9")
infle9 = getenv("NCL_ARG_10")
infle10= getenv("NCL_ARG_11")
day = getenv("NCL_ARG_12")
vlev = getenv("NCL_ARG_13")
outdir = getenv("NCL_ARG_14")
day_no=stringtointeger(day)
;
; Read input data
;
fExt =addfile(infle1,"r")
fRelax =addfile(infle2,"r")
fKF =addfile(infle3,"r")
fU =addfile(infle4,"r")
fV =addfile(infle5,"r")
fW =addfile(infle6,"r")
fXdiff =addfile(infle7,"r")
fYdiff =addfile(infle8,"r")
fZdiff =addfile(infle9,"r")
fZdiffGM=addfile(infle10,"r")
fKPP =addfile(infle11,"r")
ext = fExt -> gtExtave(day_no-1,:,:)
relax = fRelax -> gtRelaxave(day_no-1,:,:)
kf = fKF -> gtKFave(day_no-1,:,:,:)
uadv = fU -> gtUave(day_no-1,:,:,:)
vadv = fV -> gtVave(day_no-1,:,:,:)
wadv = fW -> gtWave(day_no-1,:,:,:)
xdif = fXdiff -> gtXdiffave(day_no-1,:,:,:)
ydif = fYdiff -> gtYdiffave(day_no-1,:,:,:)
zdif = fZdiff -> gtZdiffave(day_no-1,:,:,:)
zdifG = fZdiffGM -> gtZdiffGMave(day_no-1,:,:,:)
zdifK = fKPP -> gtKPPave(day_no-1,:,:,:)
time=fU->time(day_no-1)
z1d=fU->depth
stop
;
; Set date
;
julian0=greg2jul(1970,01,01,00)
;
; float time(time) ;
; time:units = "hours since 1970-01-01 00:00:0.0" ;
;
julim0=julian0 + time/24.0 -5
julim1=julian0 + time/24.0 +4
greg0=jul2greg(julim0)
greg1=jul2greg(julim1)
date0=greg0(0)+sprinti("%0.2i",greg0(1))+sprinti("%0.2i",greg0(2))
date1=greg1(0)+sprinti("%0.2i",greg1(1))+sprinti("%0.2i",greg1(2))
dateprt0=greg0(0) + "/" +sprinti("%0.2i",greg0(1)) + "/" +sprinti("%0.2i",greg0(2))
dateprt1=greg1(0) + "/" +sprinti("%0.2i",greg1(1)) + "/" +sprinti("%0.2i",greg1(2))
dateprt=dateprt0 + "-" + dateprt1
;Set depth
klev=stringtointeger(vlev)-1
z=floattointeger(z1d(klev))
;Set 2D vars
t2d=t3d(klev,:,:)
s2d=s3d(klev,:,:)
u2d=u3d(klev,:,:)
v2d=v3d(klev,:,:)
;
; Potential temperature
;
pd = depth_to_pres( z1d, False )*10 ; bars*10 => decibars
pref= 0.0 ; user specified reference pressure (dbars)
pd@units = "decibar" ; must be decibar units
pot3d=t3d
pot3d = potmp_insitu_ocn(t3d,s3d,pd,pref, 0 ,False) ; pot(ntim,klev,nlat,nlon)
pot2d = pot3d(klev,:,:)
;
; Potential density
;
dref=0.0
pd2d=t2d
pd2d=rho_mwjf(t2d,s2d,dref)
pd2d=1000.*(pd2d - 1.0) ; Put into kg/m3 pot den units
;
; Set output file name
;
filetype="png" ;"ps"
ofle=outdir + "/" + "ECCO.dr080_UVTS.rho." + sprinti("%0.5i",z) + "m." + date0 + "-" + date1 + "." + filetype
wks = gsn_open_wks(filetype,ofle)
;
; Set NCL resources
;
res = True
res@gsnDraw = False ; don't draw
res@gsnFrame = False ; don't advance frame
;Figure size
res@vpHeightF = 0.35
res@vpWidthF = 0.55
res@vpXF = 0.2
;Map
res@mpFillOn = True
;Contour
res@cnFillOn = True ; turn on color fill
res@cnLinesOn = False
res@lbOrientation = "vertical"
res@cnLevelSelectionMode = "ManualLevels" ; manually set the contour levels with the following 3 resources
;Choose subregion
res@mpMinLatF =-20
res@mpMaxLatF = 20
res@mpMinLonF = 40
res@mpMaxLonF =110
res@mpDataBaseVersion = "Ncarg4_1" ; use GMT coastline
;
; Upper panel
;
res1=res
res1@vpYF = 0.9
res1@cnMinLevelValF = 22 ; set min contour level
res1@cnMaxLevelValF = 32 ; set max contour level
res1@cnLevelSpacingF = 1 ; set contour spacing
res1@gsnLeftString = dateprt ; add the gsn titles
res1@gsnCenterString = "T & ~F33~s ~B~q"
res1@gsnRightString = z + " m"
tcon = gsn_csm_contour_map(wks,t2d(:,:),res1) ; Draw a contour plot.
plot=tcon
respd=True
respd@gsnDraw = False ; don't draw
respd@gsnFrame = False ; don't advance frame
respd@cnMinLevelValF = 10 ; set min contour level
respd@cnMaxLevelValF = 32 ; set max contour level
respd@cnLevelSpacingF = 0.5 ; set contour spacing
respd@cnFillOn = False ; turn off color fill
respd@cnLineColor = "white"
respd@gsnContourLineThicknessesScale=4
respd@cnLabelMasking = True
respd@cnLineLabelBackgroundColor= "Transparent"
respd@cnLineLabelFontColor="white"
respd@cnLineLabelFontHeightF = 0.017
respd@cnLineLabelFont=22
respd@cnLineThicknessF=2
respd@cnLineLabelDensityF = 1.5 ; increase the number of line labels/line
respd@cnLineLabelInterval = 1 ; labels for every line (default=2)
respd@cnInfoLabelOn = False
respd@gsnLeftString = "" ; add the gsn titles
respd@gsnCenterString = ""
respd@gsnRightString = ""
pdcon = gsn_csm_contour(wks,pd2d(:,:),respd)
overlay(plot,pdcon)
vecres = True ; vector only resources
vecres@gsnDraw = False ; don't draw
vecres@gsnFrame = False ; don't advance frame
vecres@vcGlyphStyle="CurlyVector"
vecres@vcRefMagnitudeF = 1 ; define vector ref mag
vecres@vcRefLengthF = 0.045 ; define length of vec ref
vecres@gsnRightString = " " ; turn off right string
vecres@gsnLeftString = " " ; turn off left string
vecres@tiXAxisString = " " ; turn off axis label
vecres@vcFillArrowsOn = True
vecres@vcFillArrowEdgeColor = "white"
vecres@vcRefAnnoParallelPosF = 0.19 ; move ref vector into plot
vecres@vcRefAnnoOrthogonalPosF = -1
vector = gsn_csm_vector(wks,u2d(::4,::4),v2d(::4,::4),vecres)
overlay(plot,vector)
draw(plot)
delete(res1)
txres = True ; text mods desired
txres@txFontHeightF = 0.015 ; font smaller. default big
txres@txBackgroundFillColor = "white"
txres@txFontColor="black"
gsn_text_ndc(wks,dateprt,0.635,0.585,txres)
;
; Lower panel
;
res2=res
res2@vpYF = 0.45
res2@cnMinLevelValF = 30 ; set min contour level
res2@cnMaxLevelValF = 38 ; set max contour level
res2@cnLevelSpacingF = 1 ; set contour spacing
res2@gsnLeftString = dateprt ; add the gsn titles
res2@gsnCenterString = "S & ~F33~s ~B~q"
res2@gsnRightString = z + " m"
scon = gsn_csm_contour_map(wks,s2d(:,:),res2) ; Draw a contour plot.
plot=scon
pdcon = gsn_csm_contour(wks,pd2d(:,:),respd)
overlay(plot,pdcon)
vector = gsn_csm_vector(wks,u2d(::4,::4),v2d(::4,::4),vecres)
overlay(plot,vector) ; result will be plotA
draw(plot)
delete(res2)
gsn_text_ndc(wks,dateprt,0.635,0.135,txres)
;
; Header and footer
;
;drawNDCGrid(wks)
txres = True ; text mods desired
txres@txFontHeightF = 0.01 ; font smaller. default big
gsn_text_ndc(wks,outdir,0.5,0.99,txres)
text=systemfunc("date")
gsn_text_ndc(wks,text,0.2,0.010,txres)
text=systemfunc("pwd")+"/"+scname
gsn_text_ndc(wks,text,0.5,0.03,txres)
frame(wks)
print("")
print("Output: "+ ofle)
print("")
end