2525
2626make_eddy_tracker_list_obj.py
2727
28- Version 2.0.0
28+ Version 2.0.1
2929
3030
3131===========================================================================
@@ -193,8 +193,6 @@ def append_pos(self, lon, lat, time, uavg, teke, radius_s, radius_e,
193193 """
194194 Append track updates
195195 """
196- #self.lon = np.r_[self.lon, lon]
197- #print 'ccccccccccccccccccccccc', type(lon)
198196 self .lon .append (lon )
199197 self .lat .append (lat )
200198 self .ocean_time .append (time )
@@ -205,8 +203,8 @@ def append_pos(self, lon, lat, time, uavg, teke, radius_s, radius_e,
205203 self .amplitude .append (amplitude )
206204 if 'ROMS' in self .PRODUCT :
207205 #self.temp = np.r_[self.temp, temp]
208- pass
209206 #self.salt = np.r_[self.salt, salt]
207+ pass
210208 if self .save_extras :
211209 self .contour_e .append (contour_e )
212210 self .contour_s .append (contour_s )
@@ -368,7 +366,7 @@ def __getstate__(self):
368366 """pops = ('uspd', 'uspd_coeffs', 'sla_coeffs', 'points',
369367 'circlon', 'circlat', 'sla', 'slacopy', 'swirl',
370368 'mask_eff', 'mask_eff_sum', 'mask_eff_1d')"""
371- pops = ('uspd' , 'uspd_coeffs' , 'sla_coeffs' , 'points' ,
369+ pops = ('uspd' , 'uspd_coeffs' , 'sla_coeffs' , 'points' ,
372370 'sla' , 'slacopy' , 'swirl' ,
373371 'mask_eff' , 'mask_eff_sum' , 'mask_eff_1d' )
374372 result = self .__dict__ .copy ()
@@ -679,7 +677,7 @@ def create_netcdf(self, directory, savedir,
679677
680678 nc .createDimension ('contour_points' , None )
681679 nc .createDimension ('uavg_contour_count' ,
682- np .int (self .slaparameter .size * 0.333 ))
680+ np .int (self .CONTOUR_PARAMETER .size * 0.333 ))
683681 nc .createVariable ('contour_e' , 'f4' ,
684682 ('contour_points' ,'Nobs' ), fill_value = self .FILLVAL )
685683 nc .createVariable ('contour_s' , 'f4' ,
@@ -766,7 +764,7 @@ def write2netcdf(self, rtime):
766764
767765 tsize = len (self .tracklist [i ].lon )
768766
769- if (tsize >= self .TRACK_DURATION_MIN / DBR ) and tsize > 1. :
767+ if (tsize >= self .TRACK_DURATION_MIN / DBR ) and tsize >= 1. :
770768 lon = np .array ([self .tracklist [i ].lon ])
771769 lat = np .array ([self .tracklist [i ].lat ])
772770 amp = np .array ([self .tracklist [i ].amplitude ])
@@ -1006,6 +1004,22 @@ def get_rwdistance(self, xpt, ypt, DAYS_BTWN_RECORDS):
10061004 Return the distance required by SearchEllipse
10071005 to construct a search ellipse for eddy tracking.
10081006 """
1007+ def get_lon_lat (xpt , ypt ):
1008+ """
1009+
1010+ """
1011+ lon , lat = self .M .projtran (xpt , ypt , inverse = True )
1012+ lon , lat = np .round (lon , 2 ), np .round (lat , 2 )
1013+ if lon < 0. :
1014+ lon = "" .join ((str (lon ), 'W' ))
1015+ elif lon >= 0 :
1016+ lon = "" .join ((str (lon ), 'E' ))
1017+ if lat < 0 :
1018+ lat = "" .join ((str (lat ), 'S' ))
1019+ elif lat >= 0 :
1020+ lat = "" .join ((str (lat ), 'N' ))
1021+ return lon , lat
1022+
10091023 if self .THE_DOMAIN in ('Global' , 'Regional' , 'ROMS' ):
10101024 #print 'xpt, ypt', xpt, ypt
10111025 self .distance [:] = self ._get_rlongwave_spd (xpt , ypt )
@@ -1023,23 +1037,21 @@ def get_rwdistance(self, xpt, ypt, DAYS_BTWN_RECORDS):
10231037 Exception # Unknown THE_DOMAIN
10241038
10251039 if self .start :
1026- lon , lat = self .M .projtran (xpt , ypt , inverse = True )
1027- lon , lat = np .round (lon , 2 ), np .round (lat , 2 )
1028- if lon < 0. :
1029- lon = "" .join ((str (lon ), 'W' ))
1030- elif lon >= 0 :
1031- lon = "" .join ((str (lon ), 'E' ))
1032- if lat < 0 :
1033- lat = "" .join ((str (lat ), 'S' ))
1034- elif lat >= 0 :
1035- lat = "" .join ((str (lat ), 'N' ))
1036-
1037- print "" .join (('--------- setting ellipse for first tracked ' ,
1038- 'eddy at %s, %s in the %s domain'
1039- % (lon , lat , self .THE_DOMAIN )))
1040- c = np .abs (self ._get_rlongwave_spd (xpt , ypt ))[0 ]
1041- print "" .join (('--------- with extratropical long baroclinic ' ,
1042- 'Rossby wave phase speed of %s m/s' % c ))
1040+ lon , lat = get_lon_lat (xpt , ypt )
1041+ if 'Global' in self .THE_DOMAIN :
1042+ print "" .join (('--------- setting ellipse for first tracked ' ,
1043+ 'eddy at %s, %s in the %s domain'
1044+ % (lon , lat , self .THE_DOMAIN )))
1045+ c = np .abs (self ._get_rlongwave_spd (xpt , ypt ))[0 ]
1046+ print "" .join (('--------- with extratropical long baroclinic ' ,
1047+ 'Rossby wave phase speed of %s m/s' % c ))
1048+ elif self .THE_DOMAIN in ('BlackSea' , 'MedSea' ):
1049+ print "" .join (('--------- setting search radius of %s m for '
1050+ % self .distance [0 ],
1051+ 'first tracked eddy at %s, %s in the %s domain'
1052+ % (lon , lat , self .THE_DOMAIN )))
1053+ else :
1054+ Exception
10431055 self .start = False
10441056
10451057 self .distance = np .abs (self .distance )
@@ -1052,6 +1064,7 @@ def _make_subset(self):
10521064 """
10531065 pad = 1.5 # degrees
10541066 LONMIN , LONMAX , LATMIN , LATMAX = self .limits
1067+
10551068 if self .ZERO_CROSSING :
10561069 ieast , iwest = (((self ._lon + 360. ) <= LONMAX + pad ),
10571070 (self ._lon > LONMIN + pad ))
@@ -1158,7 +1171,7 @@ def __init__(self, THE_DOMAIN, grd, DAYS_BTWN_RECORDS, RW_PATH=None):
11581171 self .n_s_minor = self .DAYS_BTWN_RECORDS * 15e4 / 7.
11591172 self .semi_n_s_minor = 0.5 * self .n_s_minor
11601173 self .rwv = RossbyWaveSpeed (THE_DOMAIN , grd , RW_PATH = RW_PATH )
1161- #self.rwv.view_grid_subset()
1174+ #self.rwv.view_grid_subset() # debug; not relevant for MedSea / BlackSea
11621175 self .rw_c = np .empty (1 )
11631176 self .rw_c_mod = np .empty (1 )
11641177 self .rw_c_fac = 1.75
@@ -1201,7 +1214,7 @@ def _set_black_sea_ellipse(self):
12011214 """
12021215 Set *ellipse_path* for the *black_sea_ellipse*.
12031216 """
1204- self .black_sea_ellipse = patch .Ellipse ((self .x , self .y ),
1217+ self .black_sea_ellipse = patch .Ellipse ((self .xpt , self .ypt ),
12051218 2. * self .rw_c_mod , 2. * self .rw_c_mod )
12061219 verts = self .black_sea_ellipse .get_verts ()
12071220 self .ellipse_path = path .Path (np .array ([verts [:, 0 ],
@@ -1221,20 +1234,19 @@ def set_search_ellipse(self, xpt, ypt):
12211234 """
12221235 self .xpt = xpt
12231236 self .ypt = ypt
1237+ self .rw_c_mod [:] = 1.75
12241238
12251239 if self .THE_DOMAIN in ('Global' , 'Regional' , 'ROMS' ):
12261240 self .rw_c [:] = self .rwv .get_rwdistance (xpt , ypt ,
12271241 self .DAYS_BTWN_RECORDS )
1228- self .rw_c_mod [:] = 1.75
12291242 self .rw_c_mod *= self .rw_c
12301243 self .rw_c_mod [:] = np .array ([self .rw_c_mod ,
12311244 self .semi_n_s_minor ]).max ()
12321245 self .rw_c_mod *= 2.
12331246 self ._set_global_ellipse ()
12341247
1235- elif 'BlackSea' in self .THE_DOMAIN :
1236- self .rw_c_mod [:] = 1.75
1237- self .rw_c [:] = self .rwv .get_rwdistance (x , y ,
1248+ elif self .THE_DOMAIN in ('BlackSea' , 'MedSea' ):
1249+ self .rw_c [:] = self .rwv .get_rwdistance (xpt , ypt ,
12381250 self .DAYS_BTWN_RECORDS )
12391251 self .rw_c_mod *= self .rw_c
12401252 self ._set_black_sea_ellipse ()
0 commit comments