Esempio n. 1
0
    def set_tropical_date_sunset(self, previous_day_panchaanga=None):
        month_transition_jd = None
        if previous_day_panchaanga is not None:
            tropical_date_sunset_day = previous_day_panchaanga.tropical_date_sunset.day + 1
            tropical_date_sunset_month = previous_day_panchaanga.tropical_date_sunset.month

        if previous_day_panchaanga is None or previous_day_panchaanga.tropical_date_sunset.day > 28:
            nd = zodiac.NakshatraDivision(
                jd=self.jd_sunset, ayanaamsha_id=Ayanamsha.ASHVINI_STARTING_0)
            fractional_month = nd.get_fractional_division_for_body(
                body=Graha.singleton(Graha.SUN), anga_type=AngaType.RASHI)
            (month_fraction, _) = modf(fractional_month)
            approx_day = month_fraction * 30
            month_transitions = Graha.singleton(Graha.SUN).get_transits(
                jd_start=self.jd_sunset - approx_day - 5,
                jd_end=self.jd_sunset + 4,
                anga_type=AngaType.RASHI,
                ayanaamsha_id=Ayanamsha.ASHVINI_STARTING_0)
            if month_transitions[
                    -1].jd > self.jd_previous_sunset and month_transitions[
                        -1].jd <= self.jd_sunset:
                tropical_date_sunset_day = 1
                tropical_date_sunset_month = month_transitions[-1].value_2
                month_transition_jd = month_transitions[-1].jd
            else:
                tropical_date_sunset_day = len(
                    self.city.get_sunsets_in_period(
                        jd_start=month_transitions[0].jd,
                        jd_end=self.jd_sunset + 1 / 48.0))
                tropical_date_sunset_month = month_transitions[0].value_2
        self.tropical_date_sunset = time.BasicDateWithTransitions(
            month=tropical_date_sunset_month,
            day=tropical_date_sunset_day,
            month_transition=month_transition_jd)
Esempio n. 2
0
    def compute_solar_day_sunset(self, previous_day_panchaanga=None):
        """Compute the solar month and day for a given Julian day at sunset.
    """
        # If solar transition happens before the current sunset but after the previous sunset, then that is taken to be solar day 1.
        self.compute_sun_moon_transitions(
            previous_day_panchaanga=previous_day_panchaanga)
        solar_month_sunset = NakshatraDivision(
            jd=self.jd_sunset,
            ayanaamsha_id=self.computation_system.ayanaamsha_id).get_anga(
                anga_type=AngaType.SIDEREAL_MONTH)

        solar_sidereal_month_end_jd = None
        if previous_day_panchaanga is None or previous_day_panchaanga.solar_sidereal_date_sunset.day > 28:
            anga_finder = zodiac.AngaSpanFinder.get_cached(
                ayanaamsha_id=self.computation_system.ayanaamsha_id,
                anga_type=AngaType.SIDEREAL_MONTH)
            solar_month_sunset_span = anga_finder.find(
                jd1=self.jd_sunset - 32,
                jd2=self.jd_sunset + 5,
                target_anga_id=solar_month_sunset)
            solar_sidereal_month_day_sunset = len(
                self.city.get_sunsets_in_period(
                    jd_start=solar_month_sunset_span.jd_start,
                    jd_end=self.jd_sunset + 1 / 48.0))
            if solar_sidereal_month_day_sunset == 1 and solar_month_sunset_span.jd_start > self.jd_sunrise:
                solar_sidereal_month_end_jd = solar_month_sunset_span.jd_start
            elif solar_sidereal_month_day_sunset == 30 and solar_month_sunset_span.jd_end < self.jd_next_sunrise:
                solar_sidereal_month_end_jd = solar_month_sunset_span.jd_end
        else:
            solar_sidereal_month_day_sunset = previous_day_panchaanga.solar_sidereal_date_sunset.day + 1
        from jyotisha.panchaanga.temporal import time
        self.solar_sidereal_date_sunset = time.BasicDateWithTransitions(
            month=solar_month_sunset.index,
            day=solar_sidereal_month_day_sunset,
            month_transition=solar_sidereal_month_end_jd)