• Aucun résultat trouvé

Principes de base de ParaFlow

5.3 Calcul des flots d’accumulation

Figure5.7 – Hiérarchie avec règleΩ: Première étape

0 1 2 3 4 5 6 7 8 9 10

Figure5.8 – Hiérarchie avec règleΩ: Deuxième étape

l’extérieur du MNT (cuvettes 0, 3, 6, 7, et 8) d’une part et de délimiter le bassin versant du fleuve dont l’embouchure se trouve dans la cuvette 0 de graphe GC0, d’autre part. Évidemment, ce MNT est tellement petit qu’on a l’impression que la règleΩva segmenter le MNT en petits bassins versants. Dans la réalité ce phénomène va se produire uniquement au bord du MNT ce qui permettra d’isoler les cuvettes pour lesquelles nous n’avons pas assez d’information pour savoir à quel bassin versant elles appartiennent. Par contre cette règle va permettre de bien délimiter les bassins versants des grands fleuves comme nous le verrons dans le chapitre 7. Par ailleurs, on remarque que la règleΩchange pas la complexité de l’algorithme, ni ne modifie son potentiel de parallélisation.

5.3 Calcul des flots d’accumulation

5.3.1 Objectifs

Le calcul des flots d’accumulation permet de déterminer en chaque point du MNT, le nombre de points qui s’y déversent. Comme on l’a vu précédemment ce type d’information est très important par exemple dans l’étude des écoulements de polluants dans les cours d’eau mais aussi pour essayer de déterminer automatique-ment les cours d’eau au sein du MNT. Dans ParaFlow, ce calcul est le dernier de la chaine et va utiliser les résultats obtenus lors des étapes précédentes. Plus

par-ticulièrement, on va utiliser le graphe des flux calculé à l’étape initiale et le MST calculé au cours de l’étape 2. Il va produire une grille 2D de la même taille que le MNT initial dont chaque point contiendra le flot d’accumulation du point du MNT correspondant.

Le calcul s’effectue en deux étapes. La première consiste à calculer les flots d’accumulation locaux aux cuvettes calculées lors de l’étape initiale. Ensuite le MST sera utilisé pour faire transiter l’eau d’une cuvette à l’autre jusqu’à la mer. Cette étape est appelée calcul des flots d’accumulation globaux.

5.3.2 Calcul des flots d’accumulation locaux

Pour faire ce calcul, l’entrée est la grille qui représente le graphe de fluxF lux(D, h) calculé pour le MNT(D, h). Le résultat sera une grille de domaineD appeléeF A (pour Flots d’Accumulation). Toutes les cases de cette grille seront initialisées à une valeur∞. Le problème pour cette phase est d’arriver à faire le cumul sans avoir à mettre à jour plusieurs fois les mêmes points lors du calcul car sur de très gros MNT les temps de calcul pourraient devenir trop importants. L’idée de l’algorithme que nous avons utilisé est la suivante : on parcourt l’ensemble des points de la grilleF A.

Pour chaque pointp deF AsiF A(p) =∞on va déterminer le flot d’accumulation du pointp. Pour cela on va créer une pile de points non résolus (c’est à dire valant

∞) contenant initialement uniquement le pointp. Cette pile va servir à connaitre la liste des points dont il faut déterminer le flot d’accumulation pour pouvoir détermi-ner celui dep. Donc pour chaque pointpnon résolu qui est nécessaire au calcul de p, on va regarder parmi ses voisins dont l’image par la fonction parentestp ,ceux qui ne sont pas résolus, si il y en a on les mets dans la pile, si il n’y en a pas on calcule le flot d’accumulation du pointp (et on dépile ce point).

L’inconvénient de ce type d’algorithme est la possible explosion de la taille de la pile (dans le plus mauvais des cas elle pourrait atteindre la taille du MNT). En fait, sur les MNT réels que nous avons traités la taille moyenne des cuvettes de l’étape initiale est de l’ordre de 50 points ce qui fait que l’algorithme est optimal en terme de parcours du MNT est ne nécessite pas de pile trop grande.

5.3.3 Calcul des flots d’accumulation globaux

Dans cette phase, on va utiliser la grille F A calculée précédemment ainsi que le MST calculé par ParaFlow appelé HT dans la suite (pour arbre hiérarchique).

DansFigure 5.9(a), la cuvette A est une feuille dans HT, l’eau s’écoule alors à partir de la cuvette Avers son père B. Des flots d’accumulations du puitsA sont propagés vers le puits B. Le flot d’accumulations de B est la somme de ses flots d’accumulation locaux (le nombre de pixels appartenant à la cuvette du puitsB) et la somme des flots d’accumulations de tous les fils duB dansHT. La propagation se fait ensuite deB à son pèreP jusqu’à ce que nous atteignions le puitsR (où le père deRcorrespond àΩ).

L’arbre hiérarchiqueHT impose un ordre afin de propager des flots

d’accumu-5.3. Calcul des flots d’accumulation 71 lations entre les puits. Nous considérons par exemple le HT dansFigure 5.9(a).

Supposons que les deux puitsAetCaient fini de calculer leurs flots d’accumulations et qu’ils se propagent versB, la propagation deBvers son pèreP sera ensuite réa-lisable. Par contre, dans la deuxième composante, les puitsI,J etKsont marqués comme finis, mais L n’est pas encore fini pour son calcul. Cela signifie que nous n’avons pas assez d’informations pour continuer cette propagation et idem pour son père D.

Dans notre implémentation, cette propagation entre le puitsAet son pèreBsera effectuée par une mise à jour dans la matrice des flots d’accumulation. Cette mise à jour consiste à modifier le flot d’accumulation des points∀a∈π[A,pS]et∀b∈π[pD,B]

dans le graphe de flux où pS etpD sont des points de passage entre la cuvette de Aet celle deB. Dans notre modélisation d’écoulement sur le graphe des flux, l’eau s’écoule selon le chemin depSàA(notéπ[pS,A]) dans le sens inverse de la direction des flux calculé dans le graphe F lux(D, h) (voir figure5.9(b)), elle s’en va ensuite depSàpDet elle s’écoule finalement sur le chemin depDversB, notéπ[pD,B](voir figure5.9(c)). Les pixels a∈π[pS,A] porteront tous des flots d’accumulations deA, et les pixelsb∈π[pD,B] accumulent leurs flots d’accumulations ainsi que ceux deA.

(a) Forêt de MST

A B pS pD Delta

(b)T oAonπ[pS,A]

A B pS pD

Delta

Delta

(c) T oB_LOC on π[pD,B]

Une fois les flots d’accumulations globaux calculés, la détermination des cours d’eau se fait par un simple seuillage sur la matriceF Aobtenu. C’est à dire que tous les points ayant un flot d’accumulation supérieur à un certain seuil seront considérés comme appartenant à un cours d’eau.

Chapitre 6

L’implantation parallèle de