Skip to content
Snippets Groups Projects
Commit 9a4fee0b authored by Lionel GUEZ's avatar Lionel GUEZ
Browse files

In procedure set_all_outerm, no need now to keep llc, urc and

corner_window for all eddies in a two-dimensional array.
parent 561cd071
No related branches found
No related tags found
No related merge requests found
......@@ -57,15 +57,8 @@ contains
! identifying numbers of a selection of extrema
! Window around each extremum:
integer, allocatable:: llc(:, :) ! (2, s%number_vis_eddies)
! indices in global grid of lower left corner
integer, allocatable:: urc(:, :) ! (2, s%number_vis_eddies)
! indices in global grid of upper right corner
real, allocatable:: corner_window(:, :) ! (2, s%number_vis_eddies)
! longitude and latitude, in rad
integer llc(2) ! indices in global grid of lower left corner
integer urc(2) ! indices in global grid of upper right corner
!--------------------------------------------------------------
......@@ -74,9 +67,7 @@ contains
allocate(s%extr_map(nlon, nlat))
call local_extrema(ssh, s%extr_map, s%ind_extr, innermost_level, cyclone)
s%number_vis_eddies = size(s%ind_extr, 2)
allocate(s%list_vis(s%number_vis_eddies), llc(2, s%number_vis_eddies), &
urc(2, s%number_vis_eddies), corner_window(2, s%number_vis_eddies), &
sorted_extr(s%number_vis_eddies))
allocate(s%list_vis(s%number_vis_eddies), sorted_extr(s%number_vis_eddies))
forall (i = 1:s%number_vis_eddies)
s%list_vis(i)%coord_extr = corner + (s%ind_extr(:, i) - 1) * step
......@@ -84,11 +75,6 @@ contains
s%list_vis(i)%cyclone = cyclone(i)
s%list_vis(i)%interpolated = .false.
s%list_vis(i)%suff_amp = .true.
! Define the geographical window around each eddy extremum:
llc(:, i) = max(s%ind_extr(:, i) - max_radius, 1)
urc(:, i) = min(s%ind_extr(:, i) + max_radius, [nlon, nlat])
corner_window(:, i) = corner + (llc(:, i) - 1) * step
end forall
! Double sort of extrema on cyclonicity and SSH value:
......@@ -104,12 +90,16 @@ contains
do l = 1, s%number_vis_eddies
i = sorted_extr(l)
! Define the geographical window around each eddy extremum:
llc = max(s%ind_extr(:, i) - max_radius, 1)
urc = min(s%ind_extr(:, i) + max_radius, [nlon, nlat])
s%list_vis(i)%out_cont = get_1_outerm(s%list_vis(i)%cyclone, &
s%list_vis(i)%coord_extr, innermost_level(i), &
nearby_extr(s%extr_map(llc(1, i):urc(1, i), &
llc(2, i):urc(2, i)), s%list_vis, i), &
ssh(llc(1, i):urc(1, i), llc(2, i):urc(2, i)), &
corner_window(:, i), step)
nearby_extr(s%extr_map(llc(1):urc(1), llc(2):urc(2)), s%list_vis, &
i), ssh(llc(1):urc(1), llc(2):urc(2)), &
corner = corner + (llc - 1) * step, step = step)
if (s%list_vis(i)%out_cont%n_points == 0) then
s%list_vis(i)%suff_amp = .false.
else
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment