#!/bin/bash -e

extract01_1f () {
    ifn="$1"
    i=$(basename $ifn)
    ncrcat -v ilev,Z3,U,V "$ifn" "${i}.tmp.nc"
    ncatted -a bounds,lev,c,c,"ilev" "${i}.tmp.nc"
    ncrcat -v PRECT "$ifn" "${i}.tmp_PRECT.nc"
    ncrcat -v PSL "$ifn" "${i}.tmp_PSL.nc"
    cdo -s  -chname,Z3,Z500 -ml2pl,50000  -selvar,Z3  "${i}.tmp.nc" "${i}.tmp_Z500.nc"
    cdo -s  -chname,Z3,Z300 -ml2pl,30000  -selvar,Z3  "${i}.tmp.nc" "${i}.tmp_Z300.nc"
    cdo -s  -chname,Z3,Z200 -ml2pl,20000  -selvar,Z3  "${i}.tmp.nc" "${i}.tmp_Z200.nc"
    cdo -s  -chname,U,U850  -ml2pl,85000  -selvar,U   "${i}.tmp.nc" "${i}.tmp_U850.nc"
    cdo -s  -chname,U,U300  -ml2pl,30000  -selvar,U   "${i}.tmp.nc" "${i}.tmp_U300.nc"
    cdo -s  -chname,V,V850  -ml2pl,85000  -selvar,V   "${i}.tmp.nc" "${i}.tmp_V850.nc"
    cdo -s merge "${i}.tmp_PRECT.nc"  \
                -selname,Z500 "${i}.tmp_Z500.nc"  \
                -selname,Z300 "${i}.tmp_Z300.nc"  \
                -selname,Z200 "${i}.tmp_Z200.nc"  \
                -selname,U850 "${i}.tmp_U850.nc"  \
                -selname,U300 "${i}.tmp_U300.nc"  \
                -selname,V850 "${i}.tmp_V850.nc"  \
                -selname,PSL  "${i}.tmp_PSL.nc"   \
                "${i}"
    rm "${i}.tmp.nc" "${i}.tmp_Z500.nc" "${i}.tmp_Z300.nc" "${i}.tmp_Z200.nc" "${i}.tmp_U850.nc" "${i}.tmp_U300.nc" "${i}.tmp_V850.nc" "${i}.tmp_PRECT.nc" "${i}.tmp_PSL.nc"
    echo "${i} done"
}
extract02_1f () {
    ifn="$1"
    i=$(basename $ifn)
    ncrcat -v ilev,Z3,U,V "$ifn" "${i}.tmp.nc"
    ncatted -a bounds,lev,c,c,"ilev" "${i}.tmp.nc"
    ncrcat -v SNOWHICE "$ifn" "${i}.tmp_SNOWHICE.nc"
    ncrcat -v SNOWHLND "$ifn" "${i}.tmp_SNOWHLND.nc"
    cdo -s merge "${i}.tmp_SNOWHICE.nc"  \
                 "${i}.tmp_SNOWHLND.nc"  \
                 "${i}"
    rm "${i}.tmp.nc" "${i}.tmp_SNOWHICE.nc" "${i}.tmp_SNOWHLND.nc"
    echo "${i} done"
}
export -f extract01_1f
export -f extract02_1f
extract () {
    extnum=02
    dir="$1"
    case=$(basename $dir)
    #for i in $dir/atm/hist/*.h0.*; do
    #    extract_1f $i
    #done
    test -f  result/"${case}.cam.h0.extract${extnum}-fulldims.nc" && return
    find $dir/atm/hist/ -name '*.h0.*' | sort -h | xargs -P2 -I {} /bin/bash -c "extract${extnum}_1f {}"
    cdo -s -mergetime ${case}.cam.h0.????-??.nc "${case}.cam.h0.extract${extnum}-fulldims.nc"
    #cdo -s --reduce_dim "${case}.cam.h0.extract${extnum}-fulldims.nc" "${case}.cam.h0.extract${extnum}.nc"
    mv "${case}.cam.h0.extract${extnum}-fulldims.nc" result/
    rm ${case}.cam.h0.????-??.nc
    }

mkdir -p result

for i in $(ls -d /nird/datapeak/NS9039K/shared/feili/sea-ice/cases/{HadISST_1deg,reconstructed_1deg}* | sort -h ) ; do 
    extract  $i
done
