#! /bin/ksh
#
if [ "${DIAGNOSTIC_EXIT}" ]; then
  if [ -s ${DIAGNOSTIC_EXIT} ]; then exit 0 ; fi
fi
#
cclargs 0$                              "[Creates beta field]"\
      -exp       ",,,," ",,,,"          "[Nom de l'experience, utilise dans les noms de fichiers diagnostiques]"\
      -orig_exp  "NONE" "NONE"          "[Nom de l'experience]"\
      -start     "NONE" "1978010100"    "[Date de validite de l'analyse de depart en YYYYMMJJHH]"\
      -rep       "."    ",,,,"          "[Repertoire contenant les donnees]"\
      -outnam    ""     ",,,,"          "[Prefixe commun au fichiers de resultats]"\
      -destin    ""     ",,,,"          "[Repertoire ou les resultats seront deposes]"\
      -prefix    ""     ""              "[Prefix to be added to the input filenames]"\
      -suffix    ""     ""              "[Suffix to be added to the output filenames, eg. _hi or _lo]"\
      -me        "${HOME}/gem/ls_masks" ",,,," "[Path of the mountain field ME]"\
      -travail   "${BIG_TMPDIR}" ",,,," "[Repertoire de travail (BIG_TMPDIR)]"\
      ++ $* > ${BIG_TMPDIR}/cclargs_beta.out$$
#
. ${BIG_TMPDIR}/cclargs_beta.out$$ && /bin/rm -f ${BIG_TMPDIR}/cclargs_beta.out$$
#
######################################################################
#
# Description...
#    This script calculates GJB's beta field
#
######################################################################
#
# Author...
#    Katja Winger
#
######################################################################
#
# Revisions...
#    001 - June      2003: Initial version
#    002 - January   2004: Replace "==" by "=" in two comparisons (KW)
#    003 - November  2004: Try using 'ME' from the md-file (KW)
#    004 - February  2005: Key prefix added (KW)
#    005 - August    2005: Add config-files and compress p*_moyenne
#                          if beta-field is appended (KW)
#                          Make sure that only eather Climat_beta or 
#                          Climat_make_mean adds beta-field (KW)
#    006 - septembre 2005: Utiliser ${model}_settings de gemd_settings (BD)
#    007 - January   2006: 1) Modify check for who appends beta-field (KW)
#                          2) Utiliser Climat_functions (BD)
#    008 - fevrier   2006: verifier l'existence de preclimdiagpr (BD)
#    009 - septembre 2006: meilleur usage de ${DIAGNOSTIC_EXIT} (BD)
#    010 - mars      2007: supporter les variables dynamiques MKS du CCCma (BD)
#
######################################################################
#
#
if [ ! -d ${rep} ]; then
  echo "
  Dans Climat_beta: Le repertoire de donnees initiale ${rep} n'existe pas"
  if [ "${DIAGNOSTIC_EXIT}" ]; then
    echo "
    Dans Climat_beta: Le repertoire de donnees initiale ${rep} n'existe pas" \
    > ${DIAGNOSTIC_EXIT}
  fi
  exit 1
fi
#
cd ${rep}
rep=`true_path .`
#
if [ ! "${destin}" ]; then
  destin=${rep}
else
  if [ ! -d ${destin} ]; then mkdir -p ${destin} ; fi
  destin=`true_path ${destin}`
fi
#
if [ ! -d ${travail} ]; then
  mkdir ${travail}
  nouveau_travail=OUI
else
  nouveau_travail=NON
fi
#
cd ${travail}
travail=`true_path .`
cd ${rep}
#
if [ `hostname` = pollux ]; then export VERY_NICE_DIAG=non ; fi
#
export BIG_TMPDIR=${travail}
#
. Climat_functions
#
if [ ${nouveau_travail} = NON ]; then
  echo o | r.delf -f
fi
#
if [ ! "${outnam}" ]; then outnam=d${exp} ; fi
#
model=${MODEL:-gem}
#
r.echo " "
r.echo "Climat_beta: Starting at `date +%r`"
r.echo " "
#
GZ=NONE
ME=NONE
#
# get GZ's and define variable ${first}
#
if [ -d preclimdiagpr ]; then
  #
  if [ -s preclimdiagpr/gz1 ]; then
    reditfst -i 0 -d ${travail}/gz -s preclimdiagpr/gz?
    ME=ME
  elif [ -s preclimdiagpr/phi1 ]; then
    reditfst -i 0 -d ${travail}/gz -s preclimdiagpr/phi?
    ME=PHIS
  fi
  liste=`ls -x ${prefix}md${start}*p`
  set ${liste}
  first=$1
  #
else
  #
  liste=`ls -x ${prefix}pr${start}*p`
  first="0"
  for file in ${liste} ; do
    if [ ${first} = 0 ] ; then 
      first=${file}
      var_gz=`r.fstliste  -izfst ${first} -nomvar GZ  -col 1`
      var_phi=`r.fstliste -izfst ${first} -nomvar PHI -col 1`
      if [ "${var_gz}" = "GZ" ]; then
        GZ=GZ
        ME=ME
      elif [ "${var_phi}" = "PHI" ]; then
        GZ=PHI
        ME=PHIS
      fi
    fi
    echo "desire(-1,\"$GZ\")" |\
    reditfst -s ${file} -d ${travail}/gz -nobox
  done
  #
  if [ "${suffix}" = "_hi" ] ; then
    echo "desire(-1,['>>','^^'])" |\
    reditfst -s ${first} -d ${travail}/gz -nobox
  fi
  #
fi
#
# Check for land-sea mask availability
#
c1=`echo ${prefix}xx | wc -c`
md_file=${prefix}md`echo ${first} | cut -c${c1}-`
var_me=`r.fstliste -izfst ${md_file} -nomvar $ME -col 1`
if [ "${var_me}" = "$ME" ] ; then
  ${RDIAG} select ${md_file} me -name $ME
else
  name=${exp%%_*}
  if [ ! -s ${me}/me_${name}${suffix} ] ; then
    echo "
    Dans Climat_beta: Mountain field ${me}/me_${name}${suffix} not found !
                      Neither in md-files nor in ${me}/me_${name}${suffix}" |\
    tee -a ${DIAGNOSTIC_EXIT}
    exit 2
  fi
  r.delf -dn me ; r.accessf  -dn me -pdn me_${name}${suffix} -own ${me}
fi
#
${RDIAG} betao  me   gz beta sfpr
${RDIAG} timavg beta ${destin}/${outnam}_beta
#
if [ -s ${DIAGNOSTIC_EXIT} ]; then
  echo "
  Dans Climat_beta: Unable to create ${destin}/${outnam}_beta" |\
  tee -a ${DIAGNOSTIC_EXIT} 
  exit 3
fi
#
touch ${destin}/beta_file_created
#
if [ -e ${destin}/moyenne_file_created -a \
   ! -e ${destin}/beta_field_appended ] ; then
  #
  touch ${destin}/beta_field_appended
  moy_file=${destin}/${outnam}_moyenne
  #
  echo "desire(-1,['BETA'])" |\
  reditfst -s ${destin}/${outnam}_beta -d ${moy_file} -nobox
  r.delf -dn ${destin}/${outnam}_beta
  #
  # Add the config-files configexp.dot.cfg and
  # ${model}_settings.nml to pr*_moyenne
  if [ "${orig_exp}" != "NONE" ] ; then
    #
    ${RDIAG} addtext ${moy_file} -name CONF \
  < ${HOME}/exper_configs/${orig_exp}.generic/configexp.dot.cfg \
  1> /dev/null
    #
    ${RDIAG} addtext ${moy_file} -name GSET \
  < ${HOME}/exper_configs/${orig_exp}.generic/${model}_settings.nml \
  1> /dev/null
    #
  fi
  #
  # Compress pr*_moyenne
  if [ ! -s ${DIAGNOSTIC_EXIT} ]; then gzip ${moy_file} ; fi
fi
#
r.delf -dn beta sfpr me gz
#
# Faire le menage si tout a fonctionne
if [ ! -s ${DIAGNOSTIC_EXIT} ]; then
  if [ ${nouveau_travail} = OUI ]; then rm -rf ${travail} ; fi
  r.echo "Climat_beta: Ending at `date +%r`"
  exit 0
fi
exit 4
