#!/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
module -q purge
#module load CDO/1.9.9-iompi-2020a
source /cluster/projects/nn9039k/people/pgchiu/conda/py3env.sh

## ensemble
dir=/cluster/shared/NS9039K/norcpm_ana_hindcast/archive/norcpm1_assim-i1_TroPac_19800115
outfile=natl_ts.nc
var=sst
lonlatbox=-60,-20,10,60
test -f ${outfile} && exit 0
## loop for every member
memdirs=$(ls -d ${dir}/*mem??)
i=0
for d in $memdirs; do
    i=$(($i+1))
    o1ts=ts_natl_$(printf "%2.2d" $i).nc
    test -f "$o1ts" && continue
    t0=$(date +%s)
    echo -n "making $o1ts..."
    ifiles=$(ls ${d}/ocn/hist/*.micom.hm.{1982..2010}-??.nc)
    iifiles=''
    ## unpacking, can be parallelize but maybe later
    for ifile in $ifiles ; do
        ofn=$(basename $ifile)
        ncpdq -O -U -v${var} $ifile -o $ofn
        iifiles="$iifiles $ofn"
    done
    ## TaiESM (POP2)
        #cdo -s           \
        #    -yearmonmean \
        #    -shifttime,-15days \
        #    -fldmean  \
        #    -sellonlatbox,${lonlatbox}  \
        #    -select,name=${var},level=${level} \
        #    ${ifiles} \
        #    ${o1ts}
    ## NorESM (BLOM/MICOM)
    ncrcat -O -h -v ${var} ${iifiles} ${o1ts}_tmp1.nc
    ## remove attubutes cause Warning by cdo
    ncatted  \
        -a coordinates,${var},d,, \
        -a valid_range,${var},d,, \
        ${o1ts}_tmp1.nc ${o1ts}_tmp.nc && rm ${o1ts}_tmp1.nc
    cdo -s    \
        -yearmonmean \
        -fldmean  \
        -sellonlatbox,${lonlatbox}  \
        -setgrid,griddes.txt \
        -selname,${var} \
        ${o1ts}_tmp.nc  \
        ${o1ts}

    #cdo -s -b F32    \
    #    -yearmonmean \
    #    -fldmean  \
    #    -sellonlatbox,${lonlatbox}  \
    #    -setgrid,griddes.txt \
    #    -select,name=${var} \
    #    ${ifiles} \
    #    ${o1ts}  #2>&1 |grep -v '^Warning'
    rm -f $iifiles  ${o1ts}_tmp.nc
    dt=$(($(date +%s) - $t0))
    echo " $dt secs"
done
## ensemble variables
cdo -O -chname,${var},avg -ensavg ts_natl_*.nc avg_ts.nc
cdo -O -chname,${var},std -ensstd ts_natl_*.nc std_ts.nc
cdo -O -chname,${var},min -ensmin ts_natl_*.nc min_ts.nc
cdo -O -chname,${var},max -ensmax ts_natl_*.nc max_ts.nc
rm -f ts_natl_*.nc
## cat to 1 file
cdo --reduce_dim -O -merge avg_ts.nc std_ts.nc min_ts.nc max_ts.nc ${outfile}
rm -f  avg_ts.nc std_ts.nc min_ts.nc max_ts.nc


