From 2b036a1e6f4e6f0b6cd7da5091687a34a3c5bf0a Mon Sep 17 00:00:00 2001
From: Lionel GUEZ <guez@lmd.ens.fr>
Date: Wed, 16 Mar 2022 14:05:18 +0100
Subject: [PATCH] Polish

---
 CMakeLists.txt                                |  1 +
 Inst_eddies/Analysis/filter.py                |  4 +-
 Inst_eddies/CMakeLists.txt                    |  5 ++
 .../Graphiques/elapsed_time.py                | 20 +++++
 .../Graphiques/perf_report_inst_eddies.csv    | 60 +++++++++++++++
 .../perf_report_inst_eddies_0_17.csv          | 60 +++++++++++++++
 .../Documentation_texfol/documentation.tex    | 76 ++++++++++++++-----
 Inst_eddies/Tests/Input/accept.py             |  4 +-
 Inst_eddies/inst_eddies.py.in                 |  7 +-
 .../Documentation_texfol/documentation.tex    |  5 +-
 10 files changed, 219 insertions(+), 23 deletions(-)
 create mode 100644 Inst_eddies/Documentation_texfol/Graphiques/elapsed_time.py
 create mode 100644 Inst_eddies/Documentation_texfol/Graphiques/perf_report_inst_eddies.csv
 create mode 100644 Inst_eddies/Documentation_texfol/Graphiques/perf_report_inst_eddies_0_17.csv

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 329554d4..e13498fc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -17,6 +17,7 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
 endif()
 
 if(NOT TARGET fortranGIS)
+  # Some test programs use fortrangis and do not use Shapelib_03:
   find_package(fortrangis REQUIRED CONFIG)
 endif()
 
diff --git a/Inst_eddies/Analysis/filter.py b/Inst_eddies/Analysis/filter.py
index 6f9de4dd..4c321783 100755
--- a/Inst_eddies/Analysis/filter.py
+++ b/Inst_eddies/Analysis/filter.py
@@ -1,6 +1,8 @@
 #!/usr/bin/env python3
 
-"""Note: "ishape_last.txt" is only created with option renumber.
+"""Note: "ishape_last.txt" is only created with option
+renumber. Module accept must be provided. There is an example in
+Inst_eddies/Tests/Input.
 
 """
 
diff --git a/Inst_eddies/CMakeLists.txt b/Inst_eddies/CMakeLists.txt
index c0e53c29..e01c9920 100644
--- a/Inst_eddies/CMakeLists.txt
+++ b/Inst_eddies/CMakeLists.txt
@@ -1,3 +1,4 @@
+# inst_eddies:
 add_executable(inst_eddies inst_eddies.f90 local_extrema.f90 set_max_speed.f90
   get_1_outerm.f90 max_speed_contour_ssh.f90 good_contour.f90 mean_speed.f90
   inside_4.f90 set_all_outerm.f90 nearby_extr.f90 get_var.f90 write_aux.f90
@@ -5,12 +6,16 @@ add_executable(inst_eddies inst_eddies.f90 local_extrema.f90 set_max_speed.f90
 target_link_libraries(inst_eddies PRIVATE Contour_531::contour_531
   Geometry::geometry NetCDF95::netcdf95 Shapelib_03::shapelib_03
   Numer_Rec_95::numer_rec_95 Jumble::jumble NetCDF_Fortran::netcdff)
+
+# Python scripts:
 configure_file(inst_eddies.py.in inst_eddies.py @ONLY FILE_PERMISSIONS
   OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ
   WORLD_EXECUTE)
 file(COPY inst_eddies_Aviso.py DESTINATION . FILE_PERMISSIONS
   OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ
   WORLD_EXECUTE)
+
+# Tests:
 add_subdirectory(Tests)
 target_sources(test_get_1_outerm PRIVATE get_1_outerm.f90 good_contour.f90)
 target_sources(test_set_all_outerm PRIVATE set_all_outerm.f90
diff --git a/Inst_eddies/Documentation_texfol/Graphiques/elapsed_time.py b/Inst_eddies/Documentation_texfol/Graphiques/elapsed_time.py
new file mode 100644
index 00000000..93b9aeec
--- /dev/null
+++ b/Inst_eddies/Documentation_texfol/Graphiques/elapsed_time.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python3
+
+import pandas as pd
+import matplotlib.pyplot as plt
+
+perf = pd.read_csv("perf_report_inst_eddies.csv", index_col=0)
+perf_0_17 = pd.read_csv("perf_report_inst_eddies_0_17.csv", index_col=0)
+fig, ax = plt.subplots(figsize=(8.15, 4.8))
+fig.subplots_adjust(top=0.97, left=0.095, right=0.69)
+perf.plot(ax = ax, legend = None)
+ax.plot(perf_0_17["elapsed Fortran"], label = "elapsed Fortran 0.17")
+ax.plot(perf_0_17["elapsed cat"], label = "elapsed cat")
+ax.plot(perf_0_17["elapsed NCO"], label = "elapsed NCO 0.17")
+ax.plot(perf_0_17["elapsed Fortran"] + perf_0_17["elapsed cat"],
+        label = "elapsed Fortran 0.17 + cat")
+ax.set_ylabel("time (s)")
+fig.autofmt_xdate()
+fig.legend(loc = "right")
+plt.savefig("elapsed_time.pdf")
+##plt.show()
diff --git a/Inst_eddies/Documentation_texfol/Graphiques/perf_report_inst_eddies.csv b/Inst_eddies/Documentation_texfol/Graphiques/perf_report_inst_eddies.csv
new file mode 100644
index 00000000..6b849dde
--- /dev/null
+++ b/Inst_eddies/Documentation_texfol/Graphiques/perf_report_inst_eddies.csv
@@ -0,0 +1,60 @@
+date,elapsed NCO,elapsed Fortran
+1993-01-01,3.2893714700476266,69.55748717399547
+1993-01-02,7.849872671999037,84.92520007799612
+1993-01-03,7.031129262992181,93.11914208205417
+1993-01-04,6.6251473859883845,92.33684102998814
+1993-01-05,8.872666517039761,99.99801624496467
+1993-01-06,7.04201443499187,99.78693078801734
+1993-01-07,8.352719530987088,107.4334867799771
+1993-01-08,5.957446595013607,121.24453041999368
+1993-01-09,6.811668341979384,108.44273754197638
+1993-01-10,6.876321975025348,109.13818129297579
+1993-01-11,8.41271882498404,108.24826581095112
+1993-01-12,7.516053581028245,114.73520872101653
+1993-01-13,6.538074520009104,125.8919549669954
+1993-01-14,7.495979505998548,126.50189751700964
+1993-01-15,8.413056864985265,156.7574282269925
+1993-01-16,7.359477036981843,159.75526666396763
+1993-01-17,9.229673043999355,145.1923110279604
+1993-01-18,7.583611456037033,154.6173025869648
+1993-01-19,7.304278919007629,156.89128828700632
+1993-01-20,5.843465435085818,165.57676382991485
+1993-01-21,7.3137205900857225,165.62924052099697
+1993-01-22,6.275111605064012,159.0545307949651
+1993-01-23,7.446048315032385,144.9971734220162
+1993-01-24,6.715303701930679,135.32838135992642
+1993-01-25,7.665257273009047,118.24432891304605
+1993-01-26,7.382987734978087,114.37454084807541
+1993-01-27,8.191224109963514,121.22434577008244
+1993-01-28,7.5507736740401015,123.3405563510023
+1993-01-29,7.2626618419308215,123.39857474295422
+1993-01-30,7.191848551039584,116.14068330801092
+1993-01-31,6.7195616740500554,118.19204083399381
+1993-02-01,6.67564572498668,120.86584229802247
+1993-02-02,8.501024959026836,119.8340836049756
+1993-02-03,7.311727856984362,125.06200841697864
+1993-02-04,8.49490319204051,124.26725488796365
+1993-02-05,8.097106094006449,136.24348538101185
+1993-02-06,7.827034011948854,140.77861595596187
+1993-02-07,7.037812053924426,133.9225886448985
+1993-02-08,7.300804301979952,134.50840888300445
+1993-02-09,8.23091415700037,146.5331069349777
+1993-02-10,8.273123448016122,141.58113374595996
+1993-02-11,7.196780981030315,168.8217340420233
+1993-02-12,5.4656356669729576,146.65078854898456
+1993-02-13,7.865352036897093,148.41570352006238
+1993-02-14,8.710694030974992,139.21072487800848
+1993-02-15,7.181609441991895,140.87127993803006
+1993-02-16,7.317532932967879,126.39484425995033
+1993-02-17,7.592014836031012,129.99460101907607
+1993-02-18,6.8357603549957275,122.60817730601411
+1993-02-19,7.318399091949686,122.00685867504217
+1993-02-20,7.531206678017043,109.44884346495382
+1993-02-21,7.126260661985725,119.0290589730721
+1993-02-22,7.535190106020309,125.17490786302369
+1993-02-23,7.929216188029386,124.63406615098938
+1993-02-24,8.533985601039603,139.82530068198685
+1993-02-25,10.729103101999499,125.65844885399565
+1993-02-26,7.237651216913946,127.74466966604814
+1993-02-27,8.173235115944408,124.43069692398421
+1993-02-28,7.084290536935441,122.04703794501256
diff --git a/Inst_eddies/Documentation_texfol/Graphiques/perf_report_inst_eddies_0_17.csv b/Inst_eddies/Documentation_texfol/Graphiques/perf_report_inst_eddies_0_17.csv
new file mode 100644
index 00000000..ada4c45e
--- /dev/null
+++ b/Inst_eddies/Documentation_texfol/Graphiques/perf_report_inst_eddies_0_17.csv
@@ -0,0 +1,60 @@
+date,elapsed NCO,elapsed Fortran,elapsed cat
+1993-01-01,3.0901350359781645,71.7504221930285,0.004124971979763359
+1993-01-02,3.200717727013398,85.51937657099916,13.84133860701695
+1993-01-03,6.453957258956507,84.87060597504023,17.505336997972336
+1993-01-04,5.759323227975983,66.35113128897501,14.281902063987218
+1993-01-05,2.761238229984883,63.50601018802263,33.52057790500112
+1993-01-06,4.201626594993286,69.07475118699949,23.051912277995143
+1993-01-07,3.3345236200257204,62.20255009602988,63.206579864025116
+1993-01-08,4.836528006999288,72.57609493704513,63.71964116097661
+1993-01-09,3.6164878209820017,65.00932684500003,30.152657398954034
+1993-01-10,5.042031451012008,74.20013268804178,41.344360115006566
+1993-01-11,2.5706540339742787,66.23193804704351,48.442931215977296
+1993-01-12,4.285904535034206,63.33210120705189,64.10520510899369
+1993-01-13,4.3242473709979095,66.37076439900557,63.08483844995499
+1993-01-14,7.975706119963434,73.12388161802664,49.8682603299967
+1993-01-15,4.20400804001838,77.14539974904619,56.30603249295382
+1993-01-16,4.352678089984693,66.206111943,119.58327071001986
+1993-01-17,8.713196224009153,72.66597551800078,72.52913882199209
+1993-01-18,4.430759193957783,75.57036633300595,113.08621953701368
+1993-01-19,3.9799340069876052,73.10977527400246,88.96055018802872
+1993-01-20,8.12350206397241,70.53396456298651,92.95222207799088
+1993-01-21,4.14605187100824,74.0520255129668,125.38167527801124
+1993-01-22,3.152127114997711,73.77176170505118,123.90884489897871
+1993-01-23,10.263262305990793,75.5307018100284,97.68436216498958
+1993-01-24,6.23972294194391,69.61514874099521,76.52981025201734
+1993-01-25,6.4711440480314195,71.61905278096674,64.05774771800498
+1993-01-26,7.763230887998361,73.27510224300204,56.18276482197689
+1993-01-27,7.9135023189592175,78.61758837499656,58.442595792002976
+1993-01-28,8.142888989998028,76.51393708301475,55.364466429979075
+1993-01-29,8.254636748984922,75.21549922501436,51.701735898968764
+1993-01-30,3.8482023859978653,70.74772785697132,34.40200518298661
+1993-01-31,2.5146679900353774,71.63438882899936,40.885456254996825
+1993-02-01,4.5364538640133105,70.1177538530319,45.76120470097521
+1993-02-02,5.220355848025065,72.75402677396778,50.5067452689982
+1993-02-03,2.8045955119887367,73.36987422296079,58.34516322298441
+1993-02-04,5.222081124025863,75.33309303800343,59.523019879998174
+1993-02-05,5.951969084038865,78.5956856799894,71.2456582300365
+1993-02-06,5.029702848987654,80.0938917369931,81.84646402695216
+1993-02-07,3.945086480001919,79.06037547101732,74.13899596099509
+1993-02-08,5.829878080985509,71.08888992096763,85.22875768598169
+1993-02-09,3.211551951011643,72.32345453801099,100.8228057710221
+1993-02-10,2.70511413004715,81.42412036901806,117.07514837500639
+1993-02-11,4.925564266974106,76.85867370897904,93.91957081999863
+1993-02-12,3.5261427619843744,75.26098189497134,102.53938236401882
+1993-02-13,4.435621167998761,72.34669983596541,87.87498543504626
+1993-02-14,2.901580923004076,71.69582331104903,105.5421871279832
+1993-02-15,3.008389235008508,74.18369196401909,91.34581281000283
+1993-02-16,4.267589656985365,69.21201356104575,71.48417646897724
+1993-02-17,3.633157239004504,69.05067607900128,64.40987796505215
+1993-02-18,4.703310971963219,72.05070941499434,46.006244396965485
+1993-02-19,2.6703485359903425,72.04068542202003,44.00213264703052
+1993-02-20,3.0005346529651433,70.66123105498264,39.750067585962825
+1993-02-21,5.09926314902259,72.30556776799494,59.33556727098767
+1993-02-22,3.6469921689713374,71.66501602903008,71.15747504704632
+1993-02-23,4.287503774976358,72.75226642697817,69.09744390897686
+1993-02-24,2.3635044320253655,69.30265067802975,74.17908748594346
+1993-02-25,4.216207752004266,72.10527823999291,71.09481163701275
+1993-02-26,3.4488210909767076,69.87986868503504,65.51352055801544
+1993-02-27,6.490923753008246,69.92170295701362,58.173927237978205
+1993-02-28,4.145223431987688,69.90177033701912,68.55330124404281
diff --git a/Inst_eddies/Documentation_texfol/documentation.tex b/Inst_eddies/Documentation_texfol/documentation.tex
index 7c38a40b..93fe8c2b 100644
--- a/Inst_eddies/Documentation_texfol/documentation.tex
+++ b/Inst_eddies/Documentation_texfol/documentation.tex
@@ -704,7 +704,7 @@ vitesse maximale), 720 latitudes par 1440 longitudes.
   un scalaire de ce type :
   \begin{equation*}
     \mathrm{taille}(\mathtt{eddy})
-    = 11\ \mathrm{mots} + \mathrm{taille}(\mathtt{out\_cont})
+    = 9\ \mathrm{mots} + \mathrm{taille}(\mathtt{out\_cont})
     + \mathrm{taille}(\mathtt{speed\_cont})
   \end{equation*}
   Notons $n_o$ le nombre de points dans le contour extérieur
@@ -712,8 +712,8 @@ vitesse maximale), 720 latitudes par 1440 longitudes.
   de vitesse maximale (speed\_cont\%n\_points). On obtient :
   \begin{align*}
     \mathrm{taille}(\mathtt{eddy})
-    & = [2 (n_o + n_s) + 19]\ \mathrm{mots} \\
-    & = 4 [2 (n_o + n_s) + 19]\ \mathrm{B}    
+    & = [2 (n_o + n_s) + 17]\ \mathrm{mots} \\
+    & = 4 [2 (n_o + n_s) + 17]\ \mathrm{B}    
   \end{align*}
 soit environ \np{0.5} KiB.
 \item[snapshot\%list\_vis] On a besoin d'encapsuler le vecteur de type
@@ -723,7 +723,7 @@ soit environ \np{0.5} KiB.
   \begin{equation*}
     n_{ve} \langle \mathrm{taille}(\mathtt{eddy}) \rangle
     = n_{ve}
-    [2 (\langle n_o \rangle + \langle n_s \rangle) + 19]\ \mathrm{mots}    
+    [2 (\langle n_o \rangle + \langle n_s \rangle) + 17]\ \mathrm{mots}    
   \end{equation*}
   soit environ 4 MiB.
 \item[snapshot\%extr\_map] Notons $n_\lambda$ le nombre de longitudes,
@@ -737,7 +737,7 @@ On a :
   \mathrm{taille}(\mathtt{snapshot})
   & = n_{ve} \langle \mathrm{taille}(\mathtt{eddy}) \rangle
     + (n_\lambda n_\phi + 2 n_{ve} + 2)\ \mathrm{mots} \\
-  & = [n_{ve} (2 (\langle n_o \rangle + \langle n_s \rangle) + 21)
+  & = [n_{ve} (2 (\langle n_o \rangle + \langle n_s \rangle) + 19)
     + n_\lambda n_\phi + 2]\ \mathrm{mots}
 \end{align*}
 D'où la taille d'un scalaire de type snapshot : environ 8 MiB.
@@ -1242,36 +1242,74 @@ l'exécutable Fortran. Cf. figure \ref{fig:elapsed_time}.
 \begin{figure}[htbp]
   \centering
   \includegraphics[width=\textwidth]{elapsed_time}
-  \caption[Temps écoulé]{Test de performance, temps écoulé par date
-    traitée. Version 0.17 sur Ciclad, ifort 19, release build.}
+  \caption[Temps écoulé]{Test de performance de
+    \texttt{inst\_eddies.py}, temps écoulé par date traitée. Versions
+    0.17 et ba6ab118 sur Ciclad, ifort 19, release build. Domaine
+    global, 59 dates (janvier et février).}
   \label{fig:elapsed_time}
 \end{figure}
+Avec la version ba6ab118, bizarrement on ne gagne presque rien. En
+outre, bizarrement aussi, il semble y avoir un cycle reproductible de
+temps d'exécution par date.
 
 \section{Améliorations, prolongements}
 
+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.
+
+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
+extérieur (ou chaque contour de maximum de vitesse ?), pour chaque
+point dans le rectangle circonscrit et dans le bon intervalle de SSH,
+appeler \verb+polygon_contains_point+. Ou chercher les points connexes
+à l'extremum et dans le bon intervalle de SSH ?
+
+\subsection{Grille non longitude-latitude}
+
 Comment faire si la grille n'est pas une grille longitude-latitude ?
 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
 longitude interviennent dans le calcul de la surface des contours
 (appel à \verb+spher_polyline_area+ dans \verb+get_1_outerm+) et dans
-le calcul de la vitesse moyenne (procédure \verb+mean_speed+). Donc
-plutôt créer une procédure \verb+find_contours_curv+ dans
-\verb+Contour_531+. Dans \verb+find_contours_curv+, il faut faire une
+le calcul de la vitesse moyenne (procédure \verb+mean_speed+).
+
+Donc plutôt créer une procédure \verb+find_contours_curv+ dans
+\verb+Contour_531+ ? Dans \verb+find_contours_curv+, il faut faire une
 interpolation bilinéaire de $\lambda$ et $\phi$ aux points d'un
 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.
 
-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.
+Le passage $(i, j) \in \mathbb{N}^2 \to (\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 :
+c'est une interpolation bilinéaire. Le problème est le passage
+$(\lambda, \phi) \to (i, j) \in \mathbb{R}^2$.
 
-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
-extérieur (ou chaque contour de maximum de vitesse ?), pour chaque
-point dans le rectangle circonscrit et dans le bon intervalle de SSH,
-appeler \verb+polygon_contains_point+. Ou chercher les points connexes
-à l'extremum et dans le bon intervalle de SSH ?
+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.
+
+\begin{algorithmic}
+  \STATE lire ($\lambda$, $\phi$, u, v, ssh, angle)
+  \STATE définition de extr map, ind extr, innermost level, cyclone
+  \FORALL{extremum}
+  \STATE calculer coord extr (pas d'interpolation)
+  \ENDFOR
+  \FORALL{extremum}
+  \STATE définir outside points dans l'espace des indices
+  \STATE get 1 outerm
+  \ENDFOR
+\end{algorithmic}
+
+\verb+get_1_outerm+ : dans l'espace des indices et dans l'espace
+$(\lambda, \phi)$. \verb+mean_speed+ : faire l'interpolation dans
+l'espace des indices et faire une rotation de la vitesse. Il faut le
+contour extérieur dans l'espace des indices.
 
 \end{document}
diff --git a/Inst_eddies/Tests/Input/accept.py b/Inst_eddies/Tests/Input/accept.py
index d40ede31..72fdc205 100644
--- a/Inst_eddies/Tests/Input/accept.py
+++ b/Inst_eddies/Tests/Input/accept.py
@@ -1,5 +1,7 @@
 def accept(shape_rec_extr, shape_rec_outer, shape_rec_max):
-    """Filtering function."""
+    """Filtering function. Arguments are ShapeRecord objects from pyshp.
+
+    """
 
     ##return 0.125 <= shape_rec_extr.shape.points[0][0] <= 29.875 \
     ##    and -59.875 <= shape_rec_extr.shape.points[0][1] <= -15.125
diff --git a/Inst_eddies/inst_eddies.py.in b/Inst_eddies/inst_eddies.py.in
index 30b65aa4..76c9c6ae 100644
--- a/Inst_eddies/inst_eddies.py.in
+++ b/Inst_eddies/inst_eddies.py.in
@@ -15,6 +15,11 @@ import time
 import csv
 
 def loop_inst_eddies(files, bbox, d):
+    """files is a sequence of file paths. bbox is a tuple of four real
+    numbers. d is a date index (integer value) for the first date.
+
+    """
+
     inst_eddies_exe = "@CMAKE_CURRENT_BINARY_DIR@/inst_eddies"
 
     if not os.access(inst_eddies_exe, os.X_OK):
@@ -31,7 +36,7 @@ def loop_inst_eddies(files, bbox, d):
         if os.access(f"SHPC_{orient}", os.F_OK): shutil.rmtree(f"SHPC_{orient}")
         os.mkdir(f"SHPC_{orient}")
 
-    perf_report = open("perf_report.csv", "w", newline='')
+    perf_report = open("perf_report.csv", "w", newline = '')
     writer = csv.writer(perf_report, lineterminator = "\n")
     writer.writerow(["date", "elapsed NCO", "elapsed Fortran"])
 
diff --git a/Overlap/Documentation_texfol/documentation.tex b/Overlap/Documentation_texfol/documentation.tex
index a629da2c..8559304a 100644
--- a/Overlap/Documentation_texfol/documentation.tex
+++ b/Overlap/Documentation_texfol/documentation.tex
@@ -840,7 +840,10 @@ nombre de tourbillons visibles. L'intérêt serait de pouvoir traiter
 des domaines extraits d'un snapshot global. il faudrait ajouter une
 composante identifiant au type eddy.
 
-Optimisation. Penser à \verb+MPI_send_init+ et \verb+MPI_recv_init+.
+Optimisation. Penser à \verb+MPI_send_init+ et
+\verb+MPI_recv_init+. Chaque processus ne fait que $\max \delta$
+envois et n'utilise plus ce qui a été envoyé. Idée de copier les $\max
+\delta$ dans un buffer et de les envoyer avec isend.
 
 Que faire si la grille n'est pas une grille latitude-longitude ? La
 reconstruction de \verb+ind_extr+ dans \verb+read_snapshot+ n'est pas
-- 
GitLab