Elaborado por: Juan Daniel Castrellón Botero (201729285) y María Sofía Álvarez López (201729031)
El objetivo de este proyecto fue el de simular la trayectoria de una partícula cargada en un espectrómetro de momentos. Asimismo, se verificó que el radio de una partícula cargada depende de su momento. Además, se quiso indagar en la propiedad de enfoque que tiene el espectrómetro, según lo propuesto por Feynman en su volumen 2 del Feynman Lectures on Physics, capítulo 29.
Con el fin de lograr el objetivo propuesto, se crearon dos programas en el lenguaje de programación Python. El primero simula una partícula que incide perpendicularmente a la base del espectrómetro, es decir, tiene una velocidad en la dirección j. Por su lado, el campo magnético tenía una magnitud B=8T en dirección k. El objetivo de este programa era verificar que el momento de la partícula al entrar al espectrómetro, calculado como |p| = m|v|, es el mismo al salir, calculado según la ecuación |p| = q|B|R, donde B es el campo magnético, R el radio de la trayectoria semicircular que sigue la partícula y q = 5 C la carga de la partícula. El radio de la partícula se calculó con la distancia x_final a la que sale la partícula del espectrómetro, medida desde su punto de entrada, teniendo en cuenta que x_final = 2R. El código implementado para llevar a cabo este objetivo se encuentra en el archivo parte1/parte1.py
.
En el segundo programa se simulan partículas que entran con un ángulo de incidencia theta_0 medido respecto al eje y. Para este caso se estudiaron dos escenarios. El primero consistía en variar la velocidad de salida mientras se mantenía constante theta_0 y el segundo que variaba theta_0, manteniendo constante la magnitud de la velocidad. Para cada partícula que salía con un ángulo theta_0 se simulaba una segunda que incidía en un ángulo -theta_0. El campo magnético se aplicó nuevamente con una magnitud B=8T en la dirección k con una carga de magnitud q = 5C. En teoría, el punto donde finalizan ambas trayectorias debe coincidir, lo cual genera un efecto de enfoque. El montaje se puede ver en la figura mostrada a continuación. El archivo que contiene el código está en el repositorio que se encuentra al final del documento en el archivo parte2/parte2.py
.
Con el fin de correr este repositorio, deben seguirse los pasos mostrados a continuación.
- Antes de correr el proyecto, asegúrese de tener instalado
python3
en su máquina local ypip
opip3
para instalar las dependencias y librerías necesarias para la ejecución del programa. Si no cuenta con alguno de estos, puede instalarlos remitiéndose a la documentación oficial de python para instalarpython3
, con lo que se instalará una distribuión depip
- Corra el archivo
./run.sh
. En caso de que le salga el error Permission denied ejecute alguno de los comandos mostrados a continuación.sudo ./run.sh
chmod 777 ./run.sh
- Una vez corrido el programa, se le mostrarán las opciones disponibles:
- Instalar las dependencias y librerías del programa.
- Correr la parte 1 del proyecto.
- Correr la parte 2 del proyecto.
- Correr la gráfica para el error en el momento en función del intervalo de la parte 1
Otra forma de instalar las dependencias es corriendo el comandopip install -r requirements.txt
-
Si desea correr la primera parte del proyecto, seleccione la segunda opción del archivo
./run.sh
. Aquí, se le solicitarán algunos datos con el fin de correr la simulación.- Primero, deberá ingresar el número de partículas que desea simular.
- Después, deberá ingresar la velocidad máxima, en m/s, que una partícula debe tener. Esta velocidad se multiplica por un número aleatorio entre 0 y 1 con el fin de generar partículas con diferentes velocidades (y momentos) iniciales.
- Más adelante, deberá ingresar la magnitud del campo magnético B, en Tesla, que existirá en el espectrómetro de momentos.
- Finalmente, deberá ingresar el paso temporal con el que desea realizar la simulación. Se recomiendan pasos temporales menores a 0.0001 s con el fin de tener resultados precisos.
datos
, donde, por cada vez que se ejecuta el programa, se almacenan los datos de la simulación en una carpeta con la fecha en que se inició la simulación. Por ejemplo:2020-11-05 16:56:29.880790
es una simulación que se inició el 5 de noviembre a las 16:56 horas. Dentro de cada carpeta de simulación, se pueden encontrar los siguientes archivos y carpetas:- Carpeta
trayectorias
: Almacena, en un archivo por partícula, las posiciones x,y,z, en cada momento del tiempo, de cada una de las partículas simuladas.
Se generan tantos archivos como partículas se hayan simulado.
El formato del archivo es:x,y,z
y se almacena comoi.dat
dondei
es el número de la partícula simulada. - Archivo
x_finales.dat
: Almacena las posiciones finales, en x, de cada una de las partículas.
El formato del archivo es:id_particula,x_final
- Archivo
momentos.dat
: Almacena el momento inicial y final de cada partícula, calculados como p = qv y p = qBR, respectivamente.
El formato del archivo es:id_particula,x_inicial_x_final
- Imagen
trayectorias.png
: Muestra gráficamente las trayectorias de cada una de las partículas simuladas en el espectrómetro de momentos. Dos imágenes ejemplo generadas con 5 y 100 part se muestran a continuación,Para 5 partículas:
Para 100 partículas:
- Imagen
momentos.png
: Muestra el momento final de una partícula en función de su momento inicial y realiza un ajuste lineal entre ambas cantidades. Una imagen ejemplo generada con 100 partículas, con un paso temporal de 1 microsegundo, se muestra a continuación, - Imagen
error_momento.png
: Muestra el error en el momento (calculado como |p_final - p_inicial|) en función del momento inicial de las partículas. Entre más grande sea el paso temporal y/o la velocidad de las partículas, se espera un mayor error. Una imagen ejemplo generada con 100 partículas, con un paso temporal de 1 microsegundo, se muestra a continuación,
datos
, se genera un archivoerrores.dat
, con el formatodelta_tiempo,error_maximo,error_medio
, dondedelta_tiempo
corresponde al paso temporal usado en una simulación yerror_maximo
yerror_medio
el error más alto y el error promedio en el momento p, calculado como |p_final - p_inicial|, de cada simulación. Cada vez que se corre una simulación, se agregan estos datos a dicho archivo.
Con los datos de este archivo, corriendo el scriptgrafica_errores.py
, o ejecutando la opción 4 del script./run.sh
, se genera la gráfica mostrada a continuación, Esta permite visualizar el error en el momento según el paso temporal utilizado en la simulación. Esta gráfica se almacena en la rutadatos/error_momento_tiempo.png
.
NOTA: Para correr esta opción, es necesario haber corrido, por lo menos, dos veces la simulación de la parte 1 con diferentes pasos temporales. -
Si desea correr la segunda parte del proyecto, seleccione la tercera opción del archivo
./run.sh
. Aquí, se le solicitarán algunos datos con el fin de correr la simulación.- Primero, se le pedirá que ingrese el escenario que desea simular. Hay dos escenarios disponibles. En el primero, se mantiene el ángulo de incidencia, theta0 constante, para diferentes velocidades y, en el segundo, se mantiene fija la velocidad de la partícula para ángulos de incidencia variados. Seleccione 1 o 2 según desee.
- Después, deberá ingresar el número de partículas que desea simular.
- Más adelante, deberá ingresar la magnitud del campo magnético B, en Tesla, que existirá en el espectrómetro de momentos.
- Si escogío la opción 1, deberá ingresar la velocidad máxima, en m/s, que una partícula debe tener. Esta velocidad se multiplica por un número aleatorio entre 0 y 1 con el fin de generar partículas con diferentes velocidades (y momentos) iniciales. Posteriormente, se le pedirá que ingrese el ángulo de incidencia theta0 (en grados) de las partículas (medido con respecto al eje y). Si escogió la opción 2, deberá ingresar la velocidad inicial que llevarán las partículas y, seguido de esto, deberá ingresar el ángulo de incidencia máximo en grados. Este ángulo se multiplica por un número aleatorio entre 0 y 1 con el fin de generar partículas con diferentes ángulos de incidencia al espectrómetro de momentos.
NOTA: Cabe aclarar que, por cada ángulo theta0, se generan dos partículas. Una con ángulo de incidencia +theta0 y otra con ángulo de incidencia -theta0.
datos
, donde, por cada vez que se ejecuta el programa, se almacenan los datos de la simulación en una carpeta con la fecha en que se inició la simulación. Por ejemplo:2020-11-05 16:56:29.880790
es una simulación que se inició el 5 de noviembre a las 16:56 horas. Dentro de cada carpeta, se pueden encontrar los siguientes archivos y carpetas:- Carpeta
trayectorias
: Almacena, en un archivo por partícula y ángulo de incidencia, las posiciones x,y,z, en cada momento del tiempo, de cada una de las partículas simuladas.
Se generan el doble de archivos de partículas simuladas: uno para +theta0 y otro para -theta0.
El formato del archivo es:x,y,z
y se almacena comoi_theta0?.dat
dondei
es el número de la partícula simulada. y?
se reemplaza por + o - dependiendo de si el ángulo de incidencia theta0 es positivo o negativo, respectivamente. - Carpeta
graficas_trayectorias
: Almacena las gráficas para cada par de partículas con ángulo de incidencia +/- theta0, con el formatoTrayectoria_particulai.png
dondei
corresponde al número de la partícula que se está simulando.
A continuación, podemos ver dos gráficas: una para un theta0 pequeño y otra para un theta0 grande. Como vemos, entre más aumenta el ángulo de incidencia, más difiere la posición final en x de ambas partículas. - Archivo
x_finales.dat
: Almacena las posiciones finales, en x, de cada una de las partículas con sus diferentes ángulos de incidencia.
El formato del archivo es:id_particula,theta_0,x_final_+theta0,x_final_-theta0
, dondex_final_+theta0
yx_final_-theta0
corresponden a la posición final en x de la partícula con ángulo de incidencia positivo y negativo, respectivamente. - Imagen
error_xfinal_?.png
: Dependiendo de si se escogió la opción 1 o la opción 2, el?
se reemplaza por velocidad o theta0 respectivamente. Esta gráfica busca analizar el error en la posición final, medido como np.abs(x_final_theta0+ - x_final_theta0-) en función de la variable velocidad o theta0 según sea el caso. A continuación, podemos ver dos gráficas ejemplo.Error en la posición final de las partículas, para un ángulo de incidencia fijo theta0 = 80º, en función de las velocidades.
Error en la posición final de las partículas, para una velocidad fija v=300,000 m/s, en función del ángulo de incidencia theta0.
Trayectoria para dos partículas con +/- theta0 pequeño
Trayectoria para dos partículas con +/- theta0 grande