#!/bin/bash

#set -vx

module load cdo

sim=$1
MAINDIR=`basename \`pwd\``
PRE=FH$MAINDIR
echo $PRE
STORED=$STORE

se=1
cosp=0
da=0

if [ ! -d $sim ] ; then echo la simulation $sim n existe pas ; exit ; fi


yri=2001
yrf=2005

yr=$yri

cd $sim
mkdir -p Analyse/SE Analyse/TS_DA
listemth=""
listecosp=""
listeday=""
while [ $yr -le $yrf ] ; do
  for suf in day mth ; do
       if [ ! -f hist$suf.${yr}.nc ] ; then
          if [ ! -f "hist$suf.${yr}01.nc" -o ! -f "hist$suf.${yr}12.nc" ] ; then echo fichiers hist$suf.${yr}01.nc -f hist$suf.${yr}12.nc manquants ; exit ; fi
          echo cdo mergetime hist$suf.${yr}??.nc hist$suf.${yr}.nc
          cdo mergetime hist$suf.${yr}??.nc hist$suf.${yr}.nc
       fi
  done
  listemth="$listemth `ls histmth.${yr}.nc`"
  listecosp="$listecosp `ls histmthCOSP.${yr}.nc`"
  listeday="$listeday `ls histday.${yr}.nc`"
  (( yr = $yr + 1 ))
done

# liste des variables reconstruite a partir de 
# grep calias ~fabric/LMDZ/atlas/lmdz_SE.py | cut -d\' -f6 | sort | uniq | sed -e '/psl/d'

varse="pourc_ter,pourc_oce,pourc_lic,pourc_sic,bils,cldt,flat,LWdnSFC,LWdnSFCclr,LWupSFC,ovap,precip,q2m,rh2m,rhum,sens,slp,SWdnSFC,SWdnSFCclr,SWdnTOA,SWupSFC,SWupSFCclr,SWupTOA,SWupTOAclr,t2m,taux_oce,tauy_oce,temp,topl,topl0,tsol,tsol_oce,vitu,vitv,vitw,wind10m,z500,snow,pr_lsc_i,pr_lsc_l,geop,phis,prw,cldl,cldm,cldh,cldt,w500,tops,tops0,sols,sols0,soll,soll0"

vars1d="bils cldh cldl cldm cldq cldt evap flat pluc plul precip prw psol q2m q700 sens sicf slp soll sols SWdnSFC max min t2m t700 topl tops tsol u10m u700 u850 v10m v700 w700 wind10max wind10m"


varcosp="cllcalipso,clhcalipso,clmcalipso,cltcalipso,clcalipso"

#==========================================================================
# Correction eventuelle pour des versions definissant mal le calendrier
# 360d au lieu de 360_day. Corrige en avril 2017
listetout=""
if [ $se = 1 ] ; then listetout="$listetout $listemth" ; fi
if [ $da = 1 ] ; then listetout="$listetout $listeday" ; fi
if [ 1 = 0 ] ; then
for file in $listetout ; do
   cal=`ncdump -h $file | grep time_counter | grep calendar | cut -d\" -f2`
   if [ "$cal"  = "360d" ] ; then
      echo Correction axe des temps $file
      ncatted -a calendar,"time_counter",o,c,"360_day" -O $file
   else
   echo $file correct
  fi
done
fi
#==========================================================================


POST=$SCRATCH/$MAINDIR/POST/$sim
mkdir -p $POST
cd $POST

echo BIBBBBBB
cat <<eod>| post_$sim
#!/bin/bash
#SBATCH --job-name=se_$sim
#SBATCH -A gzi@cpu
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --time=01:00:00            # Temps dâ€™exÃ©cution maximum demandÃ© (HH:MM:SS)
#SBATCH --output=se_$sim%j     # Nom du fichier de sortie
#SBATCH --error=se_$sim%j   

module purge
module load intel-compilers/19.0.4
module load nco
module load cdo

cd $POST
ulimit -s unlimited
MAINDIR=$MAINDIR
sim=$sim

if [ $se = 1 ] ; then
   for mth in $listemth ; do
      ln -s $STORED/$MAINDIR/$sim/\$mth
   done
   ncrcat -v $varse $listemth -O tmp.nc
   out=$PRE${sim}_SE_${yri}_${yrf}_1M_histmth.nc
   if [ ! -f \$out ] ; then
       cdo ymonmean tmp.nc \$out
       mv \$out $STORED/$MAINDIR/$sim/Analyse/SE/\$out
   fi
fi

if [ $cosp = 1 ] ; then
   for cosp in $listecosp ; do
      ln -s $STORED/$MAINDIR/$sim/\$cosp
   done
   ncrcat -v $varcosp $listecosp -O tmp.nc
   out=$PRE${sim}_SE_${yri}_${yrf}_1M_histmthCOSP.nc
   if [ ! -f \$out ] ; then
       cdo ymonmean tmp.nc \$out
       mv \$out $STORED/$MAINDIR/$sim/Analyse/SE/\$out
   fi
fi


if [ $da = 1 ] ; then
for day in $listeday ; do
   if [ ! -f \$day ] ; then ln -s $STORED/$MAINDIR/$sim/\$day ; fi
done
for var in $vars1d ; do
  out=$PRE${sim}_${yri}0101_${yrf}1231_1D_\$var.nc
  if [ ! -f \$out ] ; then
     echo ncrcat -v \$var $listeday \$out
     ncrcat -v \$var $listeday \$out
     mv \$out $STORED/$MAINDIR/$sim/Analyse/TS_DA/\$out
   fi
done
fi
eod


sbatch post_$sim
