Skip to content

Commit f7720c0

Browse files
committed
Add the Yereim's bain hashmashos
13.5, 16.875 and 18 minute variants, along with computed degree based offsets.
1 parent 82fa915 commit f7720c0

File tree

1 file changed

+155
-15
lines changed

1 file changed

+155
-15
lines changed

src/main/java/com/kosherjava/zmanim/ComplexZmanimCalendar.java

Lines changed: 155 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,36 @@ public class ComplexZmanimCalendar extends ZmanimCalendar {
375375
* @see #getTzaisGeonim9Point75Degrees()
376376
*/
377377
protected static final double ZENITH_9_POINT_75 = GEOMETRIC_ZENITH + 9.75;
378+
379+
/**
380+
* The zenith of 2.03° above {@link #GEOMETRIC_ZENITH geometric zenith} (90°). This calculation is used for
381+
* calculating the start of <em>bain hashmashos</em> (twilight) of 13.5 minutes before sunset converted to degrees
382+
* according to the Yereim. As is traditional with degrees below the horizon, this is calculated without refraction
383+
* and from the center of the sun. It would be 0.833&deg; less without this.
384+
*
385+
* @see #getBainHasmashosYereim2Point03Degrees()
386+
*/
387+
protected static final double ZENITH_MINUS_2_POINT_03 = GEOMETRIC_ZENITH - 2.03;
388+
389+
/**
390+
* The zenith of 2.75&deg; above {@link #GEOMETRIC_ZENITH geometric zenith} (90&deg;). This calculation is used for
391+
* calculating the start of <em>bain hashmashos</em> (twilight) of 16.875 minutes before sunset converted to degrees
392+
* according to the Yereim. As is traditional with degrees below the horizon, this is calculated without refraction
393+
* and from the center of the sun. It would be 0.833&deg; less without this.
394+
*
395+
* @see #getBainHasmashosYereim2Point75Degrees()
396+
*/
397+
protected static final double ZENITH_MINUS_2_POINT_75 = GEOMETRIC_ZENITH - 2.75;
398+
399+
/**
400+
* The zenith of 2.99&deg; above {@link #GEOMETRIC_ZENITH geometric zenith} (90&deg;). This calculation is used for
401+
* calculating the start of <em>bain hashmashos</em> (twilight) of 18 minutes before sunset converted to degrees
402+
* according to the Yereim. As is traditional with degrees below the horizon, this is calculated without refraction
403+
* and from the center of the sun. It would be 0.833&deg; less without this.
404+
*
405+
* @see #getBainHasmashosYereim2Point99Degrees()
406+
*/
407+
protected static final double ZENITH_MINUS_2_POINT_99 = GEOMETRIC_ZENITH - 2.99;
378408

379409
/**
380410
* The offset in minutes (defaults to 40) after sunset used for <em>tzeit</em> for Ateret Torah calculations.
@@ -1912,13 +1942,13 @@ public Date getPlagAlos16Point1ToTzaisGeonim7Point083Degrees() {
19121942
}
19131943

19141944
/**
1915-
* Method to return <em>Bain Hashmashos</em> of <em>Rabbeinu Tam</em> calculated when the sun is
1945+
* Method to return the beginning of <em>bain hashmashos</em> of <em>Rabbeinu Tam</em> calculated when the sun is
19161946
* {@link #ZENITH_13_POINT_24 13.24&deg;} below the western {@link #GEOMETRIC_ZENITH geometric horizon} (90&deg;)
19171947
* after sunset. This calculation is based on the same calculation of {@link #getBainHasmashosRT58Point5Minutes()
1918-
* Bain Hashmashos Rabbeinu Tam 58.5 minutes} but uses a degree based calculation instead of 58.5 exact minutes. This
1919-
* calculation is based on the position of the sun 58.5 minutes after sunset in Jerusalem during the equinox (on
1920-
* March 16, about 4 days before the astronomical equinox, the day that a solar hour is 60 minutes) which calculates
1921-
* to 13.24&deg; below {@link #GEOMETRIC_ZENITH geometric zenith}.
1948+
* <em>bain hashmashos</em> Rabbeinu Tam 58.5 minutes} but uses a degree based calculation instead of 58.5 exact
1949+
* minutes. This calculation is based on the position of the sun 58.5 minutes after sunset in Jerusalem during the
1950+
* equinox (on March 16, about 4 days before the astronomical equinox, the day that a solar hour is 60 minutes)
1951+
* which calculates to 13.24&deg; below {@link #GEOMETRIC_ZENITH geometric zenith}.
19221952
* NOTE: As per Yisrael Vehazmanim Vol. III page 1028 No 50, a dip of slightly less than 13&deg; should be used.
19231953
* Calculations show that the proper dip to be 13.2456&deg; (truncated to 13.24 that provides about 1.5 second
19241954
* earlier (<em>lechumra</em>) time) below the horizon at that time. This makes a difference of 1 minute and 10
@@ -1939,9 +1969,9 @@ public Date getBainHasmashosRT13Point24Degrees() {
19391969
}
19401970

19411971
/**
1942-
* This method returns <em>Bain Hashmashos</em> of <em>Rabbeinu Tam</em> calculated as a 58.5 minute offset after
1943-
* sunset. <em>Bain hashmashos</em> is 3/4 of a <em>Mil</em> before <em>tzais</em> or 3 1/4 <em>Mil</em> after
1944-
* sunset. With a <em>Mil</em> calculated as 18 minutes, 3.25 * 18 = 58.5 minutes.
1972+
* This method returns the beginning of <em>Bain hashmashos</em> of <em>Rabbeinu Tam</em> calculated as a 58.5
1973+
* minute offset after sunset. <em>bain hashmashos</em> is 3/4 of a <em>Mil</em> before <em>tzais</em> or 3 1/4
1974+
* <em>Mil</em> after sunset. With a <em>Mil</em> calculated as 18 minutes, 3.25 * 18 = 58.5 minutes.
19451975
*
19461976
* @return the <code>Date</code> of 58.5 minutes after sunset. If the calculation can't be computed such as in the
19471977
* Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does
@@ -1954,8 +1984,8 @@ public Date getBainHasmashosRT58Point5Minutes() {
19541984
}
19551985

19561986
/**
1957-
* This method returns the time of <em>bain hashmashos</em> based on the calculation of 13.5 minutes (3/4 of an 18
1958-
* minute <em>Mil</em> before shkiah calculated as {@link #getTzaisGeonim7Point083Degrees() 7.083&deg;}.
1987+
* This method returns the beginning of <em>bain hashmashos</em> based on the calculation of 13.5 minutes (3/4 of an
1988+
* 18 minute <em>Mil</em>) before <em>shkiah</em> calculated as {@link #getTzaisGeonim7Point083Degrees() 7.083&deg;}.
19591989
*
19601990
* @return the <code>Date</code> of the <em>bain hashmashos</em> of <em>Rabbeinu Tam</em> in this calculation. If the
19611991
* calculation can't be computed such as northern and southern locations even south of the Arctic Circle and
@@ -1969,10 +1999,10 @@ public Date getBainHasmashosRT13Point5MinutesBefore7Point083Degrees() {
19691999
}
19702000

19712001
/**
1972-
* This method returns <em>bain hashmashos</em> of <em>Rabbeinu Tam</em> calculated according to the opinion of the
1973-
* <em>Divrei Yosef</em> (see Yisrael Vehazmanim) calculated 5/18th (27.77%) of the time between <em>alos</em>
1974-
* (calculated as 19.8&deg; before sunrise) and sunrise. This is added to sunset to arrive at the time for
1975-
* <em>bain hashmashos</em> of <em>Rabbeinu Tam</em>).
2002+
* This method returns the beginning of <em>bain hashmashos</em> of <em>Rabbeinu Tam</em> calculated according to the
2003+
* opinion of the <em>Divrei Yosef</em> (see Yisrael Vehazmanim) calculated 5/18th (27.77%) of the time between
2004+
* <em>alos</em> (calculated as 19.8&deg; before sunrise) and sunrise. This is added to sunset to arrive at the time
2005+
* for <em>bain hashmashos</em> of <em>Rabbeinu Tam</em>).
19762006
*
19772007
* @return the <code>Date</code> of <em>bain hashmashos</em> of <em>Rabbeinu Tam</em> for this calculation. If the
19782008
* calculation can't be computed such as northern and southern locations even south of the Arctic Circle and
@@ -1989,7 +2019,117 @@ public Date getBainHasmashosRT2Stars() {
19892019

19902020
return getTimeOffset(getElevationAdjustedSunset(), (sunrise.getTime() - alos19Point8.getTime()) * (5 / 18d));
19912021
}
1992-
2022+
2023+
/**
2024+
* This method returns the beginning of <em>bain hashmashos</em> (twilight) according to the <a href=
2025+
* "https://en.wikipedia.org/wiki/Eliezer_ben_Samuel">Yereim (Rabbi Eliezer of Metz)</a> calculated as 18 minutes
2026+
* or 3/4 of a 24 minute <em>Mil</em> before sunset. According to the Yereim, <em>bain hashmashos</em> starts 3/4
2027+
* of a <em>Mil</em> before sunset and <em>tzais</em> or nightfall starts at sunset.
2028+
*
2029+
* @return the <code>Date</code> of 18 minutes before sunset. If the calculation can't be computed such as in the
2030+
* Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does
2031+
* not set, a null will be returned. See detailed explanation on top of the {@link AstronomicalCalendar}
2032+
* documentation.
2033+
* @see #getBainHasmashosYereim2Point99Degrees()
2034+
*/
2035+
public Date getBainHasmashosYereim18Minutes() {
2036+
return getTimeOffset(getElevationAdjustedSunset(), -18 * MINUTE_MILLIS);
2037+
}
2038+
2039+
/**
2040+
* This method returns the beginning of <em>hain hashmashos</em> (twilight) according to the <a href=
2041+
* "https://en.wikipedia.org/wiki/Eliezer_ben_Samuel">Yereim (Rabbi Eliezer of Metz)</a> calculated as the sun's
2042+
* position 2.99&deg; above the horizon during the equinox (on March 16, about 4 days before the astronomical
2043+
* equinox, the day that a solar hour is 60 minutes) in Yerushalayim, its position 18 minutes or 3/4 of an 24
2044+
* minute <em>Mil</em> before sunset. According to the Yereim, bain hashmashos starts 3/4 of a <em>Mil</em> before
2045+
* sunset and <em>tzais</em> or nightfall starts at sunset.
2046+
*
2047+
* @return the <code>Date</code> of the sun's position 2.99&deg; minutes before sunset. If the calculation can't
2048+
* be computed such as in the Arctic Circle where there is at least one day a year where the sun does not
2049+
* rise, and one where it does not set, a null will be returned. See detailed explanation on top of the
2050+
* {@link AstronomicalCalendar} documentation.
2051+
*
2052+
* @see #ZENITH_MINUS_2_POINT_99
2053+
* @see #getBainHasmashosYereim18Minutes()
2054+
*/
2055+
public Date getBainHasmashosYereim2Point99Degrees() {
2056+
return getSunsetOffsetByDegrees(ZENITH_MINUS_2_POINT_99);
2057+
}
2058+
2059+
/**
2060+
* This method returns the beginning of <em>bain hashmashos</em> (twilight) according to the <a href=
2061+
* "https://en.wikipedia.org/wiki/Eliezer_ben_Samuel">Yereim (Rabbi Eliezer of Metz)</a> calculated as 16.875
2062+
* minutes or 3/4 of a 22.5 minute <em>Mil</em> before sunset. According to the Yereim, bain hashmashos starts 3/4 of a
2063+
* <em>Mil</em> before sunset and <em>tzais</em> or nightfall starts at sunset.
2064+
*
2065+
* @return the <code>Date</code> of 16.875 minutes before sunset. If the calculation can't be computed such as in the
2066+
* Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does
2067+
* not set, a null will be returned. See detailed explanation on top of the {@link AstronomicalCalendar}
2068+
* documentation.
2069+
*
2070+
* @see #getBainHasmashosYereim2Point75Degrees()
2071+
*/
2072+
public Date getBainHasmashosYereim16Point875Minutes() {
2073+
return getTimeOffset(getElevationAdjustedSunset(), -16.875 * MINUTE_MILLIS);
2074+
}
2075+
2076+
/**
2077+
* This method returns the beginning of <em>bain hashmashos</em> (twilight) according to the <a href=
2078+
* "https://en.wikipedia.org/wiki/Eliezer_ben_Samuel">Yereim (Rabbi Eliezer of Metz)</a> calculated as the sun's
2079+
* position 2.75&deg; above the horizon during the equinox (on March 16, about 4 days before the astronomical
2080+
* equinox, the day that a solar hour is 60 minutes) in Yerushalayim, its position 16.875 minutes or 3/4 of an 18
2081+
* minute <em>Mil</em> before sunset. According to the Yereim, bain hashmashos starts 3/4 of a <em>Mil</em> before
2082+
* sunset and <em>tzais</em> or nightfall starts at sunset.
2083+
*
2084+
* @return the <code>Date</code> of the sun's position 2.75&deg; minutes before sunset. If the calculation can't
2085+
* be computed such as in the Arctic Circle where there is at least one day a year where the sun does not
2086+
* rise, and one where it does not set, a null will be returned. See detailed explanation on top of the
2087+
* {@link AstronomicalCalendar} documentation.
2088+
*
2089+
* @see #ZENITH_MINUS_2_POINT_75
2090+
* @see #getBainHasmashosYereim16Point875Minutes()
2091+
*/
2092+
public Date getBainHasmashosYereim2Point75Degrees() {
2093+
return getSunsetOffsetByDegrees(ZENITH_MINUS_2_POINT_75);
2094+
}
2095+
2096+
/**
2097+
* This method returns the beginning of <em>bain hashmashos</em> (twilight) according to the <a href=
2098+
* "https://en.wikipedia.org/wiki/Eliezer_ben_Samuel">Yereim (Rabbi Eliezer of Metz)</a> calculated as 13.5 minutes
2099+
* or 3/4 of an 18 minute <em>Mil</em> before sunset. According to the Yereim, bain hashmashos starts 3/4 of a
2100+
* <em>Mil</em> before sunset and <em>tzais</em> or nightfall starts at sunset.
2101+
*
2102+
* @return the <code>Date</code> of 13.5 minutes before sunset. If the calculation can't be computed such as in the
2103+
* Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does
2104+
* not set, a null will be returned. See detailed explanation on top of the {@link AstronomicalCalendar}
2105+
* documentation.
2106+
*
2107+
* @see #getBainHasmashosYereim2Point03Degrees()
2108+
*/
2109+
public Date getBainHasmashosYereim13Point5Minutes() {
2110+
return getTimeOffset(getElevationAdjustedSunset(), -13.5 * MINUTE_MILLIS);
2111+
}
2112+
2113+
/**
2114+
* This method returns the beginning of <em>bain hashmashos</em> according to the <a href=
2115+
* "https://en.wikipedia.org/wiki/Eliezer_ben_Samuel">Yereim (Rabbi Eliezer of Metz)</a> calculated as the sun's
2116+
* position 2.03&deg; above the horizon during the equinox (on March 16, about 4 days before the astronomical
2117+
* equinox, the day that a solar hour is 60 minutes) in Yerushalayim, its position 13.5 minutes or 3/4 of an 18
2118+
* minute <em>Mil</em> before sunset. According to the Yereim, bain hashmashos starts 3/4 of a <em>Mil</em> before
2119+
* sunset and <em>tzais</em> or nightfall starts at sunset.
2120+
*
2121+
* @return the <code>Date</code> of the sun's position 2.03&deg; minutes before sunset. If the calculation can't
2122+
* be computed such as in the Arctic Circle where there is at least one day a year where the sun does not
2123+
* rise, and one where it does not set, a null will be returned. See detailed explanation on top of the
2124+
* {@link AstronomicalCalendar} documentation.
2125+
*
2126+
* @see #ZENITH_MINUS_2_POINT_03
2127+
* @see #getBainHasmashosYereim13Point5Minutes()
2128+
*/
2129+
public Date getBainHasmashosYereim2Point03Degrees() {
2130+
return getSunsetOffsetByDegrees(ZENITH_MINUS_2_POINT_03);
2131+
}
2132+
19932133
/**
19942134
* This method returns the <em>tzais</em> (nightfall) based on the opinion of the <em>Geonim</em> calculated at the
19952135
* sun's position at {@link #ZENITH_3_POINT_7 3.7&deg;} below the western horizon.

0 commit comments

Comments
 (0)