From 787726e00422d8a12d26177fdf8a38e2a1b28602 Mon Sep 17 00:00:00 2001
From: Lionel GUEZ <guez@lmd.ens.fr>
Date: Fri, 21 Oct 2022 15:30:58 +0200
Subject: [PATCH] Polish

---
 CMakeLists.txt                                |   1 -
 .../Documentation_texfol/documentation.tex    | 148 +++++++++++++-----
 Inst_eddies/local_extrema.f90                 |  12 +-
 Inst_eddies/nearby_extr.f90                   |   4 +-
 Inst_eddies/set_all_outerm.f90                |   2 +
 Inst_eddies/set_max_speed.f90                 |   6 +-
 .../Graphiques/input_output.odg               | Bin 15032 -> 18266 bytes
 .../Documentation_texfol/documentation.tex    |  21 +--
 Trajectories/cost_function.py                 |   4 +-
 9 files changed, 139 insertions(+), 59 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6c994cd9..dfa4f8de 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -41,6 +41,5 @@ target_include_directories(test_write_eddy PRIVATE
 
 add_subdirectory(Inst_eddies)
 add_subdirectory(Overlap)
-
 add_subdirectory(Common)
 include(TAGS)
diff --git a/Inst_eddies/Documentation_texfol/documentation.tex b/Inst_eddies/Documentation_texfol/documentation.tex
index c255ed8a..78929e46 100644
--- a/Inst_eddies/Documentation_texfol/documentation.tex
+++ b/Inst_eddies/Documentation_texfol/documentation.tex
@@ -59,15 +59,39 @@
 Chaque ligne de niveau de la hauteur correspond à une ligne de courant
 de la vitesse.
 
-But du programme : produire une base de données de tourbillons. Le
-programme ne traite qu'une date. Il écrit un ensemble de tourbillons
-instantanés dans un slice, numérotés à partir de 1, sans saut. Ce slice
-va peut-être recevoir d'autres tourbillons lors d'autres
-exécutions. Il est plus robuste que le programme marque les
+But du programme : produire une base de données de tourbillons
+instantanés. Le programme ne traite qu'une date. Il écrit un ensemble
+de tourbillons instantanés dans un slice, numérotés à partir de 1,
+sans saut. Ce slice va peut-être recevoir d'autres tourbillons lors
+d'autres exécutions. Il est plus robuste que le programme marque les
 tourbillons avec un indice de date. Le programme ne peut pas en
 général définir cet indice à partir du fichier d'entrée. L'indice de
 date est donc une entrée supplémentaire du programme.
 
+Cf. algorithme \ref{alg:principal}.
+\begin{algorithm}[htbp]
+  \begin{algorithmic}
+    \STATE entrer(corner, step, ssh, u, v)
+    \STATE appel de set\_all\_outerm(s, step, ssh, corner)
+    \FOR{e dans s\%list}
+    \IF{e\%valid}
+    \STATE llc, urc = bbox de e\%out\_cont, dans l'espace des indices
+    \STATE outside\_points = coordonnées des extremums dans llc, urc à éviter
+
+    \STATE appel de set\_max\_speed(e, outside\_points, llc, urc, ssh,
+    u, v, step)
+    
+    \ELSE
+    \STATE e\%speed\_cont = null
+    \STATE e\%max\_speed = manquant
+    \ENDIF
+    \ENDFOR
+    \STATE écrire(s)
+  \end{algorithmic}
+  \caption{Algorithme principal}
+  \label{alg:principal}
+\end{algorithm}
+
 \section{Identification of instantaneous eddies}
 \label{sec:identification}
 
@@ -682,6 +706,7 @@ au contour extérieur, avec un contour vide dans
 \verb+max_speed_contour_$m+.
 
 \section{Structures de données}
+\label{sec:structures}
 
 On suppose que le maillage est régulier.
 
@@ -832,7 +857,6 @@ Les procédures géométriques utilisées :
 \item polygon\_area\_2d (bibliothèque Geometry)
 \item polygon\_contains\_point (bibliothèque Geometry)
 \item find\_contours\_reg\_grid (bibliothèque Contour\_531)
-\item write\_overlap
 \item mean\_speed
 \end{itemize}
 travaillent dans le plan et non sur la sphère. Ces procédures sont
@@ -969,15 +993,6 @@ plus indépendants les uns des autres, pour ne pas chercher inutilement
 des contours de maximum de vitesse. Dans le nouvel algorithme, il n'y
 a donc plus de procédure get\_eddy.
 
-Si le domaine considéré n'est pas global, comment traiter un
-tourbillon au bord du domaine ? La taille du contour le plus extérieur
-peut être artificiellement diminuée. (Ce n'est pas le même cas qu'un
-tourbillon près d'une côte.) C'est-à-dire qu'on pourrait trouver un
-contour plus extérieur avec un domaine élargi. Il pourrait être
-intéressant d'éliminer un tel tourbillon. Comment le détecter ? Il
-faudrait tester après l'appel de \verb+get_1_outerm+ si le cadre le
-plus extérieur touche le bord du domaine.
-
 Notons ici :
 \begin{align*}
   & u = \mathtt{urc(1)} \\
@@ -1047,6 +1062,41 @@ Ou encore :
   k = \left\lceil \frac{w - \lambda}{2 \pi} \right\rceil
 \end{equation*}
 
+Cf. algorithme \ref{alg:set_all_outerm}.
+\begin{algorithm}[htbp]
+  Déclarations :
+  \begin{algorithmic}
+    \STATE résultat s
+    \STATE données step, ssh, corner
+  \end{algorithmic}
+  Instructions:
+  \begin{algorithmic}
+    \STATE appel de local\_extrema(s\%extr\_map, innermost\_level,
+    s\%list\%cyclone, ssh)
+
+    \FOR{e dans s\%list}
+
+    \STATE * calculer e\%coord\_extr en utilisant s\%extr\_map, corner
+    et step *
+    
+    \ENDFOR
+    \FOR{e dans s\%list par ordre d'orientation et de ssh}
+
+    \STATE llc, urc = bbox dans l'espace des indices : max\_radius
+    autour de l'extremum
+
+    \STATE outside\_points = coordonnées des extremums dans llc, urc à éviter
+    
+    \STATE e\%out\_cont = get\_1\_outerm(e\%cyclone, e\%coord\_extr,
+    innermost\_level, outside\_points, ssh, llc, urc, corner, step)
+
+    \STATE e\%valid = e\%out\_cont\%area >= min\_area
+    \ENDFOR
+  \end{algorithmic}  
+  \caption{subroutine set\_all\_outerm(s, step, ssh, corner)}
+  \label{alg:set_all_outerm}
+\end{algorithm}
+
 \subsection{set\_max\_speed}
 
 Notons $d$ la distance dans l'espace des indices entre l'extremum
@@ -1064,10 +1114,8 @@ contour venant de \verb+max_speed_contour_ssh+. Il est écrit dans le
 shapefile extremum comme simple diagnostic.
 
 Dans le cas où radius vaut 1, je calcule \verb+max_speed+ et cette
-valeur n'est pas utilisée dans \verb+set_max_speed+. Ce calcul ne
-serait utile que dans weight si le tourbillon a une intersection avec
-un tourbillon à une autre date. Donc, pour certains tourbillons, ce
-calcul est complètement inutile.
+valeur n'est pas utilisée dans \verb+set_max_speed+. Donc ce calcul
+est complètement inutile.
 
 \subsection{spher\_polyline\_area}
 
@@ -1400,9 +1448,20 @@ pourquoi.
 
 \section{Améliorations, prolongements}
 
+Dans \verb+set_all_outerm+, si le domaine considéré n'est pas global,
+comment traiter un tourbillon au bord du domaine ? La taille du
+contour le plus extérieur peut être artificiellement diminuée. (Ce
+n'est pas le même cas qu'un tourbillon près d'une côte.) C'est-à-dire
+qu'on pourrait trouver un contour plus extérieur avec un domaine
+élargi. Il pourrait être intéressant d'éliminer un tel
+tourbillon. Comment le détecter ? Il faudrait tester après l'appel de
+\verb+get_1_outerm+ si le cadre le plus extérieur touche le bord du
+domaine.
+
 Idée de chercher les contours extérieurs dans un rayon de 10 points
-d'abord et d'agmenter éventuellement le rayon jusqu'à max\_radius si
-le contour extérieur trouvé est à un point du bord du domaine.
+d'abord et d'augmenter éventuellement le rayon jusqu'à
+\verb+max_radius+ si le contour extérieur trouvé est à un point du
+bord du domaine.
 
 Créer une carte de présence. \`A chaque point du maillage, enregistrer
 le numéro du tourbillon présent ou 0. Méthode : pour chaque contour
@@ -1423,6 +1482,18 @@ maximale non nulle.
 \subsection{Grille non longitude-latitude}
 
 Comment faire si la grille n'est pas une grille longitude-latitude ?
+
+Dans les données Aviso, les champs SSH, u et v sont sur une même
+grille rectangulaire longitude, latitude. Dans les sorties du modèle
+utilisé par Jonathan Gula, le champ $\zeta$ et les composantes de la
+vitesse dans le plan de projection sont chacun sur une grille
+propre. Les trois grilles sont rectangulaires mais non
+longitude-latitude. On peut se ramener à deux grilles : une pour
+$\zeta$ et une pour $(u, v)$. (Il faut de toutes façons se ramener à
+la même grille $\psi$ pour passer des composantes de la vitesse dans
+l'espace projeté aux composantes zonales et méridiennes dans l'espace
+physique.)
+
 La position en longitude et latitude intervient essentiellement à
 travers les variables corner, step et \verb+min_area+. Idée de faire
 tout le traitement dans l'espace des indices mais la latitude et la
@@ -1438,29 +1509,36 @@ contour. Comme les points d'un contour sont par construction sur les
 arêtes du maillage, l'interpolation est en fait linéaire à une seule
 dimension.
 
-Le passage $(i, j) \in \mathbb{N}^2 \to (\lambda, \phi)$ est ok :
+Le passage $(i, j) \in \mathbb{N}^2 \mapsto (\lambda, \phi)$ est ok :
 c'est juste un accès direct aux tableaux venant du fichier NetCDF. Le
-passage $(i, j) \in \mathbb{R}^2 \to (\lambda, \phi)$ est ok aussi :
+passage $(i, j) \in \mathbb{R}^2 \mapsto (\lambda, \phi)$ est ok aussi :
 c'est une interpolation bilinéaire. Le problème est le passage
-$(\lambda, \phi) \to (i, j) \in \mathbb{R}^2$.
+$(\lambda, \phi) \mapsto (i, j) \in \mathbb{R}^2$.
 
 Idée : faire passer \verb+snapshot%ind_extr+ dans eddy et l'écrire
-dans le shapefile extr dbf (pour \verb+eddy_graph+). Ajouter dans eddy
-une composante polyline \verb+out_cont_no_coord+. Dans
-\verb+set_max_speed+, calculer \verb+mean_speed+ sur (radius4 - 1)
-$\times$ 4 contours. Mettre \verb+outside_points+ vide dans
-\verb+good_contour+. Faire la recherche avec \verb+good_contour+ dans
-l'espace des indices.
+dans le shapefile extr dbf (pour \verb+eddy_graph+). Mais inconvénient
+: cf. § \ref{sec:structures}. Donc garder \verb+snapshot%ind_extr+ et
+l'écrire dans un fichier indépendant (binaire Fortran à accès direct ?
+HDF5 ?) ou écrire un fichier NetCDF contenant \verb+extr_map+ ?
+Ajouter dans eddy une composante polyline
+\verb+out_cont_no_coord+. Dans \verb+set_max_speed+, calculer
+\verb+mean_speed+ sur (radius4 - 1) $\times$ 4 contours. Mettre
+\verb+outside_points+ vide dans \verb+good_contour+. Faire la
+recherche avec \verb+good_contour+ dans l'espace des indices.
 
 \begin{algorithmic}
-  \STATE lire ($\lambda$, $\phi$, u, v, ssh, angle)
-  \STATE définition de extr map, ind extr, innermost level, cyclone
+  \STATE lire ($\lambda$, $\phi$, ssh, $\lambda_{uv}$, $\phi_{uv}$, u, v)
+
+  \COMMENT{set\_all\_outerm}
+  \STATE définition de extr\_map, ind\_extr,
+  innermost\_level, cyclone
+
   \FORALL{extremum}
-  \STATE calculer coord extr (pas d'interpolation)
+  \STATE calculer coord\_extr (pas d'interpolation)
   \ENDFOR
   \FORALL{extremum}
-  \STATE définir outside points dans l'espace des indices
-  \STATE get 1 outerm
+  \STATE définir outside\_points dans l'espace des indices
+  \STATE get\_1\_outerm
   \ENDFOR
 \end{algorithmic}
 
diff --git a/Inst_eddies/local_extrema.f90 b/Inst_eddies/local_extrema.f90
index 78e98a55..2ae835f1 100644
--- a/Inst_eddies/local_extrema.f90
+++ b/Inst_eddies/local_extrema.f90
@@ -9,12 +9,12 @@ contains
   subroutine local_extrema(extr_map, ind_extr, innermost_level, local_min, &
        field, periodic, my_lbound)
 
-    ! Finds local extrema in a field and closest value around each
-    ! extremum. The extrema are output both in a map and as a
-    ! list. The input field may be periodic in the first
-    ! dimension. Then it is assumed that it has one duplicate column
-    ! at each bound. If periodic then some extrema may be duplicated
-    ! in extr_map but there is no duplication in ind_extr,
+    ! This procedure finds the local extrema in a field and the
+    ! closest value around each extremum. The extrema are output both
+    ! in a map and as a list. The input field may be periodic in the
+    ! first dimension. Then it is assumed that it has one duplicate
+    ! column at each bound. If periodic then some extrema may be
+    ! duplicated in extr_map but there is no duplication in ind_extr,
     ! innermost_level and local_min.
 
     ! Note that no coordinate grid is used here so there is no
diff --git a/Inst_eddies/nearby_extr.f90 b/Inst_eddies/nearby_extr.f90
index 3558e808..80ba49ac 100644
--- a/Inst_eddies/nearby_extr.f90
+++ b/Inst_eddies/nearby_extr.f90
@@ -6,8 +6,8 @@ contains
 
   pure function nearby_extr(extr_map, list, i)
 
-    ! Returns a list of extrema that cannot be engulfed in a good
-    ! contour around the target extremum.
+    ! This procedure returns a list of extrema that cannot be engulfed
+    ! in a good contour around the target extremum.
 
     use derived_types, only: eddy
 
diff --git a/Inst_eddies/set_all_outerm.f90 b/Inst_eddies/set_all_outerm.f90
index 40b95e8d..85f99ab9 100644
--- a/Inst_eddies/set_all_outerm.f90
+++ b/Inst_eddies/set_all_outerm.f90
@@ -122,6 +122,8 @@ contains
     selection = selection(indexx(s%list(selection)%ssh_extr))
     sorted_extr(n_cycl + 1:) = selection
 
+    ! Done sorting
+
     do l = 1, s%number_extr
        i = sorted_extr(l)
 
diff --git a/Inst_eddies/set_max_speed.f90 b/Inst_eddies/set_max_speed.f90
index 00ac4703..c4d3259b 100644
--- a/Inst_eddies/set_max_speed.f90
+++ b/Inst_eddies/set_max_speed.f90
@@ -7,9 +7,9 @@ contains
   subroutine set_max_speed(e, ind_targ_extr, outside_points, ssh, u, v, &
        corner, step)
 
-    ! Defines the components speed_cont, max_speed and radius4 of
-    ! argument e. On return, e%speed_cont may be a null ssh contour
-    ! but e%max_speed is never set to missing_speed. However,
+    ! This procedure defines the components speed_cont, max_speed and
+    ! radius4 of argument e. On return, e%speed_cont may be a null ssh
+    ! contour but e%max_speed is never set to missing_speed. However,
     ! e%max_speed might be NaN if speed_outerm is NaN (with any value
     ! of e%radius4). The value of e%radius4 set here is always >=
     ! 1. On return, if e%speed_cont is not a null ssh contour then
diff --git a/Overlap/Documentation_texfol/Graphiques/input_output.odg b/Overlap/Documentation_texfol/Graphiques/input_output.odg
index 3e15a961bdfd46c7ec09cb9451dbdb148e085ff7..e1124f93a1a751c481837cf3b4cc34e729fa9b27 100644
GIT binary patch
literal 18266
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
Zj<Pqvn-#dGl7T@02+e?{2%j^E2LM&bl3M@(

delta 13770
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
JY}o$M{~x#T!eIaa

diff --git a/Overlap/Documentation_texfol/documentation.tex b/Overlap/Documentation_texfol/documentation.tex
index 0911711e..5f1f9ceb 100644
--- a/Overlap/Documentation_texfol/documentation.tex
+++ b/Overlap/Documentation_texfol/documentation.tex
@@ -70,7 +70,7 @@ numérotation par dates successives. Le graphe non orienté associé
 n'est pas une forêt. Cf. figure \ref{fig:cycle}.
 \begin{figure}[htbp]
   \centering
-  \includegraphics{cycle}
+  \includegraphics[scale=0.5]{cycle}
   \caption[Exemple possible de cycle dans le graphe non orienté
   associé]{Exemple possible de cycle dans le graphe non orienté
     associé. (2, 3, 4, 6, 2) est un cycle donc le graphe n'est pas un
@@ -152,7 +152,7 @@ prédécesseurs visibles et s'il a des successeurs visibles, mais aussi
 
 $m$ est le numéro du processus MPI, compris entre 0 et $n_p - 1$. On
 pourrait écrire l'algorithme principal en explicitant les
-\verb+get_snpashot+, en explicitant le cas $m < n_p - 1$ et en
+\verb+get_snapshot+, en explicitant le cas $m < n_p - 1$ et en
 supprimant la variable \verb+k_end_main_loop+. Ce serait mieux du
 point de vue de la performance, mais je pense que ce serait finalement
 moins clair.
@@ -235,7 +235,7 @@ Le programme lit une liste de SHPC. Nous supposons que la première
 date présente dans un SHPC est strictement supérieure à la dernière
 date du SHPC précédent.
 
-\section{Déclarations pour l'algorithme principal}
+\section{Algorithme principal, séquentiel}
 
 On suppose que les extremums sont sur les n\oe{}uds d'un maillage
 rectangulaire uniforme. On suppose que ce maillage est le même à
@@ -766,13 +766,14 @@ croissant des $\delta$.
 
 Plusieurs dates dans un triplet de shapefiles. Mais toutes les dates
 ne tiennent pas a priori dans un seul triplet de shapefiles (à cause
-de la limite sur la taille des shapefiles). Ce serait plutôt à
-\verb+get_snapshot+ de gérer le choix du bon triplet. Mais il ne faudrait
-pas ouvrir et fermer plusieurs fois le même triplet. Pour un processus
-donné, \verb+get_snapshot+ est appelé avec des dates
-croissantes. \verb+get_snapshot+ n'a donc besoin d'avoir à un instant donné
-qu'un seul triplet ouvert. Je fais le pari que plusieurs processus MPI
-pourront accéder en même temps en lecture à un même fichier.
+de la limite sur la taille des shapefiles).  \verb+read_snapshot+ gère
+le choix du bon triplet. Il ne faut pas ouvrir et fermer plusieurs
+fois le même triplet. Pour un processus donné, \verb+get_snapshot+ est
+appelé avec des dates croissantes. \verb+get_snapshot+ n'a donc besoin
+d'avoir à un instant donné qu'un seul triplet ouvert. Mais chaque
+processus commence par ouvrir toutes les tranches. Je fais le pari que
+plusieurs processus MPI pourront accéder en même temps en lecture à un
+même fichier.
 
 \subsection{overlap}
 
diff --git a/Trajectories/cost_function.py b/Trajectories/cost_function.py
index 52bc7f3f..a8d1dbbc 100755
--- a/Trajectories/cost_function.py
+++ b/Trajectories/cost_function.py
@@ -187,8 +187,8 @@ for edge in g.edges():
     # (latitude needed for conversion of degrees to kilometers)
     lat_for_conv = math.radians(lat_for_conv) # need to convert to radians
 
-    # because of the wrapping issue (360° wrapping incorrectly to 0°),
-    # we check for that here
+    # Because of the wrapping issue (360° wrapping incorrectly to 0°),
+    # we check for that here:
     lon_diff = abs(g.vp.pos_last[source_node][0]
                    - g.vp.pos_first[target_node][0])
     if lon_diff > 300: lon_diff = 360 - lon_diff
-- 
GitLab