Wednesday, September 28, 2005

CALCULATING SUNRISE...

Eric the dismissed said...

So Jim, I was wondering… can humanity determine the exact time the sun rises and sets in any day of the year and from any location on our feeble planet? And if so HOW? Would a “volvelle” be used?


Ahhh. Mr. Dismissed, I knew I could count on you for a good question and though I suspect that you could answer this question better than I, for the sake of our readers, I’ll give it a try.

The answer, of course is yes, no, and “a what?”

Yes, humanity can determine the exact time the sun rises and sets in any day of the year and from any location on our feeble planet? There is a long set of calculations that will give you the sunrise and sunset for any place on earth. Back in the early ‘90s, when you bought a computer, but not software, it was common to have to type in your own program, save it to tape, and then load it into the memory of your Commodore 64. Sky & Telescope magazine had a monthly column where people would send in generic BASIC programs that could be adapted to most computers of the time. One of those programs was SUNUP.BAS which calculated sunrise and sunset. I reduced that program to the bare bones to illustrate the complexity of the calculations:

10 ' Sunrise-Sunset
300 ' Constants
310 DIM A(2),D(2)
320 P1=3.14159265: P2=2*P1
330 DR=P1/180: K1=15*DR*1.0027379
340 S$="Sunset at "
350 R$="Sunrise at "
360 M1$="No sunrise this date"
370 M2$="No sunset this date"
380 M3$="Sun down all day"
390 M4$="Sun up all day"
30 INPUT "Lat, Long (deg)";B5,L5
40 INPUT "Time zone (hrs)";H
50 L5=L5/360: Z0=H/24
60 GOSUB 1170
1170 ' Calendar --> JD
1180 INPUT "Year, Month, Day";Y,M,D
1190 G=1: IF Y<1583 THEN G=0
1200 D1=INT(D): F=D-D1-.5
1210 J=-INT(7*(INT((M+9)/12)+Y)/4)
1220 IF G=0 THEN 1260
1230 S=SGN(M-9): A=ABS(M-9)
1240 J3=INT(Y+S*INT(A/7))
1250 J3=-INT((INT(J3/100)+1)*3/4)
1260 J=J+INT(275*M/9)+D1+G*J3
1270 J=J+1721027+2*G+367*Y
1280 IF F>=0 THEN 1300
1290 F=F+1: J=J-1
61: T=(J-2451545)+F
70 TT=T/36525+1: ' TT = centuries
80 ' from 1900.0
410 ' LST at 0h zone time
420 T0=T/36525
430 S=24110.5+8640184.813*T0
440 S=S+86636.6*Z0+86400*L5
450 S=S/86400: S=S-INT(S)
460 T0=S*360*DR
470 RETURN
91 T=T+Z0
110 ' Get Sun's Position
910 ' Fundamental arguments
920 ' (Van Flandern &
930 ' Pulkkinen, 1979)
940 L=.779072+.00273790931*T
950 G=.993126+.0027377785*T
960 L=L-INT(L): G=G-INT(G)
970 L=L*P2: G=G*P2
980 V=.39785*SIN(L)
990 V=V-.01000*SIN(L-G)
1000 V=V+.00333*SIN(L+G)
1010 V=V-.00021*TT*SIN(L)
1020 U=1-.03349*COS(G)
1030 U=U-.00014*COS(2*L)
1040 U=U+.00008*COS(L)
1050 W=-.00010-.04129*SIN(2*L)
1060 W=W+.03211*SIN(G)
1070 W=W+.00104*SIN(2*L-G)
1080 W=W-.00035*SIN(2*L+G)
1090 W=W-.00008*TT*SIN(G)
1110 ' Compute Sun's RA and Dec
1120 S=W/SQR(U-V*V)
1130 A5=L+ATN(S/SQR(1-S*S))
1140 S=V/SQR(U):D5=ATN(S/SQR(1-S*S))
1150 R5=1.00021*SQR(U)
1160 RETURN
121 A(1)=A5: D(1)=D5
130 T=T+1
140 GOSUB 910: A(2)=A5: D(2)=D5
150 IF A(2) < A(1) THEN A(2)=A(2)+P2
160 Z1=DR*90.833: ' Zenith dist.
170 S=SIN(B5*DR): C=COS(B5*DR)
180 Z=COS(Z1): M8=0: W8=0: PRINT
190 A0=A(1): D0=D(1)
200 DA=A(2)-A(1): DD=D(2)-D(1)
210 FOR C0=0 TO 23
220 P=(C0+1)/24
230 A2=A(1)+P*DA: D2=D(1)+P*DD
240 GOSUB 490
490 ' Test an hour for an event
500 L0=T0+C0*K1: L2=L0+K1
510 H0=L0-A0: H2=L2-A2
520 H1=(H2+H0)/2: ' Hour angle,
530 D1=(D2+D0)/2: ' declination,
540 ' at half hour
550 IF C0>0 THEN 570
560 V0=S*SIN(D0)+C*COS(D0)*COS(H0)-Z
570 V2=S*SIN(D2)+C*COS(D2)*COS(H2)-Z
580 IF SGN(V0)=SGN(V2) THEN 800
590 V1=S*SIN(D1)+C*COS(D1)*COS(H1)-Z
600 A=2*V2-4*V1+2*V0: B=4*V1-3*V0-V2
610 D=B*B-4*A*V0: IF D<0 THEN 800
620 D=SQR(D)
630 IF V0<0 AND V2>0 THEN PRINT R$;
640 IF V0<0 AND V2>0 THEN M8=1
650 IF V0>0 AND V2<0 THEN PRINT S$;
660 IF V0>0 AND V2<0 THEN W8=1
670 E=(-B+D)/(2*A)
680 IF E>1 OR E<0 THEN E=(-B-D)/(2*A)
690 T3=C0+E+1/120: ' Round off
700 H3=INT(T3): M3=INT((T3-H3)*60)
710 PRINT USING "##:##";H3;M3;
720 H7=H0+E*(H2-H0)
730 N7=-COS(D1)*SIN(H7)
740 D7=C*SIN(D1)-S*COS(D1)*COS(H7)
750 AZ=ATN(N7/D7)/DR
760 IF D7<0 THEN AZ=AZ+180
770 IF AZ<0 THEN AZ=AZ+360
780 IF AZ>360 THEN AZ=AZ-360
790 PRINT USING ", azimuth ###.#";AZ
800 RETURN
820 ' Special-message routine
830 IF M8=0 AND W8=0 THEN 870
840 IF M8=0 THEN PRINT M1$
850 IF W8=0 THEN PRINT M2$
860 GOTO 890
870 IF V2<0 THEN PRINT M3$
880 IF V2>0 THEN PRINT M4$
890 RETURN
250 A0=A2: D0=D2: V0=V2
260 NEXT
270 GOSUB 820: ' Special msg?
280 END

Now I don’t expect many people to understand that program, again, I only use it to illustrate how long the computation is. This is just the simplest of programs. You input your latitude, longitude, year, month, and day, and it will calculate sunrise and sunset (at, I believe, local standard time).

So the answer is yes, and that is how it is done.

But, the answer is actually no. And this is why. According to the U.S. Naval Observatory...

“The times of rise and set phenomena cannot be precisely computed, because, in practice, the actual times depend on unpredictable atmospheric conditions that affect the amount of refraction at the horizon. Thus, even under ideal conditions (e.g., a clear sky at sea) the times computed for rise or set may be in error by a minute or more. Local topography (e.g., mountains on the horizon) and the height of the observer can affect the times of rise or set even more. It is not practical to attempt to include such effects in routine rise/set computations.”


And finally “a what?” A “volvelle”? You found a blind spot in Ask Jim’s realm of knowledge. So I did some research and the answer is yes, you could use a volvelle. For those, like myself before today, who don’t know what a volvelle is, it is a “calculation device consisting of concentric moveable circles”.



According to the website World Wide Words:
“The earliest types of volvelles were typically made of parchment or paper, with one or more moveable circles attached to a backboard, often the inside cover of a book. The range of information on them was large. Some were like early slide rules, used to calculate the results of mathematical equations. Others worked out the phases of the moon or times of high and low tide. The volvelles that solved astronomical problems could have as many as six rotatable dials.
Strictly, the term is applied only to such historical calculation devices. In more recent times, related ones (usually now called wheel charts or wheel calculators since volvelle is obsolete) have been used to display or calculate the details of everything from the date when a baby was due, through aircraft recognition and dieting data, to geography facts for school children. These were often given away as advertisements at trade shows or supplied with products. Americans of a certain age might recall the BAC (Blood Alcohol Content) calculators that were distributed in school so you could work out the safe limits for drinking. Even in the age of the computer, they’re by no means obsolete, being handy pocket-sized compendia of useful data for some specialist purposes.
The word is from the medieval Latin verb volvere, to turn.”

And according to the website World of Pop-Ups (You know, paper pop-up books, I don’t know what you were thinking!):

“The first known volvelle was created by Benedictine monk Matthew Paris in 1250. The traditional circular charts that appeared in the abbey's books, used to determine when to observe holidays, were cumbersome since the books were heavy and had to be rotated on the monk's laps. Matthew decided it would be easy if the circular chart spun around instead of the whole book and so the first volvelle was born!”




So there you have it. A good question, and it took us away from baseball and cars for a while!

1 Comments:

At 10:12 AM, Blogger Amy said...

So Jim, when was the first automatic transmission car produced? Who made it? Do you prefer manual or automatic transmission on a car? Why do assholes always ride up on my ass on steep hills?

 

Post a Comment

<< Home