File Exchange

image thumbnail

High Precision Orbit Propagator

version 2.1.1.1 (19.5 MB) by Meysam Mahooti
Precise modeling of satellite's perturbed motion (special perturbations approach)

71 Downloads

Updated 24 Mar 2020

View License

The motion of a near-Earth satellite is affected by various forces. One of these forces is the Earth's central gravitation and the others are known as perturbations. These perturbations are classified into gravitational and non-gravitational forces. In this case, the equation of motion can be written as:
r ̈=-(GM/r^3)*r+γ_p
γ_p is the vector of additional accelerations induced by the disturbing forces.
γ_p=r ̈_E+r ̈_S+r ̈_M+r ̈_P+r ̈_e+r ̈_o+r ̈_D+r ̈_SP+r ̈_A+r ̈_emp
r ̈_E = Accelerations due to the non-spherically and inhomogeneous mass distribution within Earth (central body)
r ̈_S, r ̈_M, r ̈_P = Accelerations due to other celestial bodies (Sun, Moon and planets)
r ̈_e, r ̈_o = Accelerations due to Earth and oceanic tides
r ̈_D = Accelerations due to atmospheric drag
r ̈_SP, r ̈_A = Accelerations due to direct and Earth-reflected solar radiation pressure
r ̈_emp = Accelerations due to unmodeled forces
Here I have used the following integrator and force model to simulate satellite's perturbed motion:
Integrator: Variable-order Radau IIA integrator with step-size control
Force Model:
- gravity field of the Earth (GGM03S model)
- gravity of the solar system planets (positions of the planets are computed by JPLDE436)
- drag effect using Jacchia-Bowman 2008, NRLMSISE-00, MSIS-86, Jacchia 70 or modified Harris-Priester atmospheric density model (in Accel.m you can uncomment your favorite model)
- solar radiation pressure using geometrical or cylindrical shadow model
- solid Earth tides (IERS Conventions 2010)
- ocean tides
- general relativity
- ECEF2ECI and ECI2ECEF transformations using IAU 2006 Resolution
Simulation starts by running HPOP.m. In InitialState.txt set initial values for your favorite satellite. In HPOP.m you can consider different perturbations by setting them 1 as follows:
AuxParam.n = 70; % maximum degree of central body's gravitation field
AuxParam.m = 70; % minimum order of central body's gravitation field
AuxParam.sun = 1; % perturbation of the Sun
AuxParam.moon = 1; % perturbation of Moon
AuxParam.planets = 1; % perturbations of planets
AuxParam.sRad = 1; % solar radiation pressure
AuxParam.drag = 1; % atmospheric drag
AuxParam.SolidEarthTides = 1; % solid Earth tides
AuxParam.OceanTides = 1; % ocean tides
AuxParam.Relativity = 1; % general relativity
References:
Montenbruck O., Gill E.; Satellite Orbits: Models, Methods and Applications; Springer Verlag, Heidelberg; Corrected 3rd Printing (2005).
Montenbruck O., Pfleger T.; Astronomy on the Personal Computer; Springer Verlag, Heidelberg; 4th edition (2000).
Seeber G.; Satellite Geodesy; Walter de Gruyter, Berlin, New York; 2nd completely revised and extended edition (2003).
Vallado D. A; Fundamentals of Astrodynamics and Applications; McGraw-Hill, New York; 3rd edition(2007).
NIMA. 2000. Department of Defense World Geodetic System 1984. NIMA-TR 8350.2, 3rd ed, Amendment 1. Washington, DC: Headquarters, National Imagery and Mapping Agency.
http://sol.spacenvironment.net/jb2008/
http://ssd.jpl.nasa.gov/?ephemerides
http://celestrak.com/SpaceData/

Cite As

Meysam Mahooti (2020). High Precision Orbit Propagator (https://www.mathworks.com/matlabcentral/fileexchange/55167-high-precision-orbit-propagator), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (34)

Tool is now a very mature piece of code, suitable for high-precision orbit propagation (similar to the HPOP found in NASA's GMAT tool and STK HPOP). It would be nice to include perturbations from the most massive asteroids, which is needed for very high-precision trajectory propagation. Also, are there any plans to incorporate perturbations due to the Earth's magnetic field? I may have missed this, but does this code include the EGM2008 gravity model, a significant improvement over the former EGM96 model?

Murat Bulut

Albert

Hi! How can I update the solar files and so on? I can download them but the format is slightly different. Thanks

Looks like really good stuff, thanks for sharing. I just wish a user document accompanied this. A technical one would be really awesome, but I do see how you link to technical documentation so I wouldn't strike it for that. But really, just pulling out the top of function abstracts into a single document would make learning about this tool box way easier. Still, I am grateful!

I think this is a plagiarism of the SOFA software (http://www.iausofa.org/)

Dear Ignacio Gia,
Legendre.m is computed based on following reference:
https://elib.uni-stuttgart.de/bitstream/11682/3702/1/sharifi.pdf
Kind regards,
Meysam Mahooti

Ignacio Gia

Hi,
I've been struggling to understand the Lagrange.m algorithm, and how the expressions are deducted.
Is there any bibligraphy reference to study these particular derivations used in the Lagrange.m file?
Any help or pointer to the topic will be very much appreciated.
Best regards,
Ignacio.

Gatech AE

I've found this to be an extremely useful reference for learning about the numerical application of special perturbations. My only question is, what is the source of the expression for relativistic perturbations?

Dear Mr. Wang,
Earth orientation parameters (EOP) and space weather data are available in:
https://www.celestrak.com/SpaceData/
and DE405, DE430 and DE436 full matrices can be found on my page in researchgate.net:
https://www.researchgate.net/profile/Meysam_Mahooti/publications
furthermore, solar and geomagnetic storm indices which are needed in Jacchia-Bowman 2008 atmospheric model are in the following link:
http://sol.spacenvironment.net/jb2008/indices.html

Dear Dr. Mahooti,
where can I find the related txt or mat file?(such as DE436Coeff.mat )

It doesn't work for LEO satellites, if i put a LEO satellite coordinates in ,it will get funny results. Does anybody know how to change it so it can works for LEO?

How can I input the characteristics of an own satellite? Is it in InitialState.txt? In which units these parameters must be as I have them in Keplerian Orbital Classic parameters. Thanks in advance :)!

jackie

Excellent work! Thank you very much!

ahmed morsi

Dear Dr. Mahooti,
Can you add the effect of Magnetic Field

xun li

Hui Wang

ahmed morsi

Dear Dr. Mahooti,
Can you add the effect of Magnetic Field

Ignacio

Do you have the original paper used in the Shadow() function? I'm trying to understand the expressions used and I can't find the source. Thanks in advance!

Andres

Dear Dr. Mahooti,
I wonder if the function "Accel(x, Y)" in the section where you compute "% Atmospheric drag", you might want to employ E instead T to transform positions. Note: Please check inside the code JB2008(), I think it already rotates the GMST.

jiang li

Gread job! Just one question. The data in the file True_EnvisatStates.m are supposed to be "True".
Are they generated by some high precision propagator or just from observation data?

Arahms Lee

terry moore

Qiu Felix

Excuse me.where can I find the file about the structure of this code ?

Updates

2.1.1.1

AccelHarmonic_ElasticEarth.m, AccelHarmonic_AnelasticEarth.m, and HPOP.m are modified.

2.1.1.0

AccelHarmonic_ElasticEarth.m and AccelHarmonic_AnelasticEarth.m are modified.

2.1.0.0

HPOP.m, JPL_Eph_DE436.m and SAT_Const.m are modified.

2.0.0.0

Ephemeris.m is modified to decrease CPU time.
DE430 (planetary and lunar ephemerides) is replaced by DE436.
Satellite's ground track is plotted.

2.0.0.0

IERS.m, JB2008.m, nrlmsise00.m, msis86.m, Density_Jacchia70.m, and HPOP.m are modified to decrease CPU time.

2.0.0.0

Effect of Solid Earth Tides is computed for elastic and anelastic Earth based on IERS Conventions 2010 (AccelHarmonic_ElasticEarth.m, AccelHarmonic_AnelasticEarth.m).

2.0.0.0

SAT_Const.m and constants.m are called once to decrease CPU time.

2.0.0.0

Revised on 2017-12-22.

1.1.0.0

Revised on 2016-11-30.

1.1.0.0

Description is updated.

1.1.0.0

.

1.1.0.0

The image is added.

1.1.0.0

Integrator, shadow model and atmospheric density model are changed.

MATLAB Release Compatibility
Created with R2019b
Compatible with any release
Platform Compatibility
Windows macOS Linux