blob: 6eeb3743047adaef45accfd26434544f314457ad [file] [log] [blame]
\documentclass[a4paper, 11pt, twocolumn]{article}
\input{preamble.tex}
\addbibresource{references.bib}
\graphicspath{{graphs/}}
\rhead{Adrià Vilanova Martínez}
\lhead{Pràctica ordinador FCiTF}
\fancyfoot[C]{\thepage}
\setlength{\droptitle}{-4em}
\title{Pràctica ordinador Fenòmens Col·lectius i Transicions de Fase \\
\large Algorisme de Metropolis per simular el model d'Ising 2D}
\author{Adrià Vilanova Martínez}
\date{Primavera 2022}
\begin{document}
{
\parskip = 0pt
\maketitle
}
\section{Introducció}
Les pràctiques d'ordinador de l'assignatura han consistit en simular el model d'Ising 2D amb condicions de vora periòdiques. Això s'ha fet mitjançant l'algoritme de Metropolis.
El model d'Ising que hem emprat descriu el comportament d'una xarxa d'$N$ partícules disposades en els nusos d'una quadrícula 2D que poden tenir spin $+1$ o $-1$. Aquestes partícules només interaccionen amb els 4 veïns, que estan a la dreta, esquerra, dalt i baix. Si denotem per $\langle i, j \rangle$ les parelles de veïns, i $S_i$ l'spin que té la partícula $i$-èssima, el model descriu el comportament d'aquestes partícules mitjançant el següent hamiltonià:\cite[p.~12]{presentacio}
\[ \Ham(S_1, S_2, \ldots, S_n) = -J \sum_{\langle i, j \rangle} S_i S_j - H \sum_{i = 1}^N S_i, \]
on $J$ és una constant que modelitza la interacció entre veïns, i $H$ modelitza un camp magnètic extern constant que interacciona amb tots els spins (nosaltres hem estudiat el cas en què $H = 0$).
En el nostre cas hem imposat condicions de contorn periòdiques, és a dir, que la topologia de la nostra xarxa no és la d'un quadrat sinó la d'un tor. En termes simples, això vol dir que una partícula a un dels extrems de la quadrícula té com a veïna la partícula de l'extrem oposat.
Per tal de simular aquest model, hem emprat l'algoritme de Metropolis, que originalment va ser concebut per simular un sistema de partícules en una capsa 2D amb condicions de vora periòdiques, i amb un cert potencial entre partícules que depèn de la distància entre elles.\cite{metropolis} Es tracta d'un mètode de Montecarlo modificat. Aquest algoritme, en la nostra simulació, fa el següent:
\begin{algorithmic}
\Procedure{Metropolis}{$T, L$} \Comment{Simulació donada una temp. $T$ i mida de costat de la quadrícula $L$}
\State $S \gets$ \Call{genSpinMatrix}{L} \Comment{Inicialitza una matriu d'spins $S$ de mida $L \times L$ aleatòriament}
\For{$i \gets 1, ITER$}
\For {$j \gets 1, L^2$} \Comment{$L^2 = N$}
\State $(x, y) \gets$ \Call{randPos}{} \Comment{Considerem una posició aleatòria de la xarxa}
\State $\Delta\Ham \gets$ \Call{difE}{S, x, y} \Comment{Calculem la diferència d'energies entre la configuració en què hem invertit l'spin a la posició $(x, y)$ i la configuració actual $S$}
\If{$\Delta\Ham < 0$}
\State $S(x, y) \gets -S(x, y)$ \Comment{Acceptem el canvi d'spin}
\Else
\State $q \gets$ \Call{rand}{$0, 1$} \Comment {Nombre aleatori entre 0 i 1}
\If{$q < \exp\left(\frac{- \Delta\Ham}{K_B T}\right)$}
\State $S(x, y) \gets -S(x, y)$ \Comment{Acceptem el canvi d'spin}
\EndIf
\EndIf
\EndFor
\EndFor
\EndProcedure
\end{algorithmic}
Com es pot veure a l'algoritme anterior explicat amb pseudocodi, a cada iteració del mètode es proposen $L^2$ canvis d'spin.
La propietat essencial d'aquest algoritme és que les configuracions d'spin al final de cada iteració es recorren d'acord amb la seva probabilitat a la col·lectivitat canònica. Per tant, podrem calcular els valors mitjos de les variables termodinàmiques com el promig d'elles sobre totes les configuracions que anem recorrent.\cite[p.~1088]{metropolis}
Els objectius de la pràctica són els següents:
\begin{itemize}
\item Analitzar el comportament de l'energia, magnetització, capacitat calorífica $c_V$ i susceptibilitat magnètica $\chi$ del sistema en funció de la temperatura per diferents valors d'$L$.
\item Obtenir la temperatura crítica en el cas $L \to \infty$ i els exponents crítics.
\item Comprovar la hipòtesi de \textit{Finite Size Scaling}.
\end{itemize}
Durant tot l'informe utilitzarem unitats reduïdes, ja que és el que també utilitza el codi desenvolupat: $\Ham^* = \frac{\Ham}{J}$, $H^* = \frac{H}{J} = 0$, $T^* = \frac{K_B T}{J}$. També farem un abús de notació i ometrem l'estrella d'aquestes variables reduïdes per referir-nos a elles.
\section{Evolució temporal a diferents temperatures}
Com es pot observar a la figura \ref{fig:dift}, durant la simulació, tant l'energia com la magnetització convergeixen a un promig quan permetem que passin certes iteracions del mètode de Montecarlo.
\begin{figure}[h]
\centering
\input{graphs/diferent_t.tex}
\caption{Evolució de l'energia per partícula $\langle e \rangle := \langle E \rangle/N$ i la magnetització per partícula $\langle m \rangle := \langle M \rangle/N$ durant la simulació per diferents temperatures $T$, amb $L = 32$.}
\label{fig:dift}
\end{figure}
Això és perquè, tal com es menciona al guió de la pràctica 3, durant les primeres iteracions la cadena de configuracions té una correlació molt forta amb la configuració inicial.\cite[p.~10]{p3} És per això que, a l'hora de calcular els promitjos, el nostre codi no considera les primeres iteracions, ja que l'energia i magnetització podrien no haver convergit al promig.
Una altra conseqüència d'això és el fet que, donat que utilitzem l'algoritme \texttt{mt19937} com a generador de nombres pseudoaleatoris\footnote{Nosaltres utilitzem una traducció al Fortran escrita per Tsuyoshi Tada del programa original en C.\cite{mt19937Fortran}} i aquest depèn d'una llavor per començar a calcular-los,\cite{mt19937} per tal de no dependre de la llavor inicial la simulació es fa per diferents llavors, i les magnituds es promitgen per totes les llavors.
De fet, depenent de la llavor inicial, per temperatures baixes la cadena de configuracions es manté en configuracions amb signe de la magnetització determinada (és a dir, canvia de signe amb una probabilitat molt baixa), tal com es mostra a la figura \ref{fig:depenseed}. Aquest és un altre motiu pel qual fem el promig per moltes llavors, ja que ens permet explorar tant les configuracions amb $M > 0$ com les que tenen $M < 0$.
\begin{figure}[h]
\centering
\input{graphs/depEnSeed.tex}
\caption{Evolució temporal de $\langle e \rangle$ i $\langle m \rangle$ durant la simulació per diferents llavors (\textit{seeds}) inicials $S$, amb $L = 64$.}
\label{fig:depenseed}
\end{figure}
A més, segons el mateix guió, també hi ha correlació entre configuracions consecutives, així que el codi només calcula el promig amb les configuracions obtingudes cada $MCD$ iteracions per evitar introduir la correlació al càlcul del promig.
\newpage
\begin{figure}[h]
\centering
\input{graphs/confs.tex}
\caption{Configuracions al final de la simulació per diferents temperatures $T$.}
\label{fig:finalconf}
\end{figure}
A la figura \ref{fig:finalconf} podem veure com les configuracions finals per simulacions de temperatures diferents ens descriuen el comportament que hem vist a classe sobre el model d'Ising (recordem que estem usant unitats reduïdes): per temperatures baixes el comportament és semblant al ferromagnètic (spins paral·lels), i per temperatures altes el comportament és més semblant al paramagnètic (spins aleatoris).
També podem observar com la transició té lloc contínuament, sense una temperatura crítica que delimiti les dues fases, ja que estem treballant amb una $L$ finita, i la transició de fase discontínua només té lloc al límit termodinàmic $L \to \infty$.\cite[p.~10]{p4}
\section{Comportament de les variables del sistema quan \texorpdfstring{$L = 32$}{L = 32}}
Després d'executar la simulació per diferents valors de $T$ amb $L = 32$ ($N = 1024$), amb punts amb menys separació en regions on hem hagut de calcular certs valors, hem obtingut els següents resultats (la incertesa no està dibuixada, perquè és ordres de magnitud més petita que la longitud característica de les gràfiques i no es veuria):
\begin{figure}[h!]
\centering
\input{graphs/energia_L32.tex}
\caption{Energia per partícula reduïda $\langle e \rangle$ en funció de la temperatura $T$ en el cas del sistema amb $L = 32$.}
\label{fig:energia32}
\end{figure}
A la figura \ref{fig:energia32}, l'energia per partícula reduïda l'hem calculat com:
\[ \langle e \rangle := \frac{\langle E \rangle}{N} = \frac{\sum_{i \in I} E_i}{\# I \cdot N}, \]
on $I$ representa el conjunt d'iteracions que hem usat per fer el promig, i $\# I$ és el seu cardinal.
Notem que hi ha un punt d'inflexió al voltant del que serà la temperatura crítica i, com és d'esperar, veiem que tendeix a -2 quan $T \to 0$ i tendeix a 0 quan $T \to \infty$, d'acord amb la figura \ref{fig:dift}.\cite[p.~3]{p4}
\begin{figure}[h!]
\centering
\input{graphs/magnetitzacio_L32.tex}
\caption{Magnetització per partícula reduïda $\langle m \rangle$ en funció de la temperatura $T$ en el cas del sistema amb $L = 32$.}
\label{fig:magne32}
\end{figure}
A la figura \ref{fig:magne32}, la magnetització per partícula reduïda (el paràmetre d'ordre) l'hem calculat de dues maneres:
\[ \langle |m| \rangle := \frac{\langle |M| \rangle}{N} = \frac{\sum_{i \in I} |M_i|}{\# I \cdot N}, \]
\[ \sqrt{\langle m^2 \rangle} := \frac{\sqrt{\langle M^2 \rangle}}{N} = \frac{1}{N}\sqrt{\frac{\sum_{i \in I} M_i^2}{\# I}}. \]
Hem usat aquestes 2 magnituds i no $\langle m \rangle$ perquè per un sistema de mida finita aquesta darrera donaria sempre 0 degut a la simetria dels spins (en invertir $\uparrow$ i $\downarrow$ la física del sistema és la mateixa, però $m$ s'inverteix).
De nou, observem que hi ha un punt d'inflexió al voltant del que serà la temperatura crítica, i que tendeix a 1 quan $T \to 0$ i tendeix a 0 quan $T \to \infty$ (de nou, d'acord amb la figura \ref{fig:dift}).\cite[p.~4]{p4}
\begin{figure}[h!]
\centering
\input{graphs/capacitat_calorifica_L32.tex}
\caption{Capacitat calorífica reduïda $c_V$ en funció de la temperatura $T$ en el cas del sistema amb $L = 32$.}
\label{fig:cv32}
\end{figure}
En quant a la capacitat calorífica $c_V$, representada a la figura \ref{fig:cv32}, l'hem calculat de les dues maneres següents:\footnote{\label{fn:unitatsreduides}Recordem que estem treballant amb unitats reduïdes. És a dir, estem usant $\chi^* := \frac{\chi}{K_B}$ i $c_V^* := \frac{c_V}{K_B}$, i fem un abús de notació traient-li l'estrella.}
\[ c_V = \frac{\langle E^2 \rangle - \langle E \rangle^2}{N T^2}, \]
\[ c_V = \frac{d\langle e \rangle}{dT} \approx \frac{\langle e \rangle(T + h) - \langle e \rangle(T)}{h}. \]
Veiem a la figura \ref{fig:cv32} que efectivament ambdues maneres coincideixen, verificant que la primera expressió és adequada per calcular-la. A més, observem que aquesta variable presenta el pic a prop del que serà la temperatura crítica. També veiem que sempre és positiva, tal com esperaríem donat que així ho imposen les condicions d'estabilitat.
\begin{figure}[h!]
\centering
\input{graphs/susceptibilitat_magnetica_L32.tex}
\caption{Susceptibilitat magnètica reduïda $\chi$ en funció de la temperatura $T$ en el cas del sistema amb $L = 32$.}
\label{fig:smagn32}
\end{figure}
Finalment, la susceptibilitat magnètica a la figura \ref{fig:smagn32} s'ha calculat de la següent manera:
\[ \chi := \frac{\langle M^2 \rangle - \langle |M| \rangle^2}{NT}. \]
Com en el cas de la capacitat calorífica, tornem a observar un pic a prop de la futura temperatura crítica, i de nou torna a ser positiva en tot el rang com esperaríem per les condicions d'estabilitat.
\section{Dependència amb \texorpdfstring{$L$}{L}}
De cara a poder obtenir els comportaments crítics en el límit termodinàmic, hem d'estudiar les magnituds de la secció anterior per diferents valors d'$L$. Per aquest motiu, treballarem amb $L \in \{ 8, 16, 32, 64 \}$, i farem les simulacions amb els següents valors dels paràmetres: $\textsc{nSeeds} = 150$, $\textsc{mcTot} = 40000$.
També hem executat la simulació amb $L = 96$, però amb valors dels paràmetres molt més petits per tal de reduir el temps d'execució ($\textsc{nSeeds} = 16$, $\textsc{mcTot} = 30000$), ja que el càlcul és massa lent amb els paràmetres originals en una màquina amb un Intel Core i5 de \SI{2.7}{\giga\hertz}. Per aquest motiu no inclourem aquestes dades en el càlcul de la temperatura crítica i exponents crítics (les gràfiques amb la $L = 96$ es poden veure a l'apèndix \ref{sec:l96graphs}).
\begin{figure}[h!]
\centering
\input{graphs/energia.tex}
\caption{Energia per partícula reduïda $\langle e \rangle$ en funció de la temperatura $T$ per sistemes de diferent $L$.}
\label{fig:energia}
\end{figure}
Veiem a la figura \ref{fig:energia} que en augmentar la mida del sistema, el punt d'inflexió va pujant i movent-se cap a l'esquerra, i la segona derivada és més gran en valor absolut, tot i que fora d'aquest entorn (temperatures baixes o altes) totes les mides segueixen un comportament similar. Veiem que l'energia canvia més ràpidament just abans del punt d'inflexió en sistemes de mida més gran, ja que la derivada creix amb la mida.
\begin{figure}[h!]
\centering
\input{graphs/magnetitzacio.tex}
\caption{Magnetització per partícula reduïda $\langle m \rangle$ en funció de la temperatura $T$ per sistemes de diferent $L$.}
\label{fig:magne}
\end{figure}
En quant a la magnetització, a la figura \ref{fig:magne} veiem un comportament similar al de l'energia. La magnetització decau més ràpidament en funció de la temperatura quan la mida és més gran, i per temperatures baixes el comportament és similar. En quant a temperatures altes, és de suposar que també convergeixen totes a temperatura 0, però a la gràfica no ho observem (faltaria augmentar el rang de temperatures). El punt d'inflexió també es va movent cap a l'esquerra per mides més grans.
Aquests comportaments de l'energia i magnetització ens fan sospitar que al límit termodinàmic, aquestes dues magnituds presentaran una discontinuïtat a la temperatura crítica.
\begin{figure}[h!]
\centering
\input{graphs/capacitat_calorifica.tex}
\caption{Capacitat calorífica reduïda $c_V$ en funció de la temperatura $T$ per sistemes de diferent $L$.}
\label{fig:cv}
\end{figure}
\begin{figure}[h!]
\centering
\input{graphs/susceptibilitat_magnetica.tex}
\caption{Susceptibilitat magnètica reduïda $\chi$ en funció de la temperatura $T$ per sistemes de diferent $L$.}
\label{fig:smagn}
\end{figure}
El pic de la capacitat calorífica (figura \ref{fig:cv}) i el de la susceptibilitat magnètica (figura \ref{fig:smagn}) es van movent cap a l'esquerra i van augmentant quan augmentem $L$. Han de créixer perquè al límit termodinàmic tindrem una divergència d'ambdues magnituds a la temperatura crítica, que és el que volem estudiar.
Un comentari sobre aquestes figures és que hi ha un comportament erràtic a temperatures baixes per $L = 64$ (també s'observa a les figures de l'apèndix \ref{sec:l96graphs} per $L = 96$). Això és normal segons el guió de pràctiques, i pot ser degut al fet que fa falta executar la simulació amb un nombre més alt d'iteracions.\cite[p.~5-6]{p4}
\section{Comportament crític}
\begin{table}[h!]
\centering
\pgfplotstabletypeset[
columns={0, 1, 3},
columns/0/.style={column name=$L$, fixed, fixed zerofill, precision=0},
columns/1/.style={column name=$(T_c)_{c_V} \; (\pm 0.005)$, fixed, fixed zerofill, precision=3},
columns/3/.style={column name=$(T_c)_\chi \; (\pm 0.005)$, fixed, fixed zerofill, precision=3},
]{data/tc.dat}
\caption{Temperatures crítiques per les diferents $L$. S'han près com a valors les temperatures en què les gràfiques de $c_V$ i $\chi$ respectivament assoleixen el màxim.}
\label{tab:tc}
\end{table}
A partir dels pics de la capacitat calorífica i la susceptibilitat magnètica per diferents mides del sistema (taula $\ref{tab:tc}$), podem extrapolar el valor de la temperatura crítica al límit termodinàmic.
Donat que pel model d'Ising 2D $\nu = 1$,\cite{lajko2000correlation} el comportament dels pics $T_c$ respecte la variable $1/L$ és lineal.\cite[p.~13]{p4} Per tant, fent una regressió lineal dels punts per les temperatures crítiques obtingudes de les dues magnituds per separat i extrapolant pel cas $1/L = 0$ (és a dir $L \to \infty$), obtindrem 2 estimacions de la temperatura crítica.
\begin{figure}[h!]
\centering
\input{graphs/tc.tex}
\caption{Regressió lineal de les dades de la taula \ref{tab:tc}.}
\label{fig:tc}
\end{figure}
Els valors obtinguts degut a les dues regressions són, corresponentment:
\[ \begin{cases}
{T_c}_{c_V} = \SI{2.264(5)}{}, \\
{T_c}_\chi = \SI{2.271(5)}{}.
\end{cases} \]
Observem que $|{T_c}_\chi - {T_c}_{c_V}| = \SI{0.01(1)}{}$ i, per tant, els dos valors són compatibles. Prendrem com a estimació de la temperatura crítica la mitjana de tots 2 valors:
\[ \boxed{T_c = \SI{2.268(6)}{}}. \]
Aquest valor a més és compatible amb el valor teòric que podem trobar a la literatura: $T_c^\text{lit} = \frac{2}{\log(1 + \sqrt{2})} \approx 2.269$.\cite[p.~9]{p4}\cite{expising2d}
Per acabar d'analitzar el comportament crític, obtindrem els valors dels exponents crítics.
\subsection{Exponent \texorpdfstring{$\nu$}{nu}}
Donat que ja hem usat el fet que $\nu = 1$, aquest apartat realment hauria de fer-nos verificar que en el nostre sistema $\nu$ és compatible amb aquest valor.
L'exponent crític $\nu$ és tal que la longitud de correlació és $\xi \propto |T - T_c|^{- \nu}$. Donat que els pics de les figures \ref{fig:cv} i \ref{fig:smagn} corresponen als casos en què la longitud de correlació és $\chi_L \approx L$,\cite[p.~10]{p4}, tindrem la relació
\begin{equation}
L \approx \xi_L = \tilde{C} |(T_c)_L - T_c|^{- \nu},
\label{eq:nurelation}
\end{equation}
on $(T_c)_L$ és la temperatura crítica pel sistema finit de mida $L$ i $\tilde{C}$ és una constant. Desenvolupant l'expressió obtenim:
\[ \log((T_c)_L - T_c) = C - \frac{1}{\nu} \log(L), \]
on $C$ és una constant.
\begin{figure}[h!]
\centering
\input{graphs/nu.tex}
\caption{Regressió lineal per calcular la $\nu$, utilitzant les dades de la taula \ref{tab:tc}.}
\label{fig:nu}
\end{figure}
Després de fer una regressió lineal de les dades, com hem representat a la figura \ref{fig:nu}, obtenim els següents valors de la pendent de les rectes de regressió:
\[ \begin{cases}
- \frac{1}{\nu_{c_V}} = \SI{-0.84(11)}{}, \\
- \frac{1}{\nu_\chi} = \SI{-1.01(2)}{},
\end{cases} \]
que donen:
\[ \begin{cases}
\nu_{c_V} = \SI{1.19(16)}{}, \\
\nu_\chi = \SI{0.99(2)}{}
\end{cases} \]
Ambdós valors són compatibles amb el valor de la literatura $\nu = 1$ (prenent 2 sigmes), així que hem verificat que la temperatura crítica és consistent.
\subsection{Exponent \texorpdfstring{$\alpha$}{alfa}}
Donat que $c_V \propto |T - T_c|^{-\alpha}$, utilitzant \eqref{eq:nurelation} obtenim:
\[ c_V^\text{c} \equiv c_V((T_c)_{c_V}) = \tilde{C} L^\frac{\alpha}{\nu}. \]
Avaluant $\nu = 1$ a l'expressió i fent una mica d'àlgebra, obtenim aquesta expressió amb què fer una regressió lineal:
\[ \log(c_V^\text{c}) = C + \alpha \log(L). \]
\begin{figure}[h!]
\centering
\input{graphs/alpha.tex}
\caption{Regressió lineal per calcular l'$\alpha$, utilitzant les dades de la taula \ref{tab:tc}.}
\label{fig:alpha}
\end{figure}
La regressió lineal ens dona el següent valor de l'exponent crític:
\[ \boxed{\alpha = \SI{0.30(3)}{}}. \]
Observem que aquest valor no és compatible amb el valor de la literatura de l'exponent crític $\alpha_\text{lit} = 0$.\cite[p.~9]{p4}\cite{expising2d}
\subsection{Exponent \texorpdfstring{$\gamma$}{gamma}}
Com $\chi \propto |T - T_c|^{- \gamma}$, fent la mateixa deducció que per l'exponent $\alpha$ (però ara utilitzant $\chi$ en comptes de $c_V$ i $\gamma$ en comptes de $\alpha$), obtenim la següent expressió amb què podem fer una regressió per obtenir el valor de $\gamma$:
\[ \chi^\text{c} = C + \gamma \log(L). \]
\begin{figure}[h!]
\centering
\input{graphs/gamma.tex}
\caption{Regressió lineal per calcular la $\gamma$, utilitzant les dades de la taula \ref{tab:tc}.}
\label{fig:gamma}
\end{figure}
A partir de la regressió obtenim el següent valor:
\[ \boxed{\gamma = \SI{1.77(3)}{}}. \]
L'exponent de la literatura és $\gamma_\text{lit} = 1.75$, que està dins del rang d'incertesa del nostre valor i, per tant, són compatibles.\cite[p.~9]{p4}\cite{expising2d}
\subsection{Exponent \texorpdfstring{$\beta$}{beta}}
L'exponent $\beta$ és tal que $|m| \propto |T_c - T|^\beta$. De nou usant \eqref{eq:nurelation}, $\nu = 1$ obtenim $|m((T_c)_L)| = \tilde{C}L^{- \frac{\beta}{\nu}}$.
De nou, fem dues regressions amb la següent expressió derivada de l'anterior:
\[ \log(|m^\text{c}|) \equiv \log(|m(T_c)_L|) = C - \frac{\beta}{\nu} \log(L). \]
\begin{figure}[h!]
\centering
\input{graphs/beta.tex}
\caption{Regressió lineal per calcular la $\beta$, utilitzant les dades de la taula \ref{tab:tc}.}
\label{fig:beta}
\end{figure}
Obtenim els següents valors:
\[ \begin{cases}
\beta_{c_V} = \SI{0.14(2)}{}, \\
\beta_\chi = \SI{0.13(2)}{}.
\end{cases} \]
El valor de la literatura de l'exponent és $\beta_\text{lit} = 0.125$, així que ambdós estimacions són compatibles perquè $\beta_\text{lit}$ està dins dels dos intervals de confiança.\cite[p.~9]{p4}\cite{expising2d}
Prenem com a estimació final el promig:
\[ \boxed{\beta = \SI{0.13(2)}{}}. \]
\subsection{Exponent \texorpdfstring{$\delta$}{delta}}
Per calcular el coeficient $\delta$ (que és tal que $m \propto |H - H_c|^{1/\delta}$), donat que hem considerat $H = 0$ durant tota la pràctica, hem de calcular-lo mitjançant una de les relacions d'escala:
\[ 2\beta + \gamma = \beta(\delta + 1) \implies \delta = 1 + \frac{\gamma}{\beta}. \]
Mitjançant aquesta relació d'escala, obtenim:
\[ \boxed{\delta = \SI{15(2)}{}}, \]
que és compatible amb el valor de la literatura $\delta_\text{lit} = 15$.\cite[p.~9]{p4}\cite{expising2d}
\section{\textit{Finite Size Scaling}}
Jae-Kwon Kim al seu article \textit{Application of finite size scaling to Monte Carlo simulations} introdueix una tècnica per corregir els efectes de mida finita.\cite{finitesizescaling} Citant textualment el guió de pràctiques, la hipòtesi sobre la qual es fonamenta aquesta tècnica és la següent:\cite[p.~17]{p4}
\begin{displayquote}
Una propietat termodinàmica $P$ que divergeixi en el punt crític com $P_\infty(t) \sim t^{- \rho}$, pels sistemes finits serà analítica i es comporta com:
\[ \frac{P_L(t)}{P_\infty(t)} = f_P\left( \frac{L}{\xi_\infty(t)} \right), \]
on $t = \frac{T - T_c}{T_c}$. [...]
Per tant:
\begin{equation}\label{eq:fss1} \langle |m| \rangle_L \propto L^{- \frac{\beta}{\nu}} \Psi\left(t L^{\frac{1}{\nu}}\right), \end{equation}
\begin{equation}\label{eq:fss2} \chi_L \propto L^{\frac{\gamma}{\nu}} \Psi\left(t L^{\frac{1}{\nu}}\right). \end{equation}
\end{displayquote}
\begin{figure}[h!]
\centering
\input{graphs/magnetitzacio_fss.tex}
\caption{Representació gràfica de les dades per verificar l'expressió \eqref{eq:fss1}.}
\label{fig:mFss}
\end{figure}
\begin{figure}[h!]
\centering
\input{graphs/susceptibilitat_magnetica_fss.tex}
\caption{Representació gràfica de les dades per verificar l'expressió \eqref{eq:fss2}.}
\label{fig:chiFss}
\end{figure}
Podem confirmar que els resultats anteriors predits per la hipòtesi es compleixen degut al fet que a les figures \ref{fig:mFss} i \ref{fig:chiFss} totes les gràfiques per $L$ diferents coincideixen en la mateixa funció $\Psi$.
\section{Conclusions}
Hem pogut comprovar que l'algoritme de Metropolis és una bona manera de simular el model d'Ising 2D, degut al fet que hem pogut analitzar que la simulació es comporta com marca la teoria, en quant a l'evolució temporal i les configuracions finals.
A més, hem pogut extrapolar al límit termodinàmic per obtenir la temperatura crítica i els exponents crítics d'acord amb els valors de la literatura, exceptuant l'exponent $\alpha$, que no és compatible amb el valor de la literatura. I també hem pogut validar la hipòtesi del \textit{Finite Size Scaling} en el nostre model.
\begin{table}[h!]
\centering
\begin{tabular}{c|cc}
& Valor calculat & Valor de la literatura \\
\hline
$T_c$ & $\SI{2.268(6)}{}$ & $\frac{2}{\log(1 + \sqrt{2})} \approx 2.269$ \\
$\alpha$ & $\SI{0.30(3)}{}$ & 0 \\
$\beta$ & $\SI{0.13(2)}{}$ & 0.125 \\
$\gamma$ & $\SI{1.77(3)}{}$ & 1.75 \\
$\nu$ & \SI{0.99(2)}{} & 1 \\
$\delta$ & $\SI{15(2)}{}$ & 15 \\
\end{tabular}
\caption{Resum dels coeficients calculats i els de la literatura.\cite[p.~9]{p4}\cite{expising2d}}
\label{tab:expcrit}
\end{table}
Per altra banda, a temperatures baixes hem observat comportament erràtics en la magnetització (figura \ref{fig:magne}), capacitat calorífica (figura \ref{fig:cv}) i susceptibilitat magnètica (figura \ref{fig:smagn}) per $L$ grans, i hem obtingut algunes incerteses una mica grans durant el desenvolupament.
De cara a millorar això i la discrepància en l'exponent $\alpha$, seria útil provar d'augmentar el nombre d'iteracions i de llavors inicials. Tot i així, això no ens garanteix una millora, perquè pot ser que els errors de la màquina deguts a la precisió finita prevalguin.
\appendix
\clearpage
\section{\texorpdfstring{Gràfiques de la dependència amb $L$ incloent $L = 96$}{Gràfiques de la dependència amb L incloent L = 96}}\label{sec:l96graphs}
\begin{center}
\centering
\input{graphs/energia_ALLL.tex}
\captionof{figure}{Energia per partícula reduïda $\langle e \rangle$ en funció de la temperatura $T$ per sistemes de diferent $L$.}
\end{center}
\begin{center}
\centering
\input{graphs/magnetitzacio_ALLL.tex}
\captionof{figure}{Magnetització per partícula reduïda $\langle m \rangle$ en funció de la temperatura $T$ per sistemes de diferent $L$.}
\end{center}
\begin{center}
\centering
\input{graphs/capacitat_calorifica_ALLL.tex}
\captionof{figure}{Capacitat calorífica reduïda $c_V$ en funció de la temperatura $T$ per sistemes de diferent $L$.}
\end{center}
\begin{center}
\centering
\input{graphs/susceptibilitat_magnetica_ALLL.tex}
\captionof{figure}{Susceptibilitat magnètica reduïda $\chi$ en funció de la temperatura $T$ per sistemes de diferent $L$.}
\end{center}
\clearpage
\onecolumn
\section{Comentari sobre algunes otimitzacions realitzades i el codi}
De cara a millorar el rendiment de la simulació, s'han realitzat dues optimitzacions:
\begin{enumerate}
\item La primera d'elles és que la magnetització no es recalcula a cada iteració, sinó que es va actualitzant que s'accepta un canvi d'spin, d'una manera similar al que ja fem es fa amb l'energia, Això es fa sumant 2 vegades el nou valor de l'spin canviat.
\item La segona optimització consisteix en executar diverses simulacions paral·lelament en diferents nuclis de la CPU. D'aquesta manera, s'ha pogut millorar el temps de simulació tot i la lentitud de l'ordinador en què s'ha executat. Això s'ha realitzat amb un programa anomenat GNU Parallel que gestiona les tasques i les executa simultàniament.\cite{parallel}
\end{enumerate}
Finalment, el codi adjunt no és un únic fitxer Fortran, ja que he usat scripts auxiliars per interaccionar amb el programa principal \texttt{mc-2}. Això m'ha permès treballar més eficientment. A més, el fitxer principal \texttt{MC-2.f90} depèn en diversos fitxers Fortran. Això s'ha fet per distribuir el codi d'una manera que sigui més llegible.
El codi íntegre, i el codi font d'aquest informe, també estan disponibles a la següent adreça (està penjat a un servidor Git): \url{https://iavm.xyz/lab-fenomens}.
\printbibliography
\end{document}