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)
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)