From 869a3c4aceaeaebb4eb719262416ce6e47e6406a Mon Sep 17 00:00:00 2001 From: Janita Willumsen Date: Mon, 4 Dec 2023 10:08:43 +0100 Subject: [PATCH] Missing estimate of speed-up and critical temperatures in table. --- latex/ising_model.tex | 7 ++- latex/sections/appendices.tex | 56 +++++++++++--------- latex/sections/methods.tex | 13 ++--- latex/sections/results.tex | 99 +++++++++++++++++------------------ 4 files changed, 92 insertions(+), 83 deletions(-) diff --git a/latex/ising_model.tex b/latex/ising_model.tex index de5c0c5..96ba30a 100644 --- a/latex/ising_model.tex +++ b/latex/ising_model.tex @@ -77,13 +77,16 @@ \clearpage \newpage +% Appendix +\subfile{sections/appendices} + +\clearpage + \onecolumngrid \bibliographystyle{unsrtnat} \bibliography{references} -% Appendix -\subfile{sections/appendices} \end{document} diff --git a/latex/sections/appendices.tex b/latex/sections/appendices.tex index 151e96b..f80f7bd 100644 --- a/latex/sections/appendices.tex +++ b/latex/sections/appendices.tex @@ -40,12 +40,15 @@ the spin up as visualized in Figure \ref{fig:tikz_neighbor}. Using the values estimated for the $2 \times 2$ case, found in \ref{tab:lattice_config}, we find the partition function \begin{align*} - Z &= 1 \cdot e^{-\beta (-8J)} + 4 \cdot e^{-\beta (0)} + 4 \cdot e^{-\beta (0)} + 2 \cdot e^{-\beta (8J)} \\ - & \quad + 4 \cdot e^{-\beta (0)} 1 \cdot e^{-\beta (-8J)} \\ + Z &= 1 \cdot e^{-\beta (-8J)} + 4 \cdot e^{-\beta (0)} + 4 \cdot e^{-\beta (0)} \\ + & \quad + 2 \cdot e^{-\beta (8J)} + 4 \cdot e^{-\beta (0)} 1 \cdot e^{-\beta (-8J)} \\ &= 2e^{8 \beta J} + 2e^{-8 \beta J} + 12. \end{align*} -We rewrite the expression using the identity $\cosh(8 \beta J) = 1/2 \big( e^{8 \beta J} + e^{-8 \beta J})$, -and get +We rewrite the expression using the identity +\begin{align*} + \cosh(8 \beta J) &= 1/2 \big( e^{8 \beta J} + e^{-8 \beta J}) +\end{align*} +and find \begin{align*} z &= 4 \cosh (8 \beta J) + 12 \ . \end{align*} @@ -55,12 +58,10 @@ and get For a linear function of a stochastic random variable $X$, with a known probability distribution, the expected value of $x$ is given by \begin{align*} - \mathbb{E}(aX + b) &= a \cdot \mathbb{E}(X) + b & \text{\cite[p. 131]{springer:2012:modernstat}} + \langle aX + b \rangle &= a \cdot \langle X \rangle + b & \text{\cite[p. 131]{springer:2012:modernstat}} \end{align*} In our case the discrete random variable is the spin configuration, and we want -to find the expected value of the function $E(\mathbf{s})$. Continuing, we will -use the notation $\langle E \rangle$ for the expectation value of a given variable, -in this case $E$. +to find the expected value of the function $E(\mathbf{s})$. Both energy per spin and magnetization per spin are functions of $\mathbf{s}$. In addition, the number of spins is given as a constant for each lattice. We can @@ -75,9 +76,10 @@ The same applies to magnetization per spin \begin{align*} \langle |m| \rangle = \frac{1}{N} \sum_{i=1}^{N} |M(s_{i})| p(s_{i} \ | \ T) \ . \end{align*} -Continuing with the expectation values for a $2 \times 2$ lattice, excluding the terms which give zero we get +Continuing with the expectation values for a $2 \times 2$ lattice, excluding the terms which result in zero, we get \begin{align*} - \langle E \rangle &= (-8J) \cdot \frac{1}{Z} e^{8 \beta J} + 2 \cdot (8J) \cdot \frac{1}{Z} e^{-8 \beta J} + (-8J) \cdot \frac{1}{Z} e^{8 \beta J} \\ + \langle E \rangle &= (-8J) \cdot \frac{1}{Z} e^{8 \beta J} + 2 \cdot (8J) \cdot \frac{1}{Z} e^{-8 \beta J} \\ + & \quad + (-8J) \cdot \frac{1}{Z} e^{8 \beta J} \\ &= \frac{16J}{Z} \big(e^{-8 \beta J} - e^{8 \beta J}) \\ &= -\frac{32J \sinh(8 \beta J)}{4(\cosh(8 \beta J) + 3)} \\ &= -\frac{8J \sinh(8 \beta J)}{\cosh(8 \beta J) + 3} \ , @@ -90,9 +92,10 @@ and &= \frac{4 (2e^{8 \beta J} + 4)}{4(\cosh(8 \beta J) + 3)} \\ &= \frac{2(e^{8 \beta J} + 2)}{\cosh(8 \beta J) + 3} \ . \end{align*} -The squared function +The squared energy function \begin{align*} - \langle E^{2} \rangle &= (-8J)^{2} \cdot \frac{1}{Z} e^{8 \beta J} + 2 \cdot (8J)^{2} \cdot \frac{1}{Z} e^{-8 \beta J} + (-8J)^{2} \cdot \frac{1}{Z} e^{8 \beta J} \\ + \langle E^{2} \rangle &= (-8J)^{2} \cdot \frac{1}{Z} e^{8 \beta J} + 2 \cdot (8J)^{2} \cdot \frac{1}{Z} e^{-8 \beta J} \\ + & \quad + (-8J)^{2} \cdot \frac{1}{Z} e^{8 \beta J} \\ &= \frac{128J^{2}}{Z} \big(e^{8 \beta J} + e^{-8 \beta J} \big) \\ &= \frac{128J^{2} \cosh(8 \beta J)}{4(\cosh(8 \beta J) + 3)} \\ &= \frac{64J^{2} \cosh(8 \beta J)}{\cosh(8 \beta J) + 3} \ , @@ -116,6 +119,7 @@ and &= \frac{4(e^{8 \beta J} + 2)^{2}}{(\cosh(8 \beta J) + 3)^{2}} \ . \end{align*} + \section{Heat capacity and magnetic susceptibility}\label{sec:heat_susceptibility} To find the heat capacity in Eq. \ref{eq:heat_capacity}, we normalize to heat capacity per spin @@ -149,8 +153,9 @@ and the variance of the total magnetization is given by \mathbb{V}(M) &= \mathbb{E}(M^{2}) - [\mathbb{E}(|M|)]^{2} \\ &= \frac{8e^{8 \beta J} + 8}{\cosh(8 \beta J) + 3} - \frac{4(e^{8 \beta J} + 2)^{2}}{(\cosh(8 \beta J) + 3)^{2}} \\ &= \frac{(8(e^{8 \beta J} + 1)) \cdot (\cosh(8 \beta J) + 3) - 4(e^{8 \beta J} + 2)^{2}}{(\cosh(8 \beta J) + 3)^{2}} \\ - &= \frac{4(e^{8 \beta J} + 1) \cdot (e^{8 \beta J} + e^{-8 \beta J}) + 24(e^{8 \beta J} + 1) - 4(e^{8 \beta J} + 1)^{2}}{(\cosh(8 \beta J) + 3)^{2}} \\ - &= \frac{4e^{2(8 \beta J)} + 4e^{8 \beta J} 4e^{0} + 4e^{-8 \beta J} 24e^{8 \beta J} + 24 - 4e^{2(8 \beta J)} - 16e^{8 \beta J} - 16}{(\cosh(8 \beta J) + 3)^{2}} \\ + &= \frac{4(e^{8 \beta J} + 1) \cdot (e^{8 \beta J} + e^{-8 \beta J})}{(\cosh(8 \beta J) + 3)^{2}} \\ + & \quad + \frac{24(e^{8 \beta J} + 1) - 4(e^{8 \beta J} + 1)^{2}}{(\cosh(8 \beta J) + 3)^{2}}\\ + % &= \frac{4e^{2(8 \beta J)} + 4e^{8 \beta J} 4e^{0} + 4e^{-8 \beta J} 24e^{8 \beta J} + 24 - 4e^{2(8 \beta J)} - 16e^{8 \beta J} - 16}{(\cosh(8 \beta J) + 3)^{2}} \\ &= \frac{4(3e^{8 \beta J} + e^{-8 \beta J} + 3)}{(\cosh(8 \beta J) + 3)^{2}} \ . \end{align*} We find the heat capacity @@ -181,29 +186,30 @@ where the five distinct values are $\Delta E = \{-16J, -8J, 0, 8J, 16J\}$. \section{Additional results}\label{sec:additional_results} -Results of 1 million MC cycles. -\begin{figure} +We also did the phase transition experiment using 1 million MC cycles. In Figure \ref{fig:phase_energy_1M} +we show expected energy per spin, and in Figure \ref{fig:phase_magnetization_1M} +expected magnetization per spin. +\begin{figure}[H] \centering \includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/energy.pdf} \caption{$\langle \epsilon \rangle$ for $T \in [2.1, 2.4]$, $10^{6}$ MC cycles.} \label{fig:phase_energy_1M} -\end{figure} - -\begin{figure} +\end{figure} % +\begin{figure}[H] \centering \includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/magnetization.pdf} \caption{$\langle |m| \rangle$ for $T \in [2.1, 2.4]$, $10^{6}$ MC cycles.} \label{fig:phase_magnetization_1M} -\end{figure} - -\begin{figure} +\end{figure} % +In Figure \ref{fig:phase_heat_1M} we show heat capacity, and in Figure \ref{fig:phase_susceptibility_1M} +the magnetic susceptibility. +\begin{figure}[H] \centering \includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/heat_capacity.pdf} \caption{$C_{V}$ for $T \in [2.1, 2.4]$, $10^{6}$ MC cycles.} \label{fig:phase_heat_1M} -\end{figure} - -\begin{figure} +\end{figure} % +\begin{figure}[H] \centering \includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/susceptibility.pdf} \caption{$\chi$ for $T \in [2.1, 2.4]$, $10^{6}$ MC cycles.} diff --git a/latex/sections/methods.tex b/latex/sections/methods.tex index 4de3bc7..c008006 100644 --- a/latex/sections/methods.tex +++ b/latex/sections/methods.tex @@ -314,12 +314,13 @@ Monte Carlo cycles when analyzing phase transitions. \subsection{Tools}\label{subsec:tools} The Ising model and MCMC methods are implemented in C++, and parallelized using -both \verb|OpenMPI| \cite{gabriel:2004:open_mpi} and \verb|OpenMP| \cite{openmp:2018}. We used the Python library -\verb|matplotlib| \cite{hunter:2007:matplotlib} to produce all the plots, and -\verb|seaborn| \cite{waskom:2021:seaborn} to set the theme in the figures. In -addition, we used \verb|Scalasca| \cite{scalasca} and \verb|Score-P| \cite{scorep} -to profile and optimize our implementation. -% Add profiler +both \verb|OpenMPI| \cite{gabriel:2004:open_mpi} and \verb|OpenMP| \cite{openmp:2018}. +We used the Python library \verb|matplotlib| \cite{hunter:2007:matplotlib} to produce +all the plots, \verb|seaborn| \cite{waskom:2021:seaborn} to set the theme in the +figures. We also used a linear regression method from the Python library \verb|SciPy|. +To optimize our implementation, we used a profiler tool \verb|Scalasca| \cite{scalasca} +and \verb|Score-P| \cite{scorep}. + \end{document} diff --git a/latex/sections/results.tex b/latex/sections/results.tex index 83ebee2..43aa2b4 100644 --- a/latex/sections/results.tex +++ b/latex/sections/results.tex @@ -3,72 +3,72 @@ \begin{document} \section{Results}\label{sec:results} \subsection{Burn-in time}\label{subsec:burnin_time} -$\boldsymbol{Draft}$ -We decided with a burn-in time parallelization trade-off. That is, we set the -burn-in time lower in favor of sampling. To take advantage of the parallelization -and not to waste computational resources. The argument to discard samples generated -during the burn-in time is ... Increasing number of samples outweigh the ... -parallelize using MPI. We generated -samples for the temperature range $T \in [2.1, 2.4]$. Using Fox we generated both -1 million samples and 10 million samples. +We started with a lattice size $L = 20$ and considered the temperatures $T_{1} = 1.0 J/k_{B}$, +and $T_{2} = 2.4 J/k_{B}$, where $T_{2}$ is close to the analytical critical +temperature given by Equation \eqref{eq:critical_solution}. -We start with a lattice where $L = 20$, to study the burn-in time, that is the -number of Monte Carlo cycles necessary for the system to reach an equilibrium. -We consider two different temperatures $T_{1} = 1.0 J/k_{B}$ and $T_{2} = 2.4 J/k_{B}$, -where $T_{2}$ is close to the critical temperature. We can use the correlation -time $\tau \approx L^{d + z}$ to determine time, where $d$ is the dimensionality -of the system and $z = 2.1665 \pm 0.0012$ \footnote{This value was determined by -Nightingale and Blöte for the Metropolis algorithm.} -% -We show the numerical estimates for temperature $T_{1}$ of $\langle \epsilon \rangle$ -in Figure \ref{fig:burn_in_energy_1_0} and $\langle |m| \rangle$ in Figure -\ref{fig:burn_in_magnetization_1_0}. For temperature $T_{2}$, the numercal estimate -of $\langle \epsilon \rangle$ is shown in Figure \ref{fig:burn_in_energy_2_4} and -$\langle |m| \rangle$ in Figure \ref{fig:burn_in_magnetization_2_4}. The lattice -is initialized in both an ordered and an unordered state. We observe that for -$T_{1}$ there is no change in either expectation value with increasing number of -Monte Carlo cycles, when we start with an ordered state. As for the unordered -lattice, we observe a change for the first 5000 MC cycles, where it stabilizes. -The approximated expected energy is $-2$ and expected magnetization is $1.0$, -which is to be expected for temperature 0f $1.0$. T is below the critical and the -pdf using $T = 1.0$ result in -\begin{align*} - p(s|T=1.0) &= \frac{1}{e^{-\beta \sum E(s)}} e^{-\beta E(s)} \\ - &= \frac{1}{e^{-(1/k_{B}) \sum E(s)}} e^{-(1/k_{B}) E(s)} \ . -\end{align*} +To determine the burn-in time, we used the numerical estimates of energy +per spin for $T_{1}$ in Figure \ref{fig:burn_in_energy_1_0}, and $T_{2}$ in Figure +\ref{fig:burn_in_energy_2_4}. We also considered the estimates of magnetization +per spin for $T_{1}$ in Figure \ref{fig:burn_in_magnetization_1_0}, and for $T_{2}$ +in Figure \ref{fig:burn_in_energy_2_4}. +% Not sure about the relevance of the paragraph below +We used random numbers to set the initial state and the index of spin to flip, and +observed different graphs ... However, when we set the seed of the random number +engine, we could reproduce the results at every run. It is possible to determine +the burn-in time analytically, using the correlation time given by $\tau \approx L^{d + z}$. +Where $d$ is the dimensionality of the system and $z = 2.1665 \pm 0.0012$ +\footnote{This value was determined by Nightingale and Blöte for the Metropolis algorithm.}. +However, when we increased number of Monte Carlo cycles the sampled generated during +the burn-in time did not affect the mean value (...). % Should add result showing this + +The lattice was initialized in an ordered and an unordered state, for both temperatures. We observed +no change in expectation value of energy or magnetization for $T_{1}$, when we +initialized the lattice in an ordered state. As for the unordered initialized +lattice, we first observed a change in expectation values, and a stabilization around +$5000$ Monte Carlo cycles. The expected energy per spin is $\langle \epsilon \rangle = -2$ +and the expected magnetization per spin is $\langle |m| \rangle = 1.0$. % add something about what is expected for $T_{1}$ ? +For $T_{2}$ we observed a change in expectation values for both the ordered and the +unordered lattice. +% \begin{align*} +% p(s|T=1.0) &= \frac{1}{e^{-\beta \sum E(s)}} e^{-\beta E(s)} \\ +% &= \frac{1}{e^{-(1/k_{B}) \sum E(s)}} e^{-(1/k_{B}) E(s)} \ . +% \end{align*} +For $T_{2}$ we observe an increase in expected energy per spin $\langle \epsilon \rangle \approx -1.23$, +and a decrease in expected magnetization per spin $\langle |m| \rangle \approx 0.46$. % Burn-in figures \begin{figure}[H] \centering \includegraphics[width=\linewidth]{../images/burn_in_time_magnetization_1_0.pdf} - \caption{$\langle |m| \rangle$ as a function of time, for $T = 1.0 J / k_{B}$} + \caption{Magnetization per spin $\langle |m| \rangle$ as a function of time $t$ given by Monte Carlo cycles, for $T = 1.0 J / k_{B}$} \label{fig:burn_in_magnetization_1_0} \end{figure} \begin{figure}[H] \centering \includegraphics[width=\linewidth]{../images/burn_in_time_energy_1_0.pdf} - \caption{$\langle \epsilon \rangle$ as a function of time, for $T = 1.0 J / k_{B}$} + \caption{Energy per spin $\langle \epsilon \rangle$ as a function of time $t$ given by Monte Carlo cycles, for $T = 1.0 J / k_{B}$} \label{fig:burn_in_energy_1_0} \end{figure} \begin{figure}[H] \centering \includegraphics[width=\linewidth]{../images/burn_in_time_magnetization_2_4.pdf} - \caption{$\langle |m| \rangle$ as a function of time, for $T = 2.4 J / k_{B}$} + \caption{Magnetization per spin $\langle |m| \rangle$ as a function of time $t$ given by Monte Carlo cycles, for $T = 2.4 J / k_{B}$} \label{fig:burn_in_magnetization_2_4} \end{figure} \begin{figure}[H] \centering \includegraphics[width=\linewidth]{../images/burn_in_time_energy_2_4.pdf} - \caption{$\langle \epsilon \rangle$ as a function of time, for $T = 2.4 J / k_{B}$} + \caption{Energy per spin $\langle \epsilon \rangle$ as a function of time $t$ given by Monte Carlo cycles, for $T = 2.4 J / k_{B}$} \label{fig:burn_in_energy_2_4} \end{figure} \subsection{Probability distribution}\label{subsec:probability_distribution} % Histogram figures -We used the estimated burn-in time as starting time for sampling, and generated +We used the estimated burn-in time of $5000$ Monte Carlo cycles as starting time, and generated samples. To visualize the distribution of energy per spin $\epsilon$, we used histograms -with a bin size (...). In Figure \ref{fig:histogram_1_0} we show the distribution -for $T_{1}$, where the majority of the energy per spin is $-2$. The resulting expectation +with a bin size $0.02$. In Figure \ref{fig:histogram_1_0} we show the distribution +for $T_{1}$. Where the resulting expectation value of energy per spin is $\langle \epsilon \rangle = -1.9969$, with a low variance of Var$(\epsilon) = 0.0001$. % \begin{figure}[H] @@ -85,16 +85,15 @@ centered around the expectation value $\langle \epsilon \rangle = -1.2370$. % \caption{Histogram $T = 2.4 J / k_{B}$} \label{fig:histogram_2_4} \end{figure} % -However, we observe a higher variance of Var$(\epsilon) = 0.0203$. When the temperature -increase, the system moves from an ordered to an onordered state. The change in +However, we observed a higher variance of Var$(\epsilon) = 0.0203$. When the temperature +increased, the system moved from an ordered to an onordered state. The change in system state, or phase transition, indicates the temperature is close to a critical point. \subsection{Phase transition}\label{subsec:phase_transition} -$\boldsymbol{Draft}$ % Phase transition figures -We continue investigating the behavior of the system around the critical temperature. +We continued investigating the behavior of the system around the critical temperature. First, we generated $10$ million samples of spin configurations for lattices of size $L \in \{20, 40, 60, 80, 100\}$, and temperatures $T \in [2.1, 2.4]$. We divided the temperature range into $40$ steps, with an equal step size of $0.0075$. The samples @@ -133,7 +132,7 @@ value of heat capacity the lattice size increase. \caption{$C_{V}$ for $T \in [2.1, 2.4]$, $10^7$ MC cycles.} \label{fig:phase_heat_10M} \end{figure} % -The magnetic susceptibility in Figure \ref{fig:phase_susceptibility_10M}, showed +The magnetic susceptibility in Figure \ref{fig:phase_susceptibility_10M}, show the sharp peak in the same temperature range as that of the heat capacity. Since shape of the curve for both heat capacity and the magnetic susceptibility become sharper when we increase lattice size, we are moving closer to the critical temperature. @@ -156,14 +155,14 @@ of lattices of size $L \in \{20, 40, 60, 80, 100\}$ found in Table \ref{tab:crit \hline $L$ & $T_{c}(L)$ \\ \hline - $20$ & $J$ \\ - $40$ & $1$ \\ - $60$ & $J / k_{B}$ \\ - $80$ & $k_{B}$ \\ - $100$ & $1 / J$ \\ + $20$ & $ J / k_{B}$ \\ + $40$ & $ J / k_{B}$ \\ + $60$ & $ J / k_{B}$ \\ + $80$ & $ J / k_{B}$ \\ + $100$ & $ J / k_{B}$ \\ \hline \end{tabular} - \caption{Estimated critical temperatures for lattices $L \times L$.} + \caption{Estimated critical temperatures for lattices $L \times L$, where $L$ denote the lattice size.} \label{tab:critical_temperatures} \end{table} We used the critical temperatures of finite lattices and the scaling relation in