;---------------------------------------------------------------
;! Calculate ionospheric delay and Faraday rotation corrections
;# PROCEDURE VLBI UTILITY CALIBRATION
;-----------------------------------------------------------------------
;;  Copyright (C) 2005-2006, 2018, 2020
;;  Associated Universities, Inc. Washington DC, USA.
;;
;;  This program is free software; you can redistribute it and/or
;;  modify it under the terms of the GNU General Public License as
;;  published by the Free Software Foundation; either version 2 of
;;  the License, or (at your option) any later version.
;;
;;  This program is distributed in the hope that it will be useful,
;;  but WITHOUT ANY WARRANTY; without even the implied warranty of
;;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;  GNU General Public License for more details.
;;
;;  You should have received a copy of the GNU General Public
;;  License along with this program; if not, write to the Free
;;  Software Foundation, Inc., 675 Massachusetts Ave, Cambridge,
;;  MA 02139, USA.
;;
;;  Correspondence concerning AIPS should be addressed as follows:
;;         Internet email: aipsmail@nrao.edu.
;;         Postal address: AIPS Project Office
;;                         National Radio Astronomy Observatory
;;                         520 Edgemont Road
;;                         Charlottesville, VA 22903-2475 USA
;-----------------------------------------------------------------------
VLBATECR  LLLLLLLLLLLLUUUUUUUUUUUU CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
VLBATECR  Procedure to calibrate ionospheric delay
INNAME                             Input UV file name (name)
INCLASS                            Input UV file name (class)
INSEQ             0.0     9999.0   Input UV file name (seq. #)
INDISK            0.0        9.0   Input UV file disk unit #
SUBARR                             Subarray to correct
                                     (0 => all)
TECRFILE                           IONEX file name
                                   '' => download autmatically
NFILES                             # of TECRFILES
           VLBATECR is defined in the VLBAUTIL run file.
----------------------------------------------------------------
VLBATECR
Type: Procedure
Use:  Automatically download IONEX files needed to correct the
      ionospheric dispersive delay with TECOR.  Then runs TECOR.
      See EXPLAIN TECOR for more information on this correction.
      To do the automatic download the system must have one of
      the following commands: wget, curl or ncftpget, and an NX
      table.
Adverbs
  INNAME.....Input UV file name (name).      Standard defaults.
  INCLASS....Input UV file name (class).     Standard defaults.
  INSEQ......Input UV file name (seq. #).    0 => highest.
  INDISK.....Disk drive # of input UV file.  0 => any.
  SUBARR.....Subarray to correct.            0 => all.
  TECRFILE...Input file.  If ''=> file will be automatically downloaded.
             If there is a problem with automatic downloads (this can
             be a problem with some firewalls) the file can be can
             be downloaded manually.  See EXPLAIN VLBATECR for details
             on how to download the file(s).
             The file should contain TEC maps spanning the time
             range covered by the input CL table and should be in
             IONEX format.  If NFILES > 1 then the name MUST be in
             standard format CCCCdddC.yyC where C can be any
             character, ddd is the day number, and yy is the year.
             Also the name given in INFILE must be the first day.
  NFILES.....Number of IONEX files to use.  Note that if NFILES > 1
             then the TECRFILE must be in a standard format and the
             file in TECRFILE must be the first day of those to be
             loaded.  0 => 1
----------------------------------------------------------------
VLBATECR: Procedure that corrects ionospheric dispersive delay
          using TECOR.  This procedure automatically downloads
          the IONEX files from the CDDIS archive.
DOCUMENTOR: Amy Mioduszewski, NRAO
RELATED PROGRAMS: VLBAUTIL, TECOR

VLBATECR is designed to make the use of TECOR easier.  It uses
the header and the NX table to calculate what files to download
from CDDIS.  It uses the CDDIS site in the US (cddis.gsfc.nasa.gov)
and downloads the jplg or codg version of the IONEX files.  Then it
runs TECOR using these files.  For simplicity (files from multiple
days must to have the same prefix), all the files are renamed with
the jplg prefix.  The IONEX files are left in the /tmp area of your
computer, so you can copy them for your records or ignore them.

See EXPLAIN TECOR for details on the ionospheric correction.

This procedure is defined in VLBAUTIL, type RUN VLBAUTIL to load
VLBAUTIL.

To run VLBATECR:
   1) The dataset must have a correct observation date in the header;
      if it is wrong correct it with PUTHEAD.
      -> there is a weak test on the validity of the observation date;
         the observation year must be <= to the creation year.
   2) The dataset must have an NX table; run INDXR or VLBAFIX to create.
   3) The system must have one of the following commands: wget, curl or
      ncftpget.  VLBATECR will test for the existence of these commands
      in the order given above and will the first one it finds.
      Mac OS - will probably have curl; wget and ncftpget seem to be
      available in Fink.
   4) /tmp directory must exist on your computer
   5) Your computer must allow link to the Internet, some computers may
      have firewalls such that the above commands exist, but will not work.

VLBATECR should be run on data of 8 GHz and lower, and can be run
anytime before the last fringe fit and after VLBAFIX.  For simplicity,
it is recommended that it be run right after VLBAFIX or VLBAEOPS, so
all corrections to the data are done before calibration.

If there is a problem with the automatic download then you can download
the IONEX file(s) manually and set TECRFILE and NFILES:

Sometime in October 2020, for new requirements, you can consult

https://cddis.nasa.gov/Data_and_Derived_Products/CDDIS_Archive_Access.html

You may have to create an account with cddis in order to download in
some other fashion.

The command that does work from VLBATECR is (all on one line!)

curl -u anonymous:daip@nrao.edu --ftp-ssl ftp://gdc.ccdis.eosdis.nasa.gov/
   gps/products/ionex/YYYY/DDD/jplgDDD0.YYi.Z > /tmp/jplgDDD0.YYi.Z

(no blanks between gov/ and gps) where YYYY is the year e.g. 2015, YY is
the last 2 digits of the year e.g. 15, and DDD is the day number within
the year.

iIf you do not have curl or a firewall or other issue makes this command
fail then, after Octo

The commands below will not work after October 2020.

1) ftp cddis.gsfc.nasa.gov; login as anonymous.
   -- note that there is a mirror site at igs.ensg.ign.fr

2) cd pub/gps/products/ionex/YYYY/DDD (YYYY-year; DDD-day number)
   -- for igs.ensg.ign.fr: cd pub/igs/iono/YYYY/DDD

3) prompt -1

4) mget jpl*.Z  (or get jplgDDD0.YYi.Z)  (not all *.Z !)

5) uncompress above file(s) before using TECOR

If more than one file is needed to cover the time period of
the experiment:

        -- download all the files

        -- make sure the files have the format CCCCdddC.yyC; where
           C is any character, ddd is the three digit day number and
           yy is the 2 digit year.  This is designed to work with
           the standard file names that the CDDIS data archive
           uses.  Note that the C's must be the same for each file
           and they must all be in the same directory.

        -- use the FIRST file as the INFILE

        -- set NFILES to the number of files
