Missing estimate of speed-up and critical temperatures in table.
This commit is contained in:
parent
a13c847173
commit
869a3c4ace
@ -77,13 +77,16 @@
|
||||
\clearpage
|
||||
\newpage
|
||||
|
||||
% Appendix
|
||||
\subfile{sections/appendices}
|
||||
|
||||
\clearpage
|
||||
|
||||
\onecolumngrid
|
||||
|
||||
\bibliographystyle{unsrtnat}
|
||||
\bibliography{references}
|
||||
|
||||
% Appendix
|
||||
\subfile{sections/appendices}
|
||||
|
||||
\end{document}
|
||||
|
||||
|
||||
@ -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.}
|
||||
|
||||
@ -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}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user