Halos : Différence entre versions

De LMDZPedia
Aller à : navigation, rechercher
(Page créée avec « Il faut se méfier car avec les découpages en domaines MPI, si on regarde dans un halo à un moment avant qu'il soit correctement rempli, alors on peut y trouver n'impo... »)
 
 
(4 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
== Warning: Quite technical stuff here!!! ==
  
 +
In the dynamics, the MPI assigned  domains to a each core can be hard to track of... especially as it also depends on the grid (scalar, U, V) a given variable is
  
Il faut se méfier car avec les découpages en domaines MPI, si on regarde dans un halo à un
+
Some nomenclature:
moment avant qu'il soit correctement rempli, alors on peut y trouver n'importe quoi.
+
* jjb_u, jje_u => "latitudinal indexes", for a variable on the (iip1,jjb_u:jje_u) horizontal grid U grid
 +
* jjb_v, jje_v => "latitudinal indexes", for a variable on the (iip1,jjb_v:jje_v) horizontal grid V grid
 +
* ijb_u => "ij": linear index (horizontal grid) "b": begin (i.e. index at which the domain starts) "_u": U grid
 +
* ije_u => "ij": linear index (horizontal grid) "e": end (i.e. index at which the domain ends) "_u": U grid
 +
* ijb_v => "ij": linear index (horizontal grid) "b": begin (i.e. index at which the domain starts) "_v": V grid
 +
* ije_v => "ij": linear index (horizontal grid) "e": end (i.e. index at which the domain ends) "_v": V grid
  
Un peu de nomenclature:
+
These boundaries include halos (i.e. neighboring values at the junction with adjacent domains), whereas the ij_begin and ij_end don't
 +
(see parallel_lmdz.F90).
  
ijb_u => "ij": indice linéaire (grille horizontale)  "b": begin (donc indice de début du domaine) "_u": grille U
+
Scalars, which are not technically on the U grid, but on a grid with identical dimensions, are indexed as if they were on the U grid.
ije_u => "ij": indice linéaire (grille horizontale) "e": end (donc indice de fin du domaine) "_u": grille U
 
ijb_v => "ij": indice linéaire (grille horizontale) "b": begin (donc indice de début du domaine) "_v": grille V
 
ije_v => "ij": indice linéaire (grille horizontale)  "e": end (donc indice de fin du domaine) "_v": grille V
 
  
Ces bornes incluent les halos, alors que les ij_begin et ij_end non (à vérifier; c.f. parallel_lmdz.F90). Les scalaires, qui ne sont techniquement pas sur la grille "U", sont
+
The Register_SwapField routines copy the inner boundary values of a domain to propagate them to the other domains and fill their respective halos.
indicés comme sur une grille U puisque la grille scalaire est de la même forme.
 
  
Les routines Register_SwapField servent à enregistrer les valeurs aux frontières internes de chaque domaine pour pouvoir ensuite les transmettre aux voisins qui en ont
+
04/11/2021
besoin pour remplir leurs halos (frontières externes). Donc pour ce qui est de la différence entre ps_dyn et ps dans call_calfis, les halos ne sont pas à jour dans ps_dyn, alors qu'ils le sont dans ps, après appel à Register_SwapField.
+
 
 +
[[Category:Parallel]]
 +
[[Category:ExpertDev]]

Version actuelle en date du 17 novembre 2021 à 14:51

Warning: Quite technical stuff here!!!

In the dynamics, the MPI assigned domains to a each core can be hard to track of... especially as it also depends on the grid (scalar, U, V) a given variable is

Some nomenclature:

  • jjb_u, jje_u => "latitudinal indexes", for a variable on the (iip1,jjb_u:jje_u) horizontal grid U grid
  • jjb_v, jje_v => "latitudinal indexes", for a variable on the (iip1,jjb_v:jje_v) horizontal grid V grid
  • ijb_u => "ij": linear index (horizontal grid) "b": begin (i.e. index at which the domain starts) "_u": U grid
  • ije_u => "ij": linear index (horizontal grid) "e": end (i.e. index at which the domain ends) "_u": U grid
  • ijb_v => "ij": linear index (horizontal grid) "b": begin (i.e. index at which the domain starts) "_v": V grid
  • ije_v => "ij": linear index (horizontal grid) "e": end (i.e. index at which the domain ends) "_v": V grid

These boundaries include halos (i.e. neighboring values at the junction with adjacent domains), whereas the ij_begin and ij_end don't (see parallel_lmdz.F90).

Scalars, which are not technically on the U grid, but on a grid with identical dimensions, are indexed as if they were on the U grid.

The Register_SwapField routines copy the inner boundary values of a domain to propagate them to the other domains and fill their respective halos.

04/11/2021