#!/bin/bash

## Just run code in recipes, use it carefully
## example: use cdo to make cache file. Since cdo is quicker than ncl.
#;DIAG_NORCPM; RUNTHESECODES: echo '    no codes run here.'

## env for cdo

## ensemble
dir=/projects/NS9039K/_BETZY/norcpm_ana_hindcast/archive/norcpm1_assim-i1_19800115
season=DJF
avgfile=ens_Z200_DJF_avg.nc
anofile=ens_Z200_DJF_ano.nc
trendfile=ens_Z200_DJF_trend.nc
var=Z200
if [ "$season" != 'ANN' ];then
    cdoseamean="-seasmean -select,season=${season}"
else
    cdoseamean="-yearmean"
fi
test -f ${avgfile} && test -f ${anofile} && test -f ${trendfile} && exit 0
## loop for every member
memdirs=$(ls -d ${dir}/*mem??)
i=0
for d in $memdirs; do
    ifiles=$(ls ${d}/atm/hist/*.cam*.h0.{1982..2018}-??.nc)
    i=$(($i+1))
    ii=$(printf "%2.2d" $i)
    o1ts=Z200_${ii}.nc
    test -f "$o1ts" && continue
    ncrcat -O -h -v ${var} ${ifiles} ${o1ts}
done
for i in Z200_??.nc; do
    ## cal trend and avg
    avgf=$(echo $i | sed 's/Z200/Z200_avg/')
    trendf=$(echo $i | sed 's/Z200/Z200_trend/')
    ##  shifttime: NorESM1 still output monthly data at 1st day of month+1
    cdo -s -O -trend  $cdoseamean  -shifttime,-2d ${i} $avgf $trendf
done
## ensemble variables
cdo -O -ensavg Z200_??.nc ${avgfile}
cdo -O -ymonsub ${avgfile} -ymonmean ${avgfile} ${anofile}
cdo -O -ensavg Z200_trend_??.nc ${trendfile}
## cat to 1 file
#cdo --reduce_dim -O -merge avg_ts.nc std_ts.nc min_ts.nc max_ts.nc ${outfile}


