Пример #1
0
    def get_eclipse_duration(self, when_utc=None, tolerance=1e-1):
        """Gets eclipse duration at given time, in minutes"""
        ecc = self.get_position(when_utc).osculating_elements[1]
        if ecc > tolerance:
            raise NotImplementedError("Non circular orbits are not supported")

        beta = self.get_beta(when_utc)
        return eclipse_duration(beta, self.period)
Пример #2
0
def test_get_eclipse_duration_changes_for_non_sun_synchronous_satellite(
        non_sun_synchronous):
    dt1 = dt.datetime(2020, 2, 1, 0, 0, 0)
    dt2 = dt.datetime(2020, 2, 15, 0, 0, 0)

    maximum_eclipse_duration = eclipse_duration(0, non_sun_synchronous.period)

    eclipse_duration1 = non_sun_synchronous.get_eclipse_duration(dt1)
    eclipse_duration2 = non_sun_synchronous.get_eclipse_duration(dt2)

    assert eclipse_duration1 <= maximum_eclipse_duration
    assert eclipse_duration2 <= maximum_eclipse_duration
    assert abs(eclipse_duration1 - eclipse_duration2) > 1  # minutes
Пример #3
0
def test_eclipse_duration_dwarf_planet_always_0(beta, period):
    expected_eclipse_duration = 0
    eclipse_duration_value = eclipse_duration(beta, period, r_p=0)

    assert eclipse_duration_value == expected_eclipse_duration
Пример #4
0
def test_eclipse_duration_beta_90_is_0(beta, period):
    expected_eclipse_duration = 0
    eclipse_duration_value = eclipse_duration(beta, period)

    assert eclipse_duration_value == expected_eclipse_duration
Пример #5
0
def test_eclipse_duration_is_maximum_at_beta_0(beta, period):
    ref_eclipse_duration = eclipse_duration(0, period)

    assert beta != 0
    assert eclipse_duration(beta, period) < ref_eclipse_duration