TP PERCOLATION – Feu de forêt

Download Report

Transcript TP PERCOLATION – Feu de forêt

Informatique pour tous TP Percolation

TP PERCOLATION – Feu de forêt

La percolation (du latin voisins.

percolare

: couler à travers) désigne le passage d’un fluide à travers un solide poreux. Ce terme fait bien entendu référence au café produit par le passage de l’eau à travers une poudre de café comprimée, mais dans un sens plus large peut aussi bien s’appliquer à l’infiltration des eaux de pluie jusqu’aux nappes phréatiques ou encore à la propagation des feux de forêt par contact entre les feuillages des arbres L’étude scientifique des modèles de percolation s’est développée à partir du milieu du XXe siècle et touche aujourd’hui de nombreuses disciplines, allant des mathématiques à l’économie en passant par la physique et la géologie.

Choix d’un modèle

Nous allons aborder ce phénomène de la percolation via la propagation d’un feu de forêt. Une forêt est représentée une grille carrée

n

n

, chaque case pouvant correspondre à un arbre (avec une probabilité

p

) ou une zone vierge (avec une probabilité 1 -

p

). La question à laquelle nous allons essayer de répondre est la suivante : comment se propage un feu allumé au centre de la forêt , en particulier dans quel cas toute la forêt est détruite par l’incendie. On conçoit aisément que la propagation à toute la forêt ou non dépend beaucoup de

p

: plus celle-ci est grande, plus les chances de « réussite » sont importantes. Nous aurons l’occasion d’observer l’existence pour de grandes valeurs de

n

d’un seuil critique

p

0 en delà duquel la percolation a toutes les chances de réussir et en deçà duquel la percolation échoue presque à chaque fois.

Création et visualisation de la grille

Nous allons représenter la grille par le type

array

du module

numpy

, bien adapté à la manipulation de tableaux multidimensionnels. La fonction

zeros((n, p))

renvoie un tableau de

n

lignes et

p

colonnes contenant le nombre flottant 0.0 dans chacune de ses cases. La fonction

copy(t)

permet de faire une copie du tableau

t.

Une fois un tableau

Foret

créé, la case d’indice (

i,j

) est référencée par

Foret[i][j]

et peut être lue et modifiée (comme d’habitude, les indices débutent à 0). On notera que si

Foret

est un tableau, la méthode

n,p = Foret.shape

permet d’obtenir le nombre de lignes et de colonnes de ce dernier. 1.

Écrire une fonction

CreerForet

qui prend en paramètres un entier

n

(la dimension de la forêt) et un réel

p

compris entre 0 et 1 qui représente le pourcentage d'occupation de la forêt. Cette fonction retourne un tableau de flottants de taille

n

n

dont les éléments sont égaux à 0.0 ou à 1.0 et valent 1.0 avec une probabilité

p

.

P. CHATEL 1 sur 2 2014-04-13 Informatique pour tous TP Percolation

Pour visualiser simplement la forêt (fonction fournie :

AfficherForet

), nous utilisons la fonction

imshow

du module

matplotlib.pyplot

: appliquée à un tableau, celle-ci présente ce dernier sous forme d’une image de cases colorées en fonction de leur valeur. Puisque nos grilles ne contiennent pour l’instant que les valeurs 0.0 ou 1.0, les cases contenant un arbre en vert, et les cases non boisées en marron.

Propagation d'un incendie

2.

Écrivez une fonction

MettreLeFeu

qui prend un tableau en paramètre, qui inscrit la valeur 2 dans une case centrale de ce tableau et renvoie le nouveau tableau ainsi obtenu. 3.

Créez une fonction

PeutBruler

qui prend en paramètre une forêt ainsi que deux entiers

i

et

j

et qui renvoie

True

ou

False

suivant que l'emplacement d'indice (

i;j

) est à proximité d'un arbre en feu. Attention à bien traiter les bords du domaine. 4.

Créez une fonction

PropageFeu

qui prend en paramètre une forêt et qui en retourne une nouvelle, dans laquelle les arbres qui peuvent brûler sont en feu. 5.

Écrivez une fonction

AuFeu

qui prend en paramètre une forêt et qui renvoie

True

si au moins un arbre non en feu peut brûler. 6.

Créez une fonction

MetFeuForet

qui prend en paramètre une forêt, y met le feu et propage l'incendie jusqu'à ce que tous les arbres qui peuvent brûler soient en feu. La fonction retourne la forêt à la fin de ce processus. 7.

Créez une fonction

SuivreFeu

qui prend en paramètre une forêt, y met le feu et propage l'incendie jusqu'à ce que tous les arbres qui peuvent brûler soient en feu et renvoie la liste de l’évolution de l’état de la forêt. Pour visualiser simplement la forêt (fonction fournie :

VideoIncendie

), nous utilisons le mode animation en exécutant l’instruction

ion()

(pour « interactive mode on »). On utilise aussi les fonctions,

clf()

pour effacer la figure avant de la mettre à jour et correspondant au nombre de secondes de cette temporisation.

pause()

pour temporiser avant une modification ultérieure. La fonction pause demande un argument qui est un nombre positif Faire simulations pour

p

∈ {0.2 ; 0.3 ;0.4 ;0.5 ;0.6 ;0.7 ;0.8 ;0.9}. Que remarquez-vous ?

Mise en évidence du seuil de percolation

8.

Écrivez une fonction

EtendueDegats

qui prend une forêt en argument et renvoie le rapport entre la surface brûlée et la surface boisée initiale. 9.

Tracez cette proportion en fonction de la densité initiale de la forêt. On effectuera une moyenne sur un nombre significatif d'expériences pour lisser les fluctuations dues au hasard. On dit que la percolation est réussie lorsqu’à la fin de l’incendie toute la forêt est détruite. Vous devriez constater qu’il semble exister un seuil

p

0 en deçà duquel la percolation échoue presque à chaque fois, et au-delà duquel celle-ci réussit presque à chaque fois.

P. CHATEL 2 sur 2 2014-04-13