JupiterMoons

Class to model JupiterMoons.

class pymeeus.JupiterMoons.JupiterMoons[source]

Class JupiterMoons models the four galilean satellites of Jupiter. With: 1: Io 2: Europa 3: Ganymede 4: Callisto The algorithm used can be found in chapter 44 (high accuracy method) of Meeus’ book Astronomic Algorithms

__weakref__

list of weak references to the object (if defined)

static apparent_rectangular_coordinates(epoch, X, Y, Z, OMEGA, psi, i, lambda_0, beta_0, D=0, isFictional=False)[source]

This method computes the apparent rectangular coordinates of a Jupiter satellite for given coordinates.

Parameters:
  • epoch (Epoch) – Epoch to compute satellite position, as an Epoch object
  • X (float) – X-coordinate of the satellite in Jupiter radii
  • Y (float) – Y-coordinate of the satellite in Jupiter radii
  • Z (float) – Z-coordinate of the satellite in Jupiter radii
  • OMEGA (float) – longitude of the node of Jupiter
  • psi (float) – longitude of the node of Jupiter
  • i (float) – inclination on the plane of the ecliptic
  • beta_0 (float) – Jupiter’s geocentric latitude
  • lambda_0 (float) – Jupiter’s geocentric longitude
  • D (float) – parameter calculated by the fifth fictional satellite (fictional satellite has to be calculated first, in order to calculate the coordinates of the remaining “true” satellites)
  • isFictional (bool) – Whether or not the satellite is the fictional satellite No. 5
Returns:

A tuple with the apparent rectangular coordinates of the satellite or parameter D if isFictional=True

Return type:

tuple, float

Raises:

TypeError if input values are wrong type

>>> utc_1992_12_16_00_00_00 = Epoch(1992, 12, 16, utc=True)
>>> psi_corrected = 317.1058009213959
>>> i_ecliptic_jupiter = 1.3036541530886598
>>> lambda_0 = -2.9355662143229146
>>> beta_0 = 0.021667777174910842
>>> OMEGA_ascending_node_jupiter= 100.39249942976576
>>> X_1 =  5.60361395790844
>>> Y_1 = 1.9398758261880644
>>> Z_1 = 0.00449258104769796
>>> X_5 =  0
>>> Y_5 = 0
>>> Z_5 = 1
>>> d = JupiterMoons.apparent_rectangular_coordinates(         utc_1992_12_16_00_00_00, X_5, Y_5, Z_5,         OMEGA_ascending_node_jupiter, psi_corrected, i_ecliptic_jupiter,         lambda_0, beta_0, isFictional=True)
>>> print(round(d, 10))
-0.0320562469
>>> io = JupiterMoons.apparent_rectangular_coordinates(         utc_1992_12_16_00_00_00, X_1, Y_1, Z_1,         OMEGA_ascending_node_jupiter, psi_corrected, i_ecliptic_jupiter,         lambda_0, beta_0, d)
>>> print(io)
(-3.4489935969836503, 0.21361563816963675, -4.818966623735296)
static calculate_delta(epoch)[source]

This method calculates the distance between Earth and Jupiter (DELTA) for a given epoch by iteration.

Parameters:epoch (Epoch) – Epoch the distance should be calculated for.
Returns:Distance Earth-Jupiter in AU and light-time delay from Earth-Jupiter, together with Coordinates of Jupiter
Return type:tuple
Raises:TypeError if input values are wrong type
>>> utc_1992_12_16_00_00_00 = Epoch(1992, 12, 16, utc=True)
>>> delta, tau, l, b, r = JupiterMoons.calculate_delta(         utc_1992_12_16_00_00_00)
>>> print(round(delta, 10))
5.6611211815
>>> print(round(tau, 10))
0.032695909
static check_coordinates(X, Y)[source]

This method checks if the given coordinates correspond with a satellite phenomena. It returns if the satellite with the given coordinates is hidden behind Jupiter or directly in front.

Parameters:
  • X (float) – X-coordinate of the satellite in Jupiter’s radii
  • Y (float) – Y-coordinate of the satellite in Jupiter’s radii
Returns:

Perspective distance to Jupiter’s center in Jupiter’s radii

Return type:

float

Calculation of the perspective distance of the planet Io to the center of Jupiter for December 16 at 0h UTC as seen from the Earth

>>> utc_1992_12_16_00_00_00 = Epoch(1992, 12, 16, utc=True)
>>> result_matrix =         JupiterMoons.rectangular_positions_jovian_equatorial(         utc_1992_12_16_00_00_00, solar=False)
>>> io_radius_to_center_of_jupiter_earth =         JupiterMoons.check_coordinates(result_matrix[0][0], result_matrix[         0][1])
>>> print(round(io_radius_to_center_of_jupiter_earth, 10))
3.4577572706
static check_eclipse(X_0=0, Y_0=0, Z_0=0, epoch=None, i_sat=None)[source]

This method checks if the given coordinates or Epoch correspond with a satellite being in eclipse.

Parameters:
  • X_0 (float) – X-coordinate of the satellite in Jupiter’s radii observed from the sun
  • Y_0 (float) – Y-coordinate of the satellite in Jupiter’s radii observed from the sun
  • Z_0 (float) – Z-coordinate of the satellite in Jupiter’s radii observed from the sun
  • epoch (Epoch) – Epoch that should be checked
  • i_sat (int) – Index of the satellite (only for given Epoch)
Returns:

perspective distance to center of Jupiter in Jupiter radii as seen from the Sun (value of perspective distance is negative when the satellite is closer to the Sun than Jupiter, otherwise positive)

Return type:

float

Raises:

TypeError if input values are wrong type

Calculation of the Perspective distance of the planet Io squareroot(X_0^2 + Y_0^2) to the center of Jupiter for December 16 at 0h UTC as seen from the Sun

>>> utc_1992_12_16_00_00_00 = Epoch(1992, 12, 16, utc=True)
>>> result_matrix =         JupiterMoons.rectangular_positions_jovian_equatorial(         utc_1992_12_16_00_00_00, solar=True)
>>> io_radius_to_center_of_jupiter_sunview =         JupiterMoons.check_eclipse(result_matrix[0][0], result_matrix[0][1])
>>> print(round(io_radius_to_center_of_jupiter_sunview, 10))
-2.5533012642
static check_occultation(X=0, Y=0, Z=0, epoch=None, i_sat=None)[source]

This method checks if the given coordinates or Epoch correspond with a satellite being in occultation.

Parameters:
  • X (float) – X-coordinate of the satellite in Jupiter’s radii
  • Y (float) – Y-coordinate of the satellite in Jupiter’s radii
  • Z (float) – Z-coordinate of the satellite in Jupiter’s radii
  • epoch (Epoch) – Epoch that should be checked
  • i_sat (int) – Index of the satellite (only for given Epoch)
Returns:

Perspective distance to center of Jupiter in Jupiter radii as seen from the Earth (value of perspective distance is negative when the satellite is closer to the Earth than Jupiter, otherwise positive)

Return type:

float

Raises:

TypeError if input values are wrong type

Calculation of the perspective distance of the planet Io squareroot(X^2 + Y^2) to the center of Jupiter for December 16 at 0h UTC as seen from the Earth

>>> utc_1992_12_16_00_00_00 = Epoch(1992, 12, 16, utc=True)
>>> result_matrix =         JupiterMoons.rectangular_positions_jovian_equatorial(         utc_1992_12_16_00_00_00, solar=False)
>>> io_distance_to_center_of_jupiter_earthview =         JupiterMoons.check_occultation(result_matrix[0][0], result_matrix[         0][1])
>>> print(round(io_distance_to_center_of_jupiter_earthview, 10))
-3.4577572706
static check_phenomena(epoch, check_all=True, i_sat=0)[source]

This method returns the perspective distance to any phenomena of all satellites for the given epoch.

Parameters:
  • epoch (:py:class:'Epoch') – Epoch the calculations should be made for
  • check_all (bool) – Whether all satellites should be checked
  • i_sat (int) – Which satellite should be checked
Returns:

Distance to the satellite being ecclipsed, occulted in penumbra

Return type:

tuple

Raises:

TypeError if input values are wrong type

>>> utc_1992_12_16_00_00_00 = Epoch(1992, 12, 16, utc=True)
>>> result_matrix = JupiterMoons.check_phenomena(         utc_1992_12_16_00_00_00)
>>> print(result_matrix[0])
[-3.457757270630766, -2.553301264153796, 0.0]
>>> print(result_matrix[1])
[-7.44770945299594, -8.33419997337025, 0.0]
>>> print(result_matrix[2])
[-1.3572840767173413, -3.817302564886177, 0.0]
>>> print(result_matrix[3])
[-7.157430454898491, -11.373611474420906, 0.0]
>>> io_ecc_start_2021_02_12_14_19_14 = Epoch(2021, 2, 12.5966898148148)
>>> result_matrix = JupiterMoons.check_phenomena(         io_ecc_start_2021_02_12_14_19_14)
>>> print([round(result_matrix[0][0], 10), round(result_matrix[0][         1], 10), round(result_matrix[0][2], 10)])
[1.192605868, 0.8560277162, 0.0]
>>> print([round(result_matrix[1][0], 10), round(result_matrix[1][         1], 10), round(result_matrix[1][2], 10)])
[-8.7397202369, -8.8930940921, 0.0]
>>> print([round(result_matrix[2][0], 10), round(result_matrix[2][         1], 10), round(result_matrix[2][2], 10)])
[14.0691219925, 13.8323491768, 0.0]
>>> print([round(result_matrix[3][0], 10), round(result_matrix[3][         1], 10), round(result_matrix[3][2], 10)])
[-2.9341209156, -3.9904598153, 0.0]
static correct_rectangular_positions(R, i_sat, DELTA, X_coordinate, Y_coordinate=0, Z_coordinate=0)[source]

This method corrects the given rectangular coordinates of a Jupiter satellite in order to obtain higher accuracy by considering differential light-time and the perspective effect.

Parameters:
  • R (float) – Radius vector of the satellite
  • i_sat (int) – Number of the satellite
  • DELTA (float) – Distance Observer-Jupiter in AU
  • X_coordinate (float, tuple, list) – Uncorrected X-coordinate of the satellite in Jupiter’s radii or tuple for all coordinates
  • Y_coordinate (float) – Uncorrected Y-coordinate of the satellite in Jupiter’s radii
  • Z_coordinate (float) – Uncorrected Z-coordinate of the satellite in Jupiter’s radii
Returns:

A tuple with the corrected rectangular coordinates (X, Y, Z) of the satellite in Jupiter’s radii

Return type:

tuple

Raises:

TypeError if input values are wrong type

Calculate corrected rectangular Coordinates X, Y and Z in Jupiter’s radii for Io (1)

>>> R = 5.929892730360271
>>> i_sat = 1
>>> DELTA = 5.6611211815432645
>>> X_coordinate = -3.4489935969836503
>>> Y_coordinate = 0.21361563816963675
>>> Z_coordinate = -4.818966623735296
>>> io = JupiterMoons.correct_rectangular_positions(R, i_sat, DELTA,         X_coordinate, Y_coordinate, Z_coordinate)
>>> print(io)
(-3.450168811390241, 0.21370246960509387, -4.818966623735296)
static is_phenomena(epoch)[source]

This method checks if the given coordinates correspond with any satellite phenomena. It returns the type of phenomena for all satellites.

Parameters:epoch (:py:class:'Epoch') – Epoch the calculations should be made for
Returns:Result matrix for the four Galilean satellites Row 0: Io Column 0: Occultation Row 1: Europa Column 1: Eclipse Row 2: Ganymede Column 2: No use Row 3: Callisto
Return type:tuple
Raises:TypeError if input values are wrong type

Calculation of result matrix for December 16 at 0h UTC

>>> utc_1992_12_16_00_00_00 = Epoch(1992, 12, 16, utc=True)
>>> result_matrix = JupiterMoons.is_phenomena(utc_1992_12_16_00_00_00)
>>> print(result_matrix[0])
[False, False, False]
>>> print(result_matrix[1])
[False, False, False]
>>> print(result_matrix[2])
[False, False, False]
>>> print(result_matrix[3])
[False, False, False]
>>> io_ecc_start_2021_02_12_14_19_14 = Epoch(2021, 2, 12.5966898148148)
>>> result_matrix = JupiterMoons.is_phenomena(         io_ecc_start_2021_02_12_14_19_14)
>>> print(result_matrix[0])
[False, True, False]
>>> print(result_matrix[1])
[False, False, False]
>>> print(result_matrix[2])
[False, False, False]
>>> print(result_matrix[3])
[False, False, False]
static jupiter_system_angles(epoch)[source]

This method computes the ascending node of Jupiter as well as the node of the equator of Jupiter on the ecliptic (psi).

Parameters:epoch (Epoch) – Epoch to compute satellites’ positions, as an Epoch object
Returns:Two float values with the ascending node of Jupiter and psi
Return type:(float, float)
>>> utc_1992_12_16_00_00_00 = Epoch(1992, 12, 16, utc=True)
>>> psi_corrected, OMEGA_ascending_node_jupiter =         JupiterMoons.jupiter_system_angles(utc_1992_12_16_00_00_00)
>>> print(round(psi_corrected, 9))
317.105800921
>>> print(round(OMEGA_ascending_node_jupiter, 9))
100.39249943
static rectangular_positions_jovian_equatorial(epoch, tofk5=True, solar=False, do_correction=True)[source]

This method computes the rectangular geocentric position of Jupiter’s satellites for a given epoch, using the E5-theory.

Parameters:
  • epoch (Epoch) – Epoch to compute satellites’ positions, as an Epoch object
  • tofk5 (bool) – Whether or not the small correction to convert to the FK5 system will be applied or not
  • solar (bool) – Whether the satellites’ positions are observed from the Earth (False) or the Sun (True)
  • do_correction (bool) – Whether the satellites’ positions is corrected for the effect of different light-time and perspective effect or not
Returns:

Four tuple with the rectangular X, Y and Z coordinates in Jupiter radii (float), where Z is positive if the satellite is more distant than Jupiter.

Return type:

tuple

Raises:

TypeError if input values are of wrong type.

>>> utc_1992_12_16_00_00_00 = Epoch(1992, 12, 16, utc=True)
>>> io, europa, ganymede, callisto =         JupiterMoons.rectangular_positions_jovian_equatorial(         utc_1992_12_16_00_00_00)
>>> print(io)
(-3.450168811390241, 0.21370246960509387, -4.818966623735296)
>>> print(europa)
(7.441869121153001, 0.27524463479625677, -5.747104399729193)
>>> print(ganymede)
(1.201111684800708, 0.5899903274317162, -14.940581367576527)
>>> print(callisto)
(7.072022641384802, 1.0289678450543338, -25.224420329457175)