TWO_BODY_SIMULATION is a FORTRAN90 library which simulates the solution of 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.
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
TWO_BODY_SIMULATION is available in a FORTRAN90 version and a MATLAB version.
BROWNIAN_MOTION_SIMULATION, a FORTRAN90 program which simulates Brownian motion in an M-dimensional region.
DUEL_SIMULATION, a FORTRAN90 program which simulates N repetitions of a duel between two players, each of whom has a known firing accuracy.
GNUPLOT, FORTRAN90 programs which illustrate how a program can write data and command files so that gnuplot can create plots of the program results.
HIGH_CARD_SIMULATION, a FORTRAN90 program which simulates a situation in which you see the cards in a deck one by one, and must select the one you think is the highest and stop; the program uses GNUPLOT for graphics.
ISING_2D_SIMULATION, a FORTRAN90 program which carries out a Monte Carlo simulation of an Ising model. a 2D array of positive and negative charges, each of which is likely to flip to be in agreement with neighbors.
ISING_3D_SIMULATION, a FORTRAN90 program which carries out a Monte Carlo simulation of an Ising model, a 3D array of positive and negative charges, each of which is likely to flip to be in agreement with neighbors.
POISSON_SIMULATION, a FORTRAN90 library which simulates a Poisson process in which events randomly occur with an average waiting time of Lambda, creating output for graphics by gnuplot.
REACTOR_SIMULATION, a FORTRAN90 program which is a simple Monte Carlo simulation of the shielding effect of a slab of a certain thickness in front of a neutron source. This program was provided as an example with the book "Numerical Methods and Software."
RKF45, a FORTRAN90 library which implements the Runge-Kutta-Fehlberg (RKF) solver for the solution of an ordinary differential equation (ODE) system.
STRING_SIMULATION, a FORTRAN90 program which simulates the behavior of a vibrating string, creating files that can be displayed by gnuplot.
THREE_BODY_SIMULATION, a FORTRAN90 program 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.
INITIAL_ORBIT starts the problem, and runs it for just two orbits.
ORBITAL_DECAY runs the problem for 20 orbits.
You can go up one level to the FORTRAN90 source codes.