Vamos a tomar un gas que parte con una cierta distribución inicial de velocidades.
Las colisiones entre partículas las modelizaremos con un pequeño y sencillo montecarlo que hará que la distribución inicial de velocidades se transforme poco a poco en una distribución Maxwelliana.
No nos va a interesar simular las posiciones de las partículas sino únicamente sus velocidades.
Asimismo vamos a realizar toda la simulación en dos dimensiones.
Vamos a generar una distribución inicial de velocidades con módulo de velocidad fijo:
\|\vec v\|\equiv 1 y ángulo aleatorio \theta=\mbox{random}
|
|
Una segunda posible configuración inicial tomará valores aleatorios entre 0 y 1 para cada una de las componentes de la velocidad:
|
|
Una tercera tomará un módulo de la velocidad aleatorio entre 0 y 1 y también un ángulo aleatorio:
|
|
Para poder visualizar estas distribuciones vamos a histogramarlas en un cierto intervalo (min,max) y con nd bines. Para acelerar este proceso lo más posible vamos a utilizar arrays numéricos de las librerías numpy y compilar el código en C utilizando Cython. Porteriormente, nos limitaremos a mover átomos de un bin a otro, proceso que no requerirá ya de tanta velocidad.
Dado que no hay posiciones de los átomos, lo que vamos a hacer es tirar un montecarlo que seleccione dos átomos de manera aleatoria y los haga colisionar con un parámetro de impacto b también aleatorio.
|
|
A continuación vamos a desarrollar una interfaz sencilla que permita elegir los parámetros de la simulación y generar visualizaciones:
Click to the left again to hide and once more to show the dynamic interactive window |

|
|