#!/bin/bash
#--------------------------------------------------------------------#
#                    GSISTAT - GDAD/CPTEC/INPE - 2017                #
#--------------------------------------------------------------------#
#BOP
#
# !DESCRIPTION:
#  Script para gerar figuras da assimilacao dos dados de RO no GSI
#
#  Toda a configuracao da execucao deve ser feita no arquivo config.sh
#  ---> $DIR/GSI_STAT/conf/config.sh
#
# !INTERFACE:
#  ./plot_gps.sh DataType DataInicial DataFinal Incremento
#
#    em que:
#           DataType      : Tipo de info.: 1: First Guess: 2 Analise
#           DataInicial   : Data inicial [%y4%m2%d2%h2]
#           DataFinal     : Data final [%y4%m2%d2%h2]
#           Incremento    : Diferenca em horas entre cada data a ser 
#                           avaliada 
#
# Apenas os 2 primeiros argumentos sao estritamente necessarios, os 
# demais devem ser utilizados apenas em casos de mais de 1 data.
#
# !REVISION HISTORY:
#  02-07-2013 - Mattos, Joao    - Codigo Inicial do plot_all.sh
#  30-06-2017 - Sapucci, Luiz - Criacao do script baseado no plot_all.sh
#
# !REMARKS:
#
# !BUGS:
#
#EOP
#--------------------------------------------------------------------#
#BOC

# Verificando as opcoes passadas pela linha de comando
if [ $#  != 4 ]; then echo "ERRO: ${0} [01/02] [YYYYMMDDHH] <YYYYMMDDHH> <nh> "; exit; fi

DataType=${1}
LABELANL=${2}
LABELFCT=${3}
Incremento=${4}

DataInicial=${LABELANL}
DataFinal=${LABELFCT}

# Carregando os modules do Tupa
. /opt/modules/default/etc/modules.sh
module load grads

# Carregando Configuracoes
source ${obsGnss_home}/run/config_stat_gps.sh 
writedconf ${GStatCfg} $NProc

logfile=${GStatLog}/opengrads_${DataInicial}${DataFinal}_${DataType}.log
echo -e "\033[33;1m Arquivo de logs do plot_gps.sh: {GStatLog}/opengrads_${DataInicial}${DataFinal}_${DataType}.log \033[m "
echo "Processamento dados grads no script plot_gps.sh. Periodo: " ${DataInicial} ${DataFinal} > $logfile

ObsType="conv" 

   while [ ${DataInicial} -le ${DataFinal} ]; do

     ym=${DataInicial:0:6}
     dh=${DataInicial:6:4}

     #------------------------------------------------------#
     # Plotando cada uma das 5 informacoes sobre a contagem #
     #
     #------------------------------------------------------#
     # Indice |                 Descricao
     #------------------------------------------------------#
     #   [1]  |    Total de Observacoes                     #
     #   [2]  |    Total Utilizado                          #
     #   [3]  |    Total Nao Utilizado                      #
     #   [4]  |    Total Rejeitado pelo QC                  #
     #   [5]  |    Total Monitorado [Rejeitado por Pad      #
     #------------------------------------------------------#

     if [ ! -e ${GStatFig}/${ym}/${dh}/conv ];then
        mkdir -p ${GStatFig}/${ym}/${dh}/conv
     fi

#     for i in $(seq 1 5); do
#        /bin/bash ${GStatScp}/total_count.sh ${i} ${DataInicial} ${DataType} ${GStatOut}/${ym}/${dh}/conv ${GStatFig}/${ym}/${dh}/conv
#     done

     #---------------------------------------------------------#
     # Plotando cada um dos 4 tipos de contagens e 3 variaveis #
     # que contem informacoes em mais de 1 nivel               #
     #---------------------------------------------------------#
     #   Indice |    Nome do Arquivo                           #
     #---------------------------------------------------------#
     #     [1]  | summary_obs_used_level.txt                   #
     #     [2]  | summary_obs_not_used_level.txt               #
     #     [3]  | summary_obs_rejeited_level.txt               #
     #     [4]  | summary_obs_monitored_level.txt              #
     #---------------------------------------------------------#
     #                                                         #
     #  Cada arquivo possui a informacao de 6 variaveis        #
     #  convencionais que sao processadas pelo GSI:            #
     #                                                         #
     #---------------------------------------------------------#
     #   Indice |  Variavel | Descricao                        #
     #---------------------------------------+-----------------#
     #     [1]  |    SST    | Temp. da Sup. do Mar             #
     #     [2]  |     PS    | Pressao em Superficie            #
     #     [3]  |     PW    | Agua Precipitavel                #
     #     [4]  |     UV    | Vento                            #
     #     [5]  |      T    | Temperatura                      #
     #     [6]  |      Q    | Umidade Especifica               #
     #---------------------------------------------------------#

#     for i in $(seq 1 4); do
#        for j in $(seq 4 6); do
#           /bin/bash ${GStatScp}/total_count_level.sh ${i} ${j} ${DataInicial} ${DataType} ${GStatOut}/${ym}/${dh}/conv ${GStatFig}/${ym}/${dh}/conv
#        done
#     done

   # Plotando o scatterplot e distribuicao espacial para todas as variaveis em cada nivel
#      1;  gps;                Radiocultacao GPS; 1000 900 800 700 600 500 400 300 250 200 150 100 50 0
     cat << eof > ${GStatCfg}/variaveis.nml
      1;  gps;                Radiocultacao GPS; 800 500 300 100 0
eof

     cat ${GStatCfg}/variaveis.nml | while read linha; do
        idx=`echo ${linha} | awk -F";" '{print $1}'`
        name=`echo ${linha} | awk -F";" '{print $2}'`
        levs=`echo $linha | awk -F";" '{ print substr($0, index($0,$4)) }'`

        echo -e "${DataInicial} levs: 800 500 300 100 0 "


        # distribuicao espacial por subtipo apenas no nivel 0 (mais dados)
        opengrads -lbc "run ./scripts_plots/plota_espacial_gps.gs ${name} kx 1 0 ${DataType} ${DataInicial} ${GStatOut}/${ym}/${dh}/conv ${GStatFig}/${ym}/${dh}/conv $llati $llatf $lloni $llonf" >> $logfile

        cd ${obsGnss_home}

#        for lv in $levs; do

         # scatterplot
#         /bin/bash ${GStatScp}/scatter.sh ${idx} ${DataInicial} ${DataType} ${lv} ${GStatOut}/${ym}/${dh}/conv ${GStatFig}/${ym}/${dh}/conv
 
#         done
 
         # distribuicao espacial por nivel com range apropriado
#level=0
        opengrads -lbc "run ${GStatScp}/plota_espacial_conv_hange.gs -on ${name} -vp diff -ut 1 -lv 0 -dt ${DataType} -tf ${DataInicial} -pi ${GStatOut}/${ym}/${dh}/conv -po ${GStatFig}/${ym}/${dh}/conv -yi $llati -yf $llatf -xi $lloni -xf $llonf -clevs -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1" >> $logfile
#level=100
        opengrads -lbc "run ${GStatScp}/plota_espacial_conv_hange.gs -on ${name} -vp diff -ut 1 -lv 100 -dt ${DataType} -tf ${DataInicial} -pi ${GStatOut}/${ym}/${dh}/conv -po ${GStatFig}/${ym}/${dh}/conv -yi $llati -yf $llatf -xi $lloni -xf $llonf -clevs -2.5 -2.0 -1.5 -1.0 -0.5 0 0.5 1.0 1.5 2.0 2.5" >> $logfile
#level=300
        opengrads -lbc "run ${GStatScp}/plota_espacial_conv_hange.gs -on ${name} -vp diff -ut 1 -lv 300 -dt ${DataType} -tf ${DataInicial} -pi ${GStatOut}/${ym}/${dh}/conv -po ${GStatFig}/${ym}/${dh}/conv -yi $llati -yf $llatf -xi $lloni -xf $llonf -clevs -5 -4 -3 -2 -1 0 1 2 3 4 5" >> $logfile
#level=500
        opengrads -lbc "run ${GStatScp}/plota_espacial_conv_hange.gs -on ${name} -vp diff -ut 1 -lv 500 -dt ${DataType} -tf ${DataInicial} -pi ${GStatOut}/${ym}/${dh}/conv -po ${GStatFig}/${ym}/${dh}/conv -yi $llati -yf $llatf -xi $lloni -xf $llonf -clevs -15 -12 -9 -6 -3 0 3 6 9 12 15" >> $logfile
#level=800
        opengrads -lbc "run ${GStatScp}/plota_espacial_conv_hange.gs -on ${name} -vp diff -ut 1 -lv 800 -dt ${DataType} -tf ${DataInicial} -pi ${GStatOut}/${ym}/${dh}/conv -po ${GStatFig}/${ym}/${dh}/conv -yi $llati -yf $llatf -xi $lloni -xf $llonf -clevs -25 -20 -15 -10 -5 0 5 10 15 20 25" >> $logfile

      done

      DataInicial=`${stat_bin}/inctime ${DataInicial} +${Incremento}hr %y4%m2%d2%h2`

   done

rm -f ${GStatCfg}/variaveis.nml

#EOC
#------------------------------------------------------------------------------#

