#!/bin/ksh
#
# set -x
#
cclargs 0$                                "[Mise en forme des donnees pour AMIP2]"\
      -contexte+ "AMIP2"     ",,,,"       "[Contexte general de l'experience]"\
      -exp       ",,,,"      ",,,,"       "[Nom de l'experience (ex. amip2r02)]"\
      -suffix    ""          ""           "[Suffixe optionel aux noms des fichiers, i.e. _hi or _lo]"\
      -pref      "diag_results" ",,,,"    "[Prefixe du nom d'archive (pref_exp_date.ca)]"\
      -debut     ",,,,"      ",,,,"       "[Annee de depart (ex. 1979)]"\
      -fin       ",,,,"      ",,,,"       "[Derniere annee (correspondant au 1er mois)]"\
      -mois      "12-02"     ",,,,"       "[Mois a couvrir]"\
      -outnam    "multi"     ",,,,"       "[Identificateur de sortie]"\
      -outrep    ""          ",,,,"       "[Repertoire contenant les sorties (par defaut $CWD]"\
      -arcmach   "cfs"       ",,,,"       "[Serveur contenant les archives]"\
      -archdir   "data"      ",,,,"       "[Repertoire ou trouver les donnees archivees]"\
      -wp+       "WW"        "WP"         "[Nom de la variable mouvement vertical]"\
      -travail   "${BIG_TMPDIR}"  ""      "[Repertoire de travail]"\
      -beta+     "NON"       "OUI"        "[Traiter la variables beta]"\
      -means     "0"         "1"          "[1: Calculate only monthly means]"\
      ++ $* > ${BIG_TMPDIR}/cclargs_multi_diag.out$$
#
. ${BIG_TMPDIR}/cclargs_multi_diag.out$$ && /bin/rm -f ${BIG_TMPDIR}/cclargs_multi_diag.out$$
#
###########################################
# Description:
#   Script permettant l'analyse statistique 
#   interannuelle des donnees AMIP2
###
# v 0.1 - 01/05/2001: DD, Version initiale fortement dependante du format des donnes
# v 0.2 - 30/09/2001: BD, Utiliser ACCUMUL plutot que ADD et en profiter pour enlever 
#                         les calculs associes aux facteurs de ponderations
# v 0.3 - 31/10/2001: BD, Ajouter les calculs associes aux covariances
# v 0.4 - 19/02/2002: BD, Modifier le traitement de outrep en entree et
#                         ajouter le contexte HFP2 (i.e. annees 1970 a 1999)
# v 0.5 - 27/10/2002: BD, ajouter l'argument "suffix" et tenir compte des
#                         occasions ou ${arcmach} = ${leHost}
# v 0.6 - 27/10/2002: BD, Le contexte AMIP2 va jusqu'en aout 2000
# v 0.7 - 14/05/2003: BD, Modifier l'appel a cclarg
# v 0.8 - 10/11/2003: BD, Ajouter le contexte ERA40 et le parametre wp
# v 0.9 - 02/08/2005: KW, gunzip files 
# v 0.10 - 14/12/2005: BD, Les valeurs par defaut de $RDIAG et $EDITFST
#                          deviennent r.diag2000 et editfst2000
# v 0.11 - 26/02/2006: BD, Corriger le calcul des mois lorsqu'on fait toute
#                          l'annee et etendre le mode HFP2 a l'annee 2005
# v 0.12 - 31/05/2006: KW, include 2-D ts-file in diagnostics
# v 0.13 - 31/10/2006: BD, 1) Tenter de s'assurer qu'on a la meme liste de
#                          variables pour tous les mois que pour le premier
#                          2) Utiliser Climat_functions
# v 0.14 - 13/08/2008: BD, Ajouter le contexte CGCM
# v 0.15 - 29/06/2009: BD, Ajouter le contexte GEM332 (GEMCLIM 3.3.2)
###########################################
#
###
#
ECHO="echo"
if [ ${ARCH:-none} = Linux ]; then ECHO="echo -e" ; fi
#
if [ "${contexte}" != "AMIP2"     -a \
     "${contexte}" != "HFP2"      -a \
     "${contexte}" != "NCEP"      -a \
     "${contexte}" != "ERA15"     -a \
     "${contexte}" != "ERA40"     -a \
     "${contexte}" != "CGCM"      -a \
     "${contexte}" != "GEM332"    ]; then
 echo "${contexte} non reconnu par Climat_multi_diag"
 exit 1
fi
#
if [ "${contexte}" = "NCEP"  -o \
     "${contexte}" = "ERA15" -o \
     "${contexte}" = "ERA40" -o \
     "${contexte}" = "CGCM"  ]; then suffix="" ; fi
#
# Gestion des repertoires ${outrep} et ${travail}
#
if [ ! "${outrep}" ] ; then outrep=`pwd` ; fi
if [ ! -d "${outrep}" ] ; then 
 # Tenter de creer le repertoire de destination
 mkdir ${outrep}
 if [ $? != 0 ] ; then exit 2 ; fi
fi
#
outrep=`true_path ${outrep}`
#
if [ ! -d "${travail}" ] ; then
 mkdir $travail
 nouveau_travail=OUI
else
 nouveau_travail=NON    
fi
#
premier_travail=`true_path ${travail}` ; cd ${premier_travail}
BIG_TMPDIR=${premier_travail} ; export BIG_TMPDIR
leHost=`hostname`
#
# Definir certaines variables d'environnement de R.DIAG
#
. Climat_functions
#
# Conversions de l'anglais au francais
#
if [ ${beta} = YES ]; then
  beta=OUI
elif [ ${beta} = NO ]; then
  beta=NON
fi
#
MakeDirList()
{
  # Create a list of editfst 'desire' directives
  # in ${variable_list} from the variables in file $1
  #
  unset variable_list
  #
  for VARIABLE in `r.fstliste -izfst $1 -col 1` ; do
    if [ "${VARIABLE}" != 'CONF' -a "${VARIABLE}" != '>>' -a \
         "${VARIABLE}" != 'GSET' -a "${VARIABLE}" != '^^' -a \
         "${VARIABLE}" != 'HY' ] ; then
      variable_list="${variable_list},'${VARIABLE}'"
    fi
  done
  #
  variable_list=`echo ${variable_list} | cut -c2-`
  #
  unset table
  index=0 ; cut1=1 ; cut2=$(( cut1 + 7 ))
  table[$index]="`echo ${variable_list} | cut -d, -f${cut1}-${cut2}`"
  longueur=`echo ${table[$index]} | wc -c`
  #
  while [ ${longueur} -gt 1 ]; do
    index=$(( index + 1 )) ; cut1=$(( cut2 + 1 )) ; cut2=$(( cut1 + 7 ))
    table[$index]="`echo ${variable_list} | cut -d, -f${cut1}-${cut2}`"
    longueur=`echo ${table[$index]} | wc -c`
  done
  #
  index=2
  variable_list="    desire(-1,["${table[0]}"])"
  #
  while [ $index -lt ${#table[*]} ]; do
    variable_list="${variable_list}
    desire(-1,["${table[$index-1]}"])"
    index=$(( index + 1 ))
  done
}
#
ProduitVariableS()
{
  ${RDIAG} mlt     $1 $2 tempo
  ${RDIAG} newnam  tempo $1$2 -name $3
  r.delf  -dn      tempo
}
#
CalculsProduits()
{
  # Caclcul des produits de variables dans $1 qui
  # correspondent aux covariances diagnostiquees
  #
  ${RDIAG} select  $1    u v w -name UU VV ${wp}
  ${RDIAG} select  $1    t p e -name TT GZ HU
  #
  ProduitVariableS u v   UUVV
  ProduitVariableS u t   UUTT
  ProduitVariableS u p   UUGZ
  ProduitVariableS u e   UUHU
  ProduitVariableS w v   ${wp}VV
  ProduitVariableS v t   VVTT
  ProduitVariableS v p   VVGZ
  ProduitVariableS v e   VVHU
  ProduitVariableS w u   ${wp}UU
  ProduitVariableS w t   ${wp}TT
  ProduitVariableS w p   ${wp}GZ
  ProduitVariableS w e   ${wp}HU
  #
  ${RDIAG} joinup  $2   uv ut up ue wv vt vp ve wu wt wp we
  #
  r.delf  -dn      u v w t p e uv ut up ue wv vt vp ve wu wt wp we
}
#
r.echo " "
r.echo "Climat_multi_diag: RDIAG          =${RDIAG}"
r.echo "Climat_multi_diag: BIG_TMPDIR     =${BIG_TMPDIR}"
r.echo "Climat_multi_diag: DIAGNOSTIC_EXIT=${DIAGNOSTIC_EXIT}"
r.echo "Climat_multi_diag: Starting at `date`"
r.echo " "
#
# ===> Construire la liste des archives a traiter
#
listeArchives=''
unset listeMois
iter=0
moisDebut=${mois%-??}
moisFin=${mois#??-}
combienDeMois=$(( ( moisFin - moisDebut + 13 ) % 12 ))
uneAnnee=${debut}
unMois=${moisDebut}
while [ ${uneAnnee} -le ${fin} ] ; do
 cetteAnnee=${uneAnnee}
 iter=$(( iter + 1 ))
 while [ \( ${combienDeMois} -ne 0 -a \
            $(( ( unMois - moisDebut + 13 ) % 12)) -le ${combienDeMois} \) -o \
         \( ${combienDeMois} -eq 0 -a \
            \( ${unMois} -ne ${moisDebut} -o ${cetteAnnee} -eq ${uneAnnee} \) \)  ] ; do
  ajouterArchive=${archdir}/${pref}_${exp}_${cetteAnnee}${unMois}${suffix}.ca
  ajouterMois=${cetteAnnee}${unMois}
  if [ \
    \( \( ${contexte}    = AMIP2     -o \
          ${contexte}    = NCEP   \) -a \
    \( \( ${cetteAnnee} -eq 1978     -a ${unMois} -le 11 \) -o \
       \( ${cetteAnnee} -eq 2000     -a ${unMois} -ge 09 \) -o \
       \( ${cetteAnnee} -le 1977  \) -o \
       \( ${cetteAnnee} -ge 2001  \) \) \) \
    -o \
    \( \( ${contexte}    = HFP2      -o \
          ${contexte}    = GEM332 \) -a \
    \( \( ${cetteAnnee} -le 1969  \) -o \
       \( ${cetteAnnee} -ge 2008  \) \) \) \
    -o \
       \( ${contexte}    = ERA15     -a \
    \( \( ${cetteAnnee} -le 1978  \) -o \
       \( ${cetteAnnee} -ge 1994  \) \) \) \
    -o \
       \( ${contexte}    = ERA40     -a \
    \( \( ${cetteAnnee} -eq 1957     -a ${unMois} -le 09 \) -o \
       \( ${cetteAnnee} -eq 2002     -a ${unMois} -ge 09 \) -o \
       \( ${cetteAnnee} -le 1956  \) -o \
       \( ${cetteAnnee} -ge 2003  \) \) \) \
    -o \
       \( ${contexte}    = CGCM      -a \
    \( \( ${cetteAnnee} -le 1850  \) -o \
       \( ${cetteAnnee} -ge 2300  \) \) \) ]; then
   r.echo "Climat_multi_diag: ${ajouterMois} ne sera pas considere dans le contexte CGCM"
  else
   listeArchives="${listeArchives} ${ajouterArchive}"
   listeMois[${iter}]="${listeMois[${iter}]} ${ajouterMois}"
  fi
  if [ $(( unMois += 1 )) -gt 12 ] ; then
   cetteAnnee=$(( cetteAnnee + 1 ))
   unMois=$(( unMois - 12 ))
  fi
  if [ ${unMois} -lt 10 ] ; then unMois="0${unMois#0}" ; fi
 done
 uneAnnee=$(( uneAnnee + 1 ))
 unMois=${moisDebut}
done 
#
if [ "${contexte}" = "HFP2" ]; then contexte=AMIP2 ; fi
#
# Boucler sur les tranches climatiques
#
extension=1
while [ -s Climat_multi_diag.$extension ] ; do
  extension=$(( $extension + 1 ))
done
#
travail=${premier_travail}/Climat_multi_diag.${extension}
mkdir ${travail} ; cd ${travail}
#
r.echo " "
r.echo "**********************************************************"
r.echo "* Recuperation des donnees "
r.echo "* "`date +'%d/%m/%Y %H:%M:%S' `
r.echo "*"
#
ici=`pwd`
#
if [ "${contexte}" = "AMIP2" ]; then
  contenu="[mp][dr]${exp}.*${suffix}.*e   [mp][dr]${exp}.*${suffix}.*e.gz \
           [mp][dr]${exp}.*${suffix}.*rms [mp][dr]${exp}.*${suffix}.*rms.gz \
           ts${exp}.*${suffix}.*ts_2d"
elif [ "${contexte}" = "NCEP" ]; then
  contenu="d${exp}.*"
else
  if [ "${contexte}" = "CGCM" -o "${contexte}" = "GEM332" ]; then
    if [ ${means} -eq 1 ] ; then
      contenu="[dp][mp]${exp}.*${suffix}.*moyenne"
    else
      contenu="[dp][mp]${exp}.*${suffix}.*e [dp][mp]${exp}.*${suffix}.*e.gz"
    fi
  fi
fi
#
ici=`pwd`
#if [ "${arcmach}" = "${leHost}" ]; then
  for uneArchive in ${listeArchives} ; do
    dir=${uneArchive%.ca}
    base=`basename ${dir}`
    dir=${dir%/*}/${base#diag_results_}
    if [ -d ${dir} ] ; then
      cd ${dir}
      conts=`echo $contenu | sed s/[.][*]/*/g`
      files=`ls ${conts}`
      cd ${ici}
      for file in ${files} ; do
        ln -s ${dir}/${file}
      done
    else
      cmcarc -x ${contenu} -f ${uneArchive}
    fi
  done
#elif [ "${arcmach}" = "cfs" ]; then
#  echo ${listeArchives} | \
#  cfsrip - -exec "rsh cfs -n cmcarc -x ${contenu} -f {} -o | cmcarc -i -x"
#else
#  for archive in ${listeArchives} ; do
#    rsh ${arcmach} -n \
#   "/software/pub/bin/cmcarc -o -f ${archive} -x ${contenu}" |\
#    /software/pub/bin/cmcarc -i -x
#  done
#fi
#
# Verifier la presence des fichiers
#
for unMois in ${listeMois[*]} ; do
 #
 uneExp=${exp}_${unMois}${suffix}
 uneArchive=${pref}_${uneExp}.ca
 if [ "${contexte}" = "AMIP2" -o "${contexte}" = "ERA40" ]; then
  uneListe=`ls [m,p,t][d,r,s]${uneExp}* 2>/dev/null`
 elif [ "${contexte}" = "NCEP" -o "${contexte}" = "ERA15" ]; then
  uneListe=`ls d${uneExp}* 2>/dev/null`
 else
  if [ "${contexte}" = "CGCM" -o "${contexte}" = "GEM332" ]; then
   uneListe=`ls [d,p][m,p]${uneExp}* 2>/dev/null`
  fi
 fi
 if [ ! "${uneListe}" ] ; then 
  ${ECHO} "\nERREUR: Impossible de recuperer les fichiers\n de l'archive ${uneArchive}"
  exit 3
 else
  for unFichier in ${uneListe} ; do
   # Unzip compressed files
   if [ "${unFichier##*.}" = "gz" ] ; then 
    gunzip ${unFichier}
    unFichier=${unFichier%.*}
   fi
   r.catf ${unFichier} `echo ${unFichier} | sed "s/_${unMois}//"`_${unMois} -d
  done
 fi
done
r.echo "* Completee "`date +'%d/%m/%Y %H:%M:%S' `
r.echo "**********************************************************"
r.echo " "
#
# Dans le contexte AMIP2, on boucle sur quatre type
# de fichiers: pr, md accumul, md nonacc et ts. Par contre,
# dans le contexte NCEP, nous n'avons qu'un seul type
# de fichiers qui sont prefixes d'un "d"
#
if   [ "${contexte}" = "AMIP2" -o "${contexte}" = "ERA40" ]; then
 listeStyles="pr md ts"
elif [ "${contexte}" = "NCEP" -o "${contexte}" = "ERA15" ]; then
 listeStyles="d"
fi
if   [ "${contexte}" = "CGCM" ]; then
 listeStyles="dm dp pm"
elif [ "${contexte}" = "GEM332" ]; then
### listeStyles="dm dp pm pp"
 listeStyles="dm dp pm"
fi
for style in ${listeStyles} ; do
 if [ ${style} = md ] ; then 
  listeTypeAcc="_accumul _nonacc"
 else
  listeTypeAcc="blabla"
 fi
 #
 r.echo "Climat_multi_diag: traitement des fichiers ${style}${exp}${suffix}"
 #
 for typeAcc in ${listeTypeAcc:-""} ; do

  if [ "${typeAcc}" = "blabla" ] ; then typeAcc="" ; fi

  #
  # Premiere etape: diagnostiques saisonniers
  #
  iter=0
  #
  # Boucle sur les annees (saisons)
  while [ "${listeMois[ $(( iter += 1 )) ]}" ] ; do
   set -A saison ${listeMois[${iter}]}
   uneAnnee=${saison%??}
   r.echo " "
   r.echo " ---> Traitement des mois ${saison[*]}"
   #
   # Deplacer tous les fichiers de la saison dans un repertoire temporaire repSaison
   #
   repSaison=${travail}/${saison}_tmp ; mkdir ${repSaison}
   for unMois in ${saison[*]} ; do
    for fichier in ${style}${exp}${suffix}${typeAcc}*_${unMois} ; do
     r.catf              ${fichier}       ${repSaison}/${fichier} -d
    done
   done
   #
   BIG_TMPDIR=${repSaison} ; export BIG_TMPDIR
   cd ${repSaison}   
   #
   # Calculer la moyenne et la variance pour la saison
   #
   for unMois in ${saison[*]} ; do
    if [ "${style}" = "ts" ] ; then
      moyenneMois=${style}${exp}${suffix}${typeAcc}_ts_2d_${unMois}
    else
      moyenneMois=${style}${exp}${suffix}${typeAcc}_moyenne_${unMois}
    fi
    #
    if [ "${typeAcc}" = "_accumul" -o "${style}" = "ts" ] ; then
     unset varianceMois
     rmsMois=${style}${exp}${suffix}${typeAcc}_rms_${unMois}
    else 
     varianceMois=${style}${exp}${suffix}${typeAcc}_variance_${unMois}
     covarMois=${style}${exp}${suffix}${typeAcc}_covariance_${unMois}
    fi
    #
    # Create standard deviation and mean for time series file
    if [ "${style}" = "ts" ] ; then
     #
     if [  "${tsvar_liste}" ]; then
      echo "${tsvar_liste}" | \
      reditfst       -s  ${moyenneMois} -d tsmois
      r.catf             tsmois           ${moyenneMois} -d
     fi
     #
     if [ ${means} -eq 0 ] ; then
       ${RDIAG}  stdev      ${moyenneMois}   ${rmsMois}     -def
     fi
     ${RDIAG}  timavg     ${moyenneMois}   moyenne                        
     r.catf    moyenne    ${moyenneMois}                  -d
     #
     if [ ! "${tsvar_liste}" ]; then
      MakeDirList  ${moyenneMois}
      tsvar_liste="${variable_list}"
     fi
     #
    fi
    #
    if [ "${style}" = "pr" -a "${beta}" = "NON" ] ; then
     ${RDIAG}  enleve     ${moyenneMois}   moyenne_sans_b -name BETA
     ${RDIAG}  repack     moyenne_sans_b   moyenne        -npg =-64
     r.delf   -dn         moyenne_sans_b
    else
     ${RDIAG}  repack     ${moyenneMois}   moyenne        -npg =-64
    fi
    #
    if [ ${means} -eq 0 ] ; then
      ${RDIAG}  square     moyenne          moyenne2
      if [ "${typeAcc}" = "_accumul" -o "${style}" = "ts" ] ; then
       ${RDIAG} repack     ${rmsMois}       rms            -npg =-64
       ${RDIAG} square     rms              variance
      else 
       ${RDIAG} repack     ${varianceMois}  variance       -npg =-64
      fi
      ${RDIAG}  add        variance         moyenne2 \
                           total2
    fi
    #
    # Accumuler les valeurs dans les fichiers de totaux
    #
    ${RDIAG}  accumul    moyenne \
                         ${travail}/${style}${exp}${suffix}${typeAcc}_moyenne_${uneAnnee}
    if [ ${means} -eq 0 ] ; then
      ${RDIAG}  accumul    total2           somcarres
    fi
    #
    if [ "${style}" = "pr" -a ${means} -eq 0 ] ; then
     #
     # Calculer les sommes des produits de certaines variables en
     # partant du fichier des covariances et celui des moyennes
     #
     ${RDIAG} repack     ${covarMois}     covariance     -npg  =-64
     ${RDIAG} select     covariance       uv ut up ue    -name UUVV UUTT UUGZ UUHU
     ${RDIAG} select     covariance       wv vt vp ve    -name ${wp}VV VVTT VVGZ VVHU
     ${RDIAG} select     covariance       wu wt wp we    -name ${wp}UU ${wp}TT ${wp}GZ ${wp}HU
     ${RDIAG} joinup     covariance       uv ut up ue wv vt vp ve wu wt wp we
     #
     CalculsProduits     moyenne          mcovariance
     #
     ${RDIAG} add        covariance       mcovariance     produits
     ${RDIAG} accumul    produits \
                         ${travail}/${style}${exp}${suffix}${typeAcc}_sommeproduits_${uneAnnee}
     #
     r.delf  -dn         covariance       mcovariance     produits
     #
    fi
    #
    if [ -s ${DIAGNOSTIC_EXIT} ]; then
     echo "Problemes avec le traitement des fichiers ${moyenneMois} ou ${varianceMois:-$rmsMois}"
     exit 4
    fi
    #
   done
   #
   # Completer le calcul de la variance pour la saison
   #
   if [ ${means} -eq 0 ] ; then
     ${RDIAG}   square     ${travail}/${style}${exp}${suffix}${typeAcc}_moyenne_${uneAnnee} \
                           moy2
     ${RDIAG}   sub        somcarres        moy2 \
                           ${travail}/${style}${exp}${suffix}${typeAcc}_variance_${uneAnnee}
     #
     r.delf    -dn         moyenne          moyenne2    \
                           variance         total2      \
                           somcarres        moy2       -f
     if [ "${typeAcc}" = "_accumul" ]; then r.delf -dn rms -f ; fi 
   fi
   #
   r.echo " "   
   r.echo " ---> Fin du traitement de la saison ${uneAnnee}"
   #
   if [ -s ${DIAGNOSTIC_EXIT} ]; then
     echo "Problemes avec le traitement de la saison ${uneAnnee} pour ${style}${exp}${suffix}${typeAcc}..."
     exit 5
   fi
   #
   cd ${travail} ; rm -Rf ${repSaison}
   #
  done
  #
  # Deuxieme etape: traitement inter-annuel
  # =======================================
  #
  BIG_TMPDIR=${travail} ; export BIG_TMPDIR
  #
  # Boucle sur les annees pour accumulation
  #
  iter=0
  while [ "${listeMois[ $(( iter += 1 )) ]}" ] ; do
  #
  set -A saison ${listeMois[${iter}]}
   uneAnnee=${saison%??}
   #
   moyenneAnnee=${style}${exp}${suffix}${typeAcc}_moyenne_${uneAnnee}
   varianceAnnee=${style}${exp}${suffix}${typeAcc}_variance_${uneAnnee}
   sommeproduits=${style}${exp}${suffix}${typeAcc}_sommeproduits_${uneAnnee}
   #
   if [ ${means} -eq 0 ] ; then
     ${RDIAG}   square     ${moyenneAnnee}  moyenne2
   fi
   #
   # Accumuler les valeurs annuelles 
   #
   ${RDIAG}   accumul    ${moyenneAnnee} \
                         ${travail}/${style}${exp}${suffix}${typeAcc}_${outnam}_moyenneDesMoyennes
   if [ ${means} -eq 0 ] ; then
     ${RDIAG}   accumul    ${varianceAnnee} \
                           ${travail}/${style}${exp}${suffix}${typeAcc}_${outnam}_moyenneDesVariances
     ${RDIAG}   accumul    moyenne2         total_moyenne2
   fi
   #
   if [ "${style}" = "pr" -a ${means} -eq 0 ] ; then
    #
    # Calculer les sommes des produits de certaines variables
    # en partant du fichier des sommes de produits saisonniaires
    #
    CalculsProduits      ${moyenneAnnee}  produitmoyenne
    ${RDIAG}  accumul    produitmoyenne   total_ProduitsDesMoyennes
    ${RDIAG}  accumul    ${sommeproduits} total_SommeDesProduits
    #
    r.delf   -dn         ${sommeproduits} produitsmoyenne  -f
   fi
   #
   r.delf    -dn         ${moyenneAnnee} -f
   if [ ${means} -eq 0 ] ; then
     r.delf    -dn         moyenne2 ${varianceAnnee} -f    
   fi
   #
   if [ -s ${DIAGNOSTIC_EXIT} ] ; then
    ${ECHO} "\nProbleme avec traitement interannuel pour ${style}${exp}${suffix}${typeAcc}_[moyenne,variance]"
    exit 6
   fi
  done
  #
  # Completer le calcul de la variance
  #
  if [ ${means} -eq 0 ] ; then
    ${RDIAG}    square     ${travail}/${style}${exp}${suffix}${typeAcc}_${outnam}_moyenneDesMoyennes \
                           moymoy2
    ${RDIAG}    sub        total_moyenne2   moymoy2 \
                           ${travail}/${style}${exp}${suffix}${typeAcc}_${outnam}_varianceDesMoyennes
    ${RDIAG}    add        ${travail}/${style}${exp}${suffix}${typeAcc}_${outnam}_varianceDesMoyennes \
                           ${travail}/${style}${exp}${suffix}${typeAcc}_${outnam}_moyenneDesVariances \
                           ${travail}/${style}${exp}${suffix}${typeAcc}_${outnam}_variance_totale
  fi
  #
  if [ "${style}" = "pr" -a ${means} -eq 0 ] ; then
   #
   # Completer le calcul des covariances totales et inter-annuelles
   #
   CalculsProduits       ${travail}/${style}${exp}${suffix}${typeAcc}_${outnam}_moyenneDesMoyennes \
                         produitsMoyenneDesMoyennes
   #
   ${RDIAG}   sub        total_SommeDesProduits \
                         produitsMoyenneDesMoyennes \
                         ${travail}/${style}${exp}${suffix}${typeAcc}_${outnam}_covariance_totale
   ${RDIAG}   sub        total_ProduitsDesMoyennes \
                         produitsMoyenneDesMoyennes \
                         ${travail}/${style}${exp}${suffix}${typeAcc}_${outnam}_covarianceDesMoyennes
   #
   r.delf    -dn         total_SommeDesProduits \
                         total_ProduitsDesMoyennes \
                         produitsMoyenneDesMoyennes
   #
  fi
  #
  if [ ${means} -eq 0 ] ; then
    r.delf     -dn         total_moyenne2   moymoy2
  fi
  #
  if [ -s ${DIAGNOSTIC_EXIT} ]; then
   ${ECHO} "\nERREUR: Incapable de completer le traitement des donnees ${style}${exp}${suffix}${typeAcc}..."
   exit 7
  else
   r.echo " "
   r.echo " Fin du traitement des fichiers ${style}${exp}${suffix}${typeAcc}"
   r.echo " "
  fi
 done
done
#
mv *${exp}* ${outrep}
if [ $? != 0 ] ; then
 echo "ERREUR: probleme lors du transfert final des resultats"
 echo "de:   ${travail}"
 echo "vers: ${outrep}"
 exit 8
else
 r.echo " "
 r.echo "Fichiers resultats transferes vers ${outrep}"
 r.echo " "
 cd ${outrep}
 if [ "${nouveau_travail}" = "OUI" ] ; then
  rm -Rf ${premier_travail}
 else
  rm -Rf  ${travail}
 fi
fi
${ECHO} "\n**********************************************************"
echo "* ---> Sortie de ${0}."
${ECHO} "**********************************************************\n"
exit 0
