#! /bin/ksh
#
# set -x
#
cclargs 0$                    "[Calcule les moyennes et rms zonales]"  \
      -moyenne  ",,,," ",,,," "[Fichier de donnees (typiquement, des moyennes temporelles)]"\
      -rep      "."    ",,,," "[Repertoire source (donnees) et destination (resultats)]"\
      -outnam   ""     ",,,," "[Output file prefix]"\
      -rotated+ "NON"  "OUI"  "[Les composantes vectorielles ont deja subies une rotation]"\
      -rlats     120    120   "[Nombre de latitudes dans les coupes zonales de grilles de type Z]"\
      -vents+   "OUI"  "NON"  "[Tenir compte des vents dans le calcul des moyennes zonales]"\
      -ucomp+   "UU"   "UU"   "[Noms des composantes U a considerer SSI rotated=NON]"\
      -vcomp+   "VV"   "VV"   "[Noms des composantes V a considerer SSI rotated=NON]"\
      -graphe+  "OUI"  "NON"  "[Presentation graphique des resultats (metacode)]"\
      -travail  "."    ",,,," "[Repertoire ou on cree le repertoire de travail (BIG_TMPDIR)]"\
      -debug+   "NON"  "OUI"  "[Activer le mode DEBUG]"\
      -do_diag+ "OUI"  "NON"  "[On fait les diagnostiques en mode DEBUG]"\
      -grillez  ""     ""     "[parametre obsolete...]"\
      -lon      ""     ""     "[parametre obsolete...]"\
      -lat      ""     ""     "[parametre obsolete...]"\
      -rndout   "NON"  "NON"  "[Parametre obsolete...]"\
      ++ $* > ${BIG_TMPDIR}/cclargs_make_zonaux.out$$
#
. ${BIG_TMPDIR}/cclargs_make_zonaux.out$$ && /bin/rm -f ${BIG_TMPDIR}/cclargs_make_zonaux.out$$
#
#######################################################################
#
# Description...
#    Cette script calcule les moyennes et variances zonales des
#    variables contenues dans un fichier. Les grilles de ce fichier
#    peuvent etre des grilles de type Z (GEM).
#
#######################################################################
#
# Auteurs...
#    Michel Roch et Bernard Dugas
#
#######################################################################
#
# Revisions...
#    001 - octobre   1997: version initiale
#    002 - novembre  1997: 1) ajouter les parametres grillez et rep
#                          2) ajouter support des grilles gaussiennes
#    003 - decembre  1997: ajouter commentaires pour parametres
#    004 - juillet   1998: renforcer le traitement de rep et travail
#    005 - novembre  1998: corriger l'enonce zxplot sur les rmsz
#    006 - decembre  1998: ajouter le mode debug
#    007 - decembre  1998: ajouter le parametre outnam
#    008 - janvier   1999: format general pour parametre moyenne
#    009 - mai       1999; utiliser BIG_TMPDIR
#    010 - septembre 2000; 1) definir et utiliser la fonction reditfst
#                          et 2) quitter en cas d'erreur prealable
#    011 - decembre  2000; utiliser la variable $EDITFST
#    012 - mars      2002: ajouter la cle do_diag
#    013 - aout      2002: utiliser r.diag2000 et editfst2000 par defaut
#    014 - mai       2003: modifier l'appel a cclargs et verifier les codes
#                          de retour des procedures externes
#    015 - novembre  2003: Ajouter le support des grilles A et B avec r.fstliste
#    016 - novembre  2004: 1) modifier le sens de la cle "vents", 2) ajouter
#                          les cles "rotated", "ucomp", "vcomp" et "rlats"
#                          et 3) ignorer les cles "grillez", "lon" et "lat".
#                          Enfin, 4) faire appel a Climat_check_rdiag
#    017 - juillet   2005: Take out repack of files to 32 bit (KW)            
#    018 - janvier   2006: Utiliser Climat_functions (BD)
#
#######################################################################
#
# Parametres...
# moyenne - fichier de donnees (typiquement, des moyennes temporelles)
# rep     - repertoire ou se trouvent les donnees et ou seront
#           depose les resultats
# outnam  - prefixe commun aux fichiers de sorties
#
#######################################################################
#
# Notez:    les cinqe parametres suivants ne sont utilises
#           que SSI les donnees sont sur de grilles de type Z
#
#######################################################################
#
# rotated - OUI: donnees vectorielles ont deja subies une rotation
# rlats   - nombre de latitudes dans les coupes zonales de grilles de type Z
# vents   - OUI: tenir compte des vents dans le calcul des moyennes zonales
# ucomp   - noms des composantes U a considerer SSI rotated=NON
# vcomp   - noms des composantes V a considerer SSI rotated=NON
#
#######################################################################
#
# graphe  - OUI: presentation graphique des resultats (metacode)
# travail - repertoire ou on cree le repertoire de travail (BIG_TMPDIR)
# debug   - Activer le mode DEBUG
# do_diag - On fait les diagnostiques en mode DEBUG
#
######################################################################
#
if [ ! -d ${travail} ]; then
  echo "Le repertoire de travail ${travail} doit exister a l'entree..."
  exit 1
fi
#
travail=`true_path ${travail}` 
travail=${travail}/$$
mkdir ${travail}
#
# Definir certaines variables d'environnement de R.DIAG
#
export BIG_TMPDIR=${travail}
#
. Climat_functions
#
minimal_rdiag_version=5.3.2
. Climat_check_rdiag
if [ -s ${DIAGNOSTIC_EXIT} ]; then
  echo "Dans Climat_make_zonaux: Arret apres Climat_check_rdiag"
  exit 2
fi
#
if [ ! -d ${rep} ]; then
  echo "Dans Climat_make_zonal: Le repertoire de donnees initiale ${rep} n'existe pas"
  exit 3
fi
#
rep=`true_path ${rep}`
#
if [ ${rep} = ${travail} ]; then
  echo "Dans Climat_make_zonal: Les repertoires rep et travail doivent etre differents..."
  echo "rep = travail = ${travail}"
  exit 4
fi
#
if [ ${debug} = YES ]; then
  debug=OUI
elif [ ${debug} = NO ]; then
  debug=NON
fi
#
if [ ${do_diag} = YES ]; then
  do_diag=OUI
elif [ ${do_diag} = NO ]; then
  do_diag=NON
fi
#
if [ ${graphe} = YES ]; then
  graphe=OUI
elif [ ${graphe} = NO ]; then
  graphe=NON
fi
#
if [ ${rotated} = YES ]; then
  rotated=OUI
elif [ ${rotated} = NO ]; then
  rotated=NON
fi
#
if [ ${vents} = YES ]; then
  vents=OUI
elif [ ${vents} = NO ]; then
  vents=NON
fi
#
if [ ! "${outnam}" ]; then outnam=${moyenne} ; fi
#
# Verifier si mode debug est actif
#
if [ ${debug} = OUI ]; then
  echo " "
  echo "Appel a Climat_make_zonaux..."
  echo "  moyenne  = ${moyenne}"
  echo "  rep      = ${rep}"
  echo "  outnam   = ${outnam}"
  echo "  rotated  = ${rotated}"
  echo "  rlats    = ${rlats}"
  echo "  vents    = ${vents}"
  echo "  ucomp    = ${ucomp}"
  echo "  vcomp    = ${vcomp}"
  echo "  graphe   = ${graphe}"
  echo "  travail  = ${travail}"
  echo "  do_diag  = ${do_diag}"
  echo " "
#
  if [ ${do_diag} = NON ]; then
    rm -rf ${travail}
    exit 0
  fi
else
  do_diag=OUI
fi
#
r.echo " "
r.echo "Climat_make_zonaux: BIG_TMPDIR=${BIG_TMPDIR}"
r.echo "Climat_make_zonaux: RDIAG     =${RDIAG}"
r.echo " "
#
if [ ${debug} = OUI ]; then set -x ; fi
#
# determiner le type de grilles dans ${rep}/${moyenne}
cd ${rep} ; fichier_source=${moyenne} ; . Climat_get_grtyp
if [ -s ${DIAGNOSTIC_EXIT} ]; then
  echo "Dans Climat_make_zonaux: Arret apres Climat_get_grtyp"
  exit 5
fi
#
cd ${travail}
#
if [ ${grtype}  = Z      -a \
     ${rotated} = NON    -a \
     ${vents}   = OUI ]; then
  fichier_source=${rep}/${moyenne}; fichier_dest=total_gr
  . Climat_rotate_vectors
  if [ -s ${DIAGNOSTIC_EXIT} ]; then
    echo "Dans Climat_make_zonaux: Arret apres Climat_rotate_vectors"
    exit 6
  fi
else
  r.accessf -dn total_gr -pdn ${moyenne} -own ${rep}
fi
#
lats=""
if [ ${grtype} = Z ]; then lats="-lat ${rlats}" ; fi
#
${RDIAG} zonavg total_gr ${rep}/${outnam}_zonal       ${lats}
${RDIAG} zonvar total_gr variances_zonales            ${lats} -def
${RDIAG} sqroot variances_zonales ${rep}/${outnam}_rmsz -na
#
if [ ${graphe} = OUI ]; then
  #
  if [ ${grtype} = G ]; then kind=" " ; fi
  if [ ${grtype} = A -o \
       ${grtype} = Z ]; then kind="-kind =-5" ; fi
  if [ ${grtype} = B ]; then kind="-kind =-4" ; fi
  #
  # Presentation graphique (metacod)
  rm -f ${rep}/metacod
  ${RDIAG} invntry ${rep}/${outnam}_zonal > ${BIG_TMPDIR}/contenu
  cat >> ${BIG_TMPDIR}/contenu <<+
 
  MOYENNES ZONALES
  DU FICHIER ${moyenne}
 
 
+
  ${RDIAG} txtplot ${BIG_TMPDIR}/contenu -kind 8
  ${RDIAG} zxplot ${rep}/${outnam}_zonal -def ${kind} > ${BIG_TMPDIR}/contenu 
  ${RDIAG} txtplot ${BIG_TMPDIR}/contenu -kind 7
  ${RDIAG} txtplot -kind 8 <<+
 
  RMS ZONALS 
  DU FICHIER ${moyenne}
 
 
+
  ${RDIAG} zxplot ${rep}/${outnam}_rmsz -def ${kind} > ${BIG_TMPDIR}/contenu
  ${RDIAG} txtplot ${BIG_TMPDIR}/contenu -kind 7
  r.catf metacod ${rep}/metacod_${outnam} -d
fi
#
cd ${rep}
#
# if [ ${rndout} = OUI ]; then
#   Conversion a fichier d'acces direct des resultats
#   reditfst -s ${outnam}_zonal -ss -d ${outnam}_zonal_rnd -i 0
#   reditfst -s ${outnam}_rmsz  -ss -d ${outnam}_rmsz_rnd  -i 0
# fi
#
# Faire le menage si tout a fonctionne
if [ ! -s ${DIAGNOSTIC_EXIT} ]; then
     rm -rf ${BIG_TMPDIR}
     exit 0
fi
exit 7
