#!/bin/bash

ANOI=1989
ANOF=1989
DIR=`pwd`

for VAR in ta
do

if [ $VAR == "ta" ]
then
VAREX="Temperature [K]"
sufix="-ta"
var1="t"
elif [ $VAR == "ua" ]
then
VAREX="Zonal Wind Component [m s-1]"
sufix="-ua"
var1="u"
elif [ $VAR == "va" ]
then
VAREX="Meridional Wind Component [m s-1]"
sufix="-va"
var1="v"
elif [ $VAR == "zg" ]
then
VAREX="Geopotential Height  [m]"
sufix="-zg"
var1="z"
fi

for ((  i = $ANOI ;  i <= $ANOF;  i++  ))
do

cd $DIR/$i

gunzip $VAR.grd.gz

# GERACAO DOS .CTL DE CADA VARIAVEL E CADA ANO
rm $VAR.$i.ctl
cat >> $VAR.$i.ctl <<-EOF
dset ^$VAR.grd
TITLE     20C3M
OPTIONS   big_endian template
UNDEF     -999
XDEF       320 LINEAR       0       1.125000
YDEF       160 LEVELS
 -89.1415  -88.0294  -86.9108  -85.7906  -84.6699  -83.5489  -82.4278  -81.3066
 -80.1853  -79.0640  -77.9426  -76.8212  -75.6998  -74.5784  -73.4570  -72.3356
 -71.2141  -70.0927  -68.9712  -67.8498  -66.7283  -65.6069  -64.4854  -63.3639
 -62.2425  -61.1210  -59.9995  -58.8780  -57.7566  -56.6351  -55.5136  -54.3921
 -53.2706  -52.1492  -51.0277  -49.9062  -48.7847  -47.6632  -46.5417  -45.4203
 -44.2988  -43.1773  -42.0558  -40.9343  -39.8129  -38.6914  -37.5699  -36.4484
 -35.3269  -34.2054  -33.0839  -31.9624  -30.8409  -29.7195  -28.5980  -27.4765
 -26.3550  -25.2335  -24.1120  -22.9905  -21.8690  -20.7475  -19.6261  -18.5046
 -17.3831  -16.2616  -15.1401  -14.0186  -12.8971  -11.7756  -10.6542   -9.5327
  -8.4112   -7.2897   -6.1682   -5.0467   -3.9252   -2.8037   -1.6822   -0.5607
   0.5607    1.6822    2.8037    3.9252    5.0467    6.1682    7.2897    8.4112
   9.5327   10.6542   11.7756   12.8971   14.0186   15.1401   16.2616   17.3831
  18.5046   19.6261   20.7475   21.8690   22.9905   24.1120   25.2335   26.3550
  27.4765   28.5980   29.7195   30.8409   31.9624   33.0839   34.2054   35.3269
  36.4484   37.5699   38.6914   39.8129   40.9343   42.0558   43.1773   44.2988
  45.4203   46.5417   47.6632   48.7847   49.9062   51.0277   52.1492   53.2706
  54.3921   55.5136   56.6351   57.7566   58.8780   59.9995   61.1210   62.2425
  63.3639   64.4854   65.6069   66.7283   67.8498   68.9712   70.0927   71.2141
  72.3356   73.4570   74.5784   75.6998   76.8212   77.9426   79.0640   80.1853
  81.3066   82.4278   83.5489   84.6699   85.7906   86.9108   88.0294   89.1415
ZDEF        23 LEVELS
   1000   925   850   775   700   600   500   400   300   250   200   150
    100    70    50    30    20    10     7     5     3     2     1
EOF

# TESTE PRA VER SE O ANO E BISSEXTO E ESCREVER O TDEF CORRETO

isleap="false"
if [ $((i % 4)) -ne 0 ] ; then
: # not a leap year : means do nothing and use old value of isleap 
elif [ $((i % 400)) -eq 0 ] ; then
# yes, it's a leap year 
isleap="true"
elif [ $((i % 100)) -eq 0 ] ; then
: # not a leap year do nothing and use old value of isleap 
else
# it is a leap year 
isleap="true"
fi


if [ "$isleap" == "true" ];
then
#echo "$i is leap year" 
cat >> $VAR.$i.ctl <<-EOF
TDEF     1464 LINEAR  00:00Z01JAN$i     6hr
VARS  1
$VAR          23 99 $VAREX
ENDVARS
EOF
else
#echo "$i is NOT leap year" 
cat >> $VAR.$i.ctl <<-EOF
TDEF     1460 LINEAR  00:00Z01JAN$i     6hr
VARS  1
$VAR          23 99 $VAREX
ENDVARS
EOF
fi

# PASSAGEM DE .CTL PRA .NC
#/home/lamma/cclima/grads-1.8sl11/bin/gradsnc -blc "lats4d -v -q -i $VAR.$i -o $VAR.$i"
cdo -f nc import_binary $VAR.$i.ctl $VAR.$i.nc
if [ $VAR == "ta" ]
then
cp $VAR.$i.nc $VAR.$i.original.nc
fi

# AJUSTE DOS NETCDF'S

cdo -O invertlev $VAR.$i.nc temp$sufix.nc
cdo -O invertlat temp$sufix.nc $VAR.$i.nc
cdo -O chname,$VAR,$var1 $VAR.$i.nc temp$sufix.nc
mv temp$sufix.nc $VAR.$i.nc

if [ $VAR == "ta" ]
then
cdo splithour $VAR.$i.nc air.$i.
rm $VAR.$i.nc temp*
elif [ $VAR == "ua" ]
then
cdo splithour $VAR.$i.nc uwnd.$i.
rm $VAR.$i.nc temp*
elif [ $VAR == "va" ]
then
cdo splithour $VAR.$i.nc vwnd.$i.
rm $VAR.$i.nc temp*
elif [ $VAR == "zg" ]
then
cdo splithour $VAR.$i.nc hgt.$i.
rm $VAR.$i.nc temp*
fi

done
done

