Exercice 2 : Diffusion

Il s'agit d'étudier le comportement dynamique d'une grande sphère dans un bain de petites sphères.

Première expérience

Procédez comme à l'exercice précédent pour organiser vos expériences dans un dossier propre à cet exercice. Les programmes sont ici.

Lancez une première simulation, que vous laisserez tourner pendant quelques minutes.

Les fichiers dump… sont maintenant visualisés avec le fichier visu.py fourni avec les programmes :

../visu.py dump*

À côté des fichiers dump…, le fichier de sortie bparticle.dat contient les informations suivantes : <temps> <position x> <position y> <vitesse x> <vitesse y>.

Créez le notebook iPython et tracez les positions en fonction du temps \(x(t)\) et \(y(t)\), puis la trajectoire de la grande sphère \((x,y)\).

Exercice

Distribution des vitesses

Tracez un histogramme de la distribution des vitesses \(v_x\) et \(v_y\) avec la fonction hist, pour deux valeurs de la fraction volumique. Comparez cette distribution à la prédiction théorique vue dans les notes de physique statistique. De quoi dépend cette distribution ? De quoi ne dépend-elle pas, de façon de surprenante ?

Déplacement quadratique moyen

On veut maintenant étudier le déplacement quadratique moyen \(Q(\tau)=\left\langle [\mathbf{r}(t+\tau)-\mathbf{r}(t)]^2\right\rangle\). On veut tracer cette courbe pour deux valeurs de la fraction volumique en échelle logarithmique.

Gestion des gros fichiers

Note : Il est difficile de faire tourner des simulations longues sur les machines de la salle informatique. Vous pouvez à la place télécharger directement des fichiers de données. Lisez quand même ce qui suit pour comprendre comment ces données ont été générées.

Il faut faire tourner les simulations plus longtemps (au moins une heure), ce qui crée des fichiers de données énormes. On peut voir leur taille et leur nombre de lignes avec les commandes suivantes :

ls -l | grep bpart
wc -l bparticle.dat

Un fichier de \(10^8\) lignes est raisonnable pour cet exercice ; notez que vous pouvez compter le nombre de lignes sans arrêter la simulation. Ces fichiers sont trop gros pour être importés dans iPython (importer un fichier le charge dans la mémoire vive). Ils sont gros car ils contiennent une trajectoire longue et bien échantillonée. Vous allez les découper en deux fichiers, le premier contenant une trajectoire courte et bien échantillonée, pour voir ce qui se passe aux temps courts, le second une trajectoire longue et mal échantillonée, pour voir ce qui se passe aux temps longs. Les commandes sont

head -n 1000000 bparticle.dat > bp_court.dat
awk 'NR%100==1' bparticle.dat > bp_long.dat

La première commande prend le premier million de lignes dans bparticle.dat, et le redirige vers le fichier bp_court.dat. La seconde prend une ligne sur 100 et l'écrit dans bp_long.dat.

Ces fichiers restent gros : il est préférable de ne les charger qu'une fois, puis d'utiliser le tableau de données comme argument des fonctions (c'est à dire, ne pas charger le fichier dans les fonctions comme à l'exercice précédent).

Calcul du déplacement quadratique moyen

Écrivez une fonction qui prend en argument un fichier de données (i.e. une trajectoire) et un entier \(n\) et renvoie \(Q(n\times\delta t)\)\(\delta t\) est le pas de temps de la trajectoire. L'exécution de cette fonction prend du temps, il faut l'utiliser de façon raisonnée.

Comme on veut tracer \(Q(\tau)\) en échelle log-log, il faut prendre des points régulièrement espacés sur une échelle logarithmique. Écrivez une ligne qui renvoie 30 points régulièrement espacés en échelle logarithmique entre \(a\) et \(b\).

Écrivez une fonction qui calcule le déplacement quadratique moyen pour les points d'une telle liste et renvoie un tableau à deux colonnes \(\tau\) et \(Q(\tau)\). Pour avoir une statistique suffisante pour calculer le déplacement quadratique moyen, le temps maximal \(\tau\) doit rester petit devant la durée \(T_\mathrm{traj}\) de la trajectoire, par exemple \(\tau=T_\mathrm{traj}/100\).

Calculez le déplacement quadratique moyen aux temps courts et aux temps longs, et tracez-les sur le même graphe. Répétez cette opération pour deux valeurs de la fraction volumique, par exemple 0.2 et 0.4. Identifiez deux régimes par la pente de la courbe (ballistique et diffusif). Aux temps courts, tracer la prédiction théorique donnée dans les notes de physique statistique, et aux temps longs tracez l'asymptote.

Comment ces deux régimes dépendent-ils de la température et de la densité du gaz ? Quelle est la distance parcourue par la grande sphère pendant le régime ballistique ?