diff --git a/Inst_eddies/Documentation_texfol/Graphiques/nearby_extr.odg b/Inst_eddies/Documentation_texfol/Graphiques/nearby_extr.odg index 8c5c50c13ed5815e009f912fcd2ce6dab50a82ec..c93afc97b85c52dc73d2fe136469c114c69c0933 100644 Binary files a/Inst_eddies/Documentation_texfol/Graphiques/nearby_extr.odg and b/Inst_eddies/Documentation_texfol/Graphiques/nearby_extr.odg differ diff --git a/Inst_eddies/Documentation_texfol/documentation.tex b/Inst_eddies/Documentation_texfol/documentation.tex index 4255033cf90075468b67c5712c183ac0aa3c70e8..c548861cdac66cd63461fc5f80bc6b365aea568d 100644 --- a/Inst_eddies/Documentation_texfol/documentation.tex +++ b/Inst_eddies/Documentation_texfol/documentation.tex @@ -74,7 +74,7 @@ Cf. algorithme \ref{alg:principal}. \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} + \IF{e\%out\_cont\%closed} \STATE llc, urc = bbox de e\%out\_cont, dans l'espace des indices \STATE outside\_points = coordonnées des extremums dans llc, urc à éviter @@ -325,15 +325,13 @@ tourbillon sont vides, c'est-à -dire égales à tableau (\ref{tab:null_ssh_contour}). \begin{table}[htbp] \centering - \begin{tabular}{lllll|l} - \verb+out_cont+ & valid & radius4 & \verb+max_speed+ - & fraction & note \\ + \begin{tabular}{llll|l} + \verb+out_cont+ & radius4 & \verb+max_speed+ & fraction & note \\ \hline - null & F & 0 & \np{e4} & 11 \% & 1 \\ - $\ne$ null & T & 1 & NaN & 3 \% & 2 \\ - $\ne$ null & T & 1 & $\ne \np{e4}$, $\ne$ NaN & 47 \% \\ - $\ne$ null & T & $\ge 2$ & $\ne \np{e4}$, $\ne$ NaN & 21 \% - & 3 + null & 0 & \np{e4} & 11 \% & 1 \\ + $\ne$ null & 1 & NaN & 3 \% & 2 \\ + $\ne$ null & 1 & $\ne \np{e4}$, $\ne$ NaN & 47 \% \\ + $\ne$ null & $\ge 2$ & $\ne \np{e4}$, $\ne$ NaN & 21 \% & 3 \end{tabular} \caption[Cas où la composante speed\_cont d'un tourbillon est vide]{Cas où la composante speed\_cont d'un tourbillon est @@ -351,8 +349,8 @@ suivants pour les 4 lignes du tableau (\ref{tab:null_ssh_contour}) : \verb+speed_cont+ d'un tourbillon sont vides, sur 260 tourbillons, soit 81 \% des tourbillons. -radius4 == 0 si et seulement si non valid. radius4 $\ge 1$ si et -seulement si valid. +radius4 == 0 si et seulement si non \verb+out_cont%closed+. radius4 +$\ge 1$ si et seulement si \verb+out_cont%closed+. \section{Calcul de la vitesse azimutale par rapport à l'extremum} @@ -652,8 +650,8 @@ séparer les contours et les positions des extremums. \begin{itemize} \item \verb+extremum.shp+ : points \item \verb+extremum.dbf+ : valeur de SSH, indice de date, indice de - tourbillon à cette date, valid (logique), valeur de vitesse sur le - contour de vitesse maximale + tourbillon à cette date, valeur de vitesse sur le contour de vitesse + maximale \item \verb+outermost_contour.shp+ : polygones \item \verb+outermost_contour.dbf+ : aire, valeur de SSH, indice de date, indice de tourbillon à cette date, radius4 @@ -664,11 +662,9 @@ séparer les contours et les positions des extremums. \end{itemize} Soit un total de 9 fichiers en comptant les fichiers shx. -valid == 1 dans le fichier -\verb+extremum.dbf+ signifie qu'un contour extérieur a été trouvé -et qu'il a une surface suffisante. Si un contour extérieur est bien -défini (non vide) alors il a par construction une amplitude supérieure -à \verb+min_amp+. +Si un contour extérieur est bien défini (non vide) alors il a par +construction une amplitude supérieure à \verb+min_amp+ et une surface +suffisante. Si une forme dans \verb+max_speed_contour.shp+ est non vide alors la vitesse correspondante dans \verb+extremum.dbf+ est la vitesse @@ -695,10 +691,10 @@ an. Pour un extremum donné, radius4 est le rayon, en pas de grille, de la plus petite croix autour de l'extremum qui déborde le contour -extérieur. Si un contour extérieur valide n'a pas été trouvé alors -radius4 est nul. Si un contour extérieur valide a été trouvé alors -radius4 est $\ge 1$. Le champ radius4 est écrit à titre diagnostique -et n'est pas utilisé dans le programme de recouvrement. +extérieur. Si un contour extérieur n'a pas été trouvé alors radius4 +est nul. Si un contour extérieur a été trouvé alors radius4 est +$\ge 1$. Le champ radius4 est écrit à titre diagnostique et n'est pas +utilisé dans le programme de recouvrement. J'avais d'abord mis la valeur de vitesse dans le fichier \verb+max_speed_contour.dbf+ mais cette vitesse peut être associée au @@ -740,9 +736,9 @@ par \verb+nearby_extr+. Avec les données globales Aviso en 1993, on trouve (avec le script \verb+stat_SHPC.py+), pour chaque orientation, une moyenne d'environ \np{7e3} extremums par date, \np{14} points par contour extérieur -(valide ou non, y compris nul), \np{4} points par contour de vitesse -maximale (nul ou non), \np{3e3} contours extérieurs valides par date, -23 points par contour extérieur valide, \np{1e3} contours de vitesse +(y compris nul), \np{4} points par contour de vitesse +maximale (nul ou non), \np{3e3} contours extérieurs non nuls par date, +23 points par contour extérieur non nul, \np{1e3} contours de vitesse maximale non vides par date, 20 points par contour de vitesse maximale non vide. Les tailles ci-dessous sont calculées pour 13000 tourbillons, 18 points au total dans le contour extérieur et le @@ -1000,8 +996,9 @@ contenus est, dans le cas où $E_1$ est un maximum : les minimums, les maximums de valeur strictement supérieure à celle de $E_1$, les maximums de valeur inférieure à celle de $E_1$ avec contour extérieur d'amplitude et surface significatives. D'un point de vue -algorithmique, cela se traduit par : minimum ou valide, puisqu'on a -initialisé le champ valid à vrai. Cf. figure \ref{fig:nearby_extr}. +algorithmique, cela se traduit par : minimum ou \verb+out_cont+ fermé, +puisqu'on a initialisé le champ closed à vrai. Cf. figure +\ref{fig:nearby_extr}. \begin{figure}[htbp] \centering \includegraphics{nearby_extr} @@ -1037,7 +1034,6 @@ Cf. algorithme \ref{alg:set_all_outerm}. \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\%closed \ENDFOR \end{algorithmic} \caption{subroutine set\_all\_outerm(s, step, ssh, corner)} @@ -1290,11 +1286,11 @@ $\np[m s^{-1}]{0.30}$ et $\np[m s^{-1}]{0.23}$ au lieu de $\np[m s^{-1}]{0.26}$. Test sur la région 3, sans minimum d'amplitude. 14 extremums sans -contour extérieur (valid faux), dont 5 sur les bords et 11 -dégénérés. Avec minimum d'amplitude : 34 extremums pour lesquels -valid est faux. Je vérifie que, pour chaque extremum, si valid -est faux dans le cas sans minimum, valid reste faux dans le cas -avec minimum. Il y a donc 20 extremums qui passent à valid faux à +contour extérieur, dont 5 sur les bords et 11 dégénérés. Avec minimum +d'amplitude : 34 extremums sans contour extérieur. Je vérifie que, +pour chaque extremum, s'il n'y a pas de contour extérieur dans le cas +sans minimum, il n'y en a pas non plus dans le cas avec minimum. Il y +a donc 20 extremums qui passent à un contour extérieur vide faux à cause du minimum d'amplitude. Je vérifie que, pour ces 20 extremums, le contour extérieur dans le cas sans minimum est le même que dans le cas avec minimum. Entre le cas sans minimum et le cas avec minimum, @@ -1499,8 +1495,8 @@ appeler \verb+polygon_contains_point+. Ou chercher les points connexes Déplacer des champs de \verb+extremum.dbf+ à \verb+outermost_contour.dbf+ ou \verb+max_speed_contour.dbf+ ? La -vitesse, radius4, valid ? C'est possible mais ce n'est pas sûr qu'on y -gagne en clarté et en facilité d'utilisation. +vitesse, radius4 ? C'est possible mais ce n'est pas sûr qu'on y gagne +en clarté et en facilité d'utilisation. Modifier le critère de recouvrement : intersection des contous extérieurs supérieure à 50 \% et intersection des contours de vitesse @@ -1575,13 +1571,12 @@ Algorithme principal : \STATE appel de set\_all\_speed \end{algorithmic} -\verb+set_all_contours+ : remplit s\%list\%cont\_list sauf speed, -s\%list\%valid. Conserver tous les bons contours trouvés lors de la -recherche par dichotomie du contour extérieur. Ils serviront lors de -la recherche du contour de vitesse maximale. Si s\%list\%valid alors -trier la liste de contour par ordre de ssh et compléter la liste de -contours pour qu'il y ait un intervalle de ssh maximal entre deux -contours successifs. +\verb+set_all_contours+ : remplit s\%list\%cont\_list sauf +speed. Conserver tous les bons contours trouvés lors de la recherche +par dichotomie du contour extérieur. Ils serviront lors de la +recherche du contour de vitesse maximale. Trier la liste de contour +par ordre de ssh et compléter la liste de contours pour qu'il y ait un +intervalle de ssh maximal entre deux contours successifs. \verb+set_all_speed+ : remplit s\%list\%i\_max\_speed, s\%list\%cont\_list\%speed diff --git a/Inst_eddies/Tests/long_tests.json b/Inst_eddies/Tests/long_tests.json index 6e644b611b792ee1b92f09c79038e384154d7aba..f3cb8dd19ac75f99d28e85962269616ce16843bd 100644 --- a/Inst_eddies/Tests/long_tests.json +++ b/Inst_eddies/Tests/long_tests.json @@ -140,4 +140,4 @@ ], "create_file": ["config_nml.txt", "&config_nml /\n"] } -] +] diff --git a/Inst_eddies/inst_eddies.py.in b/Inst_eddies/inst_eddies.py.in index 823c81fa8fdf40f640b2bddce221bf82dcc13619..c63d371c05b34bf6b20a382b276978876688c741 100644 --- a/Inst_eddies/inst_eddies.py.in +++ b/Inst_eddies/inst_eddies.py.in @@ -27,12 +27,13 @@ def loop_inst_eddies(files, bbox, d, my_slice): inst_eddies_exe = "@CMAKE_CURRENT_BINARY_DIR@/inst_eddies" if not os.access(inst_eddies_exe, os.X_OK): - sys.exit(inst_eddies_exe + " not found or not executable") + sys.exit("inst_eddies.loop_inst_eddies:" + inst_eddies_exe + + " not found or not executable") if os.access("config_nml.txt", os.R_OK): print("inst_eddies.loop_inst_eddies: Will use config_nml.txt.") else: - sys.exit('"config_nml.txt" not found') + sys.exit('inst_eddies.loop_inst_eddies: "config_nml.txt" not found') nco_instance = nco.Nco() diff --git a/Inst_eddies/inst_eddies_Aviso.py b/Inst_eddies/inst_eddies_Aviso.py index 5d16e81d01e8865142552d65598aa8da216211e7..9b5c81713b093cef7b20a77062b469dfa6fa5ab9 100644 --- a/Inst_eddies/inst_eddies_Aviso.py +++ b/Inst_eddies/inst_eddies_Aviso.py @@ -37,7 +37,7 @@ args = argparser.parse_args() # Get the first date from the time coordinate in the NetCDF file. (In # general, we cannot get it from the name of the first file because # the first file may be the only file, and then there is no template -# option and the file name could not contain the date.) +# option and the file name might not contain the date.) with netCDF4.Dataset(args.first_file) as f: d = f["time"][:].item() diff --git a/Overlap/Documentation_texfol/documentation.tex b/Overlap/Documentation_texfol/documentation.tex index 09820608cbc48966f472119d196c62c7ced1fb71..16859b7e0c8c0bad8883b288ccc0baabcc32b462 100644 --- a/Overlap/Documentation_texfol/documentation.tex +++ b/Overlap/Documentation_texfol/documentation.tex @@ -211,7 +211,7 @@ sommets et deux arcs par sommet en moyenne, est de 6 GiB. Problème des sommets isolés. L'information est déjà présente, de façon implicite, dans les shapefiles et les fichiers edgelist. En effet, on -a le nombre de tourbillons valides à chaque date d'après les +a le nombre de tourbillons à chaque date d'après les shapefiles, et on a la liste des tourbillons non isolés d'après la liste des arcs. Mais la liste des sommets isolés n'est donc pas très facilement trouvée. On ajoute par conséquent le fichier de sortie diff --git a/Overlap/Tests/test_overlap.f90 b/Overlap/Tests/test_overlap.f90 index 53afbe15434a4321c2b94e409b58b2e938544c29..4a48498edf7ad21cc82178b9d61434939cb69b50 100644 --- a/Overlap/Tests/test_overlap.f90 +++ b/Overlap/Tests/test_overlap.f90 @@ -67,7 +67,7 @@ program test_overlap print *, 'Created file "edgelist.csv".' print *, k_test_1, ":" - print *, "Valid isolated eddies:" + print *, "Isolated eddies:" do i = 1, flow(1)%number_extr if (flow(1)%list(i)%delta_out == huge(0)) & write(unit = *, fmt = "(i0, 1x)", advance = "no") i @@ -76,7 +76,7 @@ program test_overlap print * print *, k_test_2, ":" - print *, "Valid isolated eddies:" + print *, "Isolated eddies:" do i = 1, flow(max_delta + 1)%number_extr if (flow(max_delta + 1)%list(i)%delta_in == huge(0)) &