Finished first review, and added a few comments.
This commit is contained in:
parent
cb4b35b811
commit
df699e0ea0
@ -9,11 +9,11 @@
|
|||||||
3000 Monte Carlo cycles, and used the following samples to find the probability
|
3000 Monte Carlo cycles, and used the following samples to find the probability
|
||||||
distribution at temperature $T_{1} = 1.0 J / k_{B}$, and $T_{2} = 2.4 J / k_{B}$.
|
distribution at temperature $T_{1} = 1.0 J / k_{B}$, and $T_{2} = 2.4 J / k_{B}$.
|
||||||
For $T_{1}$ the mean energy per spin is $\langle \epsilon \rangle \approx -1.9969 J$,
|
For $T_{1}$ the mean energy per spin is $\langle \epsilon \rangle \approx -1.9969 J$,
|
||||||
with a variation $\text{Var} (\epsilon) = 0.0001$. And for $T_{2}$, close to the critical
|
with a variance $\text{Var} (\epsilon) = 0.0001$. And for $T_{2}$, close to the critical
|
||||||
temperature, the mean energy per spin is $\langle \epsilon \rangle \approx -1.2370 J$,
|
temperature, the mean energy per spin is $\langle \epsilon \rangle \approx -1.2370 J$,
|
||||||
with a variation $\text{Var} (\epsilon) = 0.0203$. In addition, we estimated
|
with a variance $\text{Var} (\epsilon) = 0.0203$. In addition, we estimated
|
||||||
the expected energy and magnetization per spin, the heat capacity and magnetic
|
the expected energy and magnetization per spin, the heat capacity and magnetic
|
||||||
susceptibility. We estimate the critical temperatures of finite lattice sizes,
|
susceptibility. We have estimated the critical temperatures of finite lattice sizes,
|
||||||
and used these values to approximate the critical temperature of a lattice of
|
and used these values to approximate the critical temperature of a lattice of
|
||||||
infinite size. Using linear regression, we estimated the critical temperature
|
infinite size. Using linear regression, we estimated the critical temperature
|
||||||
to be $T_{c}(L = \infty) \approx 2.2695 J/k_{B}$.
|
to be $T_{c}(L = \infty) \approx 2.2695 J/k_{B}$.
|
||||||
|
|||||||
@ -92,7 +92,7 @@ and
|
|||||||
&= \frac{4 (2e^{8 \beta J} + 4)}{4(\cosh(8 \beta J) + 3)} \\
|
&= \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} \ .
|
&= \frac{2(e^{8 \beta J} + 2)}{\cosh(8 \beta J) + 3} \ .
|
||||||
\end{align*}
|
\end{align*}
|
||||||
The squared energy function
|
The squared energy and magnetization functions are then
|
||||||
\begin{align*}
|
\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} \\
|
\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} \\
|
& \quad + (-8J)^{2} \cdot \frac{1}{Z} e^{8 \beta J} \\
|
||||||
@ -127,7 +127,7 @@ capacity per spin
|
|||||||
\frac{C_{V}}{N} &= \frac{1}{N} \frac{1}{k_{B} T^{2}} (\mathbb{E}(E^{2}) - [\mathbb{E}(E)]^{2}) \\
|
\frac{C_{V}}{N} &= \frac{1}{N} \frac{1}{k_{B} T^{2}} (\mathbb{E}(E^{2}) - [\mathbb{E}(E)]^{2}) \\
|
||||||
&= \frac{1}{N k_{B} T^{2}} \mathbb{V}(E) \ .
|
&= \frac{1}{N k_{B} T^{2}} \mathbb{V}(E) \ .
|
||||||
\end{align*}
|
\end{align*}
|
||||||
Using Eq. \eqref{eq:susceptibility}, we find he susceptibility per spin
|
Using Equation \eqref{eq:susceptibility}, we find the susceptibility per spin
|
||||||
\begin{align*}
|
\begin{align*}
|
||||||
\frac{\chi}{N} &= \frac{1}{N} \frac{1}{k_{B} T} (\mathbb{E}(M^{2}) - [\mathbb{E}(M)]^{2}) \\
|
\frac{\chi}{N} &= \frac{1}{N} \frac{1}{k_{B} T} (\mathbb{E}(M^{2}) - [\mathbb{E}(M)]^{2}) \\
|
||||||
&= \frac{1}{N k_{B} T} \mathbb{V}(M) \ .
|
&= \frac{1}{N k_{B} T} \mathbb{V}(M) \ .
|
||||||
|
|||||||
@ -11,7 +11,7 @@ of threads we observed a speed-up in runtime.
|
|||||||
We initialized the lattices using both ordered and unordered spin configuration,
|
We initialized the lattices using both ordered and unordered spin configuration,
|
||||||
and started sampling after the system reached an equilibrium. The number of Monte
|
and started sampling after the system reached an equilibrium. The number of Monte
|
||||||
Carlo cycles necessary to reach a system equilibrium, referred to as burn-in time,
|
Carlo cycles necessary to reach a system equilibrium, referred to as burn-in time,
|
||||||
was estimated to be 3000 cycles. We found that excluding the samples generated
|
was estimated to be $5000$ cycles. We found that excluding the samples generated
|
||||||
during the burn-in time, improves the estimated expectation value of energy and
|
during the burn-in time, improves the estimated expectation value of energy and
|
||||||
magnetization, in addition to the heat capacity and susceptibility, when samples
|
magnetization, in addition to the heat capacity and susceptibility, when samples
|
||||||
are sparse. However, when we increase number of samples, excluding the burn-in
|
are sparse. However, when we increase number of samples, excluding the burn-in
|
||||||
@ -19,11 +19,11 @@ samples does not affect the estimated values.
|
|||||||
|
|
||||||
Continuing, we used the generated samples to compute energy per spin $\langle \epsilon \rangle$,
|
Continuing, we used the generated samples to compute energy per spin $\langle \epsilon \rangle$,
|
||||||
magnetization per spin $\langle |m| \rangle$, heat capacity $C_{V}$, and $\chi$.
|
magnetization per spin $\langle |m| \rangle$, heat capacity $C_{V}$, and $\chi$.
|
||||||
In addition, we estimated the probability distribution for temperature $T_{1} = 1.0 J / k_{B}$,
|
In addition, we estimated the probability distribution for temperatures $T_{1} = 1.0 J / k_{B}$,
|
||||||
and $T_{2} = 2.4 J / k_{B}$. We found that for $T_{1}$ the expected mean energy
|
and $T_{2} = 2.4 J / k_{B}$. We found that for $T_{1}$ the expected mean energy
|
||||||
per spin is $\langle \epsilon \rangle \approx -1.9969 J$, with a variation $\text{Var} (\epsilon) = 0.0001$.
|
per spin is $\langle \epsilon \rangle \approx -1.9969 J$, with a variance $\text{Var} (\epsilon) = 0.0001$.
|
||||||
And for $T_{2}$, the mean energy per spin is $\langle \epsilon \rangle \approx -1.2370 J$,
|
And for $T_{2}$, the mean energy per spin is $\langle \epsilon \rangle \approx -1.2370 J$,
|
||||||
with a variation $\text{Var} (\epsilon) = 0.0203$.
|
with a variance $\text{Var} (\epsilon) = 0.0203$.
|
||||||
|
|
||||||
We estimated the expected energy and magnetization per spin, in addition to the
|
We estimated the expected energy and magnetization per spin, in addition to the
|
||||||
heat capacity and susceptibility for lattices of size $L = {20, 40, 60, 80, 100}$.
|
heat capacity and susceptibility for lattices of size $L = {20, 40, 60, 80, 100}$.
|
||||||
|
|||||||
@ -7,8 +7,8 @@ magnetic property of these materials is utilized in devices such as compasses
|
|||||||
for navigation, in computer hard drives to store data \cite{yale:2023:hdd}, and
|
for navigation, in computer hard drives to store data \cite{yale:2023:hdd}, and
|
||||||
MRI machines to produce detailed anatomical images.
|
MRI machines to produce detailed anatomical images.
|
||||||
|
|
||||||
Magnetic materials can be classified based on their specific magnetic behavior,
|
Magnetic materials care classified based on their specific magnetic behavior,
|
||||||
and one of the groups consist of ferromagnetic materials. These materials are
|
and one of the groups consists of ferromagnetic materials. These materials are
|
||||||
easily magnetized, and when exposed to a strong magnetic field they can become
|
easily magnetized, and when exposed to a strong magnetic field they can become
|
||||||
saturated. In addition, when these materials are heated to a critical point, they
|
saturated. In addition, when these materials are heated to a critical point, they
|
||||||
lose their magnetic property \cite{britannica:2023:ferromagnetism}.
|
lose their magnetic property \cite{britannica:2023:ferromagnetism}.
|
||||||
@ -23,7 +23,7 @@ exposed to temperatures near a critical point. In addition, we will numerically
|
|||||||
estimate the critical temperature where the system experience phase transition.
|
estimate the critical temperature where the system experience phase transition.
|
||||||
|
|
||||||
In Section \ref{sec:methods}, we will present the theoretical background for
|
In Section \ref{sec:methods}, we will present the theoretical background for
|
||||||
this experiment, as well as algorithms and tools used in the implementation.
|
this experiment, as well as the algorithms and tools used in the implementation.
|
||||||
Continuing with Section \ref{sec:results}, we will present our results and
|
Continuing with Section \ref{sec:results}, we will present our results and
|
||||||
discuss our findings. Lastly, we conclude our findings in Section \ref{sec:conclusion}.
|
discuss our findings. Lastly, we will conclude our findings in Section \ref{sec:conclusion}.
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|||||||
@ -3,8 +3,8 @@
|
|||||||
\begin{document}
|
\begin{document}
|
||||||
\section{Methods}\label{sec:methods}
|
\section{Methods}\label{sec:methods}
|
||||||
\subsection{The Ising model}\label{subsec:ising_model}
|
\subsection{The Ising model}\label{subsec:ising_model}
|
||||||
The Ising model consist of a lattice of spins, which can be though of as atoms
|
The Ising model consists of a lattice of spins, which can be thought of as atoms
|
||||||
in a grid. In two dimensions, the length of the lattice is given by $L$, and the
|
in a grid. In two dimensions, the length of a lattice is given by $L$, and the
|
||||||
number of spins within a lattice is given by $N = L^{2}$. When we consider the
|
number of spins within a lattice is given by $N = L^{2}$. When we consider the
|
||||||
entire lattice, the system spin configuration is represented as a matrix $L \times L$
|
entire lattice, the system spin configuration is represented as a matrix $L \times L$
|
||||||
\begin{align*}
|
\begin{align*}
|
||||||
@ -23,15 +23,15 @@ The spins interact with its nearest neighbors, and in a two-dimensional lattice
|
|||||||
each spin has up to four nearest neighbors. In our experiments we will use periodic
|
each spin has up to four nearest neighbors. In our experiments we will use periodic
|
||||||
boundary conditions, resulting in all spins having exactly four nearest neighbors.
|
boundary conditions, resulting in all spins having exactly four nearest neighbors.
|
||||||
To find the analytical expressions necessary for validating our model implementation,
|
To find the analytical expressions necessary for validating our model implementation,
|
||||||
we will assume a $2 \times 2$ lattice.
|
we assume a $2 \times 2$ lattice.
|
||||||
|
|
||||||
The hamiltonian of the Ising model is given by
|
The hamiltonian of the Ising model is given by
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
E(\mathbf{s}) = -J \sum_{\langle k l \rangle}^{N} s_{k} s_{l} - B \sum_{k}^{N} s_{k}\ ,
|
E(\mathbf{s}) = -J \sum_{\langle k l \rangle}^{N} s_{k} s_{l} - B \sum_{k}^{N} s_{k}\ ,
|
||||||
\label{eq:energy_hamiltonian}
|
\label{eq:energy_hamiltonian}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
where $\langle k l \rangle$ denote a spin pair. $J$ is the coupling constant, and
|
where $\langle k l \rangle$ denotes a spin pair. $J$ is the coupling constant, and
|
||||||
$B$ is the external magnetic field. For simplicity, we will consider the Ising model
|
$B$ is the external magnetic field. For simplicity, we consider the Ising model
|
||||||
where $B = 0$, and find the total system energy given by
|
where $B = 0$, and find the total system energy given by
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
E(\mathbf{s}) = -J \sum_{\langle k l \rangle}^{N} s_{k} s_{l} \ .
|
E(\mathbf{s}) = -J \sum_{\langle k l \rangle}^{N} s_{k} s_{l} \ .
|
||||||
@ -89,13 +89,13 @@ in Appendix \ref{sec:energy_special}.
|
|||||||
0 & -8J & -4 & 1 \\
|
0 & -8J & -4 & 1 \\
|
||||||
\hline
|
\hline
|
||||||
\end{tabular}
|
\end{tabular}
|
||||||
\caption{Values of total energy, total magnetization, and degeneracy for the
|
\caption{Values of the total energy, total magnetization, and degeneracy for the
|
||||||
possible states of a system for a $2 \times 2$ lattice, with periodic boundary
|
possible states of a system for a $2 \times 2$ lattice, with periodic boundary
|
||||||
conditions.}
|
conditions.}
|
||||||
\label{tab:lattice_config}
|
\label{tab:lattice_config}
|
||||||
\end{table}
|
\end{table}
|
||||||
We calculate the analytical values for a $2 \times 2$ lattice, found in Table \ref{tab:lattice_config}.
|
We calculate the analytical values for a $2 \times 2$ lattice, found in Table \ref{tab:lattice_config}.
|
||||||
However, we scale the total energy and total magnetization by number of spins,
|
However, we scale the total energy and total magnetization by the number of spins,
|
||||||
to compare these quantities for lattices where $L > 2$. Energy per spin is given by
|
to compare these quantities for lattices where $L > 2$. Energy per spin is given by
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\epsilon (\mathbf{s}) = \frac{E(\mathbf{s})}{N} \ ,
|
\epsilon (\mathbf{s}) = \frac{E(\mathbf{s})}{N} \ ,
|
||||||
@ -165,10 +165,10 @@ We also need to determine the heat capacity
|
|||||||
\label{eq:heat_capacity}
|
\label{eq:heat_capacity}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
and the magnetic susceptibility
|
and the magnetic susceptibility
|
||||||
\begin{align*}
|
\begin{equation}
|
||||||
\chi = \frac{1}{k_{\text{B} T}} (\mathbb{E}(M^{2}) - [\mathbb{E}(M)]^{2}) \ .
|
\chi = \frac{1}{k_{\text{B} T}} (\mathbb{E}(M^{2}) - [\mathbb{E}(M)]^{2}) \ .
|
||||||
\label{eq:susceptibility}
|
\label{eq:susceptibility}
|
||||||
\end{align*}
|
\end{equation}
|
||||||
In Appendix \ref{sec:heat_susceptibility} we derive expressions for the heat
|
In Appendix \ref{sec:heat_susceptibility} we derive expressions for the heat
|
||||||
capacity and the susceptibility, and find the heat capacity
|
capacity and the susceptibility, and find the heat capacity
|
||||||
\begin{align*}
|
\begin{align*}
|
||||||
@ -205,29 +205,29 @@ Boltzmann constant we derive the remaining units, which can be found in Table
|
|||||||
We consider the Ising model in two dimensions, with no external external magnetic
|
We consider the Ising model in two dimensions, with no external external magnetic
|
||||||
field. At temperatures below the critical temperature $T_{c}$, the Ising model will
|
field. At temperatures below the critical temperature $T_{c}$, the Ising model will
|
||||||
magnetize spontaneously. When increasing the temperature of the external field,
|
magnetize spontaneously. When increasing the temperature of the external field,
|
||||||
the Ising model transition from an ordered to an unordered phase. The spins become
|
the Ising model transitions from an ordered to an unordered phase. The spins become
|
||||||
more correlated, and we can measure the discontinous behavior as an increase in
|
more correlated, and we can measure the discontinuous behavior as an increase in
|
||||||
correlation length $\xi (T)$ \cite[p. 432]{hj:2015:comp_phys}. At $T_{c}$, the
|
correlation length $\xi (T)$ \cite[p. 432]{hj:2015:comp_phys}. At $T_{c}$, the
|
||||||
correlation length is proportional with the lattice size, resulting in the critical
|
correlation length is proportional to the lattice size, resulting in the critical
|
||||||
temperature scaling relation
|
temperature scaling relation
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
T_{c}(L) - T_{c}(L = \infty) = aL^{-1} \ ,
|
T_{c}(L) - T_{c}(L = \infty) = aL^{-1} \ ,
|
||||||
\label{eq:critical_infinite}
|
\label{eq:critical_infinite}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
where $a$ is a constant. For the Ising model in two dimensions, with an lattice of
|
where $a$ is a constant. For the Ising model in two dimensions, with a lattice of
|
||||||
infinite size, the analytical solution of the critical temperature is
|
infinite size, the analytical solution of the critical temperature is
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
T_{c}(L = \infty) = \frac{2}{\ln (1 + \sqrt{2})} J/k_{B} \approx 2.269 J/k_{B}
|
T_{c}(L = \infty) = \frac{2}{\ln (1 + \sqrt{2})} J/k_{B} \approx 2.269 J/k_{B}
|
||||||
\label{eq:critical_solution}
|
\label{eq:critical_solution}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
This result was found analytically by Lars Onsager in 1944. We can estimate the
|
This result was found analytically by Lars Onsager in 1944 \cite{onsager:1944}. We can estimate the
|
||||||
critical temperature of an infinite lattice, using finite lattices critical temperature
|
critical temperature of an infinite lattice, using the critical temperature of
|
||||||
and linear regression.
|
finite lattices of different sizes and linear regression.
|
||||||
|
|
||||||
|
|
||||||
\subsection{The Markov chain Monte Carlo method}\label{subsec:mcmc_method}
|
\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
|
Markov chains consist of a sequence of samples, where the probability of the next
|
||||||
sample depend on the probability of the current sample. Whereas the Monte Carlo
|
sample depends on the probability of the current sample. Whereas the Monte Carlo
|
||||||
method introduces randomness to the sampling, which allows us to approximate
|
method introduces randomness to the sampling, which allows us to approximate
|
||||||
statistical quantities \cite{tds:2021:mcmc} without using the pdf directly. We
|
statistical quantities \cite{tds:2021:mcmc} without using the pdf directly. We
|
||||||
generate samples of spin configuration, to approximate $\langle \epsilon \rangle$,
|
generate samples of spin configuration, to approximate $\langle \epsilon \rangle$,
|
||||||
@ -236,10 +236,10 @@ $\langle |m| \rangle$, $C_{V}$, and $\chi$, using the Markov chain Monte Carlo
|
|||||||
|
|
||||||
The Ising model is initialized in a random state, and the Markov chain is evolved
|
The Ising model is initialized in a random state, and the Markov chain is evolved
|
||||||
until the model reaches an equilibrium state. However, generating new random states
|
until the model reaches an equilibrium state. However, generating new random states
|
||||||
require ergodicity and detailed balance. A Markov chain is ergoditic when all system
|
requires 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
|
states can be reached at every current state, whereas detailed balance implies no
|
||||||
net flux of probability. To satisfy these criterias we use the Metropolis-Hastings
|
net flux of probability. To satisfy these criteria we use the Metropolis-Hastings
|
||||||
algorithm, found in Figure \ref{algo:metropolis}, to generate samples of microstates.
|
algorithm, found in Algorithm \ref{algo:metropolis}, to generate samples of microstates.
|
||||||
|
|
||||||
One Monte Carlo cycle consist of changing the initial configuration of the lattice,
|
One Monte Carlo cycle consist of changing the initial configuration of the lattice,
|
||||||
by randomly flipping a spin. When a spin is flipped, the change in energy is evaluated as
|
by randomly flipping a spin. When a spin is flipped, the change in energy is evaluated as
|
||||||
@ -258,41 +258,38 @@ $\Delta E = \{-16J, -8J, 0, 8J, 16J\}$, we derive these values in Appendix \ref{
|
|||||||
We can avoid computing the Boltzmann factor, by using a look up table (LUT).
|
We can avoid computing the Boltzmann factor, by using a look up table (LUT).
|
||||||
We use $\Delta E$ as an index to access the resulting value of the exponential function,
|
We use $\Delta E$ as an index to access the resulting value of the exponential function,
|
||||||
in an array.
|
in an array.
|
||||||
\begin{figure}[H]
|
\begin{algorithm}[H]
|
||||||
\begin{algorithm}[H]
|
\caption{Metropolis-Hastings Algorithm}
|
||||||
\caption{Metropolis-Hastings Algorithm}
|
\label{algo:metropolis}
|
||||||
\label{algo:metropolis}
|
\begin{algorithmic}
|
||||||
\begin{algorithmic}
|
\Procedure{Metropolis}{$lattice, energy, magnetization$}
|
||||||
\Procedure{Metropolis}{$lattice, energy, magnetization$}
|
\For{ Each spin in the lattice }
|
||||||
\For{ Each spin in the lattice }
|
\State $ri \leftarrow \text{random index of the lattice}$
|
||||||
\State $ri \leftarrow \text{random index of the lattice}$
|
\State $rj \leftarrow \text{random index of the lattice}$
|
||||||
\State $rj \leftarrow \text{random index of the lattice}$
|
\State $dE \leftarrow 2 \cdot lattice_{ri,rj} \cdot (lattice_{ri,rj-1} + lattice_{ri,rj+1}
|
||||||
\State $dE \leftarrow 2 \cdot lattice_{ri,rj} \cdot (lattice_{ri,rj-1} + lattice_{ri,rj+1}
|
+ lattice_{ri-1,rj} + lattice_{ri+1,rj} )$
|
||||||
+ lattice_{ri-1,rj} + lattice_{ri+1,rj} )$
|
|
||||||
|
|
||||||
\State $rn \leftarrow \text{random number} \in [0,1)$
|
\State $rn \leftarrow \text{random number} \in [0,1)$
|
||||||
\If{$rn \leq e^{- \frac{dE}{T}}$}
|
\If{$rn \leq e^{- \frac{dE}{T}}$}
|
||||||
\State $lattice_{ri,rj} = -1 \cdot lattice_{ri,rj}$
|
\State $lattice_{ri,rj} = -1 \cdot lattice_{ri,rj}$
|
||||||
\State $magnetization = magnetization + 2 \cdot lattice_{ri,rj}$
|
\State $magnetization = magnetization + 2 \cdot lattice_{ri,rj}$
|
||||||
\State $energy = energy + dE$
|
\State $energy = energy + dE$
|
||||||
\EndIf
|
\EndIf
|
||||||
\EndFor
|
\EndFor
|
||||||
\EndProcedure
|
\EndProcedure
|
||||||
\end{algorithmic}
|
\end{algorithmic}
|
||||||
\end{algorithm}
|
\end{algorithm}
|
||||||
\end{figure}
|
The Markov process reaches an equilibrium after a certain number of Monte Carlo cycles,
|
||||||
The Markov process reach an equilibrium after a certain number of Monte Carlo cycles,
|
called burn-in time. After the burn-in time, the system state reflects the state of a real system.
|
||||||
where the system state reflects the state of a real system. After this burn-in time,
|
and we can start sampling microstates. The probability distribution of the samples
|
||||||
given by number of Monte Carlo cycles, we can start sampling microstates.
|
will tend toward the actual probability distribution of the system.
|
||||||
The probability distribution of the samples will tend toward the actual probability
|
|
||||||
distribution of the system.
|
|
||||||
|
|
||||||
|
|
||||||
\subsection{Implementation and testing}\label{subsec:implementation_test}
|
\subsection{Implementation and testing}\label{subsec:implementation_test}
|
||||||
We implemented a test suite, and compared the numerical estimates to the analytical
|
We implemented a test suite, and compared the numerical estimates to the analytical
|
||||||
results from Section \ref{subsec:statistical_mechanics}. In addition, we set a tolerance to
|
results from Section \ref{subsec:statistical_mechanics}. In addition, we set a tolerance to
|
||||||
verify convergence, and a maximum number of Monte Carlo cycles to avoid longer
|
verify convergence, and a maximum number of Monte Carlo cycles to avoid longer
|
||||||
runtimes during implementation.
|
runtimes during execution.
|
||||||
|
|
||||||
We used a pattern to access all neighboring spins, where all indices of the neighboring
|
We used a pattern to access all neighboring spins, where all indices of the neighboring
|
||||||
spins are put in an $L \times 2$ matrix. The indices are accessed using pre-defined
|
spins are put in an $L \times 2$ matrix. The indices are accessed using pre-defined
|
||||||
@ -315,11 +312,11 @@ Monte Carlo cycles when analyzing phase transitions.
|
|||||||
\subsection{Tools}\label{subsec:tools}
|
\subsection{Tools}\label{subsec:tools}
|
||||||
The Ising model and MCMC methods are implemented in C++, and parallelized using
|
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}.
|
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
|
We use 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
|
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|.
|
figures. We also use a linear regression method and the normal distribution method
|
||||||
To optimize our implementation, we used a profiler tool \verb|Scalasca| \cite{scalasca}
|
from the Python library \verb|SciPy|. To optimize our implementation, we used a
|
||||||
and \verb|Score-P| \cite{scorep}.
|
profiling tool \verb|Score-P| \cite{scorep}.
|
||||||
|
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|||||||
@ -13,14 +13,14 @@ per spin for $T_{1}$ in Figure \ref{fig:burn_in_energy_1_0}, and $T_{2}$ in Figu
|
|||||||
per spin for $T_{1}$ in Figure \ref{fig:burn_in_magnetization_1_0}, and for $T_{2}$
|
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}.
|
in Figure \ref{fig:burn_in_energy_2_4}.
|
||||||
% Not sure about the relevance of the paragraph below
|
% 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
|
% 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
|
% 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
|
% 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}$.
|
% 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$
|
% 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.}.
|
% \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
|
% 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 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
|
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
|
no change in expectation value of energy or magnetization for $T_{1}$, when we
|
||||||
@ -86,7 +86,7 @@ centered around the expectation value $\langle \epsilon \rangle = -1.2370$. %
|
|||||||
\label{fig:histogram_2_4}
|
\label{fig:histogram_2_4}
|
||||||
\end{figure} %
|
\end{figure} %
|
||||||
However, we observed a higher variance of Var$(\epsilon) = 0.0203$. When the temperature
|
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
|
increased, the system moved from an ordered to an unordered state. The change in
|
||||||
system state, or phase transition, indicates the temperature is close to a critical
|
system state, or phase transition, indicates the temperature is close to a critical
|
||||||
point.
|
point.
|
||||||
|
|
||||||
@ -97,8 +97,8 @@ We continued investigating the behavior of the system around the critical temper
|
|||||||
First, we generated $10$ million samples of spin configurations for lattices of
|
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
|
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
|
temperature range into $40$ steps, with an equal step size of $0.0075$. The samples
|
||||||
were generated in parallel, where we allocated $4$ sequential temperatures to $10$
|
were generated in parallel, where the program allocated $4$ sequential temperatures to $10$
|
||||||
MPI processes. Each process was set to spawn $10$ thread, resulting in a total of
|
MPI processes. Each process was set to spawn $10$ threads, resulting in a total of
|
||||||
$100$ threads working in parallel. We include results for $1$ million MC cycles
|
$100$ threads working in parallel. We include results for $1$ million MC cycles
|
||||||
in Appendix \ref{sec:additional_results}
|
in Appendix \ref{sec:additional_results}
|
||||||
|
|
||||||
@ -113,9 +113,9 @@ increase in $\langle \epsilon \rangle$ in the temperature range $T \in [2.25, 2.
|
|||||||
\caption{$\langle \epsilon \rangle$ for $T \in [2.1, 2.4]$, $10^7$ MC cycles.}
|
\caption{$\langle \epsilon \rangle$ for $T \in [2.1, 2.4]$, $10^7$ MC cycles.}
|
||||||
\label{fig:phase_energy_10M}
|
\label{fig:phase_energy_10M}
|
||||||
\end{figure} %
|
\end{figure} %
|
||||||
We observe a deacrese in $\langle |m| \rangle$ for the same temperature range in
|
We observe a decrease in $\langle |m| \rangle$ for the same temperature range in
|
||||||
Figure \ref{fig:phase_magnetization_10M}, suggesting the system moves from an ordered
|
Figure \ref{fig:phase_magnetization_10M}, suggesting that the system moves from an ordered
|
||||||
magnetized state to a state of no net magnetization. The system energy increase,
|
magnetized state to a state of no net magnetization. The system energy increases,
|
||||||
however, there is a loss of magnetization close to the critical temperature.
|
however, there is a loss of magnetization close to the critical temperature.
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
@ -124,16 +124,16 @@ however, there is a loss of magnetization close to the critical temperature.
|
|||||||
\label{fig:phase_magnetization_10M}
|
\label{fig:phase_magnetization_10M}
|
||||||
\end{figure} %
|
\end{figure} %
|
||||||
In Figure \ref{fig:phase_heat_10M}, we observe an increase in heat capacity in the
|
In Figure \ref{fig:phase_heat_10M}, we observe an increase in heat capacity in the
|
||||||
temperature range $T \in [2.25, 2.35]$. In addition, we observed a sharper peak
|
temperature range $T \in [2.25, 2.35]$. In addition, we observe a sharper peak
|
||||||
value of heat capacity the lattice size increase.
|
value of heat capacity when the lattice size increase.
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/heat_capacity.pdf}
|
\includegraphics[width=\linewidth]{../images/phase_transition/fox/wide/10M/heat_capacity.pdf}
|
||||||
\caption{$C_{V}$ for $T \in [2.1, 2.4]$, $10^7$ MC cycles.}
|
\caption{$C_{V}$ for $T \in [2.1, 2.4]$, $10^7$ MC cycles.}
|
||||||
\label{fig:phase_heat_10M}
|
\label{fig:phase_heat_10M}
|
||||||
\end{figure} %
|
\end{figure} %
|
||||||
The magnetic susceptibility in Figure \ref{fig:phase_susceptibility_10M}, show
|
The magnetic susceptibility in Figure \ref{fig:phase_susceptibility_10M}, shows
|
||||||
the sharp peak in the same temperature range as that of the heat capacity. Since
|
the sharp peak in the same temperature range as that of the heat capacity. Since the
|
||||||
shape of the curve for both heat capacity and the magnetic susceptibility become
|
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.
|
sharper when we increase lattice size, we are moving closer to the critical temperature.
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
|
|||||||
125
review.md
125
review.md
@ -14,79 +14,102 @@ Nothing
|
|||||||
|
|
||||||
## ./latex/sections/abstract.tex
|
## ./latex/sections/abstract.tex
|
||||||
|
|
||||||
[ ] 12: variation => variance
|
[x] 12: variation => variance
|
||||||
[ ] 14: variation => variance
|
[x] 14: variation => variance
|
||||||
[ ] 16: "We estimate" => "We have estimated" as everything else is in past tense, and the rest of the sentence is in past tense as well.
|
[x] 16: "We estimate" => "We have estimated" as everything else is in past tense, and the rest of the sentence is in past tense as well.
|
||||||
|
|
||||||
## ./latex/sections/introduction.tex
|
## ./latex/sections/introduction.tex
|
||||||
|
|
||||||
[ ] 11: consist => consists. "One of the groups" is singular.
|
[x] 10: "Magnetic materials can be classified" => "Magnetic materials are classified". I changed this, since they are actually classified
|
||||||
|
[x] 11: consist => consists. "One of the groups" is singular.
|
||||||
[ ] 12: Is the saturation optional, or will they become saturated when exposed to a magnetic field?
|
[ ] 12: Is the saturation optional, or will they become saturated when exposed to a magnetic field?
|
||||||
[ ] 26: "as well as algorithms ..." => "as well as the algorithms ..."
|
Valid point, they do become saturated so maybe rephrase
|
||||||
[ ] 28: "we conclude ..." => "we will conclude ..."
|
[x] 26: "as well as algorithms ..." => "as well as the algorithms ..."
|
||||||
|
[x] 28: "we conclude ..." => "we will conclude ..."
|
||||||
|
|
||||||
## ./latex/sections/methods.tex
|
## ./latex/sections/methods.tex
|
||||||
|
|
||||||
[ ] 6: consist => consists. "The Ising model" is singular.
|
[x] 6: consist => consists. "The Ising model" is singular.
|
||||||
[ ] 6: though => thought
|
[x] 6: though => thought
|
||||||
[ ] 7: "the length of the lattice ..." => "the length of a lattice ...". We're not talking about a specific lattice.
|
[x] 7: "the length of the lattice ..." => "the length of a lattice ...". We're not talking about a specific lattice.
|
||||||
[ ] 26: remove "will", as we are assuming a 2x2 now and not later in the paper.
|
[x] 26: remove "will", as we are assuming a 2x2 now and not later in the paper.
|
||||||
[ ] 33: denote => denotes. $\langle k l \rangle$ is singular.
|
[x] 33: denote => denotes. $\langle k l \rangle$ is singular.
|
||||||
[ ] 34: Change to present tense, as we are considering it in this section and not later in the paper.
|
[ ] 34: Change to present tense, as we are considering it in this section and not later in the paper.
|
||||||
[ ] 92: "Values of total energy ..." => "Values of the total energy ..."
|
I think I've fixed it, however, tense is apparently not my jam these days XP
|
||||||
[ ] 98: "by number of spins ..." => "by the number of spins ..."
|
[x] 92: "Values of total energy ..." => "Values of the total energy ..."
|
||||||
[ ] 162: Why are the equations for heat capacity and susceptibility in different environments?
|
[x] 98: "by number of spins ..." => "by the number of spins ..."
|
||||||
[ ] 208: transition => transitions. "the Ising model" is singular.
|
[x] 162: Why are the equations for heat capacity and susceptibility in different environments?
|
||||||
[ ] 209: discontinous => discontinuous
|
Well, that is an excellent question! That I do not have an answer to, but I changed it so that both are in equation environment.
|
||||||
[ ] 211: with => to
|
[x] 208: transition => transitions. "the Ising model" is singular.
|
||||||
[ ] 217: "with an lattice" => "with a lattice"
|
The singular thing is really something I should have a look into!
|
||||||
[ ] 223: Should perhaps create a reference to his paper?
|
[x] 209: discontinous => discontinuous
|
||||||
[ ] 224: "using finite lattices ..." => "using the finite lattices'". We are referring to specific lattices and "lattices" should be possessive. I would rewrite the second part to be "using the critical temperature of finite lattices of different sizes and linear regression."
|
[x] 211: with => to
|
||||||
[ ] 230: depend => depends. "the next sample" is singular.
|
[x] 217: "with an lattice" => "with a lattice"
|
||||||
[ ] 239: require => requires. "generating new random states" is singular.
|
[x] 223: Should perhaps create a reference to his paper?
|
||||||
[ ] 240: detaild => detailed
|
I agree, I had already added a reference but had forgotten to cite it in the report. I did not include a page number, don't think it is necessary since its what the paper finding?
|
||||||
[ ] 241: criterias => criteria. the plural of criterion is criteria.
|
[x] 224: "using finite lattices ..." => "using the finite lattices'". We are referring to specific lattices and "lattices" should be possessive. I would rewrite the second part to be "using the critical temperature of finite lattices of different sizes and linear regression."
|
||||||
[ ] 242: Figure => Algorithm, since we can remove the figure environment enclosing the algorithm environment.
|
I agree, it does make more sense
|
||||||
|
[x] 230: depend => depends. "the next sample" is singular.
|
||||||
|
[x] 239: require => requires. "generating new random states" is singular.
|
||||||
|
[x] 240: detaild => detailed
|
||||||
|
[x] 241: criterias => criteria. the plural of criterion is criteria.
|
||||||
|
[x] 242: Figure => Algorithm, since we can remove the figure environment enclosing the algorithm environment.
|
||||||
[ ] More details are specified in the next comment below.
|
[ ] More details are specified in the next comment below.
|
||||||
[ ] 244: A Monte Carlo cycle consists of attempts of flipping a spin, and not a single attempt to flip a spin.
|
[ ] 244: A Monte Carlo cycle consists of attempts of flipping a spin, and not a single attempt to flip a spin.
|
||||||
[ ] 261: Instead of having the algorithm inside a figure, you can use the H specifier in the algorithm environment (which you already do). You can read more about it [here](https://tex.stackexchange.com/questions/231191/algorithm-in-revtex4-1). I have already tested that it works, and it makes it so we can actually refer to it as an algorithm and not a figure.
|
Not sure how to rephrase the sentence to make it correct, any specific suggestions?
|
||||||
[ ] 284: reach => reaches. "The Markov process" is singular.
|
[x] 261: Instead of having the algorithm inside a figure, you can use the H specifier in the algorithm environment (which you already do). You can read more about it [here](https://tex.stackexchange.com/questions/231191/algorithm-in-revtex4-1). I have already tested that it works, and it makes it so we can actually refer to it as an algorithm and not a figure.
|
||||||
[ ] 295: implementation => execution. Implementation is the writing of the code, while the runtime is during execution of the program. I would also say to avoid potentially having the program run endlessly.
|
This might have fallen through the cracks for me since I just copy-pasted from metropolis.tex
|
||||||
|
[x] 284: reach => reaches. "The Markov process" is singular.
|
||||||
|
[ ] 283: I changed the paragraph to include a better introduction of the concept burn-in time, do you think the "flow" is better now?
|
||||||
|
[x] 295: implementation => execution. Implementation is the writing of the code, while the runtime is during execution of the program. I would also say to avoid potentially having the program run endlessly.
|
||||||
|
[ ] 292: Do you have a good way of including "I would also say to avoid potentially having the program run endlessly" in the sentence?
|
||||||
[ ] 297: Change of tense. We have used present tense for most of this section, so we should continue with that.
|
[ ] 297: Change of tense. We have used present tense for most of this section, so we should continue with that.
|
||||||
|
Added this into a new point, since the line numbers have shifted now
|
||||||
|
[ ] 294: So for the paragraph starting with "We used a pattern..." should be rewritten to present tense?
|
||||||
[ ] 300: Lack of if-tests does not hinder parallelization, but it can hinder compiler optimizations.
|
[ ] 300: Lack of if-tests does not hinder parallelization, but it can hinder compiler optimizations.
|
||||||
[ ] 318: used => use. Keep to the present tense for consistency.
|
Suggested change "... avoids the use of if-tests, so we can take advantage of the compiler optimization."
|
||||||
[ ] 320: used => use.
|
[x] 318: used => use. Keep to the present tense for consistency.
|
||||||
[ ] 320: "the Python ..." => "the Python ...". Double space.
|
[x] 320: used => use.
|
||||||
[ ] 321: used => use.
|
[x] 320: "the Python ..." => "the Python ...". Double space.
|
||||||
[ ] 321: profiler => profiling.
|
[x] Included the normal distribution method from SciPy as well
|
||||||
[ ] 321: Remove Scalasca as we only use Score-p now. (Easier to deal with).
|
[x] 321: used => use.
|
||||||
|
[x] 321: profiler => profiling.
|
||||||
|
[x] 321: Remove Scalasca as we only use Score-p now. (Easier to deal with).
|
||||||
|
|
||||||
## ./latex/sections/results.tex
|
## ./latex/sections/results.tex
|
||||||
|
|
||||||
[ ] 15: Should have a line break to indicate new paragraph.
|
[x] 15: Should have a line break to indicate new paragraph.
|
||||||
[ ] 15: It might be relevant, but it's a lot more work. we have all the tools necessary to produce the plots, so it depends on how much work we can do.
|
[ ] 15: It might be relevant, but it's a lot more work. we have all the tools necessary to produce the plots, so it depends on how much work we can do.
|
||||||
[ ] 89: onordered => unordered
|
I suggest we leave it out for now, I'll comment it out in case we want to use it
|
||||||
|
[x] 89: onordered => unordered
|
||||||
[ ] 97: More accurately, we generated 10M samples per temperature point.
|
[ ] 97: More accurately, we generated 10M samples per temperature point.
|
||||||
[ ] 100: Should be that the program allocated, so that the reader understands that it does the division automatically.
|
True, so "...$10$ million samples of spin configurations for lattices..." => "...$10$ million samples of spin configurations, per temperature, for lattices..."
|
||||||
[ ] 101: thread => threads
|
[x] 100: Should be that the program allocated, so that the reader understands that it does the division automatically.
|
||||||
|
I agree!
|
||||||
|
[x] 101: thread => threads
|
||||||
[ ] 105: We used a profiler. And it's not just for ensuring load balance among threads, it's also for each process, and we use it to see that data transfer is minimal.
|
[ ] 105: We used a profiler. And it's not just for ensuring load balance among threads, it's also for each process, and we use it to see that data transfer is minimal.
|
||||||
|
So instead of "We ran a profiler" it should be "We used a profiler"? Could you suggest a way of formulating the sentence so that the info is correct?
|
||||||
[ ] 106: was => were
|
[ ] 106: was => were
|
||||||
[ ] 116: deacrese => decrease
|
My previous comment might make this unnecessary?
|
||||||
[ ] 117: "suggesting the system ..." => "suggesting that the system ...".
|
[x] 116: deacrese => decrease
|
||||||
[ ] 118: increase => increases. "The system energy" is singular.
|
[x] 117: "suggesting the system ..." => "suggesting that the system ...".
|
||||||
[ ] 127: observed => observe.
|
[x] 118: increase => increases. "The system energy" is singular.
|
||||||
[ ] 128: "capacity the" => "capacity when the"
|
[x] 127: observed => observe.
|
||||||
[ ] 135: show => shows.
|
[x] 128: "capacity the" => "capacity when the"
|
||||||
[ ] 136: "Since shape ..." => "Since the shape"
|
[x] 135: show => shows.
|
||||||
|
[x] 136: "Since shape ..." => "Since the shape"
|
||||||
|
|
||||||
## ./latex/sections/conclusion.tex
|
## ./latex/sections/conclusion.tex
|
||||||
|
|
||||||
[ ] 14: Didn't we arrive at 5000?
|
[x] 14: Didn't we arrive at 5000?
|
||||||
[ ] 22: temperature => temperatures
|
Haha, ofc we did!
|
||||||
[ ] 24: variation => variance
|
[x] 22: temperature => temperatures
|
||||||
[ ] 26: variation => variance
|
[x] 24: variation => variance
|
||||||
|
[x] 26: variation => variance
|
||||||
|
|
||||||
## ./latex/sections/appendices.tex
|
## ./latex/sections/appendices.tex
|
||||||
|
|
||||||
[ ] 95: "The squared energy" => "The squared energy and magnetization functions are then"
|
[x] 95: "The squared energy" => "The squared energy and magnetization functions are then"
|
||||||
[ ] 130: he => the
|
I agree, that sound a lot better! I just ended up wtiting something somewhat descriptive in lack of words.
|
||||||
|
[x] 130: he => the
|
||||||
|
Also, I changed the Eq. => to Equation
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user