diff --git a/latex/draft/draft.tex b/latex/draft/draft.tex index 2ec53bd..10b6d0f 100644 --- a/latex/draft/draft.tex +++ b/latex/draft/draft.tex @@ -474,18 +474,18 @@ % \end{figure} -However, when the temperature is close to the critical point, we observe an increase in expected energy and a decrease in magnetization. Suggesting a higher energy and a loss of magnetization close to the critical temperature. +% However, when the temperature is close to the critical point, we observe an increase in expected energy and a decrease in magnetization. Suggesting a higher energy and a loss of magnetization close to the critical temperature. -% We did not set the seed for the random number generator, which resulted in different numerical estimates each time we ran the model. However, all expectation values are calculated using the same data. The burn-in time varied each time. We see a burn-in time t = 5000-10000 MC cycles. However, this changed between runs. -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 ... +% % We did not set the seed for the random number generator, which resulted in different numerical estimates each time we ran the model. However, all expectation values are calculated using the same data. The burn-in time varied each time. We see a burn-in time t = 5000-10000 MC cycles. However, this changed between runs. +% 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 ... -It is worth mentioning that the time (number of MC cycles) necessary to get a good numerical estimate, compared to the analytical result, foreshadowing the burn-in time. +% It is worth mentioning that the time (number of MC cycles) necessary to get a good numerical estimate, compared to the analytical result, foreshadowing the burn-in time. -Markov chain starting point can differ, resulting in different simulation. By discarding the first samples, the ones generated before system equilibrium we can get an estimate closer to the real solution. Since we want to estimate expectation values at a given temperature, the samples should represent the system at that temperature. +% Markov chain starting point can differ, resulting in different simulation. By discarding the first samples, the ones generated before system equilibrium we can get an estimate closer to the real solution. Since we want to estimate expectation values at a given temperature, the samples should represent the system at that temperature. -Depending on number of samples used in numerical estimates, using the samples generated during burn-in can in high bias and high variance if the ratio is skewed. However, if most samples are generated after burn-in the effect is not as visible. Can't remove randomness by starting around equilibrium, since samples are generated using several ising models we need to sample using the same conditions that is system state equilibrium. +% Depending on number of samples used in numerical estimates, using the samples generated during burn-in can in high bias and high variance if the ratio is skewed. However, if most samples are generated after burn-in the effect is not as visible. Can't remove randomness by starting around equilibrium, since samples are generated using several ising models we need to sample using the same conditions that is system state equilibrium. -We use the estimated burn-in time to set starting time for sampling, then generate samples to plot in a histogram for $T_{1}$ in Figure \ref{fig:histogram_1_0} and $T_{2}$ in Figure \ref{fig:histogram_2_4}. For $T_{1}$ we can see that most samples have the expected value $-2$, we have a distribution with low variance. +% We use the estimated burn-in time to set starting time for sampling, then generate samples to plot in a histogram for $T_{1}$ in Figure \ref{fig:histogram_1_0} and $T_{2}$ in Figure \ref{fig:histogram_2_4}. For $T_{1}$ we can see that most samples have the expected value $-2$, we have a distribution with low variance. % \begin{figure} % \centering @@ -562,17 +562,17 @@ When the speed-up was satisfactory, we investigated the phase transition for lat % \label{fig:phase_susceptibility} % \end{figure} -We include results using 10 million MC cycles in Appendix \ref{sec:extra} +% We include results using 10 million MC cycles in Appendix \ref{sec:extra} -We use the critical temperatures found studying the phase transition, in addition to the scaling relation -\begin{equation} - T_{c} - T_{c}(L = \infty) = \alpha L^{-1} -\end{equation} -to estimate the critical temperatur for a lattize of infinte size. We also compare the estimate with the analytical solution -\begin{equation} - T_{c}(L = \infty) = \frac{2}{\ln (1 + \sqrt{2})} J/k_{B} \approx 2.269 J/k_{B} -\end{equation} -using linear regression. In Figure \ref{fig:linreg} we show the critical temperatures as function of the inverse lattice size. As size goes toward infinity we reach inv L = 0 and find the intercept which is equal to the estimated critical of L=infty. +% We use the critical temperatures found studying the phase transition, in addition to the scaling relation +% \begin{equation} +% T_{c} - T_{c}(L = \infty) = \alpha L^{-1} +% \end{equation} +% to estimate the critical temperatur for a lattize of infinte size. We also compare the estimate with the analytical solution +% \begin{equation} +% T_{c}(L = \infty) = \frac{2}{\ln (1 + \sqrt{2})} J/k_{B} \approx 2.269 J/k_{B} +% \end{equation} +% using linear regression. In Figure \ref{fig:linreg} we show the critical temperatures as function of the inverse lattice size. As size goes toward infinity we reach inv L = 0 and find the intercept which is equal to the estimated critical of L=infty. % \begin{figure} % \centering @@ -582,7 +582,7 @@ using linear regression. In Figure \ref{fig:linreg} we show the critical tempera % \end{figure} -\subsection{Draft} +%\subsection{Draft} % Test that the numerical stuff gets close to the analytical % - validate implementation a given number of times, find average number of cycles @@ -658,33 +658,33 @@ using linear regression. In Figure \ref{fig:linreg} we show the critical tempera % \caption{Rules for multiplying spin pairs.} % \end{figure} -\begin{figure}\label{fig:tikz_neighbor} - \centering - \begin{subfigure}{0.4\linewidth} - \begin{tikzpicture} - \draw (0, 0) grid (2, 2); - \node (s1) at (0.5, 1.5) {$\uparrow$}; - \node (s2) at (1.5, 1.5) {$\uparrow$}; - \node (s3) at (0.5, 0.5) {$\downarrow$}; - \node (s4) at (1.5, 0.5) {$\downarrow$}; - \end{tikzpicture} - \caption{} - \label{fig:sub_tikz_neighbor_a} - \end{subfigure} - \ - \begin{subfigure}{0.4\linewidth} - \begin{tikzpicture} - \draw (0, 0) grid (2, 2); - \node (s1) at (0.5, 1.5) {$\uparrow$}; - \node (s2) at (1.5, 1.5) {$\downarrow$}; - \node (s3) at (0.5, 0.5) {$\downarrow$}; - \node (s4) at (1.5, 0.5) {$\uparrow$}; - \end{tikzpicture} - \caption{} - \label{fig:sub_tikz_neighbor_b} - \end{subfigure} - \caption{Possible spin configurations for two spins up.} -\end{figure} +% \begin{figure}\label{fig:tikz_neighbor} +% \centering +% \begin{subfigure}{0.4\linewidth} +% \begin{tikzpicture} +% \draw (0, 0) grid (2, 2); +% \node (s1) at (0.5, 1.5) {$\uparrow$}; +% \node (s2) at (1.5, 1.5) {$\uparrow$}; +% \node (s3) at (0.5, 0.5) {$\downarrow$}; +% \node (s4) at (1.5, 0.5) {$\downarrow$}; +% \end{tikzpicture} +% \caption{} +% \label{fig:sub_tikz_neighbor_a} +% \end{subfigure} +% \ +% \begin{subfigure}{0.4\linewidth} +% \begin{tikzpicture} +% \draw (0, 0) grid (2, 2); +% \node (s1) at (0.5, 1.5) {$\uparrow$}; +% \node (s2) at (1.5, 1.5) {$\downarrow$}; +% \node (s3) at (0.5, 0.5) {$\downarrow$}; +% \node (s4) at (1.5, 0.5) {$\uparrow$}; +% \end{tikzpicture} +% \caption{} +% \label{fig:sub_tikz_neighbor_b} +% \end{subfigure} +% \caption{Possible spin configurations for two spins up.} +% \end{figure} %---------- % APPENDIX @@ -856,35 +856,35 @@ using linear regression. In Figure \ref{fig:linreg} we show the critical tempera % \langle |m| \rangle = \frac{1}{N} \sum_{i=1}^{N} |M(s_{i})| p(s_{i} \ | \ T) % \end{align*} -\section{Extra}\label{sec:extra} -We increased number of MC cycles to 10 million -\begin{figure} - \centering - \includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/energy.pdf} - \caption{$\langle \epsilon \rangle$ for $T \in [2.1, 2.4]$, 10000000 MC cycles.} - \label{fig:phase_energy_10M} -\end{figure} +% \section{Extra}\label{sec:extra} +% We increased number of MC cycles to 10 million +% \begin{figure} +% \centering +% \includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/energy.pdf} +% \caption{$\langle \epsilon \rangle$ for $T \in [2.1, 2.4]$, 10000000 MC cycles.} +% \label{fig:phase_energy_10M} +% \end{figure} -\begin{figure} - \centering - \includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/magnetization.pdf} - \caption{$\langle |m| \rangle$ for $T \in [2.1, 2.4]$, 10000000 MC cycles.} - \label{fig:phase_magnetization_10M} -\end{figure} +% \begin{figure} +% \centering +% \includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/magnetization.pdf} +% \caption{$\langle |m| \rangle$ for $T \in [2.1, 2.4]$, 10000000 MC cycles.} +% \label{fig:phase_magnetization_10M} +% \end{figure} -\begin{figure} - \centering - \includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/heat_capacity.pdf} - \caption{$C_{V}$ for $T \in [2.1, 2.4]$, 10000000 MC cycles.} - \label{fig:phase_heat_10M} -\end{figure} +% \begin{figure} +% \centering +% \includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/heat_capacity.pdf} +% \caption{$C_{V}$ for $T \in [2.1, 2.4]$, 10000000 MC cycles.} +% \label{fig:phase_heat_10M} +% \end{figure} -\begin{figure} - \centering - \includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/susceptibility.pdf} - \caption{$\chi$ for $T \in [2.1, 2.4]$, 10000000 MC cycles.} - \label{fig:phase_susceptibility_10M} -\end{figure} +% \begin{figure} +% \centering +% \includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/susceptibility.pdf} +% \caption{$\chi$ for $T \in [2.1, 2.4]$, 10000000 MC cycles.} +% \label{fig:phase_susceptibility_10M} +% \end{figure} \end{document} \ No newline at end of file diff --git a/latex/ising_model.tex b/latex/ising_model.tex index 0c01ddb..0f88c62 100644 --- a/latex/ising_model.tex +++ b/latex/ising_model.tex @@ -91,14 +91,14 @@ % Problem 1: OK % Problem 2: OK % Problem 3: OK - missing theory of phase transition -% Problem 7: -% Problem 9: +% Problem 4: validate numerical results using the analytical results +% Problem 7: division of workload mpi and openmp +% Problem 9: rewrite theoretical background of phase transition and critical temperature % Results -% Problem 4: -% Problem 5: -% Problem 6: -% Problem 8: -% Problem 9: +% Problem 5: burn-in time +% Problem 6: estimate probability distribution based on histogram +% Problem 8: investigate phase transitions, and estimate critical temperature based on plot +% Problem 9: use critical temperature to estimate the ctritical temperature of infinite lattice % % \ No newline at end of file diff --git a/latex/references.bib b/latex/references.bib index 47b8284..b7b8851 100644 --- a/latex/references.bib +++ b/latex/references.bib @@ -122,6 +122,21 @@ urldate = {2023-10-22} } +@inproceedings{gabriel:2004:open_mpi, + author = {Edgar Gabriel and Graham E. Fagg and George Bosilca + and Thara Angskun and Jack J. Dongarra and Jeffrey + M. Squyres and Vishal Sahay and Prabhanjan Kambadur + and Brian Barrett and Andrew Lumsdaine and Ralph + H. Castain and David J. Daniel and Richard L. Graham + and Timothy S. Woodall}, + title = {Open {MPI}: Goals, Concept, and Design of a Next Generation {MPI} Implementation}, + booktitle = {Proceedings, 11th European PVM/MPI Users' Group Meeting}, + address = {Budapest, Hungary}, + pages = {97--104}, + year = {2004}, + month = {September} +} + # Miscellaneous things @misc{tds:2021:mcmc, author = {Shivam Agari}, @@ -138,3 +153,18 @@ year = {2023} } +@online{scalasca, + author = {M. Geimer and F. Wolf and B.J.N. Wylie and E. Abraham and D. Becker and B. Mohr}, + title = {Scalasca}, + url = {https://www.scalasca.org/scalasca/about/about.html}, + urldate = {2023-10-24}, + note = {Tool to support performance optimization of parallel programs, measuring and analyzing runtime behavior.} +} + +@online{scorep, + title = {Score-P: the Scalable Performance Measurement Infrastructure for Parallel Codes}, + url = {https://perftools.pages.jsc.fz-juelich.de/cicd/scorep/tags/latest/html/}, + urldate = {2023-10-24}, + note = {Tool suite for profiling and event tracing.} +} + diff --git a/latex/sections/abstract.tex b/latex/sections/abstract.tex index b411074..dd2cb36 100644 --- a/latex/sections/abstract.tex +++ b/latex/sections/abstract.tex @@ -2,6 +2,7 @@ \begin{document} \begin{abstract} + $\boldsymbol{Draft}$ We have used the Ising model to study the behavior in ferromagnets, when undergoing a phase transition near a critical temperature. We generated samples using the Markov chain Monte Carlo method, while utilizing methods of parallelization. diff --git a/latex/sections/appendices.tex b/latex/sections/appendices.tex index 7eed19f..d04aecb 100644 --- a/latex/sections/appendices.tex +++ b/latex/sections/appendices.tex @@ -6,7 +6,7 @@ When two spins have the orientation up, the total magnetization is zero. However, the total energy of the system have two possible values, due to the location of the spin up as visualized in Figure \ref{fig:tikz_neighbor}. -\begin{figure}\label{fig:tikz_neighbor} +\begin{figure} \centering \begin{subfigure}{0.4\linewidth} \begin{tikzpicture} @@ -35,6 +35,7 @@ the spin up as visualized in Figure \ref{fig:tikz_neighbor}. \label{fig:tikz_neighbor} \end{figure} + \section{Partition function}\label{sec:partition_function} Using the values estimated for the $2 \times 2$ case, found in \ref{tab:lattice_config}, we find the partition function @@ -49,6 +50,7 @@ and get z &= 4 \cosh (8 \beta J) + 12 \ . \end{align*} + \section{Expectation values}\label{sec:expectation_values} For a linear function of a stochastic random variable $X$, with a known probability distribution, the expected value of $x$ is given by @@ -160,6 +162,7 @@ and susceptibility \frac{\chi}{N} &= \frac{4}{N k_{B} T} \bigg( \frac{3e^{8 \beta J} + e^{-8 \beta J} + 3}{(\cosh(8 \beta J) + 3)^{2}} \bigg) \ . \end{align*} + \section{Change in total system energy}\label{sec:delta_energy} When we consider the change in energy after flipping a single spin, we evaluate $\Delta E = E_{\text{after}} - E_{\text{before}}$. We find the $3^{2}$ values as @@ -176,4 +179,35 @@ $\Delta E = E_{\text{after}} - E_{\text{before}}$. We find the $3^{2}$ values as \end{align*} where the five distinct values are $\Delta E = \{-16J, -8J, 0, 8J, 16J\}$. + +\section{Extra}\label{sec:extra_results} +We increased number of MC cycles to 10 million +\begin{figure} + \centering + \includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/energy.pdf} + \caption{$\langle \epsilon \rangle$ for $T \in [2.1, 2.4]$, 10000000 MC cycles.} + \label{fig:phase_energy_10M} +\end{figure} + +\begin{figure} + \centering + \includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/magnetization.pdf} + \caption{$\langle |m| \rangle$ for $T \in [2.1, 2.4]$, 10000000 MC cycles.} + \label{fig:phase_magnetization_10M} +\end{figure} + +\begin{figure} + \centering + \includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/heat_capacity.pdf} + \caption{$C_{V}$ for $T \in [2.1, 2.4]$, 10000000 MC cycles.} + \label{fig:phase_heat_10M} +\end{figure} + +\begin{figure} + \centering + \includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/susceptibility.pdf} + \caption{$\chi$ for $T \in [2.1, 2.4]$, 10000000 MC cycles.} + \label{fig:phase_susceptibility_10M} +\end{figure} + \end{document} \ No newline at end of file diff --git a/latex/sections/conclusion.tex b/latex/sections/conclusion.tex index 144bb0f..d425ce0 100644 --- a/latex/sections/conclusion.tex +++ b/latex/sections/conclusion.tex @@ -2,10 +2,15 @@ \begin{document} \section{Conclusion}\label{sec:conclusion} -% Draft based on abstract -We have used the Ising model to study the behavior in ferromagnets, when undergoing -a phase transition near a critical temperature. We generated samples using the -Markov chain Monte Carlo method, while utilizing methods of parallelization. +$\boldsymbol{Draft}$ +We have studied ferromagnetism using the Ising model, and observed +a phase transition when the temperature of the system is close to the critical +temperature. We used the Markov chain Monte Carlo method to generate samples of +spin configurations, while utilizing methods of parallelization. + + +We use the samples to compute energy per spin $\langle \epsilon \rangle$, +magnetization per spin $\langle |m| \rangle$, heat capacity $C_{V}$, and $\chi$. Finding the burn-in time to be approx. 3000 Monte Carlo cycles. For temperature $T = 1.0 J / k_{B}$ we found a propability distrobution with an expected mean value of $\mu \approx -1.9969$ and variation $\sigma^{2} = 0.0001$. Whereas the diff --git a/latex/sections/methods.tex b/latex/sections/methods.tex index 85a009c..e27c08f 100644 --- a/latex/sections/methods.tex +++ b/latex/sections/methods.tex @@ -59,7 +59,8 @@ We also find the total magnetization of the system, which is given by % Eq. \eqr \end{equation} In addition, we have to consider the state degeneracy, the number of different microstates sharing the same value of total magnetization. In the case where we -have two spins oriented up the total energy have two possible values, as shown in \ref{sec:energy_special}. +have two spins oriented up the total energy have two possible values, as shown +in \ref{sec:energy_special}. % The derivation of the analytical values can be found in Appendix \ref{} \begin{table}[H] \centering @@ -128,7 +129,7 @@ of a microstate at a fixed temperature is given by \label{eq:pdf} \end{equation} % Add something about why we use the expectation values? -We derive the analytical expressions for expectation values in Appendix. +We derive the analytical expressions for expectation values in Appendix \ref{sec:expectation_values}. We find the expected total energy \begin{equation}\label{eq:energy_total_result} \langle E \rangle = -\frac{8J \sinh(8 \beta J)}{\cosh(8 \beta J) + 3} \ , @@ -187,14 +188,28 @@ Boltzmann constant we derive the remaining units, which can be found in Table \label{tab:units} \end{table} + \subsection{Phase transition and critical temperature}\label{subsec:phase_critical} +$\boldsymbol{Draft}$ % P9 critical temperature -When a ferromagnetic material is heated, it will change at a macroscopic level. -Based on a $2 \times 2$ lattice, we can show that the total energy is equal to the -energy where all spins have the orientation up \cite[p. 426]{hj:2015:comp_phys}. -Increasing the temperature of the external field, the Ising model move from an -ordered to an unordered phase. At the critical temperature the heat capacity $C_{V}$, -and the magnetic susceptibility $\chi$ diverge \cite[p. 431]{hj:2015:comp_phys}. +% Add something about critical temperature in ferromagnets +At temperatures below the critical temperature $T_{c}$, the Ising model will +magnetize spontaneous. Based on a $2 \times 2$ lattice, we can show that the total +energy is equal to the energy where all spins have the orientation up \cite[p. 426]{hj:2015:comp_phys}. + +When a ferromagnetic material is heated, it will change at a macroscopic level. +When increasing the temperature of the external field, the Ising model move from +an ordered to an unordered phase. At the critical temperature the heat capacity +$C_{V}$, and the magnetic susceptibility $\chi$ diverge \cite[p. 431]{hj:2015:comp_phys}. + +We can describe the behavior of the physical system close to the critical temperature +using power laws and critical exponents. For an Ising model of infinite lattice size +in two dimensions we have +\begin{align} + \langle |m| \rangle &\propto |T - T_{c}(L = \infty)|^{\beta} \\ + C_{V} &\propto |T - T_{c}(L = \infty)|^{-\alpha} \\ + \chi &\propto |T - T_{c}(L = \infty)|^{-\gamma} +\end{align} \subsection{The Markov chain Monte Carlo method}\label{subsec:mcmc_method} Markov chains consist of a sequence of samples, where the probability of the next @@ -210,7 +225,7 @@ until the model reaches an equilibrium state. However, generating new random sta require ergodicity and detailed balance. A Markov chain is ergoditic when all system states can be reached at every current state, whereas detaild balance implies no net flux of probability. To satisfy these criterias we use the Metropolis-Hastings -algorithm, found in Fig. \ref{algo:metropolis}, to implement the MCMC method. +algorithm, found in Figure \ref{algo:metropolis}, to implement the MCMC method. The Markov process will reach an equilibrium, reflecting the state of a real system. % Add something about burn-in time @@ -223,7 +238,7 @@ At each step of flipping a spin, the change in energy is evaluated as \end{align*} Since the total system energy only takes three different values, the change in energy can take $3^{2}$ values. However, there are only five distinct values -$\Delta E = \{-16J, -8J, 0, 8J, 16J\}$, which we find in Appendix \ref{sec:delta_energy}. +$\Delta E = \{-16J, -8J, 0, 8J, 16J\}$, we derive these values in Appendix \ref{sec:delta_energy}. \begin{figure}[H] \begin{algorithm}[H] \caption{Metropolis-Hastings Algorithm} @@ -256,19 +271,61 @@ at every spin flip, by using a look up table (LUT) with the possible values. We the change in energy $\Delta E$ as a key for the resulting value of the exponential function in a hash map. -\subsection{Implementation}\label{subsec:implementation} + +\subsection{Implementation and testing}\label{subsec:implementation_test} +$\boldsymbol{Draft}$ % P3 boundary condition and if-tests To avoid the overhead of if-tests, and take advantage of the parallelization, we define an index for every edge case. That is, for a spin at a given boundary index we use a pre-set index (...), to avoid if-tests and reduce overhead and runtime. +% P4 testing, validation % P7 parallelization +10 MPI processes +- 10 threads per process += 100 threads total +First we divide the temperature range, to give each MPI process a set of temperatures +to work with. 2.1-2-4 divided into 40 steps, which gives us a step size of 0.0075. + +Not a lot of downtime for the threads + +However, when the temperature is close to the critical point, we observe an increase +in expected energy and a decrease in magnetization. Suggesting a higher energy and +a loss of magnetization close to the critical temperature. + +% We did not set the seed for the random number generator, which resulted in +% different numerical estimates each time we ran the model. However, all expectation +% values are calculated using the same data. The burn-in time varied each time. +% We see a burn-in time t = 5000-10000 MC cycles. However, this changed between runs. +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 ... + +It is worth mentioning that the time (number of MC cycles) necessary to get a +good numerical estimate, compared to the analytical result, foreshadowing the +burn-in time. + +Markov chain starting point can differ, resulting in different simulation. By +discarding the first samples, the ones generated before system equilibrium we can +get an estimate closer to the real solution. Since we want to estimate expectation +values at a given temperature, the samples should represent the system at that +temperature. + +Depending on number of samples used in numerical estimates, using the samples +generated during burn-in can in high bias and high variance if the ratio is skewed. +However, if most samples are generated after burn-in the effect is not as visible. +Can't remove randomness by starting around equilibrium, since samples are generated +using several ising models we need to sample using the same conditions that is +system state equilibrium. + \subsection{Tools}\label{subsec:tools} The Ising model and MCMC methods are implemented in C++, and parallelized using -both \verb|MPI| and \verb|OpenMP| \cite{openmp:2018}. We used the Python library +both \verb|OpenMPI| \cite[text]{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, while optimizing our implementation we used the profiler +addition, we used \verb|Scalasca| \cite{scalasca} and \verb|Score-P| \cite{scorep} +to profile and optimize our implementation. % Add profiler \end{document} diff --git a/latex/sections/results.tex b/latex/sections/results.tex index 8c349e3..c33451c 100644 --- a/latex/sections/results.tex +++ b/latex/sections/results.tex @@ -3,6 +3,7 @@ \begin{document} \section{Results}\label{sec:results} \subsection{Burn-in time}\label{subsec:burnin_time} +$\boldsymbol{Draft}$ 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}$, @@ -53,7 +54,14 @@ pdf using $T = 1.0$ result in \label{fig:burn_in_energy_2_4} \end{figure} + +\subsection{Probability distribution}\label{subsec:probability_distribution} +$\boldsymbol{Draft}$ % Histogram figures +We use the estimated burn-in time to set starting time for sampling, then generate +samples to plot in a histogram for $T_{1}$ in Figure \ref{fig:histogram_1_0} and +$T_{2}$ in Figure \ref{fig:histogram_2_4}. For $T_{1}$ we can see that most samples +have the expected value $-2$, we have a distribution with low variance. \begin{figure}[H] \centering \includegraphics[width=\linewidth]{../images/pd_estimate_1_0.pdf} @@ -67,6 +75,9 @@ pdf using $T = 1.0$ result in \label{fig:histogram_2_4} \end{figure} + +\subsection{Phase transition}\label{subsec:phase_transition} +$\boldsymbol{Draft}$ % Phase transition figures \begin{figure} \centering @@ -95,6 +106,26 @@ pdf using $T = 1.0$ result in \caption{$\chi$ for $T \in [2.1, 2.4]$, 1000000 MC cycles.} \label{fig:phase_susceptibility} \end{figure} +We include results for 10 million MC cycles in Appendix \ref{sec:extra_results} + + +\subsection{Critical temperature}\label{subsec:critical_temperature} +$\boldsymbol{Draft}$ +We use the critical temperatures found in previous section, in addition to the +scaling relation in Equation \eqref{eq:critical_intinite} +\begin{equation} + T_{c} - T_{c}(L = \infty) = \alpha L^{-1} + \label{eq:critical_intinite} +\end{equation} +to estimate the critical temperature for a lattize of infinte size. We also +compared the estimate with the analytical solution +\begin{equation} + T_{c}(L = \infty) = \frac{2}{\ln (1 + \sqrt{2})} J/k_{B} \approx 2.269 J/k_{B} +\end{equation} +using linear regression. In Figure \ref{fig:linreg} we find the critical +temperatures as function of the inverse lattice size. When the lattice size increase +toward infinity, $1/L$ goes toward zero, we find the intercept which gives us an +estimated value of the critical temperature for a lattice of infinite size. % Critical temp regression figure \begin{figure}[H]