#! /bin/bash -x

exp=EXP1

bpath=/mnt/beegfs/carlos.bastarz/SMNA_v3.0.1_bdtc/SMG/datainout/bam/pos/${exp}/dataout/TQ0299L064

gribmap=/home/carlos.bastarz/bin/gribmap

#module load grads/2.2.1

data_fmt() {
  data=${1}

  yyyy=${data:0:4}
  mm=${data:4:2}
  dd=${data:6:2}
  hh=${data:8:2}

  if [ "${mm}" -eq 01 ]; then nmm=JAN; fi
  if [ "${mm}" -eq 02 ]; then nmm=FEB; fi
  if [ "${mm}" -eq 03 ]; then nmm=MAR; fi
  if [ "${mm}" -eq 04 ]; then nmm=APR; fi
  if [ "${mm}" -eq 05 ]; then nmm=MAY; fi
  if [ "${mm}" -eq 06 ]; then nmm=JUN; fi
  if [ "${mm}" -eq 07 ]; then nmm=JUL; fi
  if [ "${mm}" -eq 08 ]; then nmm=AUG; fi
  if [ "${mm}" -eq 09 ]; then nmm=SEP; fi
  if [ "${mm}" -eq 10 ]; then nmm=OCT; fi
  if [ "${mm}" -eq 11 ]; then nmm=NOV; fi
  if [ "${mm}" -eq 12 ]; then nmm=DEC; fi

  echo "${hh}Z${dd}${nmm}${yyyy}"

}        

ctl_icn(){

datai=${1}
datafmt=$(data_fmt ${datai})

fname=${bpath}/${datai}/GPOSCPT${datai}${datai}P.icn.TQ0299L064.ctl2

cat <<EOF > ${fname}
dset ^GPOSCPT${datai}${datai}P.icn.TQ0299L064.grb
index ^GPOSCPT${datai}${datai}P.icn.TQ0299L064.idx
undef 9.999E+20
title PRESSURE HISTORY    CPTEC AGCM REVIS 1.0 2000  T0299L64  COL
dtype grib   255
options yrev
xdef   900 linear    0.000   0.4000000000
ydef   450 levels 
 -89.69415 -89.29794 -88.89940 -88.50032 -88.10105 -87.70167 -87.30225 -86.90279
 -86.50331 -86.10381 -85.70430 -85.30479 -84.90526 -84.50574 -84.10621 -83.70667
 -83.30714 -82.90760 -82.50806 -82.10851 -81.70897 -81.30943 -80.90988 -80.51033
 -80.11079 -79.71124 -79.31169 -78.91214 -78.51259 -78.11304 -77.71349 -77.31394
 -76.91439 -76.51484 -76.11528 -75.71573 -75.31618 -74.91663 -74.51708 -74.11752
 -73.71797 -73.31842 -72.91886 -72.51931 -72.11976 -71.72020 -71.32065 -70.92110
 -70.52154 -70.12199 -69.72244 -69.32288 -68.92333 -68.52377 -68.12422 -67.72466
 -67.32511 -66.92556 -66.52600 -66.12645 -65.72689 -65.32734 -64.92778 -64.52823
 -64.12867 -63.72912 -63.32956 -62.93001 -62.53045 -62.13090 -61.73134 -61.33179
 -60.93223 -60.53268 -60.13312 -59.73357 -59.33401 -58.93446 -58.53490 -58.13535
 -57.73579 -57.33624 -56.93668 -56.53713 -56.13757 -55.73802 -55.33846 -54.93891
 -54.53935 -54.13980 -53.74024 -53.34069 -52.94113 -52.54157 -52.14202 -51.74246
 -51.34291 -50.94335 -50.54380 -50.14424 -49.74469 -49.34513 -48.94558 -48.54602
 -48.14646 -47.74691 -47.34735 -46.94780 -46.54824 -46.14869 -45.74913 -45.34958
 -44.95002 -44.55046 -44.15091 -43.75135 -43.35180 -42.95224 -42.55269 -42.15313
 -41.75358 -41.35402 -40.95446 -40.55491 -40.15535 -39.75580 -39.35624 -38.95669
 -38.55713 -38.15757 -37.75802 -37.35846 -36.95891 -36.55935 -36.15980 -35.76024
 -35.36069 -34.96113 -34.56157 -34.16202 -33.76246 -33.36291 -32.96335 -32.56380
 -32.16424 -31.76468 -31.36513 -30.96557 -30.56602 -30.16646 -29.76691 -29.36735
 -28.96779 -28.56824 -28.16868 -27.76913 -27.36957 -26.97002 -26.57046 -26.17090
 -25.77135 -25.37179 -24.97224 -24.57268 -24.17313 -23.77357 -23.37401 -22.97446
 -22.57490 -22.17535 -21.77579 -21.37623 -20.97668 -20.57712 -20.17757 -19.77801
 -19.37846 -18.97890 -18.57934 -18.17979 -17.78023 -17.38068 -16.98112 -16.58157
 -16.18201 -15.78245 -15.38290 -14.98334 -14.58379 -14.18423 -13.78468 -13.38512
 -12.98556 -12.58601 -12.18645 -11.78690 -11.38734 -10.98778 -10.58823 -10.18867
  -9.78912  -9.38956  -8.99001  -8.59045  -8.19089  -7.79134  -7.39178  -6.99223
  -6.59267  -6.19311  -5.79356  -5.39400  -4.99445  -4.59489  -4.19534  -3.79578
  -3.39622  -2.99667  -2.59711  -2.19756  -1.79800  -1.39845  -0.99889  -0.59933
  -0.19978   0.19978   0.59933   0.99889   1.39845   1.79800   2.19756   2.59711
   2.99667   3.39622   3.79578   4.19534   4.59489   4.99445   5.39400   5.79356
   6.19311   6.59267   6.99223   7.39178   7.79134   8.19089   8.59045   8.99001
   9.38956   9.78912  10.18867  10.58823  10.98778  11.38734  11.78690  12.18645
  12.58601  12.98556  13.38512  13.78468  14.18423  14.58379  14.98334  15.38290
  15.78245  16.18201  16.58157  16.98112  17.38068  17.78023  18.17979  18.57934
  18.97890  19.37846  19.77801  20.17757  20.57712  20.97668  21.37623  21.77579
  22.17535  22.57490  22.97446  23.37401  23.77357  24.17313  24.57268  24.97224
  25.37179  25.77135  26.17090  26.57046  26.97002  27.36957  27.76913  28.16868
  28.56824  28.96779  29.36735  29.76691  30.16646  30.56602  30.96557  31.36513
  31.76468  32.16424  32.56380  32.96335  33.36291  33.76246  34.16202  34.56157
  34.96113  35.36069  35.76024  36.15980  36.55935  36.95891  37.35846  37.75802
  38.15757  38.55713  38.95669  39.35624  39.75580  40.15535  40.55491  40.95446
  41.35402  41.75358  42.15313  42.55269  42.95224  43.35180  43.75135  44.15091
  44.55046  44.95002  45.34958  45.74913  46.14869  46.54824  46.94780  47.34735
  47.74691  48.14646  48.54602  48.94558  49.34513  49.74469  50.14424  50.54380
  50.94335  51.34291  51.74246  52.14202  52.54157  52.94113  53.34069  53.74024
  54.13980  54.53935  54.93891  55.33846  55.73802  56.13757  56.53713  56.93668
  57.33624  57.73579  58.13535  58.53490  58.93446  59.33401  59.73357  60.13312
  60.53268  60.93223  61.33179  61.73134  62.13090  62.53045  62.93001  63.32956
  63.72912  64.12867  64.52823  64.92778  65.32734  65.72689  66.12645  66.52600
  66.92556  67.32511  67.72466  68.12422  68.52377  68.92333  69.32288  69.72244
  70.12199  70.52154  70.92110  71.32065  71.72020  72.11976  72.51931  72.91886
  73.31842  73.71797  74.11752  74.51708  74.91663  75.31618  75.71573  76.11528
  76.51484  76.91439  77.31394  77.71349  78.11304  78.51259  78.91214  79.31169
  79.71124  80.11079  80.51033  80.90988  81.30943  81.70897  82.10851  82.50806
  82.90760  83.30714  83.70667  84.10621  84.50574  84.90526  85.30479  85.70430
  86.10381  86.50331  86.90279  87.30225  87.70167  88.10105  88.50032  88.89940
  89.29794  89.69415
tdef     1 linear ${datafmt} 6hr
zdef    32 levels  1000  975  950  925  900  875  850  825  800  775
                  750  725  700  675  650  600  550  500  450  400
                  350  300  250  200  150  100   70   50   30   20
                   10    3
vars    20
topo  0 132,1,0 ** surface TOPOGRAPHY [m]
lsmk  0  81,1,0 ** surface LAND SEA MASK [0,1]
PSLC    0  135,    1,    0  ** sfc    SURFACE PRESSURE                        (HPA             )
UVEL   32   33,  100,    0  **        ZONAL WIND (U)                          (M/S             )
VVEL   32   34,  100,    0  **        MERIDIONAL WIND (V)                     (M/S             )
OMEG   32   39,  100,    0  **        OMEGA                                   (PA/S            )
FCOR   32   35,  100,    0  **        STREAM FUNCTION                         (M2/S            )
POTV   32   36,  100,    0  **        VELOCITY POTENTIAL                      (M2/S            )
ZGEO   32    7,  100,    0  **        GEOPOTENTIAL HEIGHT                     (GPM             )
PSNM    0    2,  102,    0  ** msl    SEA LEVEL PRESSURE                      (HPA             )
TEMP   32   11,  100,    0  **        ABSOLUTE TEMPERATURE                    (K               )
UMES   32   51,  100,    0  **        SPECIFIC HUMIDITY                       (KG/KG           )
AGPL    0   54,  200,    0  ** atm    INST. PRECIPITABLE WATER                (KG/M2           )
TSFC    0  187,    1,    0  ** sfc    SURFACE TEMPERATURE                     (K               )
TP2M    0  161,  105,    2  ** sfc2m  TEMPERATURE AT 2-M FROM SURFACE         (K               )
Q02M    0  199,  105,    2  ** sfc2m  SPECIFIC HUMIDITY AT 2-M FROM SURFACE   (KG/KG           )
U10M    0  130,  105,   10  ** sfc10m 10 METRE U-WIND COMPONENT               (M/S             )
V10M    0  131,  105,   10  ** sfc10m 10 METRE V-WIND COMPONENT               (M/S             )
LIQP   32  227,  100,    0  **        LIQUID MIXING RATIO KG/KG               (KG/KG           )
ICEP   32  233,  100,    0  **        ICE MIXING RATIO KG/KG                  (KG/KG           )
endvars
EOF

${gribmap} -v -e -i ${fname}
}

ctl_fct(){

datai=${1}
dataf=${2}
datafmt=$(data_fmt ${dataf})

fname=${bpath}/${datai}/GPOSCPT${datai}${dataf}P.fct.TQ0299L064.ctl2

cat <<EOF > ${fname}
dset ^GPOSCPT${datai}${dataf}P.fct.TQ0299L064.grb
index ^GPOSCPT${datai}${dataf}P.fct.TQ0299L064.idx
undef 9.999E+20
title PRESSURE HISTORY    CPTEC AGCM REVIS 1.0 2000  T0299L64  COL
dtype grib   255
options yrev
xdef   900 linear    0.000   0.4000000000
ydef   450 levels 
 -89.69415 -89.29794 -88.89940 -88.50032 -88.10105 -87.70167 -87.30225 -86.90279
 -86.50331 -86.10381 -85.70430 -85.30479 -84.90526 -84.50574 -84.10621 -83.70667
 -83.30714 -82.90760 -82.50806 -82.10851 -81.70897 -81.30943 -80.90988 -80.51033
 -80.11079 -79.71124 -79.31169 -78.91214 -78.51259 -78.11304 -77.71349 -77.31394
 -76.91439 -76.51484 -76.11528 -75.71573 -75.31618 -74.91663 -74.51708 -74.11752
 -73.71797 -73.31842 -72.91886 -72.51931 -72.11976 -71.72020 -71.32065 -70.92110
 -70.52154 -70.12199 -69.72244 -69.32288 -68.92333 -68.52377 -68.12422 -67.72466
 -67.32511 -66.92556 -66.52600 -66.12645 -65.72689 -65.32734 -64.92778 -64.52823
 -64.12867 -63.72912 -63.32956 -62.93001 -62.53045 -62.13090 -61.73134 -61.33179
 -60.93223 -60.53268 -60.13312 -59.73357 -59.33401 -58.93446 -58.53490 -58.13535
 -57.73579 -57.33624 -56.93668 -56.53713 -56.13757 -55.73802 -55.33846 -54.93891
 -54.53935 -54.13980 -53.74024 -53.34069 -52.94113 -52.54157 -52.14202 -51.74246
 -51.34291 -50.94335 -50.54380 -50.14424 -49.74469 -49.34513 -48.94558 -48.54602
 -48.14646 -47.74691 -47.34735 -46.94780 -46.54824 -46.14869 -45.74913 -45.34958
 -44.95002 -44.55046 -44.15091 -43.75135 -43.35180 -42.95224 -42.55269 -42.15313
 -41.75358 -41.35402 -40.95446 -40.55491 -40.15535 -39.75580 -39.35624 -38.95669
 -38.55713 -38.15757 -37.75802 -37.35846 -36.95891 -36.55935 -36.15980 -35.76024
 -35.36069 -34.96113 -34.56157 -34.16202 -33.76246 -33.36291 -32.96335 -32.56380
 -32.16424 -31.76468 -31.36513 -30.96557 -30.56602 -30.16646 -29.76691 -29.36735
 -28.96779 -28.56824 -28.16868 -27.76913 -27.36957 -26.97002 -26.57046 -26.17090
 -25.77135 -25.37179 -24.97224 -24.57268 -24.17313 -23.77357 -23.37401 -22.97446
 -22.57490 -22.17535 -21.77579 -21.37623 -20.97668 -20.57712 -20.17757 -19.77801
 -19.37846 -18.97890 -18.57934 -18.17979 -17.78023 -17.38068 -16.98112 -16.58157
 -16.18201 -15.78245 -15.38290 -14.98334 -14.58379 -14.18423 -13.78468 -13.38512
 -12.98556 -12.58601 -12.18645 -11.78690 -11.38734 -10.98778 -10.58823 -10.18867
  -9.78912  -9.38956  -8.99001  -8.59045  -8.19089  -7.79134  -7.39178  -6.99223
  -6.59267  -6.19311  -5.79356  -5.39400  -4.99445  -4.59489  -4.19534  -3.79578
  -3.39622  -2.99667  -2.59711  -2.19756  -1.79800  -1.39845  -0.99889  -0.59933
  -0.19978   0.19978   0.59933   0.99889   1.39845   1.79800   2.19756   2.59711
   2.99667   3.39622   3.79578   4.19534   4.59489   4.99445   5.39400   5.79356
   6.19311   6.59267   6.99223   7.39178   7.79134   8.19089   8.59045   8.99001
   9.38956   9.78912  10.18867  10.58823  10.98778  11.38734  11.78690  12.18645
  12.58601  12.98556  13.38512  13.78468  14.18423  14.58379  14.98334  15.38290
  15.78245  16.18201  16.58157  16.98112  17.38068  17.78023  18.17979  18.57934
  18.97890  19.37846  19.77801  20.17757  20.57712  20.97668  21.37623  21.77579
  22.17535  22.57490  22.97446  23.37401  23.77357  24.17313  24.57268  24.97224
  25.37179  25.77135  26.17090  26.57046  26.97002  27.36957  27.76913  28.16868
  28.56824  28.96779  29.36735  29.76691  30.16646  30.56602  30.96557  31.36513
  31.76468  32.16424  32.56380  32.96335  33.36291  33.76246  34.16202  34.56157
  34.96113  35.36069  35.76024  36.15980  36.55935  36.95891  37.35846  37.75802
  38.15757  38.55713  38.95669  39.35624  39.75580  40.15535  40.55491  40.95446
  41.35402  41.75358  42.15313  42.55269  42.95224  43.35180  43.75135  44.15091
  44.55046  44.95002  45.34958  45.74913  46.14869  46.54824  46.94780  47.34735
  47.74691  48.14646  48.54602  48.94558  49.34513  49.74469  50.14424  50.54380
  50.94335  51.34291  51.74246  52.14202  52.54157  52.94113  53.34069  53.74024
  54.13980  54.53935  54.93891  55.33846  55.73802  56.13757  56.53713  56.93668
  57.33624  57.73579  58.13535  58.53490  58.93446  59.33401  59.73357  60.13312
  60.53268  60.93223  61.33179  61.73134  62.13090  62.53045  62.93001  63.32956
  63.72912  64.12867  64.52823  64.92778  65.32734  65.72689  66.12645  66.52600
  66.92556  67.32511  67.72466  68.12422  68.52377  68.92333  69.32288  69.72244
  70.12199  70.52154  70.92110  71.32065  71.72020  72.11976  72.51931  72.91886
  73.31842  73.71797  74.11752  74.51708  74.91663  75.31618  75.71573  76.11528
  76.51484  76.91439  77.31394  77.71349  78.11304  78.51259  78.91214  79.31169
  79.71124  80.11079  80.51033  80.90988  81.30943  81.70897  82.10851  82.50806
  82.90760  83.30714  83.70667  84.10621  84.50574  84.90526  85.30479  85.70430
  86.10381  86.50331  86.90279  87.30225  87.70167  88.10105  88.50032  88.89940
  89.29794  89.69415
tdef     1 linear ${datafmt} 6hr
zdef    32 levels  1000  975  950  925  900  875  850  825  800  775
                  750  725  700  675  650  600  550  500  450  400
                  350  300  250  200  150  100   70   50   30   20
                   10    3
vars    31
topo  0 132,1,0 ** surface TOPOGRAPHY [m]
lsmk  0  81,1,0 ** surface LAND SEA MASK [0,1]
PSLC    0  135,    1,    0  ** sfc    SURFACE PRESSURE                        (HPA             )
UVEL   32   33,  100,    0  **        ZONAL WIND (U)                          (M/S             )
VVEL   32   34,  100,    0  **        MERIDIONAL WIND (V)                     (M/S             )
OMEG   32   39,  100,    0  **        OMEGA                                   (PA/S            )
FCOR   32   35,  100,    0  **        STREAM FUNCTION                         (M2/S            )
POTV   32   36,  100,    0  **        VELOCITY POTENTIAL                      (M2/S            )
ZGEO   32    7,  100,    0  **        GEOPOTENTIAL HEIGHT                     (GPM             )
PSNM    0    2,  102,    0  ** msl    SEA LEVEL PRESSURE                      (HPA             )
TEMP   32   11,  100,    0  **        ABSOLUTE TEMPERATURE                    (K               )
UMES   32   51,  100,    0  **        SPECIFIC HUMIDITY                       (KG/KG           )
AGPL    0   54,  200,    0  ** atm    INST. PRECIPITABLE WATER                (KG/M2           )
TSFC    0  187,    1,    0  ** sfc    SURFACE TEMPERATURE                     (K               )
TP2M    0  161,  105,    2  ** sfc2m  TEMPERATURE AT 2-M FROM SURFACE         (K               )
Q02M    0  199,  105,    2  ** sfc2m  SPECIFIC HUMIDITY AT 2-M FROM SURFACE   (KG/KG           )
U10M    0  130,  105,   10  ** sfc10m 10 METRE U-WIND COMPONENT               (M/S             )
V10M    0  131,  105,   10  ** sfc10m 10 METRE V-WIND COMPONENT               (M/S             )
LIQP   32  227,  100,    0  **        LIQUID MIXING RATIO KG/KG               (KG/KG           )
ICEP   32  233,  100,    0  **        ICE MIXING RATIO KG/KG                  (KG/KG           )
PREC    0   61,    1,    0  ** sfc    TOTAL PRECIPITATION                     (KG/M2/DAY       )
PRCV    0   63,    1,    0  ** sfc    CONVECTIVE PRECIPITATION                (KG/M2/DAY       )
CSSF    0  122,    1,    0  ** sfc    SENSIBLE HEAT FLUX FROM SURFACE         (W/M2            )
CLSF    0  121,    1,    0  ** sfc    LATENT HEAT FLUX FROM SURFACE           (W/M2            )
OLIS    0  207,    1,    0  ** sfc    DOWNWARD LONG WAVE AT BOTTOM            (W/M2            )
OLES    0  211,    1,    0  ** sfc    UPWARD LONG WAVE AT BOTTOM              (W/M2            )
ROLE    0  114,    8,    0  ** toa    OUTGOING LONG WAVE AT TOP               (W/M2            )
OCIS    0  209,    1,    0  ** sfc    DOWNWARD SHORT WAVE AT GROUND           (W/M2            )
OCES    0  212,    1,    0  ** sfc    UPWARD SHORT WAVE AT GROUND             (W/M2            )
ROCE    0  214,    8,    0  ** toa    UPWARD SHORT WAVE AT TOP                (W/M2            )
O3MR   32  166,  100,    0  **        OZONE MIXING RATIO                      (KG/KG           )
endvars
EOF

${gribmap} -v -e -i ${fname}
}        

# Procura arquivos ctl vazios
for ctl in $(find ${bpath} -type f -empty -name *.ctl)
do

  ftype=$(echo ${ctl} | awk -F "/" '{print $14}' | awk -F "." '{print $2}')

  ctl_datai=$(echo ${ctl} | awk -F "/" '{print $14}' | cut -c 8-17)
  ctl_dataf=$(echo ${ctl} | awk -F "/" '{print $14}' | cut -c 18-27)

  if [ "${ftype}" == icn ]
  then 
    ctl_icn "${ctl_datai}"
  elif [ "${ftype}" == fct ]
  then 
    ctl_fct "${ctl_datai}" "${ctl_dataf}"
  fi

done

# Verifica arquivos ctl corrompidos (primeira linha não contém dset ^arquivo.grb"
for ctl in $(find ${bpath} -type f -name *.ctl)
do

  if ! head -n 1 ${ctl} | grep 'dset'; then

    ftype=$(echo ${ctl} | awk -F "/" '{print $14}' | awk -F "." '{print $2}')
  
    ctl_datai=$(echo ${ctl} | awk -F "/" '{print $14}' | cut -c 8-17)
    ctl_dataf=$(echo ${ctl} | awk -F "/" '{print $14}' | cut -c 18-27)
  
    if [ "${ftype}" == icn ]
    then 
      ctl_icn "${ctl_datai}"
    elif [ "${ftype}" == fct ]
    then 
      ctl_fct "${ctl_datai}" "${ctl_dataf}"
    fi

  fi

done

exit 0
