3131===========================================================================
3232"""
3333
34+ """
35+ WARNINGS...?
36+
37+ --- AVISO_file: /marula/emason/data/altimetry/MSLA/GLOBAL/DT/REF/dt_ref_global_merged_msla_h_qd_19930915_19930915_20100503.nc
38+ /usr/lib64/python2.7/site-packages/numpy/lib/arraysetops.py:197: RuntimeWarning: invalid value encountered in not_equal
39+ flag = np.concatenate(([True], aux[1:] != aux[:-1]))
40+ --- AVISO_file: /marula/emason/data/altimetry/MSLA/GLOBAL/DT/REF/dt_ref_global_merged_msla_h_qd_19930922_19930922_20100503.nc
41+ """
42+
43+
44+
45+
46+
3447
3548import glob as glob
3649#import matplotlib.pyplot as plt
@@ -114,6 +127,7 @@ def kdt(lon, lat, limits, k=4):
114127 return iind, jind
115128
116129 if 'AvisoGrid' in self.__class__.__name__:
130+
117131 if self.zero_crossing is True:
118132 '''
119133 Used for a zero crossing, e.g., across Agulhas region
@@ -135,6 +149,7 @@ def half_limits(lon, lat):
135149 limits = half_limits(lon, lat)
136150 iind, jind = kdt(self._lon, self._lat, limits)
137151 self.i0 = iind.max()
152+
138153 return self
139154
140155
@@ -395,10 +410,19 @@ def get_geostrophic_velocity(self, zeta):
395410 surface from variables f, zeta, pm, pn...
396411 Note: output at rho points
397412 '''
398- self.upad[:] = -self.gof() * self.v2rho_2d(self.vmask() * (zeta.data[1:] - zeta.data[:-1]) \
399- * 0.5 * (self.pn()[1:] + self.pn()[:-1]))
400- self.vpad[:] = self.gof() * self.u2rho_2d(self.umask() * (zeta.data[:, 1:] - zeta.data[:, :-1]) \
401- * 0.5 * (self.pm()[:, 1:] + self.pm()[:, :-1]))
413+ gof = self.gof().view()
414+ vmask = self.v2rho_2d(self.vmask().view()
415+ zeta1, zeta2 = zeta.data[1:].view(), zeta.data[:-1].view()
416+ pn1, pn2 = self.pn()[1:].view(), self.pn()[:-1].view()
417+ self.upad[:] = ne.evaluate('-gof * vmask * (zeta1 - zeta2) * 0.5 * (pn1 + pn2)')
418+ #self.upad[:] = -self.gof() * self.v2rho_2d(self.vmask() * (zeta.data[1:] - zeta.data[:-1]) \
419+ #* 0.5 * (self.pn()[1:] + self.pn()[:-1]))
420+ umask = self.u2rho_2d(self.umask().view()
421+ zeta1, zeta2 = zeta.data[:,1:].view(), zeta.data[:,:-1].view()
422+ pm1, pm2 = self.pm()[:,1:].view(), self.pm()[:,:-1].view()
423+ self.vpad[:] = ne.evaluate('gof * umask * (zeta1 - zeta2) * 0.5 * (pm1 + pm2)')
424+ #self.vpad[:] = self.gof() * self.u2rho_2d(self.umask() * (zeta.data[:, 1:] - zeta.data[:, :-1]) \
425+ #* 0.5 * (self.pm()[:, 1:] + self.pm()[:, :-1]))
402426 return self
403427
404428
@@ -424,15 +448,17 @@ def getEKE(self):
424448 '''
425449 self.u[:] = self.upad[self.jup0:self.jup1, self.iup0:self.iup1]
426450 self.v[:] = self.vpad[self.jup0:self.jup1, self.iup0:self.iup1]
427- np.add(self.u**2, self.v**2, out=self.eke)
428- self.eke *= 0.5
451+ u, v = self.u.view(), self.v.view()
452+ self.eke[:] = ne.evaluate('0.5 * (u**2 + v**2)')
453+ #np.add(self.u**2, self.v**2, out=self.eke)
454+ #self.eke *= 0.5
429455 return self
430456
431457
432458
433459class AvisoGrid (PyEddyTracker):
434460 '''
435- Class to satisfy the need of the ROMS eddy tracker
461+ Class to satisfy the need of the eddy tracker
436462 to have a grid class
437463 '''
438464 def __init__(self, AVISO_file, lonmin, lonmax, latmin, latmax, with_pad=True, use_maskoceans=False):
@@ -705,7 +731,7 @@ def pcol_2dxy(self, x, y):
705731 #the_domain = 'MedSea' # not yet implemented
706732
707733 # Specify use of new AVISO 2014 data
708- new_AVISO = True
734+ new_AVISO = False
709735
710736 # Specify subsampling new AVISO 2014 data; i.e. you may
711737 # prefer to use every second day rather than every day
@@ -730,8 +756,8 @@ def pcol_2dxy(self, x, y):
730756 directory = '/marula/emason/data/altimetry/global/delayed-time/grids/msla/two-sat-merged/h/'
731757 AVISO_files = 'dt_global_twosat_msla_h_????????_20140106.nc'
732758 else:
733- directory = '/path/to/your/aviso_data/'
734- # directory = '/marula/emason/data/altimetry/MSLA/GLOBAL/DT/REF/'
759+ # directory = '/path/to/your/aviso_data/'
760+ directory = '/marula/emason/data/altimetry/MSLA/GLOBAL/DT/REF/'
735761 AVISO_files = 'dt_ref_global_merged_msla_h_qd_????????_*.nc'
736762
737763 elif 'MedSea' in the_domain:
@@ -754,20 +780,21 @@ def pcol_2dxy(self, x, y):
754780 # Set date range (YYYYMMDD)
755781 #date_str, date_end = 19980107, 19991110 #
756782 #date_str, date_end = 20081107, 20100110 #
757- date_str, date_end = 19930101, 20121231 #
783+ date_str, date_end = 19921014, 20120718 #
758784
759785 # Choose type of diagnostic: either q-parameter ('Q') or sea level anomaly ('sla')
760- diag_type = 'Q' #<<< not implemented in 1.2.0
761- # diag_type = 'sla'
786+ # diag_type = 'Q' #<<< not implemented in 1.2.0
787+ diag_type = 'sla'
762788
763789
764790 # Path to directory where outputs are to be saved...
765791 #savedir = directory
766792 #savedir = '/marula/emason/aviso_eddy_tracking/pablo_exp/'
767793 #savedir = '/marula/emason/aviso_eddy_tracking/new_AVISO_test/'
768794 #savedir = '/marula/emason/aviso_eddy_tracking/new_AVISO_SUBSAMP-3days/'
769- savedir = '/marula/emason/aviso_eddy_tracking/junk/'
795+ # savedir = '/marula/emason/aviso_eddy_tracking/junk/'
770796 #savedir = '/marula/emason/aviso_eddy_tracking/new_AVISO_test/BlackSea/'
797+ savedir = '/marula/emason/aviso_eddy_tracking/Corridor_V3_Dec2014/'
771798 #savedir = '/path/to/save/your/outputs/'
772799
773800
@@ -810,8 +837,8 @@ def pcol_2dxy(self, x, y):
810837
811838 # Set SLA contour spacing
812839 elif 'sla' in diag_type:
813- # slaparameter = np.arange(-100., 101., 1.0) # cm
814- slaparameter = np.arange(-100., 100.25, 0.25) # cm
840+ slaparameter = np.arange(-100., 101., 1.0) # cm
841+ # slaparameter = np.arange(-100., 100.25, 0.25) # cm
815842
816843
817844
@@ -844,10 +871,10 @@ def pcol_2dxy(self, x, y):
844871 #latmin = -35.
845872 #latmax = -10.
846873
847- # lonmin = -65. # Corridor
848- # lonmax = -5.5
849- # latmin = 11.5
850- # latmax = 38.5
874+ lonmin = -65. # Corridor
875+ lonmax = -5.5
876+ latmin = 11.5
877+ latmax = 38.5
851878
852879 #lonmin = -179. # SEP
853880 #lonmax = -65
@@ -938,7 +965,7 @@ def pcol_2dxy(self, x, y):
938965
939966 # Use this for subsampling to get identical list as old_AVISO
940967 #AVISO_files = AVISO_files[5:-5:7]
941- if new_AVISO_SUBSAMP:
968+ if new_AVISO and new_AVISO_SUBSAMP:
942969 AVISO_files = AVISO_files[5:-5:np.int(days_btwn_recs)]
943970
944971 # Set up a grid object using first AVISO file in the list
@@ -1341,7 +1368,8 @@ def pcol_2dxy(self, x, y):
13411368
13421369 if anim_figs: # Make figures for animations
13431370
1344- tit = 'Y' + str(yr) + 'M' + str(mo).zfill(2) + 'D' + str(da).zfill(2)
1371+ #tit = 'Y' + str(yr) + 'M' + str(mo).zfill(2) + 'D' + str(da).zfill(2)
1372+ tit = ''.join((str(yr), str(mo).zfill(2), str(da).zfill(2)))
13451373 #tit = str(yr) + str(mo).zfill(2) + str(da).zfill(2)
13461374
13471375 #if 'anim_fig' in locals():
@@ -1380,12 +1408,12 @@ def pcol_2dxy(self, x, y):
13801408 print '--- saving to nc', C_eddy.savedir
13811409 print '+++'
13821410 if chelton_style_nc: # Recommended
1383- A_eddy.write2chelton_nc (rtime)
1384- C_eddy.write2chelton_nc (rtime)
1411+ A_eddy.write2netcdf (rtime)
1412+ C_eddy.write2netcdf (rtime)
13851413 else:
13861414 A_eddy.write2nc(A_savefile, rtime)
13871415 C_eddy.write2nc(C_savefile, rtime)
1388-
1416+ raise Exception, 'not supported'
13891417 #print 'Saving the eddies', time.time() - saving_start_time, 'seconds'
13901418
13911419 # Running time for a single monthly file
0 commit comments