#!/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/shared/norcpm/cases/NorCPM/norcpm-cmip6_pacemaker_18500115
outfile=npac_ts.nc
var=sst
lonlatbox=120,200,10,30
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_npac_$(printf "%2.2d" $i).nc
    test -f "$o1ts" && continue
    t0=$(date +%s)
    echo -n "making $o1ts..."
    ifiles=$(ls ${d}/ocn/hist/*.micom.hm.{1981..2020}-??.nc)
    iifiles=''
    ## unpacking, can be parallelize but maybe later
    mkdir -p extract
    for ifile in $ifiles ; do
        ofn="extract/${var}_$(basename $ifile)"
        iifiles="$iifiles $ofn"
        test -f "$ofn" && continue
        ncpdq -O -U -v${var} $ifile -o $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
    rm -f  ${o1ts}_tmp.nc
    dt=$(($(date +%s) - $t0))
    echo " $dt secs"
done
## ensemble variables
cdo -O -chname,${var},avg -ensavg ts_npac_*.nc avg_ts.nc
cdo -O -chname,${var},std -ensstd ts_npac_*.nc std_ts.nc
cdo -O -chname,${var},min -ensmin ts_npac_*.nc min_ts.nc
cdo -O -chname,${var},max -ensmax ts_npac_*.nc max_ts.nc
rm -f ts_npac_*.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


