This readme.txt file contains notes regarding the C source code and sample data which accompany the paper: "A Brief Review of Basic GPS Orbit Interpolation Strategies", GPS Solutions, Vol.6, No.4 by Dr. Mark S. Schenewerk give-em-an-inch.com Roeland Park, Kansas 66205 The source code files, and sample data files, are described below. atest.c - The main driver program. It requires the following command line arguments: source_eph control_eph PRN num_datapts num_terms strategy where source_eph = the input *.sp3 file which will be interpolated (epochs are every 15 min) control_eph = the control *.sp3 file used as truth (epochs every 5 min) PRN = the satellite PRN which will be interpolated/extrapolated num_datapts = the number of data points around each epoch used to compute function coeffs. num_terms = the numbers of terms in the function (8 terms implies a seventh-order polynomial) strategy = a one-character code which tells the program which algorithm/strategy to use for interpolating. N : means use the Neville algorithm to find an interpolated value. T : means find the coeffs. for a Trigonometric function (for Inertial files). 2 : means find the coeffs. for a Trigonometric function (for ECF files). atest.h - The only include file. It contains the function prototypes, structure definition, and global variables. hmsday.c - Converts hours, minutes, seconds to fractional day. Makefile - an example makefile for use with the gcc compiler on Linux. polint.c - Uses Neville's algorithm for finding an interpolated value at one epoch. ScanFile.c - Reads *.sp3 files and stores coordinates and times. search.c - Finds the coordinates needed for polint. svdfit.c - Uses Singular Value Decomposition to find coefficients for the Trig. Functions. TrigExt.c - Creates Trigonometric functions for ECF files (option "2"). TrigFunc.c - Creates Trigonometric functions for Inertial files (option "T"). ymdmjd.c - Convert year, month, day to Modified Julian Date. atest.exe - A PC executable version for atest.c (compiled using Borland C++ Builder 5.0 on Windows NT). ECF_15MI.200 - A sample input ephemeris in the ECF frame (15 minute epochs). ECF_5MIN.200 - A sample control ephemeris in the ECF frame (5 minute epochs). IN_15MIN.200 - A sample input ephemeris in the Inertial frame (15 minute epochs). IN_5MIN.200 - A sample control ephemeris in the Inertial frame (5 minute epochs). The values in Table 1 and Table 2 in the paper represent the results for PRN 01. The Max column is the maximum difference between the interpolated XYZ values and those in the control file; what is given in the Max column is a total misclosure: the square root of the sum of the squares of delta X, delta Y, and delta Z. To reproduce the maximum 10.3 centimeter value shown in the last column of Table 1 (for the 9-term Trigonometric functions) one can run the atest program using the following command line options: atest ECF_15MI.200 ECF_5MIN.200 1 9 9 2 > myfile.out In myfile.out there are five columns: Julian_Date Total_3D-Misclosure deltaX deltaY deltaZ Column 2 is where we would look for the 10.3 cm value. The file starts at Julian Date 2452275.50 . The 24:00 epoch is at Julian Date 2452276.50 . If we scroll down to this epoch we can see that the 3D-value in column 2 is 10.3 cm. The previous three lines (each 5 minutes earlier than one another) have values of 4.0, 1.1, and 0.0 cm. These are the same values plotted in Figure 3 in the paper, for the 9-term Trigonometric interpolation (using the symbol "9"). Likewise, the 8.2 cm value in the last column of Table 2 can be reproduced using: atest IN_15MIN.200 IN_5MIN.200 1 7 7 T > myInertialResults.out. Again, the maximum value (8.2 cm) is at the 24:00 epoch which is found in the second column of myInertialResults.out at Julian Date 2452276.50 . The source code should be compiled using an ANSI-C compiler. Depending at which compiler you are using, there may be some warnings regarding comparing signed and unsigned integers, and warnings regarding variables that are not currently being used (these variables were used for testing cubic splines).