A notebook to check that the phase and amplitude in the forcing files is what I expect.
%matplotlib inline
from matplotlib import pylab
import netCDF4 as NC
import csv
import numpy
from itertools import islice
import math
import sys
New tides at west. Check that phase change is 9 degrees later for M2.
path = '/data/nsoontie/MEOPAR/NEMO-forcing/open_boundaries/west/tides/'
fT1 = NC.Dataset(path+'SalishSea2_corr_west_tide_M2_grid_T.nc','r')
z1=fT1.variables['z1']
z2=fT1.variables['z2']
amp = numpy.sqrt(z1[0][:]**2 + z2[0][:]**2)
pha=[]
for i in range(0,len(amp)):
pha.append(math.atan2(z2[0][i],z1[0][i]))
print numpy.degrees(pha)
print amp
amp_old=amp
pha_old=pha
[ 0. 0. 0. 0. 0. -124.84025641 -125.03233259 -125.22389942 -125.41571764 -125.61049379 -125.81087634 -126.01141674 -126.19812771 -126.37568853 -126.5345648 -126.69103818 -126.84512073 -126.99909614 -127.13407596 -127.27645162 -127.42251084 -127.55733273 -127.6858596 -127.81438033 -127.94873104 -128.07334497 -128.19874817 -128.32433453 -128.44826424 -128.56109814 -128.67690427 -128.79289117 -128.90892077 -129.02503595 -129.13909272 -129.24637544 -129.35730626 -129.46825353 -129.57916817 -129.68933359 -129.79802766 -129.90628738 -130.01158903 -130.12042931 -130.23119594 -130.34050566 -130.44641652 -130.5521882 -130.65777826 -130.76143263 -130.8625936 -130.9657809 -131.06960084 -131.17338407 -131.27631584 -131.37072484 -131.46502842 -131.55916084 -131.65308997 -131.74690719 -131.83520207 -131.92011205 -132.0048807 -132.08948865 -132.17395285 -132.25811862 -132.33662387 -132.4128926 -132.48908084 -132.56504149 -132.64091291 -132.71571715 -132.78837552 -132.86095286 -132.93340184 -133.00501302 -133.07614552 -133.14749583 -133.21758349 -133.28706157 -133.35743325 -133.42842937 0. 0. 0. 0. 0. ] [ 0. 0. 0. 0. 0. 0.83866304 0.83796501 0.83707398 0.83618605 0.83554101 0.83527005 0.83500999 0.83458501 0.83405197 0.83286405 0.83158296 0.83083403 0.83011097 0.829135 0.82838798 0.82774502 0.827133 0.82654196 0.82595801 0.82548398 0.82517797 0.82479203 0.82440299 0.82402104 0.82366604 0.82351297 0.82336599 0.82322299 0.823084 0.82289797 0.82284498 0.82279497 0.82274604 0.822703 0.82273597 0.82287699 0.82302403 0.82319999 0.82343596 0.82370704 0.82401401 0.82439899 0.82478702 0.82517898 0.82544398 0.82589597 0.82637602 0.82684898 0.82732606 0.82781601 0.82845998 0.82910496 0.82975197 0.830401 0.83105302 0.83173901 0.83244503 0.833152 0.83386099 0.834571 0.83529299 0.83603203 0.83675104 0.83747196 0.83819503 0.83891904 0.83962202 0.84023398 0.84084696 0.84145802 0.842053 0.84263599 0.84321302 0.84380502 0.84440297 0.84496397 0.84549898 0. 0. 0. 0. 0. ]
Now load the old tides and check the phase difference and amplitude ratios.
path = '/data/nsoontie/MEOPAR/NEMO-forcing/open_boundaries/west/tides/'
fT1 = NC.Dataset(path+'SalishSea2_west_tide_M2_grid_T.nc','r')
z1=fT1.variables['z1']
z2=fT1.variables['z2']
amp = numpy.sqrt(z1[0][:]**2 + z2[0][:]**2)
pha=[]
for i in range(0,len(amp)):
pha.append(math.atan2(z2[0][i],z1[0][i]))
print numpy.degrees(pha)-numpy.degrees(pha_old)
print amp/amp_old
[ 0. 0. 0. 0. 0. 9.00000005 8.9999992 9.00000131 8.9999996 9.00000127 8.99999771 8.99999918 8.99999734 9.00000106 8.99999987 9.00000057 8.99999838 9.00000179 8.99999987 8.99999968 8.99999883 8.9999981 9.00000088 9.00000137 8.99999847 8.99999905 8.99999898 8.99999917 8.99999663 9.00000006 9.00000058 8.99999952 8.9999988 9.00000002 9.00000016 9.00000103 8.99999848 9.00000056 8.99999751 9.00000246 8.99999984 9.00000022 8.99999915 8.99999903 9.00000104 8.99999886 8.99999981 9.00000067 8.99999994 9.00000118 9.00000087 8.99999844 8.99999982 9.00000112 9.00000238 9.00000109 9.00000087 8.9999967 9.00000142 9.0000022 9.0000025 8.99999754 8.99999829 9.00000031 8.99999961 8.99999831 8.9999995 8.999998 9.00000175 8.99999944 8.9999989 9.0000006 8.99999864 9.00000007 8.99999942 8.99999875 8.99999898 9.00000262 8.99999993 9.00000035 8.99999802 9.00000083 0. 0. 0. 0. 0. ] [ nan nan nan nan nan 1. 1. 1. 1. 1. 0.99999994 1. 0.99999994 1.00000012 0.99999994 1. 1. 1.00000012 1. 1. 0.99999994 1. 1.00000012 1. 1. 1. 0.99999994 1. 0.99999994 1. 1. 1.00000012 1. 1. 1.00000012 1. 1. 1. 1. 1.00000012 1. 1. 1. 1. 1. 1. 1. 0.99999994 1. 1. 1.00000012 0.99999994 1.00000012 0.99999994 1. 1.00000012 1.00000012 1. 1. 1. 1. 1. 1. 1. 1. 1. 0.99999994 1. 1.00000012 0.99999994 1. 1. 1. 1. 1. 1. 1. 0.99999994 1. 1. 1.00000012 1.00000012 nan nan nan nan nan]
-c:13: RuntimeWarning: invalid value encountered in divide
New tides.
path = '/data/nsoontie/MEOPAR/NEMO-forcing/open_boundaries/west/tides/'
fT1 = NC.Dataset(path+'SalishSea2_corr_west_tide_M2_grid_U.nc','r')
z1=fT1.variables['u1']
z2=fT1.variables['u2']
amp = numpy.sqrt(z1[0][:]**2 + z2[0][:]**2)
pha=[]
for i in range(0,len(amp)):
pha.append(math.atan2(z2[0][i],z1[0][i]))
print numpy.degrees(pha)
amp_old=amp
pha_old=pha
[ 0. 0. 0. 0. 0. -108.56669854 -100.50425445 -104.27945302 -108.59730117 -109.72120202 -99.99885949 -91.3658524 -86.58222037 -82.66355708 -77.95965332 -73.06331231 -72.34948978 -71.54855336 -70.64415874 -70.51116948 -70.36613532 -69.90416988 -69.12861476 -68.32991764 -67.79806641 -67.67845595 -67.56312091 -67.42964552 -67.28371896 -67.3497456 -67.44056613 -67.53546408 -67.63468058 -67.73845244 -67.86104562 -68.11323739 -68.43137786 -68.75997698 -69.10008084 -70.6071864 -73.36205003 -76.11088048 -77.44459563 -78.55088286 -79.75264779 -81.16931952 -82.96147997 -84.84357738 -86.81995908 -88.90745346 -90.7220714 -92.52138222 -94.40178824 -96.36106129 -98.29561858 -97.84247238 -97.39151922 -96.94203223 -96.49495239 -96.18979849 -96.13183379 -96.64116209 -97.18085057 -97.75378131 -98.3620823 -98.51828412 -97.24852013 -95.30632057 -93.31170192 -91.27064629 -89.18437006 -87.60215885 -85.68811962 -83.87070357 -81.95263358 -80.45878798 -79.0805574 -78.13579712 -79.44340352 -80.92038902 -82.69640579 -84.63675508 0. 0. 0. 0. 0. ]
Old tides
path = '/data/nsoontie/MEOPAR/NEMO-forcing/open_boundaries/west/tides/'
fT1 = NC.Dataset(path+'SalishSea2_west_tide_M2_grid_U.nc','r')
z1=fT1.variables['u1']
z2=fT1.variables['u2']
amp = numpy.sqrt(z1[0][:]**2 + z2[0][:]**2)
pha=[]
for i in range(0,len(amp)):
pha.append(math.atan2(z2[0][i],z1[0][i]))
print numpy.degrees(pha)-numpy.degrees(pha_old)
print amp/amp_old
[ 0. 0. 0. 0. 0. 8.99999933 8.99999986 9.00000005 8.99999965 8.99999968 8.99999996 9.00000036 8.99999965 9.00000039 8.99999922 8.99999903 8.99999775 9.00000144 9.00000027 8.99999892 8.99999936 8.99999896 8.99999965 9.00000091 9.00000037 8.9999977 9.00000242 8.99999771 9.00000047 8.99999963 8.99999974 9.00000158 8.99999864 9.00000121 9.00000202 9.00000092 8.99999992 9.00000094 9.00000042 9.00000081 9.00000064 9.00000016 9.00000093 9.00000101 8.99999954 8.99999983 8.99999984 9.00000032 9.0000002 8.99999985 9.00000004 8.99999999 9.00000005 8.99999979 8.99999984 8.99999965 9.00000012 9. 9.0000001 9.00000031 9.00000022 9.00000043 9.00000023 8.99999956 8.99999995 9.00000057 8.99999945 9.00000006 8.99999976 9.00000021 8.99999981 9.00000044 8.99999967 9.00000084 8.99999948 8.9999994 8.99999943 8.9999999 9.00000124 8.99999883 9. 8.99999995 0. 0. 0. 0. 0. ] [ nan nan nan nan nan 0.99999988 1. 1. 0.99999994 1. 1. 1. 1.00000012 1. 1.00000012 1.00000012 1. 1. 1.00000012 0.99999994 1. 1. 1. 0.99999988 1. 1.00000012 1. 1.00000012 1. 1. 1. 1. 1. 0.99999988 1. 1.00000012 1.00000012 1. 1. 1.00000012 1. 1. 0.99999994 1. 1. 1. 1.00000012 1. 1. 0.99999994 1. 0.99999994 1. 1. 1. 0.99999988 1.00000012 0.99999988 1. 1. 1. 1.00000012 1. 0.99999988 1. 1. 0.99999988 0.99999988 1. 1. 1.00000012 1. 1.00000012 0.99999994 1.00000012 1.00000012 1. 1. 1. 1. 1. 1. nan nan nan nan nan]
New tides
path = '/data/nsoontie/MEOPAR/NEMO-forcing/open_boundaries/west/tides/'
fT1 = NC.Dataset(path+'SalishSea2_corr_west_tide_M2_grid_V.nc','r')
z1=fT1.variables['v1']
z2=fT1.variables['v2']
amp = numpy.sqrt(z1[0][:]**2 + z2[0][:]**2)
pha=[]
for i in range(0,len(amp)):
pha.append(math.atan2(z2[0][i],z1[0][i]))
print numpy.degrees(pha)
amp_old=amp
pha_old=pha
[ 0. 0. 0. 0. 0. 68.69891357 66.64116267 70.33340731 73.241981 75.58980788 79.03689811 83.87977541 89.10939149 86.19299859 84.39596432 84.49928322 84.47520541 84.28703658 84.60768932 85.51951315 86.31709401 87.1188766 87.62933623 88.1616432 88.70559252 89.38397882 90.39874493 91.54530411 92.75348487 94.11838611 95.2607328 96.1690744 97.11056604 98.08737632 99.09867789 100.62601929 101.94820546 103.26134587 104.6178287 106.01441478 108.85754511 111.98767068 114.56668144 116.7346863 118.87658451 121.00804654 122.76883154 124.44129556 126.10893329 127.97227522 130.15190698 132.18117738 134.0832264 135.96907266 137.83923113 139.33733675 140.58956008 141.86172187 143.15235944 144.46237294 145.67674098 146.13569389 146.59400728 147.05175454 147.50826051 147.96465279 147.9902175 147.62988244 147.25930441 146.87825301 146.48693986 146.06151964 145.27009688 144.19967184 143.11452899 142.03990608 141.22788542 140.91481607 141.26054403 143.45677204 145.25188096 140.87832835 136.25563556 0. 0. 0. 0. 0. ]
Old tides
path = '/data/nsoontie/MEOPAR/NEMO-forcing/open_boundaries/west/tides/'
fT1 = NC.Dataset(path+'SalishSea2_west_tide_M2_grid_V.nc','r')
z1=fT1.variables['v1']
z2=fT1.variables['v2']
amp = numpy.sqrt(z1[0][:]**2 + z2[0][:]**2)
pha=[]
for i in range(0,len(amp)):
pha.append(math.atan2(z2[0][i],z1[0][i]))
print numpy.degrees(pha)-numpy.degrees(pha_old)
print amp/amp_old
[ 0. 0. 0. 0. 0. 9.00000142 9.00000095 9.00000002 9.00000024 8.99999948 9.00000003 8.99999989 8.9999998 9.00000036 8.99999987 8.99999974 8.99999953 9.00000008 9.00000018 8.99999962 8.99999983 8.99999971 9.00000007 9.00000027 8.99999953 9.00000024 9.00000009 9.00000048 9.00000071 8.99999923 8.99999899 9.00000109 9.0000003 9.00000104 9.00000016 9.00000116 8.99999937 8.99999925 9.00000138 8.99999958 8.99999991 9.00000003 9.00000016 9.00000063 9.00000016 8.99999984 8.99999852 9.00000069 9.00000092 8.99999922 8.99999766 8.9999988 8.99999971 9.00000075 9.00000009 9.00000232 9.00000003 8.99999955 9.00000019 9.00000279 9.00000272 9.00000049 8.99999732 8.99999884 8.99999928 8.99999966 9.00000072 9.00000047 9.00000022 8.9999982 8.99999848 8.99999991 9.00000044 8.99999781 9.0000007 9.00000054 8.99999832 8.99999682 9.00000025 9.00000163 9.00000054 9.00000123 9.00000006 0. 0. 0. 0. 0. ] [ nan nan nan nan nan 1. 1.00000012 1. 1. 1.00000012 1. 1. 0.99999994 1. 1. 0.99999994 1. 1.00000012 1. 1.00000012 1.00000012 1. 1. 1. 1.00000012 1.00000012 1.00000012 1.00000012 0.99999988 1. 1.00000012 1. 1. 1. 1. 0.99999988 1.00000012 1. 0.99999988 1. 1.00000012 0.99999994 1. 1. 1. 1. 1. 0.99999994 0.99999994 1. 0.99999994 1. 1. 1. 1. 1. 0.99999994 0.99999994 1. 1. 1. 0.99999994 1. 1. 1. 1. 0.99999994 1.00000012 0.99999994 0.99999994 1. 1. 1. 1. 1. 0.99999994 1. 0.99999994 1. 1.00000012 1. 1.00000012 0.99999994 nan nan nan nan nan]