The York-PPP processor was implemented in C++, MATLAB and DOS batch scripts, capitalizing on the advantages that exist in each of the programming languages. The processing core of York-PPP consists of approximately 110 functions and over 32,000 lines of C++ code translated from the original Fortran code provided by NRCan, (2010). The source code is used by the on-line CSRS-PPP service. MATLAB was used in the design of the graphical user interface (GUI) of the software, as well as plotting of output data of the processor. The DOS batch scripts were used to automate the downloading of the input (observation, and precise orbits and clocks) files and to initialize the batch processing aspect of York-PPP.
In the figure presented is a general overview of architecture of York-PPP. It consists of three core modules – the data interface, sequential least-squares module and correction computation. Before the actual computation takes place, the user defines processing parameters and input files through the GUI. All incoming data are converted into an internal format and plausibility checks (such as making sure all necessary data are available for each satellite, types of observable present and number of satellites present for each epoch) are carried out. Also, coefficients required for interpolating satellite orbits and clock corrections are generated.
Depending on the user’s input, different algorithms will be selected. Out of these parameters the corrections for each observation are calculated according to the algorithms which shall be discussed in future postings. The correction module accesses the required data supplied from the user in form of an observation file, precise satellite orbits and clocks, ocean loading coefficients and the ANTEX file. The corrected observations together with the computed satellite positions are then fed into the sequential least-squares module. Within this module the actual position estimation takes place. The accuracy and quality of the parameters are provided to the user. For the subsequent evaluation and comparison of different settings, the significant results and intermediate data are stored in files. Currently, this first version only supports post-processing; future work would consist of expanding the functionality of the software to work in real-time.