From 6dfdee491a186af355541e329b315a2e90430ee2 Mon Sep 17 00:00:00 2001
From: Lionel GUEZ <guez@lmd.ens.fr>
Date: Wed, 28 Feb 2024 23:04:37 +0100
Subject: [PATCH] Optimize: check `min_inters` first

There is a check on `min_inters` inside `inters_lines` but adding
these two tests in overlap can spare calls to `copy_shift`. Note that
we do not need to add such tests in the three other cases of nullity
of speed contours because, in these three other cases, if at least one
of `min_inters_speed` or `min_inters_out` is <= 1 then `p_shifted` is
used.
---
 Overlap/overlap.f90 | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/Overlap/overlap.f90 b/Overlap/overlap.f90
index 8c9cc3ef..ce775bab 100644
--- a/Overlap/overlap.f90
+++ b/Overlap/overlap.f90
@@ -101,11 +101,15 @@ contains
                  assoc_eddies = inters_lines(e1%out_cont%polyline, p_shifted, &
                       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 (min_inters_speed <= 1.) then
+                    p_shifted = copy_shift(e2%speed_cont%polyline, delta_long)
+                    assoc_eddies = inters_lines(e1%speed_cont%polyline, &
+                         p_shifted, min_inters_speed)
+                 else
+                    assoc_eddies = .false.
+                 end if
 
-                 if (.not. assoc_eddies) then
+                 if (.not. assoc_eddies .and. min_inters_out <= 1.) then
                     p_shifted = copy_shift(e2%out_cont%polyline, delta_long)
                     assoc_eddies = inters_lines(e1%out_cont%polyline, &
                          p_shifted, min_inters_out)
-- 
GitLab