Satellite Orbit Modeling

Precise modeling of satellite's perturbed motion (special perturbations approach)
4.5K Downloads
Updated 28 Nov 2024

View License

Orbit modeling is the process of creating mathematical models to simulate motion of a massive body as it moves in orbit around another massive body due to gravity. Other forces such as gravitational attraction from tertiary bodies, air resistance, solar pressure, or thrust from a propulsion system are typically modeled as secondary effects. Directly modeling an orbit can push the limits of machine precision due to the need to model small perturbations to very large orbits. Because of this, perturbation methods are often used to model the orbit in order to achieve better accuracy. Orbit models are typically propagated in time and space using special perturbation methods. This is performed by first modeling the orbit as a Keplerian orbit. Then perturbations are added to the model to account for the various perturbations that affect the orbit. Special perturbations can be applied to any problem in celestial mechanics, as it is not limited to cases where the perturbing forces are small. Special perturbation methods are the basis of the most accurate machine-generated planetary ephemerides such as Jet Propulsion Laboratory Development Ephemerides.
Here I have used the following integrator and force model to simulate satellite's perturbed motion:
Integrator: Runge-Kutta-Fehlberg 7(8).
Force Model: gravity field of the Earth (GGM03C model), gravity of the solar system planets (positions of the planets are computed by JPLDE440), drag effect using NRLMSISE00 atmospheric density model, solar radiation pressure using cylindrical model, solid Earth tides (IERS Conventions 2010), ocean tides and general relativity.
The Simulation starts by running the test_Envisat.m. In the InitialState.txt set initial values for your favorite satellite; lines 2-7 are the state vector of satellite/spacecraft in the International Terrestrial Reference Frame (ITRF). Lines 8 to 12 are the satellite parameters related to the forces from atmospheric drag and solar radiation pressure. Lines 8-10 are in units m^2 and kg. Line 11: Cr is the radiation pressure coefficient (Cr = 1 + reflectivity of satellite). Line 12: Cd is the atmospheric drag coefficient of the satellite. In the test_Envisat.m you can consider different perturbations by setting them 1 as follows:
AuxParam.n = 40; % maximum degree of central body's gravitation field
AuxParam.m = 40; % maximum 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; 4th edition (2013).
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.
McCarthy D. D.; IERS Conventions (1996).

Cite As

Meysam Mahooti (2024). Satellite Orbit Modeling (https://www.mathworks.com/matlabcentral/fileexchange/54877-satellite-orbit-modeling), MATLAB Central File Exchange. Retrieved .

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

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
3.3.2

In nrlmsise00.m, flags.switches(1)=1; was fixed for output in meters and kilograms instead of centimeters and grams.

3.3.1

AccelHarmonic_AnelasticEarth.m and AccelHarmonic_ElasticEarth.m were modified.

3.3.0

Runge_Kutta_Fehlberg_7_8 was added. test_Envisat.m and Ephemeris.m were modified.

3.2.2

test_Envisat.m and nrlmsise00.m were modified.

3.2.1

The conical shadow model was added.

3.2.0

AccelHarmonic_AnelasticEarth.m and AccelHarmonic_ElasticEarth.m were modified, and a readme file was added.

3.1.1

nrlmsise00.m is modified.

3.1.0

The gast.m is modified.

3.0.0

Modifications are made to Mjday.m, invjday.m, test_Envisat.m, nrlmsise00.m, and Accel.m.

2.2.2.2

Modifications are made to SAT_Const.m, AccelHarmonic_AnelasticEarth.m, AccelHarmonic_ElasticEarth.m, and Accel.m.

2.2.2.1

The AccelHarmonic_AnelasticEarth.m, the AccelHarmonic_ElasticEarth.m, and the Accel.m are modified.

2.2.1.1

Mjday_TDB.m and nrlmsise00.m are modified.

2.1.1.1

The DE430 full matrix is added.

2.1.1.0

AccelHarmonic_ElasticEarth.m and AccelHarmonic_AnelasticEarth.m are modified.

2.1.0.0

AccelHarmonic_ElasticEarth.m, AccelHarmonic_AnelasticEarth.m, test_Envisat.m and InitialState.txt are modified.

2.0.0.1

Documentation is added.

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).
SAT_Const.m is called once to decrease CPU time.
IERS.m, nrlmsise00.m, and test_Envisat.m are modified to decrease CPU time.
Ephemeris.m is modified to decrease CPU time.
DE405 (planetary and lunar ephemerides) is replaced by DE430.
Satellite's ground track is plotted.

1.1.0.0

Density_nrlmsise00.m is improved.
.
Integrator is changed.
.
.
The image is added.
Revised on 2016-11-29.

1.0.0.0