Skip to content

Commit 96cfa93

Browse files
committed
Version 1.4.0
Added extra variables for use with ARGO
1 parent f1360f0 commit 96cfa93

File tree

5 files changed

+464
-136
lines changed

5 files changed

+464
-136
lines changed

haversine_distmat.f90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
!
2828
! If you have ifort on your system, change 'gfortran' to 'intelem'
2929
!
30-
! Version 1.3.0
30+
! Version 1.4.0
3131
!
3232
!===========================================================================
3333

make_eddy_track_AVISO.py

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
2525
make_eddy_track_AVISO.py
2626
27-
Version 1.3.0
27+
Version 1.4.0
2828
2929
3030
Scroll down to line ~640 to get started
@@ -785,7 +785,8 @@ def pcol_2dxy(self, x, y):
785785
qparameter = np.linspace(0, 5*10**-11, 25)
786786
elif 'sla' in diag_type:
787787
# Set SLA contour spacing
788-
slaparameter = np.arange(-100., 101., 1.0) # cm
788+
#slaparameter = np.arange(-100., 101., 1.0) # cm
789+
slaparameter = np.arange(-100., 100.25, 0.25) # cm
789790

790791

791792

@@ -886,9 +887,17 @@ def pcol_2dxy(self, x, y):
886887
##sep_dist_fac = 1.5 # Causes tracks to jump for AVISO 7-day
887888

888889

890+
#Define track_extra_variables to track and save:
891+
# - effective contour points
892+
# - speed-based contour points
893+
# - shape test values
894+
# - profiles of swirl velocity from effective contour inwards
895+
# Useful for working with ARGO data
896+
track_extra_variables = True
897+
898+
889899

890900
cmap = plt.cm.RdBu
891-
892901
verbose = False
893902

894903

@@ -950,8 +959,8 @@ def pcol_2dxy(self, x, y):
950959
#axis = plt.axes()
951960

952961
# Initialise two eddy objects to hold data
953-
A_eddy = eddy_tracker.track_list('AVISO', track_duration_min)
954-
C_eddy = eddy_tracker.track_list('AVISO', track_duration_min)
962+
A_eddy = eddy_tracker.track_list('AVISO', track_duration_min, track_extra_variables)
963+
C_eddy = eddy_tracker.track_list('AVISO', track_duration_min, track_extra_variables)
955964

956965
if 'Q' in diag_type:
957966
A_savefile = "".join([savedir, 'eddy_tracks_Q_AVISO_anticyclonic.nc'])
@@ -1043,6 +1052,7 @@ def pcol_2dxy(self, x, y):
10431052
A_eddy.verbose = verbose
10441053
C_eddy.verbose = verbose
10451054

1055+
10461056
# See Chelton section B2 (0.4 degree radius)
10471057
# These should give 8 and 1000 for 0.25 deg resolution
10481058
pixmin = np.round((np.pi * radmin**2) / sla_grd.get_resolution()**2)
@@ -1369,12 +1379,12 @@ def pcol_2dxy(self, x, y):
13691379
#saving_start_time = time.time()
13701380
if not first_record:
13711381
if verbose:
1372-
print '--- saving to nc', A_savefile
1373-
print '--- saving to nc', C_savefile
1382+
print '--- saving to nc', A_eddy.savedir
1383+
print '--- saving to nc', C_eddy.savedir
13741384
print '+++'
13751385
if chelton_style_nc: # Recommended
1376-
A_eddy.write2chelton_nc(A_savefile, rtime)
1377-
C_eddy.write2chelton_nc(C_savefile, rtime)
1386+
A_eddy.write2chelton_nc(rtime)
1387+
C_eddy.write2chelton_nc(rtime)
13781388
else:
13791389
A_eddy.write2nc(A_savefile, rtime)
13801390
C_eddy.write2nc(C_savefile, rtime)

make_eddy_track_ROMS.py

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
2525
make_eddy_track_ROMS.py
2626
27-
Version 1.3.0
27+
Version 1.4.0
2828
2929
3030
@@ -90,7 +90,9 @@
9090
filetype = 'avg'
9191
sigma_lev = -1 # -1 for surface
9292

93-
days_btwn_recs = 3.
93+
days_btwn_recs = 3. # days
94+
# Save only tracks longer than...
95+
track_duration_min = 28 # days
9496

9597
# Set grid
9698
grdname = 'roms_grd_NA2009_7pt5km.nc'
@@ -132,7 +134,7 @@
132134
qparameter = np.linspace(0, 5*10**-11, 25)
133135

134136
elif 'sla' in diag_type: # Units, cm; for anticyclones use -50 to 50
135-
slaparameter = np.arange(-100., 101., 1.0)
137+
slaparameter = np.arange(-100., 101., .25)
136138

137139

138140
# Apply a filter to the Q parameter
@@ -149,8 +151,6 @@
149151
else:
150152
error
151153

152-
# Save only tracks longer than...
153-
track_duration_min = 5 # days
154154

155155

156156

@@ -161,6 +161,11 @@
161161
lonmax = -5.5
162162
latmin = 20.5
163163
latmax = 38.5
164+
165+
#lonmin = -25. # Canary
166+
#lonmax = -15
167+
#latmin = 22.
168+
#latmax = 28.
164169

165170
# for canbas4
166171
#lonmin = -36.
@@ -186,10 +191,10 @@
186191

187192
# Parameters used by CSS11 and KCCMC11 (Sec. 3.2) to ensure the slow evolution
188193
# of the eddies over time; they use min and max values of 0.25 and 2.5
189-
evolve_ammin = 0.05 #0.25 #0.15 # min change in amplitude
190-
evolve_ammax = 5 #2.5 #5. # max change in amplitude
191-
evolve_armin = 0.05 #0.25 #0.15 # min change in area
192-
evolve_armax = 5 #2.5 #5. # max change in area
194+
evolve_ammin = 0.0005 #0.25 #0.15 # min change in amplitude
195+
evolve_ammax = 500 #2.5 #5. # max change in amplitude
196+
evolve_armin = 0.0005 #0.25 #0.15 # min change in area
197+
evolve_armax = 500 #2.5 #5. # max change in area
193198

194199

195200
separation_method = 'ellipse' # see CSS11
@@ -238,6 +243,7 @@
238243
#shape_err = 35. * np.ones(qparameter.size)
239244

240245
elif 'sla' in diag_type:
246+
#shape_err = 55. * np.ones(slaparameter.size)
241247
shape_err = 55. * np.ones(slaparameter.size)
242248
#shape_err = np.power(np.linspace(85., 40, slaparameter.size), 2) / 100.
243249
#shape_err[shape_err < 50.] = 50.
@@ -387,7 +393,7 @@
387393
A_eddy.dist0 = np.float(dist0)
388394
C_eddy.dist0 = np.float(dist0)
389395

390-
start = 0
396+
start = True
391397
start_time = time.time()
392398

393399
# Loop thru the years...
@@ -402,11 +408,14 @@
402408
filename = directory + model + '_' + filetype + \
403409
'_Y' + str(Yr) + 'M' + str(Mo) + '.nc'
404410
print 'Opening file:', filename
405-
if start == 0:
406-
start = 1
411+
if start:
412+
start = False
407413
record_range = get_ROMS_data(filename)
408-
A_eddy.days_btwn_recs = np.squeeze(np.diff(record_range[0:2]) / 86400.)
409-
C_eddy.days_btwn_recs = np.squeeze(np.diff(record_range[0:2]) / 86400.)
414+
415+
check_days_btwn_recs = np.squeeze(np.diff(record_range[0:2]) / 86400.)
416+
assert days_btwn_recs == check_days_btwn_recs, '"days_btwn_recs" is incorrectly set'
417+
A_eddy.days_btwn_recs = check_days_btwn_recs
418+
C_eddy.days_btwn_recs = check_days_btwn_recs
410419

411420
if 'ip_roms' in model:
412421
nc = netcdf.Dataset(filename)
@@ -595,12 +604,11 @@
595604
verbose=verbose)
596605

597606
elif 'sla' in diag_type:
598-
#print 'rtime 1', rtime
599607
A_eddy.sign_type = 'Anticyclonic'
600608
A_eddy = collection_loop(A_CS, grd, rtime,
601609
A_list_obj=A_eddy, C_list_obj=None,
602610
sign_type=A_eddy.sign_type, verbose=verbose)
603-
# Note that CSc is reverse order
611+
# Note that CSc is in reverse order
604612
C_eddy.sign_type = 'Cyclonic'
605613
C_eddy = collection_loop(C_CS, grd, rtime,
606614
A_list_obj=None, C_list_obj=C_eddy,
@@ -640,11 +648,11 @@
640648
plt.close(250)
641649

642650
if start:
643-
first_record = True
644651
# Set old variables equal to new variables
645652
A_eddy.set_old_variables()
646653
C_eddy.set_old_variables()
647-
start = False
654+
first_record = True
655+
#start = False
648656
else:
649657
first_record = False
650658

0 commit comments

Comments
 (0)