The Analysis Centre Software (ACS) is a processing package being developed to processes GNSS observations for geodetic applications.
We currently support the processing of:
- the American Global Positioning System (
GPS
); and - the Chinese Navigation Satellite System (
Beidou
)
We are actively developing the ACS to have the following capabilities and features:
- Precise Orbit & Clock determination of GNSS satellites (GNSS POD).
- Precise Point Positioning (PPP) of GNSS stations in network and individual mode.
- Real-Time corrections for PPP users.
- Analyse full, single and multi-frequency, multi-GNSS data.
- Delivering atmospheric products such as ionosphere and troposphere models.
- Servicing a wide range of users and receiver types.
- Delivering outputs usable and accessible by non-experts.
- Providing both a real-time and off-line processing capability.
- Delivering both position and integrity information.
- Routinely produce IGS final, rapid, ultra-rapid and real-time (RT) products.
The software is broken into two main components:
- the Network Parameter Estimation Algorithm (
PEA-N
); and - the Precise Orbit Determination (
POD
).
The ACS
Version 0.0.1 beta release supports:
- The
POD
pod/
├── README.md
- The lapack numerical linear algebra library (lapack.x86_64) (You may need to run the command ln -s /usr/lib64/liblapack.so.3 /usr/lib64/liblapack.so)
- The basic linear algebra library (blas.x86_64,liblas-libs.x86_64) (You may need to run the command ln -s /usr/lib64/libblas.so.3 /usr/lib64/libblas.so)
To build the POD
...
$ cd pod
$ make
You should now have the executable 'main_orb.e'
The POD
Precise Orbit Determination (./main_orb.e
) uses the configuration file:
├── EQM.in (Full force model equation of motion)
├── VEQ.in (For variational equations)
In this example the pod will perform a dynamic orbit determination for PRN04 over a 6 hour arc. The full gravitational force models are applied, with a cannonball model SRP model.
To run the POD
...
$ ./main_orb.e
This should output the following to stdout
...
Orbit Determination
Orbit residuals in ICRF : RMS(XYZ) 1.6754034501980351E-002 5.2908718335411935E-002 1.5676115599034774E-002
Orbit Determination: Completed
CPU Time (sec) 298.48134399999998
External Orbit comparison
Orbit comparison: ICRF
RMS RTN 2.8094479714173427E-002 2.4358145601708528E-002 4.4097979280889953E-002
RMS XYZ 1.6754034501980351E-002 5.2908718335411935E-002 1.5676115599034774E-002
Orbit comparison: ITRF
RMS XYZ 3.9069978513805753E-002 3.9343671258381237E-002 1.5660654272651970E-002
Write orbit matrices to output files
CPU Time (sec) 349.19307899999995
The results above show that our orbits arcs, over 6 hours, are currently within 2-5 cm of the final combined IGS orbit.
The prcessing also produces the following output files...
├── DE.430 planetary ephemris intermediate file
├── Amatrix.out design matrix
├── Wmatrix.out reduced observation matrix
├── orbext_ICRF.out intermediary file for the IGS orbit solution in ICRF for comparison purposes
├── orbext_ITRF.out intermediary file for the IGS orbit solution in ITRFfor comparison purposes
├── dorb_icrf.out differences in solutions in ICRF
├── dorb_RTN.out differences in solutions in orbital frame components radial, tangential and normal (RTN)
├── dorb_Kepler.out differences in solutions in keperian elements
├── dorb_itrf.out differences in solutions in ITRF
├── orb_icrf.out the final estimated orbit in ICRF
├── orb_itrf.out the final estimated orbit in ITRF
├── VEQ_Smatrix.out State transition matrix from the variational equations solution
├── VEQ_Pmatrix.out Sensitivity matrix from the variational equations solution
In this example we will change the SRP model to use the ECOM2 model.
Edit the EQM.in file so that the Solar Radiation Pressure configuration section now looks:
! Solar Radiation Pressure model: ! 1. Cannonball model ! 2. Box-wing model ! 3. ECOM (D2B1) model SRP_model 3
Then edit VEQ.in, so that the Non-gravitational forces now looks like:
%% Non-gravitational Effects Solar_radiation 0 Earth_radiation 0 Antenna_thrust 0
! Solar Radiation Pressure model: ! 1. Cannonball model ! 2. Box-wing model ! 3. ECOM (D2B1) model SRP_model 3
run the POD
...
$ ./main_orb.e
This should output the following to stdout
...
Orbit Determination
Orbit residuals in ICRF : RMS(XYZ) 2.0336204859568077E-002 8.4715644601919167E-003 3.9687932322714677E-002
Orbit Determination: Completed
CPU Time (sec) 299.68054799999999
External Orbit comparison
Orbit comparison: ICRF
RMS RTN 2.8182836396022540E-002 2.4598832384842121E-002 2.5879201921952168E-002
RMS XYZ 2.0336204859568077E-002 8.4715644601919167E-003 3.9687932322714677E-002
Orbit comparison: ITRF
RMS XYZ 1.8757217704973204E-002 1.1635302426688266E-002 3.9702619816620370E-002
Write orbit matrices to output files
CPU Time (sec) 350.88653299999999