@@ -404,23 +404,29 @@ def make_gridmask(self, with_pad=True, use_maskoceans=False):
404
404
self .Mx , self .My = x , y
405
405
return self
406
406
407
+
407
408
def get_geostrophic_velocity (self , zeta ):
408
409
'''
409
410
Returns u and v geostrophic velocity at
410
411
surface from variables f, zeta, pm, pn...
411
412
Note: output at rho points
412
413
'''
413
414
gof = self .gof ().view ()
414
- vmask = self .v2rho_2d (self .vmask ().view ()
415
+
416
+ vmask = self .vmask ().view ()
415
417
zeta1 , zeta2 = zeta .data [1 :].view (), zeta .data [:- 1 ].view ()
416
418
pn1 , pn2 = self .pn ()[1 :].view (), self .pn ()[:- 1 ].view ()
417
- self .upad [:] = ne .evaluate ('-gof * vmask * (zeta1 - zeta2) * 0.5 * (pn1 + pn2)' )
419
+ self .upad [:] = self .v2rho_2d (ne .evaluate ('vmask * (zeta1 - zeta2) * 0.5 * (pn1 + pn2)' ))
420
+ self .upad *= - gof
418
421
#self.upad[:] = -self.gof() * self.v2rho_2d(self.vmask() * (zeta.data[1:] - zeta.data[:-1]) \
419
422
#* 0.5 * (self.pn()[1:] + self.pn()[:-1]))
420
- umask = self .u2rho_2d (self .umask ().view ()
423
+
424
+ umask = self .umask ().view ()
421
425
zeta1 , zeta2 = zeta .data [:,1 :].view (), zeta .data [:,:- 1 ].view ()
422
426
pm1 , pm2 = self .pm ()[:,1 :].view (), self .pm ()[:,:- 1 ].view ()
423
- self .vpad [:] = ne .evaluate ('gof * umask * (zeta1 - zeta2) * 0.5 * (pm1 + pm2)' )
427
+ #self.vpad[:] = ne.evaluate('gof * (umask * (zeta1 - zeta2) * 0.5 * (pm1 + pm2))')
428
+ self .vpad [:] = self .u2rho_2d (ne .evaluate ('umask * (zeta1 - zeta2) * 0.5 * (pm1 + pm2)' ))
429
+ self .vpad *= gof
424
430
#self.vpad[:] = self.gof() * self.u2rho_2d(self.umask() * (zeta.data[:, 1:] - zeta.data[:, :-1]) \
425
431
#* 0.5 * (self.pm()[:, 1:] + self.pm()[:, :-1]))
426
432
return self
@@ -656,8 +662,8 @@ def pn(self): # Reciprocal of dy
656
662
657
663
658
664
def get_resolution (self ):
659
- return np .mean ( np . sqrt (np .diff (self .lon ()[1 :], axis = 1 ) *
660
- np .diff (self .lat ()[:,1 :], axis = 0 )))
665
+ return np .sqrt (np .diff (self .lon ()[1 :], axis = 1 ) *
666
+ np .diff (self .lat ()[:,1 :], axis = 0 )). mean ( )
661
667
662
668
663
669
@@ -731,12 +737,12 @@ def pcol_2dxy(self, x, y):
731
737
#the_domain = 'MedSea' # not yet implemented
732
738
733
739
# Specify use of new AVISO 2014 data
734
- new_AVISO = False
740
+ new_AVISO = True
735
741
736
742
# Specify subsampling new AVISO 2014 data; i.e. you may
737
743
# prefer to use every second day rather than every day
738
744
if new_AVISO :
739
- new_AVISO_SUBSAMP = True
745
+ new_AVISO_SUBSAMP = False
740
746
if new_AVISO_SUBSAMP :
741
747
days_btwn_recs = 3. # put sampling rate (days) here
742
748
else :
@@ -780,7 +786,8 @@ def pcol_2dxy(self, x, y):
780
786
# Set date range (YYYYMMDD)
781
787
#date_str, date_end = 19980107, 19991110 #
782
788
#date_str, date_end = 20081107, 20100110 #
783
- date_str , date_end = 19921014 , 20120718 #
789
+ #date_str, date_end = 19921014, 20120718 #
790
+ date_str , date_end = 20020101 , 20021231 #
784
791
785
792
# Choose type of diagnostic: either q-parameter ('Q') or sea level anomaly ('sla')
786
793
#diag_type = 'Q' #<<< not implemented in 1.2.0
@@ -794,7 +801,8 @@ def pcol_2dxy(self, x, y):
794
801
#savedir = '/marula/emason/aviso_eddy_tracking/new_AVISO_SUBSAMP-3days/'
795
802
#savedir = '/marula/emason/aviso_eddy_tracking/junk/'
796
803
#savedir = '/marula/emason/aviso_eddy_tracking/new_AVISO_test/BlackSea/'
797
- savedir = '/marula/emason/aviso_eddy_tracking/Corridor_V3_Dec2014/'
804
+ #savedir = '/marula/emason/aviso_eddy_tracking/Corridor_V3_Dec2014/'
805
+ savedir = '/marula/emason/aviso_eddy_tracking/CLS_test_1_acd66ba338a9/'
798
806
#savedir = '/path/to/save/your/outputs/'
799
807
800
808
@@ -809,7 +817,7 @@ def pcol_2dxy(self, x, y):
809
817
jday_ref = 2448623
810
818
811
819
# Min and max permitted eddy radii [degrees]
812
- radmin = 0.4 # degrees (Chelton recommends ~50 km minimum)
820
+ radmin = 0.35 # degrees (Chelton recommends ~50 km minimum)
813
821
radmax = 4.461 # degrees
814
822
815
823
if 'Q' in diag_type :
@@ -837,8 +845,8 @@ def pcol_2dxy(self, x, y):
837
845
838
846
# Set SLA contour spacing
839
847
elif 'sla' in diag_type :
840
- slaparameter = np .arange (- 100. , 101. , 1.0 ) # cm
841
- # slaparameter = np.arange(-100., 100.25, 0.25) # cm
848
+ # slaparameter = np.arange(-100., 101., 1.0) # cm
849
+ slaparameter = np .arange (- 100. , 100.25 , 0.25 ) # cm
842
850
843
851
844
852
@@ -861,10 +869,10 @@ def pcol_2dxy(self, x, y):
861
869
subdomain = True
862
870
if the_domain in 'Global' :
863
871
864
- lonmin = - 40. # Canary
865
- lonmax = - 5.5
866
- latmin = 16.
867
- latmax = 36.5
872
+ # lonmin = -40. # Canary
873
+ # lonmax = -5.5
874
+ # latmin = 16.
875
+ # latmax = 36.5
868
876
869
877
#lonmin = -30. # BENCS
870
878
#lonmax = 22.
@@ -1177,6 +1185,7 @@ def pcol_2dxy(self, x, y):
1177
1185
if isinstance (smoothing , str ):
1178
1186
1179
1187
if 'Gaussian' in smoothing :
1188
+
1180
1189
if 'first_record' not in locals ():
1181
1190
print '------ applying Gaussian high-pass filter'
1182
1191
# Set landpoints to zero
@@ -1185,7 +1194,9 @@ def pcol_2dxy(self, x, y):
1185
1194
# High pass filter, see
1186
1195
# http://stackoverflow.com/questions/6094957/high-pass-filter-for-image-processing-in-python-by-using-scipy-numpy
1187
1196
sla -= ndimage .gaussian_filter (sla , [mres , zres ])
1197
+
1188
1198
elif 'Hanning' in smoothing :
1199
+
1189
1200
print '------ applying %s passes of Hanning filter' % smooth_fac
1190
1201
# Do smooth_fac passes of 2d Hanning filter
1191
1202
sla = func_hann2d_fast (sla , smooth_fac )
0 commit comments