25
25
26
26
make_eddy_tracker_list_obj.py
27
27
28
- Version 2.0.0
28
+ Version 2.0.1
29
29
30
30
31
31
===========================================================================
@@ -193,8 +193,6 @@ def append_pos(self, lon, lat, time, uavg, teke, radius_s, radius_e,
193
193
"""
194
194
Append track updates
195
195
"""
196
- #self.lon = np.r_[self.lon, lon]
197
- #print 'ccccccccccccccccccccccc', type(lon)
198
196
self .lon .append (lon )
199
197
self .lat .append (lat )
200
198
self .ocean_time .append (time )
@@ -205,8 +203,8 @@ def append_pos(self, lon, lat, time, uavg, teke, radius_s, radius_e,
205
203
self .amplitude .append (amplitude )
206
204
if 'ROMS' in self .PRODUCT :
207
205
#self.temp = np.r_[self.temp, temp]
208
- pass
209
206
#self.salt = np.r_[self.salt, salt]
207
+ pass
210
208
if self .save_extras :
211
209
self .contour_e .append (contour_e )
212
210
self .contour_s .append (contour_s )
@@ -368,7 +366,7 @@ def __getstate__(self):
368
366
"""pops = ('uspd', 'uspd_coeffs', 'sla_coeffs', 'points',
369
367
'circlon', 'circlat', 'sla', 'slacopy', 'swirl',
370
368
'mask_eff', 'mask_eff_sum', 'mask_eff_1d')"""
371
- pops = ('uspd' , 'uspd_coeffs' , 'sla_coeffs' , 'points' ,
369
+ pops = ('uspd' , 'uspd_coeffs' , 'sla_coeffs' , 'points' ,
372
370
'sla' , 'slacopy' , 'swirl' ,
373
371
'mask_eff' , 'mask_eff_sum' , 'mask_eff_1d' )
374
372
result = self .__dict__ .copy ()
@@ -679,7 +677,7 @@ def create_netcdf(self, directory, savedir,
679
677
680
678
nc .createDimension ('contour_points' , None )
681
679
nc .createDimension ('uavg_contour_count' ,
682
- np .int (self .slaparameter .size * 0.333 ))
680
+ np .int (self .CONTOUR_PARAMETER .size * 0.333 ))
683
681
nc .createVariable ('contour_e' , 'f4' ,
684
682
('contour_points' ,'Nobs' ), fill_value = self .FILLVAL )
685
683
nc .createVariable ('contour_s' , 'f4' ,
@@ -766,7 +764,7 @@ def write2netcdf(self, rtime):
766
764
767
765
tsize = len (self .tracklist [i ].lon )
768
766
769
- if (tsize >= self .TRACK_DURATION_MIN / DBR ) and tsize > 1. :
767
+ if (tsize >= self .TRACK_DURATION_MIN / DBR ) and tsize >= 1. :
770
768
lon = np .array ([self .tracklist [i ].lon ])
771
769
lat = np .array ([self .tracklist [i ].lat ])
772
770
amp = np .array ([self .tracklist [i ].amplitude ])
@@ -1006,6 +1004,22 @@ def get_rwdistance(self, xpt, ypt, DAYS_BTWN_RECORDS):
1006
1004
Return the distance required by SearchEllipse
1007
1005
to construct a search ellipse for eddy tracking.
1008
1006
"""
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
+
1009
1023
if self .THE_DOMAIN in ('Global' , 'Regional' , 'ROMS' ):
1010
1024
#print 'xpt, ypt', xpt, ypt
1011
1025
self .distance [:] = self ._get_rlongwave_spd (xpt , ypt )
@@ -1023,23 +1037,21 @@ def get_rwdistance(self, xpt, ypt, DAYS_BTWN_RECORDS):
1023
1037
Exception # Unknown THE_DOMAIN
1024
1038
1025
1039
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
1043
1055
self .start = False
1044
1056
1045
1057
self .distance = np .abs (self .distance )
@@ -1052,6 +1064,7 @@ def _make_subset(self):
1052
1064
"""
1053
1065
pad = 1.5 # degrees
1054
1066
LONMIN , LONMAX , LATMIN , LATMAX = self .limits
1067
+
1055
1068
if self .ZERO_CROSSING :
1056
1069
ieast , iwest = (((self ._lon + 360. ) <= LONMAX + pad ),
1057
1070
(self ._lon > LONMIN + pad ))
@@ -1158,7 +1171,7 @@ def __init__(self, THE_DOMAIN, grd, DAYS_BTWN_RECORDS, RW_PATH=None):
1158
1171
self .n_s_minor = self .DAYS_BTWN_RECORDS * 15e4 / 7.
1159
1172
self .semi_n_s_minor = 0.5 * self .n_s_minor
1160
1173
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
1162
1175
self .rw_c = np .empty (1 )
1163
1176
self .rw_c_mod = np .empty (1 )
1164
1177
self .rw_c_fac = 1.75
@@ -1201,7 +1214,7 @@ def _set_black_sea_ellipse(self):
1201
1214
"""
1202
1215
Set *ellipse_path* for the *black_sea_ellipse*.
1203
1216
"""
1204
- self .black_sea_ellipse = patch .Ellipse ((self .x , self .y ),
1217
+ self .black_sea_ellipse = patch .Ellipse ((self .xpt , self .ypt ),
1205
1218
2. * self .rw_c_mod , 2. * self .rw_c_mod )
1206
1219
verts = self .black_sea_ellipse .get_verts ()
1207
1220
self .ellipse_path = path .Path (np .array ([verts [:, 0 ],
@@ -1221,20 +1234,19 @@ def set_search_ellipse(self, xpt, ypt):
1221
1234
"""
1222
1235
self .xpt = xpt
1223
1236
self .ypt = ypt
1237
+ self .rw_c_mod [:] = 1.75
1224
1238
1225
1239
if self .THE_DOMAIN in ('Global' , 'Regional' , 'ROMS' ):
1226
1240
self .rw_c [:] = self .rwv .get_rwdistance (xpt , ypt ,
1227
1241
self .DAYS_BTWN_RECORDS )
1228
- self .rw_c_mod [:] = 1.75
1229
1242
self .rw_c_mod *= self .rw_c
1230
1243
self .rw_c_mod [:] = np .array ([self .rw_c_mod ,
1231
1244
self .semi_n_s_minor ]).max ()
1232
1245
self .rw_c_mod *= 2.
1233
1246
self ._set_global_ellipse ()
1234
1247
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 ,
1238
1250
self .DAYS_BTWN_RECORDS )
1239
1251
self .rw_c_mod *= self .rw_c
1240
1252
self ._set_black_sea_ellipse ()
0 commit comments