two_body_ode


two_body_ode, a Fortran90 code which simulates the planar two body problem, writing graphics files for processing by gnuplot().

Two bodies, regarded as point masses, are constrained to lie in a plane. The masses of each body are given, as are the positions and velocities at a starting time T = 0. The bodies move in accordance with the gravitational force between them. One body is assume to be much more massive than the other. Therefore, the common motion of the two bodies about their center of mass can be approximated by assuming that the large body remains fixed.

Under these assumptions, Newton's equations for (x(t),y(t)), the positition of the lighter body with respect to the heavy body at (0,0), can be written as:

        r(t) = sqrt ( x(t)^2 + y(t)^2 )
        x''(t) = - x(t) / r^3
        y''(t) = - y(t) / r^3
      

These two second order equations can be rewritten as a system of four first order equations using the variable u = [ x(t), x'(t), y(t), y'(t) ], resulting in the equations:

        r = sqrt ( u(1)^2 + u(3)^2 )
        u'(1) =   u(2)
        u'(2) = - u(1) / r^3
        u'(3) =   u(4)
        u'(4) = - u(3) / r^3
      

By specifying some initial condition for u, the system can then be integrated in time using a standard ODE solver.

Licensing:

The information on this web page is distributed under the MIT license.

Languages:

two_body_ode is available in a Fortran90 version and a MATLAB version.

Related Data and Programs:

two_body_ode_test

gnuplot_test, a Fortran90 code which illustrates how a program can write data and command files so that gnuplot() can create plots of the program results.

rkf45, a Fortran90 code which implements the Runge-Kutta-Fehlberg (RKF) solver for the solution of an ordinary differential equation (ODE) system.

three_body_ode, a Fortran90 code which simulates the behavior of three planets, constrained to lie in a plane, and moving under the influence of gravity, by Walter Gander and Jiri Hrebicek.

Reference:

  1. Charles VanLoan,
    Introduction to Scientific Computing,
    Prentice Hall, 1997,
    ISBN: 0-13-125444-8,
    LC: QA76.9.M35V375.

Source Code:

INITIAL_ORBIT starts the problem, and runs it for just two orbits.

ORBITAL_DECAY runs the problem for 20 orbits.


Last modified on 26 November 2024.