hp41programs

Tides for the HP-41

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