JupiterMoons — PyMeeus 0.5.12 documentation

# JupiterMoons

Class to model JupiterMoons.

class pymeeus.JupiterMoons.JupiterMoons

  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)

    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)

    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)

    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)

    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)

    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)

    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)

    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)

    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)

    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)

    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)