水温の10日平均から30日平均値を求める
30日平均値から中央差分で、時間変化項(tendency)を求める。
dtは60日
30日平均の計算
https://sites.google.com/site/afcanalysis/home/ecco/dr080/ave_monthly_ts
30日平均を使った時間変化項の計算
https://sites.google.com/site/afcanalysis/home/ecco/dr080/tendency_monthly_mean
古いバージョン(2015/8/18)では、
時間変化項(Tendency)を10日平均のデータから求めていた。
dtは20日。
[2015年 8月 27日 木曜日 11:29:06 JST]
[~/2015.Ibnu.Indian.Ocean/ECCO.dr080g/Map.Heat.Budget]
[am@aofd165]
$ sh pl.heat.budget.all.run.sh
::::::::::::::
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
de=3
while [ $yyyy -le $yyyye ]; do
for yearday in $ydlist; do
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
dthr=720
day=01
vlev=1
# Read arguments
yyyy=$1
yearday=$2
dthr=720
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"
elif [ $yearday = "n10day_10_18" ]; then
datainfo="08_08.02160_04320"
elif [ $yearday = "n10day_19_27" ]; then
datainfo="08_08.04320_06480"
elif [ $yearday = "n10day_28_37" ]; then
datainfo="08_08.06480_08880"
fi
$exe $ncl ${indir} ${datainfo} ${dthr} ${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 -Q -n $1
::::::::::::::
pl.heat.budget.ncl
::::::::::::::
;
; Plot horizontal map of heat budget terms
;
; 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")
dthr = getenv("NCL_ARG_4")
day = getenv("NCL_ARG_5")
vlev = getenv("NCL_ARG_6")
outdir = getenv("NCL_ARG_7")
day_no=stringtointeger(day)
day_no=day_no-1
;Set depth
klev=stringtointeger(vlev)-1
;
; Open input files
;
fTnd =addfile(indir + "/gtTndave_" + datainfo + "_" + dthr + ".cdf" ,"r")
fExt =addfile(indir + "/gtExtave_" + datainfo + "_" + dthr + ".cdf" ,"r")
fRelax =addfile(indir + "/gtRelaxave_" + datainfo + "_" + dthr + ".cdf" ,"r")
fKF =addfile(indir + "/gtKFave_" + datainfo + "_" + dthr + ".cdf" ,"r")
fU =addfile(indir + "/gtUave_" + datainfo + "_" + dthr + ".cdf" ,"r")
fV =addfile(indir + "/gtVave_" + datainfo + "_" + dthr + ".cdf" ,"r")
fW =addfile(indir + "/gtWave_" + datainfo + "_" + dthr + ".cdf" ,"r")
fXdiff =addfile(indir + "/gtXdiffave_" + datainfo + "_" + dthr + ".cdf" ,"r")
fYdiff =addfile(indir + "/gtYdiffave_" + datainfo + "_" + dthr + ".cdf" ,"r")
fZdiff =addfile(indir + "/gtZdiffave_" + datainfo + "_" + dthr + ".cdf" ,"r")
fZdiffGM=addfile(indir + "/gtZdiffGMave_" + datainfo + "_" + dthr + ".cdf" ,"r")
fKPP =addfile(indir + "/gtKPPave_" + datainfo + "_" + dthr + ".cdf" ,"r")
;
; Read input data
;
tnd = fTnd->gtTndave(day_no,klev,:,:)
ext = fExt->gtExtave(day_no,klev,:,:)
relax = fRelax->gtRelaxave(day_no,:,:)
kf = fKF->gtKFave(day_no,klev,:,:)
uadv = fU->gtUave(day_no,klev,:,:)
vadv = fV->gtVave(day_no,klev,:,:)
wadv = fW->gtWave(day_no,klev,:,:)
xdif = fXdiff->gtXdiffave(day_no,klev,:,:)
ydif = fYdiff->gtYdiffave(day_no,klev,:,:)
zdif = fZdiff->gtZdiffave(day_no,klev,:,:)
zdifG = fZdiffGM->gtZdiffGMave(day_no,klev,:,:)
zdifK = fKPP->gtKPPave(day_no,klev,:,:)
time=fU->time(day_no)
z1d=fU->depth
;
; 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 - 30
julim1=julian0 + time/24.0
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
z=floattointeger(z1d(klev))
;
; Compute budget terms
;
tend=tnd
sfcflx=ext
hadvdif=uadv
vdif=zdif
rhs=ext
if(klev .eq. 0)then
sfcflx=ext + relax
hadvdif=uadv + vadv + xdif + ydif
vdif=zdif + zdifG + zdifK
rhs=sfcflx + hadvdif+ wadv + vdif + kf
else
hadvdif=uadv + vadv + xdif + ydif
vdif=zdif + zdifG + zdifK
rhs=ext + hadvdif+ wadv + vdif + kf
end if
;
; Set output file name
;
filetype="png" ;"ps"
ofle=outdir + "/" + "ECCO.dr080.Heat.Budget." + 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
;res@gsnMaximize = True
res@gsnPaperOrientation = "landscape"
;Figure size
res@vpHeightF = 0.2; ;0.35
res@vpWidthF = 0.4; 0.55
res@vpXF = 0.05; 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
res1=res
res1@cnMinLevelValF = -1.5e-6 ; set min contour level
res1@cnMaxLevelValF = 1.5e-6 ; set max contour level
res1@cnLevelSpacingF = 5.0e-7 ; set contour spacing
res1@gsnLeftString = dateprt ; add the gsn titles
res1@gsnRightString = z + " m"
res2=res
res2@cnMinLevelValF = -3.0e-5 ; set min contour level
res2@cnMaxLevelValF = 3.0e-5 ; set max contour level
res2@cnLevelSpacingF = 5.0e-6 ; set contour spacing
res2@gsnLeftString = dateprt ; add the gsn titles
res2@gsnRightString = z + " m"
;
; Upper left panel
;
res1@vpXF = 0.05
res1@vpYF = 0.85
res1@gsnCenterString = "LHS (Tendency)"
con = gsn_csm_contour_map(wks,tend,res1) ; Draw a contour plot.
plot=con
draw(plot)
;
; Upper right panel
;
res1@vpXF = 0.52
res1@vpYF = 0.85
res1@gsnLeftString = dateprt ; add the gsn titles
res1@gsnCenterString = "RHS"
con = gsn_csm_contour_map(wks,rhs,res1) ; Draw a contour plot.
plot=con
draw(plot)
;
; Middle left panel
;
res2@vpXF = 0.05
res2@vpYF = 0.60
res2@cnMinLevelValF = -3.0e-5 ; set min contour level
res2@cnMaxLevelValF = 3.0e-5 ; set max contour level
res2@cnLevelSpacingF = 5.0e-6 ; set contour spacing
res2@gsnLeftString = dateprt ; add the gsn titles
res2@gsnRightString = z + " m"
if (klev .eq. 0)then
res2@gsnCenterString = "Ext + Relax"
con = gsn_csm_contour_map(wks,sfcflx,res2) ; Draw a contour plot.
else
res2@gsnCenterString = "Ext"
con = gsn_csm_contour_map(wks,ext,res2) ; Draw a contour plot.
end if
plot=con
draw(plot)
;
; Middle right panel
;
res2@vpXF = 0.52
res2@gsnCenterString = "H Adv + H Diff"
con = gsn_csm_contour_map(wks,hadvdif,res2) ; Draw a contour plot.
plot=con
draw(plot)
;
; Lower left panel
;
res2@vpXF = 0.05
res2@vpYF= 0.35
res2@gsnCenterString = "V ADV"
con = gsn_csm_contour_map(wks,wadv,res2) ; Draw a contour plot.
plot=con
draw(plot)
;
; Lower right panel
;
res2@vpXF = 0.52
res2@gsnCenterString = "V DIFF"
con = gsn_csm_contour_map(wks,vdif,res2) ; Draw a contour plot.
plot=con
draw(plot)
;
; Header and footer
;
;drawNDCGrid(wks)
txres = True ; text mods desired
txres@txFontHeightF = 0.03 ; font smaller. default big
gsn_text_ndc(wks,dateprt,0.5,0.95,txres)
txres@txFontHeightF = 0.01 ; font smaller. default big
gsn_text_ndc(wks,outdir,0.5,0.99,txres)
text=systemfunc("export LANG=C; 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