#!/usr/bin/perl -w
#
use File::Copy;
use Time::Local;

BEGIN
  {
  $ENV{LD_LIBRARY_PATH}="LD_LIBRARY_PATH:/data/starfs1/libs/netcdf-4.2/lib:/data/starfs1/libs/hdf5-1.8.7/lib";
  }


# ***********************
# ***********************
# ***********************
#$year = 2021;
#$mon  = 5;
#$mday = 23;
$year = $ARGV[0];
$mon  = $ARGV[1];
$mday = $ARGV[2];
# ***********************
# ***********************
# ***********************

$yday = dayofyear($year, $mon, $mday);

$day_of_data = ($year*10000) + ($mon*100) + $mday;


$work_dir     = "/data/data065/nprovs/scripts/data_input/reprocess/temp_rounding";
$source_dir   = "/data/data065/nprovs/source/data_transfer/cosmic2_ucar";
$raw_data_dir = "/data/data065/nprovs/scripts/data_input/reprocess/temp_rounding";
$nprovs_dir   = "/data/data065/nprovs/scripts/data_input/reprocess/temp_rounding";



print "==============================================================\n";
print "Transfering COSMIC-2 UCAR files";
print "\n\n";


# ----------------------------------------------------
# Determine the date of the data that will be transfered
# (default is yesterday)

my $date_to_process = sprintf "%04d%02d%02d", $year, $mon, $mday;

printf("\nDate to process: %d/%02d/%04d\n", $mon, $mday, $year);



# ----------------------------------------------------
# Switch to the COSMIC-2 UCAR raw data directory

chdir $raw_data_dir;



# ----------------------------------------------------
# Remove any previous files from the raw data directory

printf("\nRemoving previous netCDF files from the raw data directory\n");

system "rm " . $raw_data_dir . "/avnPrf*_nc";
system "rm " . $raw_data_dir . "/atmPrf*_nc";
system "rm " . $raw_data_dir . "/wetPf2*_nc";


# ----------------------------------------------------
# wetprf

printf("\n\nTransferring the wetPrf files...\n\n");

# Run the wget line

$wget = sprintf("wget -q http://data.cosmic.ucar.edu/gnss-ro/cosmic2/nrt/level2/%04d/%03d/wetPf2_nrt_%04d_%03d.tar.gz --no-check-certificate", $year, $yday, $year, $yday);

printf("%s\n", $wget);

system $wget;

# Gunzip and Untar the tarball

$gunzip = sprintf("gunzip wetPf2_nrt_%04d_%03d.tar.gz", $year, $yday);
system $gunzip;

$untar = sprintf("tar -xvf wetPf2_nrt_%04d_%03d.tar", $year, $yday);
system $untar;

# Delete the tar file

$deletetar = sprintf("rm wetPf2_nrt_%04d_%03d.tar", $year, $yday);
system $deletetar;



# ----------------------------------------------------
# avnprf

printf("\n\nTransferring the avnPrf files...\n\n");

# Run the wget line

$wget = sprintf("wget -q http://data.cosmic.ucar.edu/gnss-ro/cosmic2/nrt/level2/%04d/%03d/avnPrf_nrt_%04d_%03d.tar.gz --no-check-certificate", $year, $yday, $year, $yday);

printf("%s\n", $wget);

system $wget;

# Gunzip and Untar the tarball

$gunzip = sprintf("gunzip avnPrf_nrt_%04d_%03d.tar.gz", $year, $yday);
system $gunzip;

$untar = sprintf("tar -xvf avnPrf_nrt_%04d_%03d.tar", $year, $yday);
system $untar;

# Delete the tar file

$deletetar = sprintf("unlink avnPrf_nrt_%04d_%03d.tar", $year, $yday);
system $deletetar;


# ----------------------------------------------------
# atmprf

printf("\n\nTransferring the atmPrf files...\n\n");

# Run the wget line

$wget = sprintf("wget -q http://data.cosmic.ucar.edu/gnss-ro/cosmic2/nrt/level2/%04d/%03d/atmPrf_nrt_%04d_%03d.tar.gz --no-check-certificate", $year, $yday, $year, $yday);

printf("%s\n", $wget);

system $wget;

# Gunzip and Untar the tarball

$gunzip = sprintf("gunzip atmPrf_nrt_%04d_%03d.tar.gz", $year, $yday);
system $gunzip;

$untar = sprintf("tar -xvf atmPrf_nrt_%04d_%03d.tar", $year, $yday);
system $untar;

# Delete the tar file

$deletetar = sprintf("rm atmPrf_nrt_%04d_%03d.tar", $year, $yday);
system $deletetar;



# ----------------------------------------------------

# Create the daily file

$cddf_file = sprintf("%s/cosmic2_%04d%02d%02d.cddf", $nprovs_dir, $year, $mon, $mday);

# Remove the previous daily file

unlink $cddf_file;


# Run Cosmic2toCDDF 

symlink $cddf_file, "out.file" or warn "Cannot link $cddf_file to out.file";

system $source_dir . "/Cosmic2UcarToCDDF.x " . $date_to_process . " " . $raw_data_dir;

unlink "out.file" or warn "Cannot unlink the out.file";





# ----------------------------------------------------
# Copy the daily file to the orbital archives

printf("Gzipping the daily file\n");

$gzip_file = sprintf("%s/cosmic2_%d.cddf.gz", $nprovs_dir, $date_to_process);

system "gzip " . $cddf_file;


$to_file_1 = sprintf("/data/data599/orbital_archive/cosmic2_ucar/cosmic2_%d.cddf.gz", $date_to_process);

$to_file_2 = sprintf("/data/data215/nprovs/data/orbital_archive/cosmic2/cosmic2_%d.cddf.gz", $date_to_process);


printf("Copying the daily file to the orbital archives\n\n");

copy($gzip_file, $to_file_1);

copy($gzip_file, $to_file_2);

unlink $gzip_file;



sub dayofyear
  {
  my ($year, $month, $day)=@_;
  my @days_in_month = (0,31,59,90,120,151,181,212,243,273,304,334,365);
  my $julday = $days_in_month[$month-1] + $day;

  my $is_leapyear = 0;

  if (($year % 4) == 0)
    {
    $is_leapyear = 1;
    }

  if (($year % 100) == 0)
    {
    $is_leapyear = 0;
    }

  if (($year % 400) == 0)
    {
    $is_leapyear = 1;
    }

  if (($is_leapyear == 1) && ($month >= 3))
    {
    $julday = $julday + 1;
    }

  return $julday;
  }

# end of file
