In [3]:
import planets
import numpy as np

### SATELLITES of GAS GIANTS
io = {} ; europa = {} ; ganymede = {} ; callisto = {}
titan = {} ; enceladus = {}
# in m
io["distance"] = 5.9*planets.Jupiter.a
europa["distance"] = 9.4*planets.Jupiter.a
ganymede["distance"] = 15*planets.Jupiter.a
callisto["distance"] = 26.4*planets.Jupiter.a
titan["distance"] = 1.222e9
enceladus["distance"] = 3.*planets.Saturn.a
# in kg / m3
io["density"] = 3530.
europa["density"] = 3020.
ganymede["density"] = 1940.
callisto["density"] = 1850.
titan["density"] = 1880.
enceladus["density"] = 1600.
# in km
io["radius"] = 1e3*3642./2.
europa["radius"] = 1e3*3120./2.
ganymede["radius"] = 1e3*5268./2.
callisto["radius"] = 1e3*4800./2.
titan["radius"] = 1e3*2575.
enceladus["radius"] = 1e3*250.
# planet
io["planet"] = "Jupiter"
europa["planet"] = "Jupiter"
ganymede["planet"] = "Jupiter"
callisto["planet"] = "Jupiter"
titan["planet"] = "Saturn"
enceladus["planet"] = "Saturn"
# name
io["name"] = "Io"
europa["name"] = "Europa"
ganymede["name"] = "Ganymede"
callisto["name"] = "Callisto"
titan["name"] = "Titan"
enceladus["name"] = "Enceladus"

planet = planets.Planet()
for satellite in [titan,enceladus,io,europa,ganymede,callisto]:
  planet.ini(satellite["planet"])
  roche = planet.roche(satellite["density"],normalized=True)
  print "%s --> Roche=%.1f vs. Distance=%.1f" % (satellite["name"],roche,satellite["distance"]/planet.a)


Titan --> Roche=1.8 vs. Distance=21.0
Enceladus --> Roche=1.9 vs. Distance=3.0
Io --> Roche=1.8 vs. Distance=5.9
Europa --> Roche=1.9 vs. Distance=9.4
Ganymede --> Roche=2.2 vs. Distance=15.0
Callisto --> Roche=2.2 vs. Distance=26.4

In [4]:
planet = planets.Planet()
for satellite in [titan,enceladus,io,europa,ganymede,callisto]:
  planet.ini(satellite["planet"])
  roche = planet.roche(satellite["density"],normalized=True,cst=1.44)
  print "%s --> Hill=%.1f vs. Distance=%.1f" % (satellite["name"],roche,satellite["distance"]/planet.a)


Titan --> Hill=1.0 vs. Distance=21.0
Enceladus --> Hill=1.1 vs. Distance=3.0
Io --> Hill=1.0 vs. Distance=5.9
Europa --> Hill=1.1 vs. Distance=9.4
Ganymede --> Hill=1.3 vs. Distance=15.0
Callisto --> Hill=1.3 vs. Distance=26.4

(Les forces de marée peuvent le rapprocher vers la limite de Roche, puis le détruire).


In [20]:
def tidal_force(satellite): 
    planet = planets.Planet()
    planet.ini(satellite["planet"])
    tf = - 3. * planets.G * planet.mass * satellite["radius"] / (satellite["distance"]**3)
    return tf
for satellite in [titan,enceladus,io,europa,ganymede,callisto]:
  mass = (4./3.)*np.pi*(satellite["radius"]**3)*satellite["density"]
  dR = -tidal_force(satellite)/(2.*planets.G*mass*(satellite["radius"]**-3))
  print "%s --> %.2e m s-2 kg-1 --> %.1f km" % (satellite["name"],tidal_force(satellite),dR/1000.)  
  
# déplacement induit 
# fg(R)-fg(R+dR) = -dfgdR(R)dR
# -GMR^-2 --> derive dfgdR(R)=2GMR^-3
#dR = -tf/2GMR^3


Titan --> -1.61e-04 m s-2 kg-1 --> 0.2 km
Enceladus --> -5.34e-03 m s-2 kg-1 --> 6.0 km
Io --> -9.86e-03 m s-2 kg-1 --> 5.0 km
Europa --> -2.09e-03 m s-2 kg-1 --> 1.2 km
Ganymede --> -8.68e-04 m s-2 kg-1 --> 0.8 km
Callisto --> -1.45e-04 m s-2 kg-1 --> 0.1 km

Faire le système Pluton-Charon ?


In [ ]: