#
# Description...
#    Faire une rotation des composantes vectorielles ($ucomp,$vcomp)
#    qui porraient se trouver dans ${fichier_source}. Le resultat est
#    depose dans ${fichier_dest}. Les autres variables sont conservees
#    mais ne sont pas modifiees
#
# Auteur...
#    Bernard Dugas
#
# Revisions...
#    001 - novembre  2004: version initiale
#    002 - mars      2007: remplacer (u,v) par (all_u,all_v)
#
ucomp="${ucomp:-UU}"
vcomp="${vcomp:-VV}"
#
fichier_source=${fichier_source:-fichier_source}
fichier_dest=${fichier_dest:-${fichier_source}r}
BIG_TMPDIR=${BIG_TMPDIR:-${TMPDIR}} ; export BIG_TMPDIR
DIAGNOSTIC_EXIT=${DIAGNOSTIC_EXIT:-DIAGNOSTIC_EXIT}
export DIAGNOSTIC_EXIT
#
if [ -s ${fichier_source} -a ! -s ${DIAGNOSTIC_EXIT} ]; then
  #
  previous_set=$@
  #
  UCOMP="${ucomp}"
  VCOMP="${vcomp}"
  #
  set ${VCOMP}
  nbcompv=$#
  set ${UCOMP}
  nbcompu=$#
  #
  if [ ${nbcompu} != ${nbcompv} ]; then
    echo "Dans Climat_rotate_winds: erreur..."  | tee ${DIAGNOSTIC_EXIT}
    echo "                          nombre de composantes vents en x = ${nbcompu}"
    echo "                          nombre de composantes vents en y = ${nbcompv}"
  else
    #
    r.catf ${fichier_source} ${BIG_TMPDIR}/restant
    #
    while [ ${nbcompu} -ge 1 ]; do
      #
      set ${UCOMP}
      ARG=`echo ${1} ${2} ${3} ${4}`
      components=`echo "${ARG}" | tr '[:upper:]' '[:lower:]' `
      case "${nbcompu}" in
        "1")  shift ;;
        "2")  shift ; shift ;;
        "3")  shift ; shift ; shift ;;
        *)    shift ; shift ; shift ;shift ;;
      esac
      UCOMP="$@"
      #
      ${RDIAG} select restant         ${components} -name ${ARG}
      ${RDIAG} enleve restant  sans_u               -name ${ARG}
      ${RDIAG} joinup ./newu   all_u  ${components}
      r.delf -dn                      ${components}
      #
      set ${VCOMP}
      ARG=`echo ${1} ${2} ${3} ${4}`
      components=`echo "${ARG}" | tr '[:upper:]' '[:lower:]' `
      case "${nbcompu}" in
        "1")  shift ;;
        "2")  shift ; shift ;;
        "3")  shift ; shift ; shift ;;
        *)    shift ; shift ; shift ;shift ;;
      esac
      VCOMP="$@"
      #
      ${RDIAG} select sans_u          ${components} -name ${ARG}
      ${RDIAG} enleve sans_u   restant                    -name ${ARG}
      ${RDIAG} joinup ./newv   all_v  ${components}
      r.delf -dn                      ${components}
      #
      r.catf newu ${BIG_TMPDIR}/all_u -d
      r.catf newv ${BIG_TMPDIR}/all_v -d
      nbcompu=$#
      #
    done
    #
    ${RDIAG} ggvecz all_u all_v     all_ur all_vr -kind 0
    ${RDIAG} joinup ${fichier_dest} all_ur all_vr restant
    r.delf -dn  all_ur all_vr restant sans_u all_u all_v
    #
  fi
  #
  if [ "${previous_set}" ]; then set ${previous_set} ; fi
  #
fi
#
