Modelo de Ising implementado en Fortran 90 como parte de la materia Introducción a la Simulación computacional. www.tandar.cnea.gov.ar/~pastorin/cursos/intro_sims/
- Augusto Román augustojre
- Simón Saint-André sstandre
- Editar el archivo
input.dat
. La primera línea tiene los nombres de las variables de ingreso y es ignorada por el programa. La segunda tiene los valores de las variables. - Compilar el programa de Fortran con
make
- Correr el ejecutable resultante:
./ising
- Si existe un archivo
matriz.dat
, el programa lo toma como arreglo inicial para la simulación. Debe ser un arreglo de LxL de 1 y -1. Al finalizar la simulación, el programa sobreescribematriz.dat
con la última configuración simulada. Precaución: al cambiar de tamaño de red, los archivosmatriz.dat
no funcionarán para la nueva simulación.
output.dat
: 2 columnas y (steps / L * L) filas. Contiene valores de Energía y Magnetización sampleados de la secuencia de pasos de Montecarlo.averages.dat
: 2 filas: Una con títulos y otra con 5 datos. Lo primeros 4 son promedios sobre todos los pasos de MC: Energía media, Magnetización media, Energía^2 media, y Magnetización^2 media. El último valor corresponde a la fracción de pasos de MC aceptados. Si bien todas las cantidades se calculan dentro del programaising
, pueden aproximarse a partir deoutput.dat
.matriz.dat
: Última configuración obtenida. Sobreescribe a la configuración de entrada.seed.dat
: Archivo utilizado porziggurat
para obtener números aleatorios. Se usa tanto como entrada como salida.
- Editar en
send_jobs.py
el tamaño de red, el numero de pasos de MC y el valor del campo magnético (B). - Ejecutar
python3 send_jobs.py NJOBS
donde NJOBS es el número de corridas que hace en cada temperatura.
Las distintas simulaciones se organizan en el directorio data/
. Por ejemplo, de la siguiente forma:
data/
|______20_size/
|____0.0_B/
| |____0.1_temp/
| | |____01_JOB/
| | | |____output.dat
| | | |____averages.dat
| | | |____matriz.dat
| | |____02_JOB/
| | | |____output.dat
| | | |____averages.dat
| | | |____matriz.dat
| | | ...
| | |____10_JOB/
| | ...
| |____0.2_temp/
| | |____01_JOB/
| | ...
| |____4.0_temp/
| ...
|____0.01_B/
| |____0.1_temp/
| ...
|
100_size/
|____0.0_B/
...
Toda la información contenida en los distintos averages.dat
se puede recopilar en un solo archivo mediante:
python3 recopilar_data.py
Esto crea (o sobreescribe) el archivo alldata.dat
, con el cual se pueden analizar los resultados obtenidos.
El notebook analisis.ipynb
contiene los cálculos y las figuras realizadas con la información de alldata.dat
. Al ejecutarlo se llama a recopilar_data.py
para asegurarse de tener los datos actualizados.
Para correr este notebook tenemos que usar Jupyter, que no está por defecto en Ubunutu. Puede ser instalado en un entorno virtual:
sudo apt install python3-venv
python3 -m venv .venv
Con esto tenemos creado el entorno virtual, para usarlo lo activamos con:source .venv/bin/activate
Ahora podemos instalar Jupyter y otros paquetes mediantepip
:pip3 install -r requirements.txt