Merge remote-tracking branch 'sydney-tides/master'

master
Dan Howe 5 years ago
commit 1aad09b27a

623911
HARMONIC

File diff suppressed because it is too large Load Diff

@ -0,0 +1,132 @@
Noofjobs 1 &fd1985-2012
(I4,7X,24F5.2)
(1X///I3,I4,3X,24F5.2)
(2I5,12(F6.4,F5.2))
1.0 1
Port A0 .995year##vday%%%fstd%%%endd***doc112oth 0step 10 .9622 ?
AUSTRALIA, EAST COAST - SYDNEY (FORT DENISON) 4335115114 -1000 60370
1 0.0410686 0.0400 44.3373 sa
2 0.0821373 0.0233 140.8642 ssa
3 0.5443747 0.0022 163.3925 Mm
4 1.0158958 0.0019 73.4003 Msf
5 1.0980331 0.0025 203.8471 Mf
6 12.8542862 0.0036 9.8664 2Q1
7 12.9271398 0.0043 16.6066 SIGMA1
8 13.3986609 0.0230 52.3723 Q1
9 13.4715145 0.0043 55.9113 RHO1
10 13.9430356 0.0963 79.6431 O1
11 14.0251729 0.0010 45.9175 MP1
12 14.4920521 0.0044 99.5325 M1
13 14.5695476 0.0013 102.4847 CHI1
14 14.9178647 0.0028 125.9361 PI1
15 14.9589314 0.0439 115.4037 P1
16 15.0000000 0.0033 129.8967 S1
17 15.0410686 0.1480 119.6599 K1
18 15.0821353 0.0020 11.0025 PSI1
19 15.1232059 0.0015 103.8567 PHI1
20 15.5125897 0.0017 137.3796 THETA1
21 15.5854433 0.0096 142.7051 J1
22 16.0569644 0.0017 173.2765 SO1
23 16.1391017 0.0062 180.0375 OO1
24 27.3416964 0.0006 75.4143 OQ2
25 27.4238337 0.0061 193.1893 MNS2
26 27.8953548 0.0205 199.6233 2N2
27 27.9682084 0.0210 212.8684 MEU2
28 28.4397295 0.1127 223.5144 N2
29 28.5125831 0.0206 223.5377 NEU2
30 28.9019669 0.0024 128.4082 OP2
31 28.9841042 0.5022 237.0610 M2
32 29.0662415 0.0014 313.3572 MKS2
33 29.4556253 0.0058 224.4572 LAMDA2
34 29.5284789 0.0135 243.1576 L2
35 29.9589333 0.0073 281.2802 T2
36 30.0000000 0.1247 260.7625 S2
37 30.0410667 0.0022 206.1633 R2
38 30.0821373 0.0373 250.3219 K2
39 30.5443747 0.0016 124.3870 MSN2
40 30.6265120 0.0023 62.9849 KJ2
41 31.0158958 0.0019 145.4123 2SM2
42 42.9271398 0.0004 148.6540 MO3
43 43.4761563 0.0023 327.5370 M3
44 43.9430356 0.0002 307.6915 SO3
45 44.0251729 0.0005 248.2678 MK3
46 45.0410686 0.0016 113.2852 SK3
47 57.4238337 0.0010 90.6269 MN4
48 57.9682084 0.0031 114.2894 M4
49 58.4397295 0.0003 103.5135 SN4
50 58.9841042 0.0014 183.7788 MS4
51 59.0662415 0.0004 196.3685 MK4
52 60.0000000 0.0006 299.9646 S4
53 60.0821373 0.0002 45.1703 SK4
54 86.4079380 0.0009 6.8059 2MN6
55 86.9523127 0.0020 52.2368 M6
56 87.4238337 0.0007 64.4301 MSN6
57 87.9682084 0.0025 114.6867 2MS6
58 88.0503457 0.0007 131.3720 2MK6
59 88.9841042 0.0003 157.8974 2SM6
60 89.0662415 0.0003 204.7339 MSK6
61 26.4079379 0.0003 1.3443 2MN2S2
62 26.8701753 0.0005 3.6145 3M(SK)2
63 26.9523127 0.0008 78.7665 3M2S2
64 27.5059710 0.0001 225.5560 MNK2S2
65 28.3575922 0.0003 218.9001 SNK2
66 29.9178627 0.0011 321.0943 2SK2
68 42.3827651 0.0004 43.8537 MQ3
69 43.0092770 0.0001 134.0684 2MP3
70 44.5695475 0.0001 329.7593 2MQ3
71 56.8701754 0.0000 39.7310 3MK4
72 56.9523127 0.0001 97.9154 3MS4
73 57.8860711 0.0002 283.9222 2MSK4
74 71.9112441 0.0002 182.3575 3MK5
75 72.4602605 0.0000 24.2117 M5
76 73.0092771 0.0005 264.7303 3MO5
77 84.8476674 0.0000 129.7631 2(MN)S6
78 85.3920422 0.0001 260.1927 3MNS6
79 85.8542795 0.0001 332.2482 4MK6
80 85.9364168 0.0001 249.9087 4MS6
81 86.3258006 0.0000 280.3885 2MSNK6
82 86.4807915 0.0003 28.4884 2MNU6
83 86.8701754 0.0001 222.0912 3MSK6
84 87.4966873 0.0003 292.3403 4MN6
85 88.5125832 0.0006 338.3166 3MSN6
86 88.5947204 0.0001 176.1921 MKL6
87 114.8476674 0.0001 219.9735 2MN8
88 115.3920422 0.0002 245.3801 3MN8
89 115.9364168 0.0002 284.0175 M8
90 116.4079379 0.0002 203.8838 2MSN8
91 116.9523127 0.0001 280.4660 3MS8
92 117.0344500 0.0001 286.3325 3MK8
93 117.5059710 0.0000 219.0404 MSNK8
94 117.9682084 0.0002 188.3974 2MS8
95 118.0503457 0.0001 195.8549 2MSK8
96 145.9364168 0.0002 293.7057 4MS10
97 146.9523127 0.0002 307.5005 3M2S10
98 174.3761463 0.0001 110.9933 4MSN12
99 174.9205210 0.0000 180.6601 5MS12
100 175.9364168 0.0000 108.7910 4M2S12
101 44.9589314 0.0019 112.6443 SP3
102 45.0000000 0.0012 23.4633 S3
103 28.9430375 0.0039 117.2716 MA2
104 29.0251709 0.0027 150.6304 Ma2
105 30.4715211 0.0000 98.7180 MSV2
106 31.0980331 0.0008 156.4092 SKM2
107 56.4079380 0.0001 26.7109 2MNS4
108 57.4966873 0.0003 94.1175 MV4
109 58.5125832 0.0003 339.4208 3MN4
110 59.5284789 0.0001 264.4342 2MSN4
111 28.3986628 0.0004 16.9727 NA2
113 72.9271398 0.0001 247.7639 MSO5
114 74.0251729 0.0002 189.3859 MSK5
116 0.0000000 0.9952 0.0000 A0
FORT DENISON - 1985 TO 2012 ANALYSIS Time zone -1000
Hourly sea levels in metres from 1-Jan-1985 to 31-Dec-2012
There are 46 gaps of 24(9),11,8,22(3),95,1,1,23,49,4,7,48,27,38,13,21,48,
98,125,75,25,27,23,67,96,98,96,20,28,121,7,17,26,1047,25 and 51 hours
Analysis of 24-Jun-13 for 112 constituents on 10113 days of data
Sa and Ssa from a long period analysis (96.7 years) of Fort Denison (1914-2012)
(1985-2012 analysis gave Sa=0.0384/59.5695 and Ssa=0.0191/143.8045)
Sample Correlation Coefficient is 0.9767
Standard Devn of the Residuals is 0.0877
Zero Frequency Level is 0.9622m above TGZ, which is 6.647m below PM 101
For 2015 predictions use Zero Frequency Level plus 16.5 years x 2.0mm/year trend
Mean sea level is 0.995m above tide gauge zero for 2015 predictions

@ -0,0 +1,262 @@
import datetime
import time
import math
# Brett Miller 9th October 2015.
# This program reads Harmonics for Fort Denison as provided by BOM on the 9th October 2015
#
# NOT FOR DISTRIBUTION
# the predictions from this code have been cross checked against some daily predictions but
# not against all.
# USE AT YOUR OWN CAUTION. NO GAURENTEE MADE THAT THESE PREDICTIONS ARE CORRECT.
#
# The x-tide method for calculating tides is:-
# z(t,y,site)= MWL(site) + sum[c=1,N](nodefactor(c,y).amp(c,site).cos( speed(c).t + eqarg(c,y) - kappa(c,site) ))
# where
# t is the time since the beginning of the year
# y is the year
# site is the site of interest
# N is the number of consituents being included
# nodefactor is an amplitude adjustment for each constituent for each year
# eqarg is a phase adjustment for each site for each year
# amp is the amplitude of each constituent for the site
# kappa is the phase adjustment for each constituent for the site
#
# the harmonics included below in the python code were provided directly to WRL from BOM.
START_TIME = '2020-01-01'
END_TIME = '2020-12-31'
OUTPUT_NAME = 'levels.csv'
MSL = 0.9952
harm = {}
speed = 0
amp = 1
lag = 2
def readlinenocomm(F):
l = F.readline()
while l[0] == '#':
l = F.readline()
return l
#
H = open("HARMONIC", "r")
l = readlinenocomm(H)
numconstits = int(l)
print("Number of Constituents = ", numconstits)
# Read in the constituent speeds
constitspeed = {}
i = 0
while i < numconstits:
l = readlinenocomm(H)
ll = l.split()
constitspeed[ll[0]] = float(ll[1])
i = i + 1
l = readlinenocomm(H)
sy = int(l)
l = readlinenocomm(H)
numyears = int(l)
# Read in the equalibrium arguements
equalibrium_arg = {}
i = 0
while i < numconstits:
l = readlinenocomm(H)
ll = l.split()
constit = ll[0]
v = []
j = 0
while j <= numyears / 10:
l = readlinenocomm(H)
ll = l.split()
for lll in ll:
v.append(float(lll))
j = j + 1
equalibrium_arg[constit] = v
i = i + 1
l = readlinenocomm(H)
if l[0:5] != '*END*':
print("Error, expected end after eq args. Got: ", l)
# Read in the node factors
l = readlinenocomm(H)
numyears = int(l)
node_factor = {}
i = 0
while i < numconstits:
l = readlinenocomm(H)
ll = l.split()
constit = ll[0]
v = []
j = 0
while j <= numyears / 10:
l = readlinenocomm(H)
ll = l.split()
for lll in ll:
v.append(float(lll))
j = j + 1
node_factor[constit] = v
i = i + 1
l = readlinenocomm(H)
if l[0:5] != '*END*':
print("Error, expected end after node factors. Got: ", l)
harm['sa'] = [0.0410686, 0.04, 44.3373]
harm['ssa'] = [0.0821373, 0.0233, 140.8642]
harm['Mm'] = [0.5443747, 0.0022, 163.3925]
harm['MSF'] = [1.0158958, 0.0019, 73.4003]
harm['MF'] = [1.0980331, 0.0025, 203.8471]
harm['2Q1'] = [12.8542862, 0.0036, 9.8664]
harm['SIGMA1'] = [12.9271398, 0.0043, 16.6066]
harm['Q1'] = [13.3986609, 0.023, 52.3723]
harm['RHO1'] = [13.4715145, 0.0043, 55.9113]
harm['O1'] = [13.9430356, 0.0963, 79.6431]
harm['MP1'] = [14.0251729, 0.001, 45.9175]
harm['M1'] = [14.4920521, 0.0044, 99.5325]
harm['CHI1'] = [14.5695476, 0.0013, 102.4847]
harm['PI1'] = [14.9178647, 0.0028, 125.9361]
harm['P1'] = [14.9589314, 0.0439, 115.4037]
harm['S1'] = [15, 0.0033, 129.8967]
harm['K1'] = [15.0410686, 0.148, 119.6599]
harm['PSI1'] = [15.0821353, 0.002, 11.0025]
harm['PHI1'] = [15.1232059, 0.0015, 103.8567]
harm['THETA1'] = [15.5125897, 0.0017, 137.3796]
harm['J1'] = [15.5854433, 0.0096, 142.7051]
harm['SO1'] = [16.0569644, 0.0017, 173.2765]
harm['OO1'] = [16.1391017, 0.0062, 180.0375]
harm['OQ2'] = [27.3416964, 0.0006, 75.4143]
harm['MNS2'] = [27.4238337, 0.0061, 193.1893]
harm['2N2'] = [27.8953548, 0.0205, 199.6233]
harm['MEU2'] = [27.9682084, 0.021, 212.8684]
harm['N2'] = [28.4397295, 0.1127, 223.5144]
harm['NEU2'] = [28.5125831, 0.0206, 223.5377]
harm['OP2'] = [28.9019669, 0.0024, 128.4082]
harm['M2'] = [28.9841042, 0.5022, 237.061]
harm['MKS2'] = [29.0662415, 0.0014, 313.3572]
harm['LAMDA2'] = [29.4556253, 0.0058, 224.4572]
harm['L2'] = [29.5284789, 0.0135, 243.1576]
harm['T2'] = [29.9589333, 0.0073, 281.2802]
harm['S2'] = [30, 0.1247, 260.7625]
harm['R2'] = [30.0410667, 0.0022, 206.1633]
harm['K2'] = [30.0821373, 0.0373, 250.3219]
harm['MSN2'] = [30.5443747, 0.0016, 124.387]
harm['KJ2'] = [30.626512, 0.0023, 62.9849]
harm['2SM2'] = [31.0158958, 0.0019, 145.4123]
harm['MO3'] = [42.9271398, 0.0004, 148.654]
harm['M3'] = [43.4761563, 0.0023, 327.537]
harm['SO3'] = [43.9430356, 0.0002, 307.6915]
harm['MK3'] = [44.0251729, 0.0005, 248.2678]
harm['SK3'] = [45.0410686, 0.0016, 113.2852]
harm['MN4'] = [57.4238337, 0.001, 90.6269]
harm['M4'] = [57.9682084, 0.0031, 114.2894]
harm['SN4'] = [58.4397295, 0.0003, 103.5135]
harm['MS4'] = [58.9841042, 0.0014, 183.7788]
harm['MK4'] = [59.0662415, 0.0004, 196.3685]
harm['S4'] = [60, 0.0006, 299.9646]
harm['SK4'] = [60.0821373, 0.0002, 45.1703]
harm['2MN6'] = [86.407938, 0.0009, 6.8059]
harm['M6'] = [86.9523127, 0.002, 52.2368]
harm['MSN6'] = [87.4238337, 0.0007, 64.4301]
harm['2MS6'] = [87.9682084, 0.0025, 114.6867]
harm['2MK6'] = [88.0503457, 0.0007, 131.372]
harm['2SM6'] = [88.9841042, 0.0003, 157.8974]
harm['MSK6'] = [89.0662415, 0.0003, 204.7339]
harm['2MN2S2'] = [26.4079379, 0.0003, 1.3443]
harm['3M(SK)2'] = [26.8701753, 0.0005, 3.6145]
harm['3M2S2'] = [26.9523127, 0.0008, 78.7665]
harm['MNK2S2'] = [27.505971, 0.0001, 225.556]
harm['SNK2'] = [28.3575922, 0.0003, 218.9001]
harm['2SK2'] = [29.9178627, 0.0011, 321.0943]
harm['MQ3'] = [42.3827651, 0.0004, 43.8537]
harm['2MP3'] = [43.009277, 0.0001, 134.0684]
harm['2MQ3'] = [44.5695475, 0.0001, 329.7593]
harm['3MK4'] = [56.8701754, 0, 39.731]
harm['3MS4'] = [56.9523127, 0.0001, 97.9154]
harm['2MSK4'] = [57.8860711, 0.0002, 283.9222]
harm['3MK5'] = [71.9112441, 0.0002, 182.3575]
harm['M5'] = [72.4602605, 0, 24.2117]
harm['3MO5'] = [73.0092771, 0.0005, 264.7303]
harm['2(MN)S6'] = [84.8476674, 0, 129.7631]
harm['3MNS6'] = [85.3920422, 0.0001, 260.1927]
harm['4MK6'] = [85.8542795, 0.0001, 332.2482]
harm['4MS6'] = [85.9364168, 0.0001, 249.9087]
harm['2MSNK6'] = [86.3258006, 0, 280.3885]
harm['2MNU6'] = [86.4807915, 0.0003, 28.4884]
harm['3MSK6'] = [86.8701754, 0.0001, 222.0912]
harm['4MN6'] = [87.4966873, 0.0003, 292.3403]
harm['3MSN6'] = [88.5125832, 0.0006, 338.3166]
harm['MKL6'] = [88.5947204, 0.0001, 176.1921]
harm['2MN8'] = [114.8476674, 0.0001, 219.9735]
harm['3MN8'] = [115.3920422, 0.0002, 245.3801]
harm['M8'] = [115.9364168, 0.0002, 284.0175]
harm['2MSN8'] = [116.4079379, 0.0002, 203.8838]
harm['3MS8'] = [116.9523127, 0.0001, 280.466]
harm['3MK8'] = [117.03445, 0.0001, 286.3325]
harm['MSNK8'] = [117.505971, 0, 219.0404]
harm['2MS8'] = [117.9682084, 0.0002, 188.3974]
harm['2MSK8'] = [118.0503457, 0.0001, 195.8549]
harm['4MS10'] = [145.9364168, 0.0002, 293.7057]
harm['3M2S10'] = [146.9523127, 0.0002, 307.5005]
harm['4MSN12'] = [174.3761463, 0.0001, 110.9933]
harm['5MS12'] = [174.920521, 0, 180.6601]
harm['4M2S12'] = [175.9364168, 0, 108.791]
harm['SP3'] = [44.9589314, 0.0019, 112.6443]
harm['S3'] = [45, 0.0012, 23.4633]
harm['MA2'] = [28.9430375, 0.0039, 117.2716]
harm['Ma2'] = [29.0251709, 0.0027, 150.6304]
harm['MSV2'] = [30.4715211, 0, 98.718]
harm['SKM2'] = [31.0980331, 0.0008, 156.4092]
harm['2MNS4'] = [56.407938, 0.0001, 26.7109]
harm['MV4'] = [57.4966873, 0.0003, 94.1175]
harm['3MN4'] = [58.5125832, 0.0003, 339.4208]
harm['2MSN4'] = [59.5284789, 0.0001, 264.4342]
harm['NA2'] = [28.3986628, 0.0004, 16.9727]
harm['MSO5'] = [72.9271398, 0.0001, 247.7639]
harm['MSK5'] = [74.0251729, 0.0002, 189.3859]
# Now do the maths
start_time = datetime.datetime.strptime(START_TIME, '%Y-%m-%d')
end_time = datetime.datetime.strptime(END_TIME, '%Y-%m-%d')
time_step = datetime.timedelta(minutes=15)
x = []
y = []
F = open(OUTPUT_NAME, "w")
t = start_time
while (t < end_time):
offset = t - datetime.datetime(t.year, 1, 1, 0, 0, 0)
year_idx = t.year - sy
t1 = (offset.days) * 24.0 + offset.seconds / 3600.0
z = MSL
for constit in harm.keys():
if constit in node_factor:
nf = node_factor[constit][year_idx]
ea = equalibrium_arg[constit][year_idx]
else:
nf = 1.0
ea = 0.0
z = z + nf * harm[constit][amp] * math.cos(
(harm[constit][speed] * t1 + ea - harm[constit][lag]) *
(2 * 3.1415927 / 360.0))
# print t,z
F.write("%s,%s\n" % (t, z))
x.append(t)
y.append(z)
t = t + time_step
F.close()
Loading…
Cancel
Save