Home

Mercury’s Orbital Precession Attributable To The Sun’s Spin

References:

(1) Roots of Gravitomagnetic Theory. (Article on this website.)

(2) THE FEYNMAN LECTURES ON PHYSICS, volume 2, Section  14-5.

In Newton’s gravitational force law, no distinction is made between a non-spinning central body and a spinning central body. In most cases the central body mass can be modeled as a point mass. Given a massive central body whose center is at rest in an inertial frame, a satellite’s orbit can be analytically found to be a closed ellipse. That is, the orbit continually repeats itself, and has one point (called the perigee) where the distance to the central body is less than any distance at other points in the orbital path. Fig.1 depicts the orbit of Mercury around the Sun which (owing to its much greater mass) is assumed to be at rest at the origin of the x-y plot.

Figure 1

Orbit of Mercury in the Sun's Gravitational Field

In Gravitomagnetic Theory (GMT) Newton’s gravitation law again applies to a central body (whether the body spins or not). Quite as the electric field of a sphere of charge (whose center is at rest) is inverse square regardless of whether or not the sphere spins, so is the gravitational field of a sphere of mass inverse square.

However, analogously to a spinning charge, GMT specifies that a spinning mass has an Imaginary gravitomagnetic field (dubbed the O field) quite as a spinning charge has a Real B field. And application of the GMT version of the Lorentz force law indicates that a satellite moving through said field experiences a gravitomagnetic force, in addition to the omnipresent gravitational force. Whereas the gravitational force on Mercury is always toward the Sun, however, the gravitomagnetic force is away from the Sun.

Invoking Newton 2, the resulting satellite path in the case of a spinning Sun can be computed (see Appendix A). And it is found that the analytical closed elliptic orbit, attributable to gravity alone,  is very slightly different when the central body spins. However, this difference is not great enough to be seen in a plot like Fig. 1. But the difference can be greatly exaggerated by increasing the gravitomagnetic force to be say .1 of the gravitational force.  Fig 2. plots the computed Mercury path around a spinning Sun whose gravitomagnetic field has been exaggerated. Note that there is no perihelion. Of course in reality the opening out of the orbit is very much less obvious.

Figure 2

Orbit Under the Influence of a Much Enhanced Gravitomagnetic Force

Appendix A

#Python 3.3.4 (v3.3.4:7ff62415e426, Feb 10 2014, 18:12:08) [MSC v.1600 32 bit (Intel)] on win32

#class Precession:

"""

References and suggested background reading:

(1) Roots of Gravitomagnetic Theory. (Article on this website.)

(2) THE FEYNMAN LECTURES ON PHYSICS, volume 2, Section  14-5.

Please Note: "GMT" is short for "Gravitomagnetic Theory".

This program computes the orbit of Mercury as it travels

around the Sun, with the Sun spinning and, according to GMT, engendering a gravitomagnetic field

in addition to the omnipresent gravitational field. The center of the sun is assumed to

be fixed at the origin of a rectangular coordinate system in inertial space. When the sun spins CCW,

its angular velocity points in the positive z-direction.

In GMT the spinning sun is theorized to

engender a dipolar gravitomagnetic field that (a) points in the positive z-direction at internal

points of the equatorial plane, and (b) points in the negative z-direction at points in the

external equatorial plane. The orbit of Mercury

is also assumed to lie in the xy plane and, from the perspective of the positive z axis, also to be

CCW. Mercury is assumed to be acted upon by a gravitational force and

by an opposing gravitomagnetic force. Analytically the orbit is a perfect ellipse

when only gravity acts. However, with the small (and opposing) graviyomagnetic force also acting,

the result should hypothetically be an open ellipse.

It is expected that the computed result

may not be precisely what is observed owing to certain realities. First the spinning Sun

is modeled as a spinning square line mass, and not as a spinning, oblate sphere of mass

with a complicated internal density and with zones that rotate at different rates.

Secondly, the Sun's spin equatorial plane does not actually coincide precisely with the plane

of Mercury's orbit. (Mercury's orbital plane is tilted slightly, relative to the

Sun's spin equatorial plane.) Finally there may be

small numeric computer errors.

Feynman(Reference 2) models a square electric current loop as a square line charge q,

with sides a, and line charge density lambda=q/4a.

He assumes that this line charge circulates CCW in the xy-plane with a current,

I=q/tau, where tau is the time for q to make one trip around the loop. I.e. I=q*omega/(2*pi).

The magnetic moment for this model is mu=I*a**2, or mu=(q*omega*a**2/(2*pi).

For a point r>a in the loop's plane

he finds that B points in the -z direction and has the

value Bz=-(mu/(4*pi*eps0*c**2*r**3)=-(q*omega*a**2)/(2*pi*(4*pi*eps0)*c**2*r**3).

We model the spinning Sun as a square line mass M, where M=MassOfSun,

and with side a equal to R, the radius of the Sun, and with a line mass density of lambda=M/(4*R).

We assume that this line mass circulates CCW with a current I=lamda*v, where v=omega*2*R/pi is

the line mass speed around the loop.

At points in the equatorial plane and at greater distances

r>R our model indicates that Oz=-mu*G/(c**2*r**3)=-M*OmegaOfSun*R**2*G/(4*c**2*r**3).

"""

import math

N=50

#Constants for Sun.

MassOfSun=1.9891e30

OmegaOfSun=2.*math.pi/(25.71*24*60**2)

#Constants for Mercury.

MercuryMass=.33011e24

PerihelionDistance=46001200e3

PerihelionSpeed=58.98e3

OrbitalPeriod=87.969*86400 #seconds

#Program constants

DT=OrbitalPeriod/N #Time increment betweem orbital step computations

SpeedOfLight=2.99792458e8

G=6.67408e-11 #Gravitational constant.

#First determine what OzAdjust must be in order for the gravitomagnetic force on Mercury

#to be 1/10 the gravitational force.

Dis=PerihelionDistance

F=-G*MassOfSun*MercuryMass/Dis**2    #F is gravitational force. Masses are Imaginay; hence force is negative or attractive.

Oz=-MassOfSun*RadiusOfSun**2*G*OmegaOfSun/(4*SpeedOfLight**2*Dis**3)    #Oz is Imaginary.

GMF=MercuryMass*PerihelionSpeed*Oz    #GMF is the gravitomagnetic force. Note use of left hand rule. GMF opposes F.

OK=input("Cont?")

#Now compute orbit with sun spinning.

#Do trial orbit to determine numeric error.

Dis=[]

DisX=[]

DisY=[]

DisX.append(PerihelionDistance)

DisY.append(0.)

Dis.append(math.sqrt(DisX[0]**2+DisY[0]**2))

g=G*MassOfSun/Dis[0]**2

gX=g

gY=0.

FX=gX*MercuryMass #Gravitational force.

FY=0.

#Oz=0. Execute this statement if computing gravity alone (non-spinning Sun).

GMFX=-MercuryMass*PerihelionSpeed*Oz

GMFY=MercuryMass*0.*Oz

TotalFX=FX+GMFX #Points toward Sun, but less than force when Sun does not spin.

TotalFY=FY+GMFY

AX=TotalFX/MercuryMass

AY=TotalFY/MercuryMass

VX=AX*DT/2

VY=PerihelionSpeed+(AY*DT/2)

#Set up for t=DT loop.

DisX.append(DisX[0]+VX*DT)

DisY.append(DisY[0]+VY*DT)

Dis.append(math.sqrt(DisX[1]**2+DisY[1]**2))

g=G*MassOfSun/Dis[1]**2

gX=g*(-DisX[1]/Dis[1])

gY=g*(-DisY[1]/Dis[1])

FX=gX*MercuryMass

FY=gY*MercuryMass

#Oz=0.

GMFX=-MercuryMass*VY*Oz

GMFY=MercuryMass*VX*Oz

TotalFX=FX+GMFX #Points toward Sun.

TotalFY=FY+GMFY

AX=TotalFX/MercuryMass

AY=TotalFY/MercuryMass

VX=VX+AX*DT

VY=VY+AY*DT

#Now do rest of orbit.

for index in range(2,2*N-1):

DisX.append(DisX[index-1]+VX*DT)

DisY.append(DisY[index-1]+VY*DT)

Dis.append(math.sqrt(DisX[index]**2+DisY[index]**2))

g=G*MassOfSun/Dis[index]**2

gX=g*(-DisX[index]/Dis[index])

gY=g*(-DisY[index]/Dis[index])

FX=gX*MercuryMass

FY=gY*MercuryMass

#Oz=0.

GMFX=-MercuryMass*VY*Oz

GMFY=MercuryMass*VX*Oz

TotalFX=FX+GMFX #Points toward Sun, but less than force when Suin does not spin.

TotalFY=FY+GMFY

AX=TotalFX/MercuryMass

AY=TotalFY/MercuryMass

VX=VX+AX*DT

VY=VY+AY*DT

#Execute following 3 statements for plotting of x-axis.

for index in range(0,2*N-1):

print(DisX[index])

c=input("Cont?")

#Execute following 3 statements for plotting of y-axis.

for index in range(0,2*N-1):

print(DisY[index])

c=input("Cont?")

print("End Of Program")