Académique Documents
Professionnel Documents
Culture Documents
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.
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.
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.
α −αv x2
r
f (v x ) = e (2)
π
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
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.
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
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.
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).
4
2.3 L’intérêt de la simulation informatique Simulation
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
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.
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.
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 :
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 :
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 :
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
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 :
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
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.
9
3.5 Passage par la fente Simulation
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.
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.
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
Pour une distance 1m nous obtenons avec 1 000 000 de particules initiales :
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 :
Pour une distance 10m nous obtenons avec 1 000 000 de particules initiales :
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.
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 :
13
3.8 Implantation ionique Simulation
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
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.
15
3.9 Interface Simulation
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 :
16
3.9 Interface Simulation
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
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
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