Vous êtes sur la page 1sur 22

U NIVERSITÉ S AVOIE M ONT-B LANC

R APPORT DE SIMULATION

Jet de particules

CHARVIN Antoine
Professeur Encadrant : Damir BUSKULIC
COUTIN Paul
Simulation

2
Table des matières

1 Introduction et objectif 1

2 Partie théorique 2
2.1 Tirages des positions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Tirages des vitesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2.1 Distribution Maxwell-Boltzmann . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2.2 Généralisation selon une Gaussienne . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2.3 Tirage de la vitesse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.4 Tirage de l’angle θ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.5 Tirage des vitesse en y et z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 L’intérêt de la simulation informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3 Partie numérique 6
3.1 Tirage aléatoire des positions et vitesses initiales . . . . . . . . . . . . . . . . . . . . . 6
3.2 Distribution des positions et des vitesses . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3 Influence de la température . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.4 Calcul de la trajectoire des particules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.5 Passage par la fente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.6 Distribution sur un écran à une distance L de la fente . . . . . . . . . . . . . . . . . . 10
3.7 Affichage du jet de particules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.8 Implantation ionique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.9 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.10 Perspective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Simulation

1 Introduction et objectif

Nous souhaitons simuler un jet de particules à travers une fente, en trois dimensions. Pour cela
nous allons dans un premier temps déterminer la distributions des vitesses initiales ainsi que les
positions de chaque particules confinées dans la boite de manière analytique puis nous passerons
ensuite à un traitement numérique du problème. En effet un traitement numérique est approprié
pour notre problématique car il n’est pas concevable de calculer de manière analytique, à la main,
les trajectoires de chaque particule.
Nous tirerons tout d’abord les vitesses et positons selon la distribution obtenue analytiquement
puis nous ferons un histogramme des vitesses afin de vérifier que les vitesses tirées au hasard
suivent bien la bonne distribution. Dans un second temps nous calculerons la distribution des
particules sur un écran plan à une certaine distance de la fente. Pour terminer nous pourrons faire
un exemple d’implantation ionique, pour cela on assimilera notre simple écran à un changement
de milieu et nos particules perdront leurs énergies selon une certaine courbe après avoir touchées
l’écran.

1
Simulation

2 Partie théorique
La partie théorique sera assez courte car nous devons uniquement savoir comment tirer au hasard
les positions et vitesses des particules selon certaines distributions, tout le reste des calculs seront
fait de manière numérique.

2.1 Tirages des positions

Nous devons tirer au hasard la position de chaque particule dans la boite. La probabilité de trou-
ver une particule à un endroit ou à un autre dans la boite est la même, la distribution est donc
uniforme. Nous allons donc tirer au hasard selon une distribution uniforme des coordonnées x, y
et z. Les bornes des tirages aléatoires correspondront aux dimensions de la boite.

2.2 Tirages des vitesses

Cette fois-ci nous ne pouvons pas tirer les vitesses au hasard simplement selon une distribu-
tion uniforme. Selon la physique statistique, il faut que les vitesses suivent une distribution de
maxwell-boltzmann.

2.2.1 Distribution Maxwell-Boltzmann

Nous utilisons donc la formule suivante :


r
m − m v x2
f (v x ) = e 2kT (1)
2πkT
avec k la constante de Boltzmann, m la masse d’une molécule et T la température du gaz. On pose
m
maintenant α = 2kT Nous obtenons :

α −αv x2
r
f (v x ) = e (2)
π

2.2.2 Généralisation selon une Gaussienne

Nous devons maintenant appliqué la formule vue plus haut à la formule d’une Gaussienne. Nous
utilisons donc la formule e la gaussienne :
a×x 2
p(x) = C × e − 2 (3)
q
a
On en conclut que a = 2α et C = 2π . "C" est une constante de normalisation et "a" une constante
qui est positive et qui caractérise la largeur de la fonction de distribution. On obtient donc la pro-
babilité suivante : Z x Z z
p(x)d x = p z (z)d z = z (4)
−∞ 0
Or nous ne pouvons pas inverser directement cette formule pour retrouver x. Nous devons tout
d’abord passer par la distribution gaussienne à deux dimensions. Le nombre de points (x,y) qui
suivent cette distribution et qui se trouvent dans les intervalles ]−∞, x] et ]−∞, y] est proportion-
nel à la probabilité.
x
Z Z y a 2
+y 2 )
I= C 2 e − 2 (x d xd y (5)
−∞ −∞

2
2.2 Tirages des vitesses Simulation

On pose x = r × cosθ et y = r × si nθ. Nous transformons donc notre formule en coordonnées


polaire et nous obtenons :
Z rZ θ
a 2
I= C 2e − 2 r r d r d θ (6)
0 0
q
a a
Or nous savons depuis l’expresion 3 que C = 2π donc C 2 = 2π . Nous pouvons alors résoudre
l’intégrale ci-dessus
³ a 2
´ ³ θ ´
I = 1 − e− 2 r × (7)

Or on sait que θ et r sont indépendantes. Nous réutilisons la formule (4) et le résultat de la formule
(7) : Z z1 Z z2 ´ ³ θ ´
− a2 r 2
³
p(x)d x × p(z)d z = z 1 z 2 = I = 1 − e × (8)
0 0 2π
Ça nous permet de séparer les variables z 1 et z 2 :
a 2
³ ´
z1 = 1 − e − 2 r (9)
θ
µ ¶
z2 = (10)

Les valeurs z 1 et z 2 sont des valeurs aléatoires variant entre 0 et 1. On peut désormais inverser les
deux équations ci-dessous et retrouver la valeur de r et θ.

s ¶
³ 2
r= − l n(1 − z 1 ) (11)
a
θ = 2πz 2 (12)
Maintenant que nous avons r et θ nous pouvons très simplement retrouver la valeur de notre x et
y. r correspond à la norme de la vitesse.
s ¶
³ 2
x = r × cosθ = − l n(1 − z 1 ) × cos(2πz 2 ) (13)
a
s ¶
³ 2
y = r × si nθ = − l n(1 − z 1 ) × si n(2πz 2 ) (14)
a
Dans notre cas, notre y n’a pas d’intérêt de trouver la vitesse en y car nous multiplions simplement
notre vitesse par le cosinus de notre angle, nous avons donc une vitesse avec un angle, connaître
la vitesse de y ne nous apporte aucune information utile.

2.2.3 Tirage de la vitesse

Maintenant que nous avons la formule, nous allons pouvoir tirer la vitesse en utilisant nos va-
riables. Pour ce faire nous utilisons simplement la formule 13 en remplaçant x par v x et a par nos
valeurs. Nous avons donc :
v x = r × cos(θ)
s ¶
³ 2
= − l n(1 − z 1 ) × cos(2πz 2 )
a
s ¶
³ 2
= − m l n(1 − z 1 ) × cos(2πz 2 ) (15)
( kT )
Cette formule nous donne donc simplement la valeur de la vitesse pour une particule.

3
2.2 Tirages des vitesses Simulation

2.2.4 Tirage de l’angle θ

On remarque que l’angle θ varie de 0 à 2π donc que notre cosinus varie de 1 à -1 or toutes nos
valeurs négatives (donc les valeurs qui partent vers le bord gauche de la boite et non vers la fente
(à droite)) ne nous servent pas. Nous pouvons donc mettre un angle qui varie de π2 à − π2 . Ainsi
notre cosinus est toujours positif et donc toutes nos particules ont toujours (plus ou moins) la
bonne direction pour sortir de la boite, on gagne donc en temps de calcul.

2.2.5 Tirage des vitesse en y et z

Maintenant nous appliquons exactement le même raisonnement pour les vitesses en y et en z.


Nous trouvons avons donc pour v y :

v y = r × cos(θ)
s ¶
³ 2
= − l n(1 − z 1 ) × cos(2πz 2 )
a
s ¶
³ 2
= − m l n(1 − z 1 ) × cos(2πz 2 ) (16)
( kT )

et idem pour v z :

v z = r × cos(θ)
s ¶
³ 2
= − l n(1 − z 1 ) × cos(2πz 2 )
a
s ¶
³ 2
= − m l n(1 − z 1 ) × cos(2πz 2 ) (17)
( kT )

Cette fois nous laissons une valeur pour θ allant de 0 à 2π car la vitesse en y et z peut tout aussi
bien être positive que négative.
Maintenant que nous avons nos 3 vitesses nous appliquons simplement Pythagore pour trouver
la vitesse générale de notre particule. Nous faisons donc simplement la racine carré des sommes
des vitesses au carré : q
v g énér al e = v x2 + v 2y + v z2 (18)

Ainsi on remarque bien que nous avons une vitesse générale qui a un angle et une norme aléatoire
mais qui est toujours plus ou moins orienté vers la fente de la boite, à droite (notre v x ne peut pas
être négatif) (cf schémas ci-dessous en 2D).

F IGURE 1 – La vitesse générale à 2D

4
2.3 L’intérêt de la simulation informatique Simulation

2.3 L’intérêt de la simulation informatique

Comme nous venons de le voir, nous pouvons calculer la trajectoire pour une particule, or dans
une boite (même petite) nous avons énormément de particules donc on voit tout de suite qu’il
n’est pas possible de toutes les calculer à la main. En effet nous ne pouvons pas faire de la méca-
nique du point de manière analytique au cas par cas sur chaque particule présente dans la boite.
Nous allons donc baser nos calculs sur la distribution de Maxwell-Boltzmann qui est une étude
statistique de la vitesse des particules puis étudier leurs mouvements de manière numérique en
calculant leurs trajectoires grâce à un schéma d’Euler.

5
Simulation

3 Partie numérique

3.1 Tirage aléatoire des positions et vitesses initiales

Nous commençons tout d’abord par tirer au hasard nos positions qui suivent une distribution
uniforme. On utilise alors simplement la fonction random.uniform() où les bornes correspondent
aux dimensions de la boite qui va nous permettre de tirer une coordonnée au hasard selon une
distribution uniforme. Notre boite est ici un cube de longueur L.

F IGURE 2 – Tirage aléatoire des positions

Ensuite nous tirons les vitesses initiales selon les trois axes x, y et z grâce à la formule que nous
avons obtenu de manière analytique dans la première partie. Voici un exemple pour le tirage des
positions selon l’axe x, nous tirerons les vitesses de manière analogue pour les deux autre axes.

F IGURE 3 – Tirage aléatoire des vitesses

3.2 Distribution des positions et des vitesses

Afin de vérifier que la distributions des vitesses suit bel et bien une distributions de type Maxwell-
Boltzmann, nous construisons un histogramme des vitesses. Pour cela on stock toutes les vitesses
précédemment tirées au hasard dans une liste appelée hist-vitesse-part :

F IGURE 4 – Stockage des vitesses initiales

Puis nous pouvons tracer l’histogramme des vitesses grâce à la fonction plt.hist, où l’axe des abs-
cisses correspond aux vitesses des particules et l’axe des ordonnées correspond au nombre de
particules possédant cette vitesses :

F IGURE 5 – Histogramme des vitesses

6
3.3 Influence de la température Simulation

Pour une température de 273K, nous obtenons alors le résultat suivant qui suit bel et bien une
distribution de Maxwell-Boltzmann comme prévu théoriquement :

F IGURE 6 – Distributions des vitesses initiales à 273K

3.3 Influence de la température

Nous souhaitons ici voir l’influence de la température sur la distribution des vitesses initiales dans
la boite. Encore une fois ceci est pour vérifier si notre modélisation des vitesses initiales "réagit"
de la bonne manière. Prenons donc tout d’abord une température classique comme par exemple
20 degrés Celsius, soit 273 Kelvin.

7
3.3 Influence de la température Simulation

Nous obtenons alors cet histogramme :

F IGURE 7 – Distributions des vitesses initiales à 273K

Pour une valeur plus élevée comme 1000 Kelvins on s’attend à ce que la courbe s’écrase vers la
droite, c’est-à-dire qu’en moyenne les vitesses initiales sont plus élevées car la température est la
conséquence de l’agitation thermique, les molécules ont donc une vitesse supérieur.
On obtient alors :

F IGURE 8 – Distributions des vitesses initiales à 1000K

Au contraire pour une température plus faible comme par exemple 50 Kelvins, la courbe va se
resserrer c’est-à-dire que la vitesse moyenne des particules sera plus faible, cela s’explique avec le
même argument d’agitation thermique que pour le précédent test. On obtient alors :

8
3.4 Calcul de la trajectoire des particules Simulation

F IGURE 9 – Distributions des vitesses initiales à 50K

3.4 Calcul de la trajectoire des particules

Le calcul de la trajectoire se fera grâce à un schéma d’Euler, où la seule force prise en compte est
le poids de la particule. On calcul à chaque delta de temps, les nouvelles vitesses ainsi que les
nouvelles positions et on stock les coordonnées de positions dans une liste afin de vérifier si la
particule passe ou non par la fente.

F IGURE 10 – Schéma d’Euler

9
3.5 Passage par la fente Simulation

3.5 Passage par la fente

Afin de vérifier si la particule tirée au hasard dans la boite passe par la fente nous vérifions si, à
un moment donné, une coordonnée de sa trajectoire est belle et bien dans la fente. Nous allons
donc parcourir la liste qui contient les coordonnées de la trajectoire grâce à une boucle for. La
première conditions if sert à vérifier que la particule passe bien par l’abscisse de notre fente, ici on
choisit entre 10 et 10.1cm cela signifie que notre boite à une "épaisseur" de 0.1cm. Afin de gagner
en précision nous pouvons diminuer l’épaisseur mais pour cela il faut aussi augmenter le nombre
de point sur la trajectoire afin de ne pas manquer une particule qui verrait sa trajectoire passée par
la fente mais dont le point de trajectoire n et n+1 serait respectivement juste avant et juste après
la fente. La condition ne serait alors pas vérifiée alors que la particule à une trajectoire sortante.
Les deux autres conditions if servent plus simplement à définir la fente vu de face, un carré ou un
rectangle par exemple.
Nous avons décidé par la suite de n’afficher que les particules qui vérifient cette condition et donc
que les particules qui sortent de la boite par la fente.
Ici notre fente sera centré sur une des faces de la boite.

F IGURE 11 – Définition de la fente

On souhaite maintenant obtenir la distribution de ce jet de particules sur un écran plan à une dis-
tance D (d i st ance − écr an dans le code) de la fente. Pour cela nous allons procéder de la même
manière, nous allons vérifier si, pour chaque particule sortant par la fente, un point de sa trajec-
toire est sur l’écran que nous définissons grâce aux trois conditions if. On stocke alors la coordon-
née indice p de la liste de position qui correspond au point d’impact sur l’écran. Ici l’écran fera
face à la fente et sera d’une certaine taille en y et z.

F IGURE 12 – Définition de l’écran

3.6 Distribution sur un écran à une distance L de la fente

L’objectif ici est de voir comment sont réparties les particules sur un écran plan à une distance
L de la fente. Nous allons donc afficher les points "d’impact" des particules sur l’écran afin de
pourvoir construire un histogramme des positions, de la même manière que nous avons construit
précédemment l’histogramme des vitesses. Nous pouvons ainsi voir comment sont reparties les
particules sur l’écran et comment cette distribution évolue en fonction de la distance à la fente.
Afin d’avoir des résultats significatifs nous veillerons à prendre un nombre de particule suffisant.
Nous allons donc construire cette fois-ci un histogramme en trois dimensions, pour cela nous al-
lons utiliser la fonction "ax.bar3d" qui va nous permettre de construire un histogramme en barre :

10
3.6 Distribution sur un écran à une distance L de la fente Simulation

F IGURE 13 – Construction de l’histogramme des postions

Pour une distance 1m nous obtenons avec 1 000 000 de particules initiales :

F IGURE 14 – Histogramme des positions sur un écran à distance 1m

11
3.6 Distribution sur un écran à une distance L de la fente Simulation

Pour une distance de 5m nous obtenons avec 1 000 000 de particules initiales :

F IGURE 15 – Histogramme des positions sur un écran à 5m

Pour une distance 10m nous obtenons avec 1 000 000 de particules initiales :

F IGURE 16 – Histogramme des positions sur un écran à distance 10m

12
3.7 Affichage du jet de particules Simulation

On peut remarquer que pour un même écran, plus il est positionné proche de l’écran, plus les
particules seront regroupé en son centre. Au contraire plus on l’éloigne, plus les particules seront
réparties. En effet quand l’écran est proche de la fente les particules n’ont pas le temps de s’excen-
trer, elles sont donc toutes environ en face de la fente et donc touchent quasiment toutes l’écran
en sont centre. Quand l’écran est plus loin, cette fois-ci les particules ont le temps de s’excentrer,
elles vont donc plus se repartir à la surface de l’écran.

3.7 Affichage du jet de particules

Afin d’avoir un résultat agréable à présenter nous avons décidé de représenter les positions ini-
tiales des particules, en en gardant uniquement une sur cent ou sur mille dans le but de voir que
la distribution est bien uniforme dans la boite sans pour autant surcharger l’affichage. Nous af-
fichons aussi les trajectoires des particules qui sortent par la fente, ainsi que notre écran plan en
face de la fente. Afin de ne pas surcharger l’affichage nous n’affichons seulement les trajectoire des
particules sortante.
Nous pouvons tout d’abord représenter notre jet de particules en deux dimensions :

F IGURE 17 – Exemple de jet de particule 2d

13
3.8 Implantation ionique Simulation

Puis maintenant en trois dimensions :

F IGURE 18 – Exemple de jet de particule 3d

3.8 Implantation ionique

Afin d’appliquer cette simulation à une situation réelle nous avons décidé de tenter une simu-
lation d’implantation ionique simplifié. L’implantation ionique est un procédé d’ingénierie des
matériaux. Comme son nom l’indique, il est utilisé pour implanter les ions d’un matériau dans
un autre solide, changeant de ce fait les propriétés physiques de ce solide. L’implantation ionique
est utilisée dans la fabrication des dispositifs à semi-conducteurs, pour le traitement de surface
des métaux, ainsi que pour la recherche en science des matériaux. Les ions permettent à la fois
de changer les propriétés chimiques de la cible, mais également les propriétés structurelles car la
structure cristalline de la cible peut être abîmée ou même détruite.
Pour cela on reprend les positions et vitesses initiales qui correspondent aux positions d’impact
sur l’écran et la vitesse d’impact des particules sur l’écran.

14
3.8 Implantation ionique Simulation

F IGURE 19 – Récupération valeurs initiales

Par la suite nous refaisons un calcul de trajectoire par la méthode d’euler comme nous l’avons
fait précédemment, à un détail près : cette fois ci la particule perd son énergie cinétique selon
une certaine courbe une fois passé l’écran, qui pourrait représenter notre peau par exemple ou
tout autre matériaux. Pour cela on introduit la notion de pouvoir d’arrêt qui se définit comme :
Le pouvoir d’arrêt est la perte moyenne d’énergie de la particule par distance parcourue, mesurée
par exemple en MeV/cm
Dans notre cas nous allons prendre une courbe de pouvoir d’arrêt "fictive", c’est-à-dire qu’elle ne
représente pas forcément la réalité. Obtenir une courbe réaliste afin d’avoir une meilleur simula-
tion fait partie de nos principaux axes d’amélioration pour rendre ce projet plus complet. Cepen-
dant d’un point de vue python cela change en rien la validité de notre programme, il suffira par
la suite de modifier cette courbe de pouvoir d’arrêt pour avoir une situation réaliste. Nous allons
prendre ici une perte d’énergie cinétique linéaire en fonction de la profondeur d’implantation.

F IGURE 20 – Nouveau schéma d’Euler

15
3.9 Interface Simulation

On affiche ensuite les trajectoires des particules depuis l’écran :

F IGURE 21 – Exemple de résultat d’implantation ionique

Nous pouvons voir ici la différence entre les particules avec une forte vitesse incidente par rapport
aux particules plus lente.

3.9 Interface

Afin d’avoir un code plus facilement utilisable, nous avons souhaité créer une interface grâce à la
bibliothèque tkinter. En effet nous pouvons tout d’abord modifier les paramètres de la simulation
directement sur l’interface au lieu de devoir aller modifier ces valeurs dans le script python.
L’interface nous sert aussi à n’afficher uniquement ce que l’utilisateur souhaite grâce aux cases à
cocher, cela permet par exemple si l’on veut modifier la température pour voir son influence sur
la distribution des vitesses initiales ( comme nous l’avons fait précédemment ) de faire compiler
le code et n’afficher que cet histogramme. Pour cela nous faisons une case à cocher qui est un
booléen dont la valeur initial est False et si la case est cocher le booléen vaut True. On définit une
case à cocher de cette manière :

F IGURE 22 – Case à cocher

16
3.9 Interface Simulation

Puis on récupère et utilise le booléen :

F IGURE 23 – Récupération et utilisation de la case à cocher

Les curseurs quant à eux servent à définir par exemple le nombre de particules ou encore la taille
de la boite. On les définit de cette manière :

F IGURE 24 – Curseur

Puis on récupère leur valeurs de la même façon que précédemment :

F IGURE 25 – Récupération de la valeur du curseur

Enfin à chaque nouveau lancement, grâce au bouton "lancer" du code, on ferme les différentes
fenêtres ouvertes par le précédent lancement grâce à la commande plb.clear(). Afin de fermer l’in-
terface nous avons aussi ajouté un bouton "Quitter". On défini le bouton lancer de cette façon :

F IGURE 26 – Bouton

17
3.10 Perspective Simulation

Nous avons donc une interface de ce type :

F IGURE 27 – interface

3.10 Perspective

Dans la partie tirage aléatoire nous pouvons améliorer la simulation en prenant en compte les
rebonds des particules dans la boite, en effet il est possible qu’une particule ne sorte pas par la
fente mais qu’après un ou plusieurs rebonds la particule sortira de la boite par la fente.
Dans la partie calcul de trajectoire nous pouvons améliorer cette simulation en changeant le schéma
d’Euler par un Runge-Kutta d’ordre 2 ou 4 pour le calcul de la trajectoire de la particule afin d’op-
timiser le temps de calcul.
Nous pouvons aussi modifier d’une part la forme de la fente comme par exemple faire une ouver-
ture circulaire. D’autre part nous pouvons changer la forme de l’écran plan par un écran courbé,
comme une demi sphère.
Sur la partie implantation ionique, il serait possible de simuler plusieurs couches au lieu de uni-
quement une seule comme nous l’avons fait afin d’être plus réaliste car par exemple la peau pos-
sède différentes couches qui ne vont pas agir de la même manière sur les particules incidentes.
Nous pourrions également, comme évoqué précédemment, obtenir des courbes réalistes de pou-
voir d’arrêt comme par exemple la courbe de pouvoir d’arrêt de l’aluminium pour les protons, en
fonction de l’énergie des protons :

18
3.10 Perspective Simulation

F IGURE 28 – Pouvoir d’arrêt de l’aluminium pour les protons, en fonction de l’énergie des protons

19

Vous aimerez peut-être aussi