25.06.2013 Views

Corrigé TP 9

Corrigé TP 9

Corrigé TP 9

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Expériences Numériques pour la Physique :<br />

Agrégation Limitée par Diffusion<br />

Ce script reprend le plan du sujet de <strong>TP</strong> numéro 9, où l’on cherche à étudier<br />

le phénomène d’agrégation limitée par diffusion, qui combine le mouvement<br />

aléatoire de particules microscopiques et leur agrégation progressive sur un substrat.<br />

Sommaire<br />

close all<br />

clear all<br />

9.a un seul marcheur<br />

9.b M marcheurs<br />

9.c Questions Physiques<br />

9.a un seul marcheur<br />

Nous considérons dans un premier temps le cas d’un seul marcheur afin de<br />

développer et tester la fonction matlab ”DLA1march”, qui va calculer et renvoyer<br />

la visualisation des coordonnées succesivement explorées par une particule<br />

ayant un mouvement aléatoire dans la boîte de simulation de taille N × N. Les<br />

conditions aux limites sont périodiques sur les côtés de la boîte : si une particule<br />

sort à droite elle entrera à gauche, et inversement. En haut de la boîte, la particule<br />

sera réfléchie, alors qu’en bas elle viendra directement se fixer à l’agrégat<br />

dont une première ligne est déjà occupée.<br />

% visualisation d’un marcheur<br />

N = 25 ; % taille de la grille<br />

% on appelle la fonction affichant la trajectoire d’un marcheur<br />

figure ;<br />

DLA1march(N) ;<br />

1


25<br />

20<br />

15<br />

10<br />

5<br />

mouvement aléatoire d‘un marcheur<br />

5 10 15 20 25<br />

On retrouve bien un mouvement aléatoire de la particule sur la grille, jusqu’à<br />

son agrégation sur le substrat situé en y = 1. Nous remarquons que même en<br />

ayant choisi un taille modeste pour la boîte de simulation (25 points), le temps<br />

de calcul et de visualisation peut être très important. En fait, ce sont les tracés<br />

successifs que nous demandons dans la boucle qui sont très coûteux en temps<br />

de calcul. Nous les supprimerons dans la suite quand nous passerons à un grand<br />

nombre de marcheurs.<br />

La fonction permettant de calculer la trajectoire d’un marcheur jusqu’à l’agrégat<br />

s’écrit comme suit :<br />

type DLA1march<br />

function DLA1march(N)<br />

% initialisation de l agregat<br />

Nx = N ; Ny = N ;<br />

AGR = zeros(Nx,Ny) ;<br />

AGR(:,1) = ones(1,Ny) ;<br />

% initialisation de la position actuelle x,y du marcheur<br />

xnew = randi(Nx) ; ynew = Ny ; % n importe ou en haut<br />

% Boucle : faire une marche jusqu’a ce qu’on touche l’agregat<br />

while AGR(xnew,ynew) == 0<br />

% on memorise la position pour actualiser l’agregat le cas echeant<br />

xold = xnew ;<br />

yold = ynew ;<br />

2


%definir les nouvelles positions xnew,ynew<br />

p = randi(4) ; % tirage au sort parmi 4 possibilit\’es :<br />

if p == 1<br />

xnew = xnew - 1 ; % aller a gauche<br />

elseif p == 2<br />

xnew = xnew + 1 ; % aller a droite<br />

elseif p == 3<br />

ynew = ynew - 1 ; % descendre<br />

else<br />

ynew = ynew + 1 ; % monter<br />

end<br />

%corriger les nouvelles positions xnew,ynew si necessaire<br />

if xnew == Nx + 1<br />

xnew = 1 ;<br />

elseif xnew == 0<br />

xnew = Nx ;<br />

elseif ynew == Ny + 1<br />

ynew = Ny - 1 ;<br />

end<br />

%animation<br />

plot(xnew,ynew,’o’),axis([1 Nx 1 Ny]),hold on,...<br />

title(’mouvement aleatoire d‘un marcheur’)<br />

drawnow<br />

end % fin d’une marche<br />

% on attache la position precedente a l’agregat<br />

AGR(xold,yold) = 1 ;<br />

end % fin de la fonction<br />

9.b M marcheurs<br />

Afin de mettre en évidence le phénomène d’agrégation limitée par diffusion,<br />

nous étudions maintenant un grand nombre de marcheurs, sur une grille plus<br />

grande.<br />

N = 100 ;<br />

M = 1000 ;<br />

On applique la fonction DLAMmarch, qui généralise la précédente à M particules,<br />

au cas de 1000 marcheurs sur une grille 100x100, en minimisant donc<br />

les représentations graphiques gourmandes en temps de calcul :<br />

figure ;<br />

DLAMmarch(N,M) ;<br />

3


100<br />

90<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

20<br />

10<br />

agrégation limitée par diffusion<br />

10 20 30 40 50 60 70 80 90 100<br />

On observe la formation de structures fractales à partir du substrat,<br />

caractéristiques du processus d’agrégation limitée par diffusion étudié ici.<br />

Ces structures se forment progressivement et sont la combinaison du caractère<br />

aléatoire du déplacement des marcheurs successifs, et du phénomène<br />

d’agrégation où les marcheurs arrivant sur le substrat viennent s’y fixer et ainsi<br />

en augmenter progressivement la taille.<br />

La fonction validée pour un marcheur a été modifiée comme suit :<br />

type DLAMmarch<br />

function DLAMmarch(N,M)<br />

% initialisation de l agregat<br />

Nx = N ;<br />

Ny = N ;<br />

AGR = zeros(Nx,Ny) ;<br />

AGR(:,1) = ones(1,Ny) ;<br />

%nAGR = Ny ;<br />

% boucle sur les marcheurs<br />

cpt = 0 ; % compteur pour repr\’esentation<br />

for i = 1 : M<br />

% initialisation de la position actuelle x,y du marcheur<br />

xnew = randi(Nx) ;<br />

ynew = Ny ;<br />

% Boucle : faire une marche jusqu?a ce qu?on touche l?agregat<br />

4


while AGR(xnew,ynew) == 0<br />

% on m\’emorise la position pour actualiser l’agr\’egat le cas \’ech\’eant<br />

xold = xnew ;<br />

yold = ynew ;<br />

%definir les nouvelles positions xnew,ynew<br />

p = randi(4) ; % tirage au sort parmi 4 possibilit\’es (gauche droite haut bas)<br />

if p == 1<br />

xnew = xnew - 1 ; % aller gauche<br />

elseif p == 2<br />

xnew = xnew + 1 ; % aller droite<br />

elseif p == 3<br />

ynew = ynew - 1 ; % monter<br />

else<br />

ynew = ynew + 1 ; % descendre<br />

end<br />

%corriger les nouvelles positions xnew,ynew si necessaire<br />

if xnew == Nx + 1<br />

xnew = 1 ;<br />

end<br />

if xnew == 0<br />

xnew = Nx ;<br />

end<br />

if ynew == Ny + 1<br />

ynew = Ny - 1 ;<br />

end<br />

end % fin d’une marche<br />

% disp(’bravo vous avez r\’eussi l‘agregation’)<br />

AGR(xold,yold) = 1 ;<br />

cpt = cpt + 1 ;<br />

if cpt == fix(N/10)<br />

[indx,indy] = find(AGR == 1) ;<br />

plot(indx,indy,’o’),axis([1 N 1 N]),...<br />

title(’agr\’egation limit\’ee par diffusion’),...<br />

drawnow<br />

cpt = 0 ;<br />

end<br />

end % fin de la boucle sur les marcheurs<br />

end<br />

9.c Questions Physiques<br />

1 - Pourquoi des arborescences ?<br />

5


Du fait du caractère aléatoire du mouvement des marcheurs, ces derniers peuvent<br />

se fixer à partir de n’importe quelle position au voisinage de l’agrégat. De<br />

plus, la croissance étant orientée par le substrat initial, les dépôts successifs<br />

vont se former en montant, et l’on obtient ainsi ces structures arborescentes<br />

caractéristiques.<br />

2 - Où est la diffusion ?<br />

Le mécanisme de diffusion résulte de mouvements microscopiques aléatoires des<br />

particules (mouvement Brownien), sans direction privilégiée. Si on ajoute une<br />

source d’anisotropie, par exemple la gravitation, on va observer un dépôt plus<br />

homogène de matière.<br />

Pour tester cette hypothèse, nous modifions la fonction à M marcheurs (fonction<br />

”DLA mg Mmarch”), en augmentant la probabilité de descendre par rapport<br />

aux trois autres directions : nous donnons ainsi une direction privilégiée au<br />

mouvement aléatoire, qui modélise ainsi la gravité.<br />

% fonction M marcheurs, avec la gravite :<br />

figure;<br />

DLA_mg_Mmarch(N,M) ;<br />

100<br />

90<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

20<br />

10<br />

agrégation limitée par diffusion et gravité<br />

10 20 30 40 50 60 70 80 90 100<br />

La fonction modifiée, faisant intervenir la gravité, s’écrit comme suit :<br />

type DLA_mg_Mmarch.m<br />

Dans la figure ci-dessus, nous observons bien un dépôt plus dense, avec beaucoup<br />

moins de structures arborescentes.<br />

6


function DLA_mg_Mmarch(N,M)<br />

% initialisation de l agregat<br />

Nx = N ;<br />

Ny = N ;<br />

AGR = zeros(Nx,Ny) ;<br />

AGR(:,1) = ones(1,Ny) ;<br />

%nAGR = Ny ;<br />

% boucle sur les marcheurs<br />

cpt = 0 ; % compteur pour repr\’esentation<br />

for k = 1 : M<br />

% initialisation de la position actuelle x,y du marcheur<br />

xnew = randi(Nx) ;<br />

ynew = Ny ;<br />

% Boucle : faire une marche jusqu?a ce qu?on touche l?agregat<br />

while AGR(xnew,ynew) == 0<br />

% on m\’emorise la position pour actualiser l’agr\’egat le cas \’ech\’eant<br />

xold = xnew ;<br />

yold = ynew ;<br />

%definir les nouvelles positions xnew,ynew<br />

p = randi(6) ; % tirage au sort parmi 6 possibilit\’es (gauche droite haut bas)<br />

if p == 1<br />

xnew = xnew - 1 ; % aller gauche<br />

elseif p == 2<br />

xnew = xnew + 1 ; % aller droite<br />

elseif p == 3<br />

ynew = ynew + 1 ; % monter<br />

else<br />

ynew = ynew - 1 ; % descendre<br />

% probabilite plus forte de descendre<br />

% pour modeliser la gravite<br />

end<br />

%corriger les nouvelles positions xnew,ynew si necessaire<br />

if xnew == Nx + 1 % sort a droite<br />

xnew = 1 ;<br />

elseif xnew == 0 % sort a gauche<br />

xnew = Nx ;<br />

elseif ynew == Ny + 1 % sort en haut<br />

ynew = Ny ;<br />

end<br />

end % fin d’une marche<br />

% disp(’bravo vous avez r\’eussi l‘agregation’)<br />

AGR(xold,yold) = 1 ;<br />

cpt = cpt + 1 ;<br />

7


if cpt == fix(N/10)<br />

[indx,indy] = find(AGR == 1) ;<br />

plot(indx,indy,’o’),axis([1 N 1 N]),...<br />

title(’agr\’egation limit\’ee par diffusion et gravit\’e’),...<br />

drawnow<br />

cpt = 0 ;<br />

end<br />

end % fin de la boucle sur les marcheurs<br />

end<br />

3 - Exemples d’application<br />

Les structures arborescentes systématiquement observées se retrouvent dans des<br />

domaines variés :<br />

- la formation des flocons de neige par agrégation de particules d’eau en<br />

suspension dans l’air,<br />

- la structure des réseau de transport dans les agglomérations urbaines, et<br />

la structure des agglomérations elles-mêmes,<br />

- les éclairs pour lesquels la propagation de l’arc électrique se fait par diffusion<br />

de proche en proche,<br />

- la formation par calcification progressive des arborescences coralliennes,<br />

par exemple du corail rouge.<br />

8

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!