diff --git a/Overlap/config_graph.F90 b/Overlap/config_graph.F90 index 9e772fa825c79a326f37c034edb2a3fe3fe2b4eb..89e6d631de2ddec182b922fd9fc6252676a88a30 100644 --- a/Overlap/config_graph.F90 +++ b/Overlap/config_graph.F90 @@ -18,6 +18,10 @@ module config_graph_m ! minimum intersection between maximum-speed contours, computed as a ! fraction of surface + real, protected:: min_inters_out = 1.1 + ! minimum intersection between outermost contours, computed as a + ! fraction of surface + contains subroutine config_graph(rank) @@ -33,7 +37,8 @@ contains integer, intent(in):: rank ! Local: - namelist /config_graph_nml/ max_delta, dist_lim, cyclone, min_inters_speed + namelist /config_graph_nml/ max_delta, dist_lim, cyclone, & + min_inters_speed, min_inters_out !----------------------------------------------------------------- @@ -54,6 +59,7 @@ contains call ezmpi_bcast(dist_lim, root = 0) call ezmpi_bcast(cyclone, root = 0) call ezmpi_bcast(min_inters_speed, root = 0) + call ezmpi_bcast(min_inters_out, root = 0) call ezmpi_bcast(copy, root = 0) #endif diff --git a/Overlap/overlap.f90 b/Overlap/overlap.f90 index 67cd21031ebe6ae1247910853e25c20a8311cd58..423d9b04f1be0064d8a801acd2b3690657ed94de 100644 --- a/Overlap/overlap.f90 +++ b/Overlap/overlap.f90 @@ -16,7 +16,7 @@ contains use copy_shift_m, only: copy_shift use candidate_overlap_m, only: candidate_overlap - use config_graph_m, only: dist_lim, min_inters_speed + use config_graph_m, only: dist_lim, min_inters_speed, min_inters_out use derived_types, only: snapshot use inters_lines_m, only: inters_lines use read_grid_m, only: nlon, nlat, periodic @@ -84,20 +84,34 @@ contains p_shifted = copy_shift(e2%speed_cont%polyline, delta_long) assoc_eddies = inters_lines(e1%out_cont%polyline, p_shifted, & min_inters_speed) + if (.not. assoc_eddies) then + p_shifted = copy_shift(e2%out%polyline, delta_long) + assoc_eddies = inters_lines(e1%out_cont%polyline, & + p_shifted, min_inters_out) + end if elseif (e1%speed_cont%n_points /= 0 & .and. e2%speed_cont%n_points == 0) then p_shifted = copy_shift(e2%out_cont%polyline, delta_long) assoc_eddies = inters_lines(e1%speed_cont%polyline, & p_shifted, min_inters_speed) + if (.not. assoc_eddies) assoc_eddies & + = inters_lines(e1%out_cont%polyline, p_shifted, & + min_inters_out) elseif (e1%speed_cont%n_points == 0 & .and. e2%speed_cont%n_points == 0) then p_shifted = copy_shift(e2%out_cont%polyline, delta_long) assoc_eddies = inters_lines(e1%out_cont%polyline, p_shifted, & - min_inters_speed) + min(min_inters_speed, min_inters_out)) else p_shifted = copy_shift(e2%speed_cont%polyline, delta_long) assoc_eddies = inters_lines(e1%speed_cont%polyline, & p_shifted, min_inters_speed) + + if (.not. assoc_eddies) then + p_shifted = copy_shift(e2%out_cont%polyline, delta_long) + assoc_eddies = inters_lines(e1%out_cont%polyline, & + p_shifted, min_inters_out) + end if end if if (assoc_eddies) then