Tides for the HP-41
Overview
1°) "WL"
calculates the water level using the harmonic method.
2°) "TIDE1"
gives the high tides or low tides using 5 tabular values.
3°) "TIDE2"
yields these results more directly.
1°) Water
Level
-The water level may be computed by a trigonometric series: wl(t) = A0 + A1 cos ( V1 - G1 ) + ............ + Ai cos ( Vi - Gi ) + ..........
where A0 = the mean sea level
; Ai and Gi = the harmonic constituents of
a port = constants.
and Vi
are linear combinations of astronomical arguments.
-The following program uses a few terms ( Sa ; Q1 ; O1 ; K1 ; N2 ; M2
; S2 ; MN4 ; M4 ; MS4 )
-Under simplifying assumptions , 11 other terms are calculated ( namely:
P1 ; o1 ; k1 ; 2N2 ; µ2 ; nu2 ; L2 ; K2 ; T2 ; m2 ; k2 )
-The results are good but not very accurate: errors can reach about
20cm.
-More than 100 sinusoidal functions would be needed to achieve full
accuracy
-You can find other harmonic constituents at http://co-ops.nos.noaa.gov/data_retrieve.shtml?input_code=100201001har
-For accurate tide predictions , cf also www.shom.fr
Data Registers: R00 = d = the number of days since 01/01/2000 ( Registers R07 thru R27 are to be initialized before executing "WL" )
R01 thru R06: temp
• R07 thru R27 = the harmonic constituents of the port.
Flags: /
Subroutine: none if you have a Time-Module
"J0" otherwise ( cf "Julian & Gregorian Calendars for the HP-41"
)
-The harmonic constituents of a few ports are listed below: Ai
are given in millimeters and Gi in degrees.
Port Latitude Longitude | A0=R07 | A1=R08 | A2=R09 | A3=R10 | A4=R11 | A5=R12 | A6=R13 | A7=R14 | A8=R15 | A9=R16 | A10=R17 |
Time Scale | / | G1=R18 | G2=R19 | G3=R20 | G4=R21 | G5=R22 | G6=R23 | G7=R24 | G8=R25 | G9=R26 | G10=R27 |
Bombay 18°55'N 72°50'E | 2520 | 43 | 41 | 201 | 425 | 287 | 1227 | 479 | 7 | 35 | 32 |
Time Scale = UT+5h30mn | / | 33 | 58 | 52 | 56 | 327 | 345 | 25 | 296 | 332 | 43 |
Boston 42°21'N 71°02'W | 1490 | 32 | 20 | 111 | 140 | 301 | 1345 | 219 | 0 | 20 | 9 |
Time Scale = UT-5h | / | 131 | 110 | 119 | 132 | 300 | 326 | 356 | 0 | 98 | 118 |
Brest 48°23'N 04°30'W | 4020 | 47 | 20 | 67 | 65 | 415 | 2040 | 746 | 19 | 54 | 34 |
Time Scale = UT+1h | / | 243 | 294 | 342 | 89 | 119 | 138 | 178 | 117 | 164 | 239 |
Colombo 6°57'N 79°51'E | 380 | 95 | 10 | 29 | 73 | 22 | 176 | 119 | 7 | 5 | 3 |
Time Scale = UT+5h30mn | / | 308 | 82 | 59 | 36 | 31 | 50 | 100 | 269 | 169 | 258 |
Dakar 14°40'N 17°25'W | 1010 | 87 | 12 | 38 | 63 | 91 | 461 | 166 | 0 | 10 | 6 |
Time Scale = UT | / | 153 | 194 | 251 | 350 | 235 | 257 | 293 | 0 | 282 | 0 |
Dar Es-Salaam 6°49'S 39°19'E | 1530 | 35 | 22 | 106 | 171 | 191 | 1074 | 536 | 4 | 11 | 7 |
Time Scale = UT+3h | / | 311 | 30 | 43 | 42 | 86 | 111 | 156 | 250 | 316 | 31 |
Djibouti 11°35'N 43°09'E | 1870 | 107 | 38 | 192 | 386 | 126 | 463 | 205 | 0 | 0 | 0 |
Time Scale = UT+3h | / | 6 | 41 | 39 | 39 | 222 | 229 | 250 | 0 | 0 | 0 |
Hong-Kong 22°17'N 114°11'E | 1380 | 100 | 54 | 289 | 359 | 85 | 404 | 162 | 8 | 25 | 17 |
Time Scale = UT+8h | / | 215 | 225 | 249 | 299 | 250 | 268 | 299 | 268 | 333 | 19 |
Libreville 0°23'N 9°26'E | 1290 | 90 | 6 | 17 | 95 | 120 | 595 | 193 | 9 | 28 | 17 |
Time Scale = UT+1h | / | 282 | 126 | 328 | 8 | 140 | 146 | 176 | 34 | 82 | 148 |
Lisbon 38°42'N 09°08'W | 2200 | 20 | 15 | 61 | 68 | 238 | 1150 | 401 | 0 | 77 | 48 |
Time Scale = UT+1h | / | 33 | 277 | 334 | 73 | 89 | 106 | 136 | 0 | 303 | 342 |
Los Angeles 33°43'N 118°16'W | 850 | 65 | 39 | 216 | 339 | 119 | 515 | 203 | 0 | 0 | 0 |
Time Scale = UT-8h | / | 186 | 77 | 81 | 88 | 257 | 275 | 261 | 0 | 0 | 0 |
Madras 13°06'N 80°18'E | 650 | 102 | 1 | 28 | 90 | 72 | 332 | 137 | 1 | 2 | 2 |
Time Scale = UT+5h30mn | / | 221 | 86 | 313 | 341 | 235 | 243 | 279 | 77 | 102 | 179 |
Melbourne 37°52'S 144°55'E | 560 | 0 | 10 | 70 | 90 | 40 | 240 | 60 | 0 | 10 | 0 |
Time Scale = UT+10h | / | 0 | 88 | 96 | 135 | 14 | 64 | 198 | 0 | 95 | 0 |
Miami 25°46'N 80°08'W | 380 | 88 | 6 | 33 | 41 | 84 | 365 | 73 | 0 | 0 | 0 |
Time Scale = UT-5h | / | 199 | 214 | 199 | 170 | 219 | 236 | 255 | 0 | 0 | 0 |
Montevideo 34°55'S 56°13'W | 640 | 53 | 31 | 78 | 23 | 55 | 136 | 38 | 19 | 39 | 13 |
Time Scale = UT-3h | / | 314 | 104 | 139 | 315 | 352 | 30 | 106 | 147 | 181 | 268 |
Nassau 25°05'N 77°21'W | 850 | 95 | 12 | 65 | 87 | 92 | 379 | 64 | 0 | 5 | 0 |
Time Scale = UT-5h | / | 144 | 128 | 132 | 122 | 204 | 223 | 242 | 0 | 85 | 0 |
New-York 40°42'N 74°01'W | 700 | 83 | 13 | 52 | 98 | 143 | 641 | 133 | 0 | 14 | 16 |
Time Scale = UT-5h | / | 134 | 123 | 111 | 107 | 222 | 237 | 258 | 0 | 335 | 308 |
Oslo 59°55'N 10°44'E | 150 | 137 | 8 | 21 | 3 | 32 | 112 | 36 | 0 | 19 | 12 |
Time Scale = UT+1h | / | 185 | 223 | 287 | 222 | 99 | 136 | 97 | 0 | 21 | 117 |
Plymouth (GB) 50°22'N 4°11'W | 3350 | 121 | 16 | 59 | 74 | 316 | 1691 | 603 | 51 | 144 | 95 |
Time Scale = UT | / | 219 | 312 | 341 | 109 | 137 | 154 | 207 | 107 | 135 | 188 |
Port-au-Prince 18°33'N 72°21'W | 180 | 74 | 0 | 41 | 70 | 33 | 145 | 42 | 0 | 0 | 0 |
Time Scale = UT-5h | / | 164 | 0 | 145 | 154 | 242 | 249 | 260 | 0 | 0 | 0 |
Rio de Janeiro 22°53'S 43°10'W | 690 | 27 | 26 | 92 | 62 | 26 | 318 | 179 | 20 | 48 | 31 |
Time Scale = UT-3h | / | 21 | 110 | 104 | 144 | 174 | 93 | 88 | 224 | 96 | 186 |
Rotterdam 51°55'N 4°30'E | 940 | 90 | 40 | 80 | 60 | 90 | 660 | 140 | 0 | 110 | 70 |
Time Scale = UT+1h | / | 315 | 170 | 221 | 32 | 137 | 153 | 213 | 0 | 245 | 301 |
San Francisco 37°48'N 122°27'W | 910 | 30 | 40 | 230 | 369 | 116 | 543 | 123 | 0 | 23 | 9 |
Time Scale = UT-8h | / | 199 | 97 | 99 | 108 | 320 | 343 | 339 | 0 | 50 | 47 |
Singapore 1°16'N 103°51'E | 1600 | 131 | 61 | 283 | 294 | 143 | 796 | 326 | 6 | 15 | 19 |
Time Scale = UT+8h | / | 281 | 25 | 64 | 117 | 306 | 326 | 21 | 333 | 298 | 348 |
Seattle 47°36'N 122°20'W | 2010 | 74 | 75 | 458 | 831 | 212 | 1060 | 258 | 0 | 21 | 10 |
Time Scale = UT-8h | / | 289 | 143 | 144 | 157 | 113 | 140 | 158 | 0 | 92 | 120 |
Sydney (Aus) 33°51'S 151°14'E | 910 | 33 | 25 | 96 | 147 | 111 | 518 | 131 | 1 | 4 | 3 |
Time Scale = UT+10h | / | 61 | 54 | 82 | 121 | 222 | 239 | 264 | 132 | 149 | 149 |
Ushuaia 54°49'S 68°13'W | 1100 | 45 | 34 | 155 | 199 | 148 | 560 | 64 | 6 | 16 | 8 |
Time Scale = UT-3h | / | 66 | 349 | 13 | 59 | 114 | 154 | 163 | 299 | 346 | 67 |
Valparaiso 33°02'S 71°38'W | 910 | 36 | 20 | 102 | 159 | 96 | 441 | 146 | 0 | 0 | 0 |
Time Scale = UT-4h | / | 4 | 268 | 301 | 341 | 275 | 305 | 323 | 0 | 0 | 0 |
Vancouver 49°17'N 123°07'W | 3060 | 0 | 89 | 470 | 860 | 179 | 940 | 230 | 0 | 0 | 0 |
Time Scale = UT-8h | / | 0 | 134 | 154 | 169 | 144 | 164 | 186 | 0 | 0 | 0 |
Vera Cruz 19°11'N 96°07'W | 310 | 53 | 37 | 153 | 155 | 23 | 88 | 27 | 0 | 0 | 0 |
Time Scale = UT-6h | / | 184 | 281 | 289 | 289 | 57 | 69 | 71 | 0 | 0 | 0 |
Washington 38°52'N 77°01'W | 460 | 89 | 0 | 32 | 48 | 81 | 423 | 62 | 0 | 34 | 0 |
Time Scale = UT-5h | / | 120 | 0 | 307 | 278 | 218 | 237 | 273 | 0 | 27 | 0 |
-If you don't have a Time Module, replace lines 06-07-08 by:
XEQ "J0" +
01 LBL "WL"
02 HR 03 24 04 / 05 X<>Y 06 1.012 07 DDAYS 08 - 09 LBL "T" 10 STO 00 11 DEG 12 .985647 13 * 14 STO 01 15 10 16 + 17 RCL 18 18 - 19 SIN 20 RCL 08 21 * 22 RCL 07 23 + 24 RCL 00 25 360 26 * 27 STO 02 28 RCL 01 29 + 30 STO 04 31 10 32 + 33 RCL 21 34 - 35 COS 36 RCL 11 37 * 38 + 39 RCL 04 40 .052954 41 RCL 00 42 * 43 STO 06 44 + 45 65 46 + 47 RCL 21 |
48 -
49 COS 50 RCL 11 51 * 52 7.4 53 / 54 - 55 RCL 02 56 ST+ 02 57 RCL 01 58 - 59 10 60 - 61 RCL 21 62 - 63 COS 64 RCL 11 65 * 66 3 67 / 68 + 69 RCL 04 70 ST+ 04 71 26.352793 72 RCL 00 73 * 74 STO 03 75 - 76 STO 05 77 53 78 - 79 RCL 20 80 - 81 COS 82 RCL 10 83 * 84 - 85 RCL 05 86 RCL 06 87 - 88 72 89 + 90 RCL 20 91 - 92 COS 93 RCL 10 94 * |
95 5.3
96 / 97 - 98 RCL 05 99 13.064993 100 RCL 00 101 * 102 STO 05 103 - 104 2 105 - 106 RCL 19 107 - 108 COS 109 RCL 09 110 * 111 + 112 RCL 02 113 RCL 24 114 - 115 COS 116 RCL 14 117 * 118 + 119 RCL 04 120 20 121 + 122 RCL 24 123 - 124 COS 125 RCL 14 126 * 127 3.7 128 / 129 - 130 RCL 04 131 RCL 06 132 + 133 75 134 + 135 RCL 24 136 - 137 COS 138 RCL 14 139 * 140 12 141 / |
142 +
143 RCL 04 144 RCL 03 145 - 146 STO 04 147 43.5 148 - 149 RCL 23 150 - 151 COS 152 RCL 13 153 * 154 - 155 RCL 04 156 RCL 06 157 - 158 8 159 - 160 RCL 23 161 - 162 SIN 163 RCL 13 164 * 165 27 166 / 167 - 168 RCL 04 169 RCL 05 170 + 171 5 172 - 173 RCL 23 174 - 175 SIN 176 RCL 13 177 * 178 35 179 / 180 - 181 RCL 02 182 RCL 01 183 - 184 3 185 + 186 RCL 24 187 - 188 COS |
189 RCL 14
190 * 191 17 192 / 193 + 194 RCL 04 195 RCL 05 196 - 197 8 198 + 199 RCL 22 200 - 201 COS 202 RCL 12 203 * 204 + 205 RCL 04 206 RCL 05 207 ST+ X 208 - 209 60 210 + 211 RCL 22 212 - 213 COS 214 RCL 12 215 * 216 7.6 217 / 218 - 219 RCL 02 220 RCL 04 221 + 222 44 223 - 224 RCL 27 225 - 226 COS 227 RCL 17 228 * 229 - 230 RCL 04 231 ST+ X 232 STO 01 233 3 234 + 235 RCL 26 |
236 -
237 SIN 238 RCL 16 239 * 240 + 241 RCL 01 242 RCL 02 243 - 244 STO 06 245 3 246 + 247 RCL 22 248 - 249 SIN 250 RCL 12 251 * 252 6.3 253 / 254 + 255 RCL 05 256 RCL 06 257 + 258 41 259 + 260 RCL 22 261 - 262 COS 263 RCL 12 264 * 265 5.3 266 / 267 + 268 RCL 01 269 RCL 05 270 - 271 35 272 - 273 RCL 25 274 - 275 COS 276 RCL 15 277 * 278 - 279 E3 280 / 281 END |
( 387 bytes / SIZE 028 )
STACK | INPUTS | OUTPUTS |
Y | Date | / |
X | hh.mnss | water level (m) |
Example: Calculate the water
level in Seattle on 11/11/2003 at 14h45mn ( local
time = UT-8h )
-First, we initialize registers R07 to R27 ( 2010 STO 07 74 STO 08 75 STO 09 ................... 92 STO 26 120 STO 27 )
-Then,
11.112003 ENTER^
14.45
XEQ "WL" yields 2.75m
( in 24 seconds )
( Key in 2003.1111 instead of 11.112003 if you are using "J0" )
-Similar computations produce the following results:
time | 0h | 1h | 2h | 3h | 4h | 5h | 6h | 7h | 8h | 9h | 10h | 11h | 12h | 13h | 14h | 15h | 16h | 17h | 18h | 19h | 20h | 21h | 22h | 23h | 24h |
wl | -0.35 | -0.06 | 0.56 | 1.35 | 2.15 | 2.82 | 3.28 | 3.48 | 3.43 | 3.18 | 2.82 | 2.49 | 2.31 | 2.34 | 2.54 | 2.82 | 3.03 | 3.08 | 2.91 | 2.52 | 1.93 | 1.23 | 0.52 | -0.05 | -0.34 |
Water Level - SEATTLE - 11/11/2003
|
|
- -
|
-
-
-
|
-
-
-
-
|
-
- -
-
|
-
-
|
-
-
| -
-
----|----------------------------------|----------------------------------|------
( local time = UT-8h )
0h
12h
24h
2°) Tides
( with 5 tabular values )
- "TIDE1" uses 5 tabular water levels wl(t1)
wl(t2) wl(t3) wl(t4)
wl(t5) where t5 - t4
= t4 - t3 = t3 - t2
= t2 - t1 = h ( equally
spaced abcissas )
-The extremum of a polynomial of degree 4 is found by an iterative
method.
Data Registers: R00 and R28 thru R32: temp , R07 thru R27 are undisturbed.
• R01 = wl(t1)
• R02 = wl(t2)
• R03 = wl(t3)
( These 5 registers are to be initialized before executing "TIDE1"
)
• R04 = wl(t4)
• R05 = wl(t5)
Flags: /
Subroutines: /
01 LBL "TIDE1"
02 STO 28 03 X<>Y 04 STO 00 05 CLX 06 STO 06 07 RCL 05 08 RCL 01 09 - 10 RCL 02 11 RCL 04 12 - 13 ST+ X 14 + 15 STO 29 16 CHS 17 LASTX 18 3 19 * 20 - |
21 STO 30
22 RCL 01 23 RCL 05 24 + 25 RCL 02 26 RCL 04 27 + 28 16 29 * 30 - 31 RCL 03 32 30 33 * 34 + 35 STO 31 36 RCL 03 37 24 38 * 39 - 40 RCL 02 |
41 RCL 04
42 + 43 12 44 * 45 + 46 STO 32 47 LBL 01 48 RCL 32 49 ST+ X 50 RCL 06 51 * 52 RCL 29 53 3 54 * 55 + 56 RCL 06 57 X^2 58 * 59 RCL 30 60 + |
61 RCL 31
62 / 63 ENTER^ 64 X<> 06 65 - 66 ABS 67 E-4 68 X<Y? 69 GTO 01 70 RCL 06 71 RCL 06 72 RCL 06 73 RCL 32 74 * 75 RCL 29 76 ST+ X 77 + 78 * 79 RCL 31 80 - |
81 *
82 RCL 30 83 ST+ X 84 + 85 * 86 24 87 / 88 RCL 03 89 + 90 RCL 00 91 RCL 06 92 2 93 + 94 * 95 HMS 96 RCL 28 97 HMS+ 98 END |
( 135 bytes / SIZE 033 )
STACK | INPUTS | OUTPUTS |
Y | h | water level |
X | t1 ( hh.mnss ) | hh.mnss |
Example: With
wl(5) = 2.82 STO 01
wl(6) = 3.28 STO 02
wl(7) = 3.48 STO 03
wl(8) = 3.43 STO 04
wl(9) = 3.18 STO 05
1 ENTER^
5 XEQ "TIDE1" yields 7.1654
( in 6 seconds )
X<>Y 3.4898
-Thus, there is a high tide at 7h17mn and the corresponding water level
= 3.49m ( error = 15 minutes )
3°) Tides ( without
tabular values )
-The following program calculates 3 water levels.
-Then, it finds the extremum of the parabola thus defined and its abscissa
replaces one of the 3 first abscissas.
-The process is repeated until the difference between 2 abscissas is
smaller than E-4 day ( line 65 )
Data Registers: R28 thru R33: temp ( R07 thru R27 are undisturbed )
Flags: /
Subroutine: "T" ( line 9 of the program
"WL")
( and "J0" & "DT" if you don't have a Time Module - cf "Julian
& Gregorian Calendars for the HP-41" )
-If you don't have a Time Module:
replace lines 77-78-79-80 by XEQ "DT" RCL 01
X<> Z
add STO 01 after line 69
and replace lines 06-07-08 by: XEQ "J0"
+
01 LBL "TIDE2"
02 HR 03 24 04 / 05 X<>Y 06 1.012 07 DDAYS 08 - 09 STO 29 10 XEQ "T" 11 STO 31 12 RCL 00 13 .01 14 - 15 STO 28 16 XEQ "T" 17 STO 30 18 .02 |
19 ST+ 00
20 LBL 01 21 RCL 00 22 VIEW X 23 XEQ "T" 24 STO 32 25 RCL 31 26 - 27 RCL 00 28 RCL 29 29 - 30 / 31 RCL 31 32 RCL 30 33 - 34 RCL 29 35 RCL 28 36 - |
37 /
38 - 39 RCL 28 40 RCL 00 41 - 42 / 43 STO 33 44 RCL 29 45 RCL 00 46 - 47 * 48 + 49 RCL 33 50 ST+ X 51 X#0? 52 / 53 RCL 00 54 + |
55 X<> 00
56 X<> 29 57 STO 28 58 RCL 32 59 X<> 31 60 STO 30 61 RCL 00 62 RCL 29 63 - 64 ABS 65 E-4 66 X<Y? 67 GTO 01 68 RCL 00 69 XEQ "T" 70 RCL 00 71 ENTER^ 72 INT |
73 X>Y?
74 DSE X 75 LBL 02 76 ST- Y 77 1.012 78 X<>Y 79 DATE+ 80 X<>Y 81 24 82 * 83 HMS 84 RCL 33 85 X#0? 86 SIGN 87 RDN 88 CLD 89 END |
( 154 bytes / SIZE 034 )
STACK | INPUTS | OUTPUTS |
T | / | +1 or -1 * |
Z | / | water level |
Y | Date | Date |
X | approximate time | hh.mnss |
* +1 for a "High Tide" , -1 for a "Low Tide"
Example: Once again , in Seattle , on 11/11/2003 near 7 AM
11.112003 ENTER^
7
XEQ "TIDE2" >>>> 7.1718
( the successive d-approximations are displayed ) ---Execution
time = 2m26s---
RDN
11.112003
RDN
3.4915
RDN
1
-Thus, there is a high tide at 7h17mn and the corresponding water level = 3.49m ( exact time = 7h02mn according to the "Shom" )
( Key in 2003.1111 instead of
11.112003 if you are using "J0" & "DT" )