#!/bin/sh -e

# set file paths 
OFILE_GHG=ghg_CMIP6_hist_0001-2014_c180312.nc
IFILE_CO2=mole_fraction_of_carbon_dioxide_in_air_input4MIPs_GHGConcentrations_CMIP_UoM-CMIP-1-1-0_gr2-0p5x360deg_000001-201412.nc 
IFILE_CH4=mole_fraction_of_methane_in_air_input4MIPs_GHGConcentrations_CMIP_UoM-CMIP-1-1-0_gr2-0p5x360deg_000001-201412.nc
IFILE_N2O=mole_fraction_of_nitrous_oxide_in_air_input4MIPs_GHGConcentrations_CMIP_UoM-CMIP-1-1-0_gr2-0p5x360deg_000001-201412.nc 
IFILE_F11=mole_fraction_of_cfc11eq_in_air_input4MIPs_GHGConcentrations_CMIP_UoM-CMIP-1-1-0_gr2-0p5x360deg_000001-201412.nc
IFILE_F12=mole_fraction_of_cfc12eq_in_air_input4MIPs_GHGConcentrations_CMIP_UoM-CMIP-1-1-0_gr2-0p5x360deg_000001-201412.nc 

# merge greenhouse gases into single file 
cp -f $IFILE_CO2 $OFILE_GHG
ncks -A -v methane $IFILE_CH4 $OFILE_GHG 
ncks -A -v nitrous_oxide $IFILE_N2O $OFILE_GHG 
ncks -A -v cfc11eq $IFILE_F11 $OFILE_GHG 
ncks -A -v cfc12eq $IFILE_F12 $OFILE_GHG 

# rename variables 
ncrename -v carbon_dioxide,CO2 $OFILE_GHG 
ncrename -v methane,CH4 $OFILE_GHG 
ncrename -v nitrous_oxide,N2O $OFILE_GHG 
ncrename -v cfc11eq,f11 $OFILE_GHG 
ncrename -v cfc12eq,f12 $OFILE_GHG 

# rename units 
ncatted -a units,CO2,o,c,'1e-6 mol/mol' -a units,CH4,o,c,'1e-9 mol/mol' -a units,N2O,o,c,'1e-9 mol/mol' -a units,f11,o,c,'1e-12 mol/mol' -a units,f12,o,c,'1e-12 mol/mol' $OFILE_GHG 

### clip first 11 months and add one month after

# clip 
ncks -O -F -d time,12, $OFILE_GHG clipped.nc 

# construct jan2015: copy jan2014 and add difference jan2014-jan2013  
ncks -O -F -d time,24169,24169 $OFILE_GHG jan2014.nc
ncks -O -F -d time,24157,24157 $OFILE_GHG jan2013.nc
ncbo -O -y sbt -o jan2014-jan2013.nc jan2014.nc jan2013.nc
ncbo -O -y add -o jan2015.nc jan2014.nc jan2014-jan2013.nc
# fix time information in jan2015.nc 
ncdump jan2015.nc | sed -e 's/59875.5/60240.5/' -e 's/59860, 59891/60225, 60256/' > jan2015.cdl
ncgen -o jan2015.nc jan2015.cdl

# merge files
ncrcat -O -o $OFILE_GHG clipped.nc jan2015.nc 

# rm temporary files 

### add date and datesec vectors 

# create cdl header
cat > date.cdl << EOF
netcdf date.nc {
dimensions:
	time = UNLIMITED ; // (24182 currently)
variables:
	int date(time) ;
	int datesec(time) ;
data:
EOF

# create date and datesec vectors
for YEAR in `seq -w 0000 2015` 
do 
  M1=01 
  M2=12
  if [ $YEAR -eq 0000 ] 
  then 
    M1=12 
  elif [ $YEAR -eq 2015 ]
  then
    M2=01
  fi 
  for MONTH in `seq -w $M1 $M2` 
  do 
    case $MONTH in 
      01 ) 
        DAY=16 
        SEC=43200
        ;; 
      02 ) 
        DAY=15 
        SEC=0 
        ;; 
      03 ) 
        DAY=16 
        SEC=43200
        ;; 
      04 ) 
        DAY=16 
        SEC=0
        ;; 
      05 ) 
        DAY=16 
        SEC=43200
        ;; 
      06 ) 
        DAY=16 
        SEC=0
        ;; 
      07 ) 
        DAY=16 
        SEC=43200
        ;; 
      08 ) 
        DAY=16 
        SEC=43200
        ;; 
      09 ) 
        DAY=16 
        SEC=0
        ;; 
      10 ) 
        DAY=16 
        SEC=43200
        ;; 
      11 ) 
        DAY=16 
        SEC=0
        ;; 
      12 ) 
        DAY=16 
        SEC=43200
        ;; 
    esac
    if [ $YEAR -eq 0000 ] 
    then 
      DATE=${YEAR}${MONTH}${DAY}  
      DATESEC=${SEC}
    else    
      DATE=${DATE}", "${YEAR}${MONTH}${DAY}  
      DATESEC=${DATESEC}", "${SEC}  
    fi 
  done 
done 

# write date and datesec vectors to cdl file and generate netcdf file
echo >> date.cdl 
echo "date = ${DATE} ;" >> date.cdl  
echo >> date.cdl 
echo "datesec = ${DATESEC} ;" >> date.cdl
echo >> date.cdl
echo "}" >> date.cdl
ncgen -o date.nc date.cdl  

# append to ghg file 
ncks -A date.nc $OFILE_GHG 

# remove temporary files 
rm date.nc date.cdl jan*.nc jan2015.cdl clipped.nc
