From 1bae73b2a7378d501342ccbd8a7942317ffe02f7 Mon Sep 17 00:00:00 2001 From: Jaron Kent-Dobias Date: Tue, 2 Oct 2018 22:04:25 -0400 Subject: began editing the performance section, and many figure improvements --- figs/fig_clusters_ising2d.gplot | 44 ++++++++++++++++++++++++++++------------ figs/fig_correlation-times.gplot | 32 ++++++++++++++++++++++------- monte-carlo.tex | 35 +++++++++++++++++++------------- 3 files changed, 77 insertions(+), 34 deletions(-) diff --git a/figs/fig_clusters_ising2d.gplot b/figs/fig_clusters_ising2d.gplot index 6f1a75d..e5d847c 100644 --- a/figs/fig_clusters_ising2d.gplot +++ b/figs/fig_clusters_ising2d.gplot @@ -76,26 +76,35 @@ set ylabel @scaledylabel # ploting Ising 2D set xrange @isingRange -#set yrange [0.8:10] +set yrange [0.8:6] -plot dataIsing2D using (column("H")/column("T") * exp(log(column("L")) * betaIsing2D * deltaIsing2D / nuIsing2D)):(column("S") * exp(-log(column("L")) * (gammaIsing2D / nuIsing2D))):(column("dS") * exp(-log(column("L")) * (gammaIsing2D / nuIsing2D))):1 with yerrorbars pt 0 lw 2 palette,\ - dataIsing2D using (column("H")/column("T") * exp(log(column("L")) * betaIsing2D * deltaIsing2D / nuIsing2D)):(column("S") * exp(-log(column("L")) * (gammaIsing2D / nuIsing2D))):1 with lines palette +set title '\twodee Ising' offset -6.5,-2.5 +plot dataIsing2D using (column("H")/column("T") * exp(log(column("L")) * betaIsing2D * deltaIsing2D / nuIsing2D)):(column("S") * exp(-log(column("L")) * (gammaIsing2D / nuIsing2D))):(column("dS") * exp(-log(column("L")) * (gammaIsing2D / nuIsing2D))):1 with yerrorbars pt 0 lw 2 palette,\ + dataIsing2D using (column("H")/column("T") * exp(log(column("L")) * betaIsing2D * deltaIsing2D / nuIsing2D)):(column("S") * exp(-log(column("L")) * (gammaIsing2D / nuIsing2D))):1 with lines palette,\ + 1.4 * exp(log(x) * 2 / deltaIsing2D) with lines lc rgb "black" + unset ylabel # plotting 3 Potts 2D set xrange @pottsRange -set yrange [0.5:10] +set yrange [0.9:6] + +set title '\twodee 3-State Potts' offset -4,-2.5 plot data3Potts2D using (column("H")/column("T") * exp(log(column("L")) * beta3Potts2D * delta3Potts2D / nu3Potts2D)):(column("S") * exp(-log(column("L")) * (gamma3Potts2D / nu3Potts2D))):(column("dS") * exp(-log(column("L")) * (gamma3Potts2D / nu3Potts2D))):1 with yerrorbars pt 0 lw 2 palette,\ - data3Potts2D using (column("H")/column("T") * exp(log(column("L")) * beta3Potts2D * delta3Potts2D / nu3Potts2D)):(column("S") * exp(-log(column("L")) * (gamma3Potts2D / nu3Potts2D))):1 with lines palette + data3Potts2D using (column("H")/column("T") * exp(log(column("L")) * beta3Potts2D * delta3Potts2D / nu3Potts2D)):(column("S") * exp(-log(column("L")) * (gamma3Potts2D / nu3Potts2D))):1 with lines palette,\ + 1.4 * exp(log(x) * 2 / delta3Potts2D) with lines lc rgb "black" # plotting 2 Vector 3D set xrange @vectorRange -set yrange [0.4:250] +set yrange [0.2:80] + +set title '\threedee O(2)' offset -6.5,-2.5 plot data2Vector3D using (column("H")/column("T") * exp(log(column("L")) * beta2Vector3D * delta2Vector3D / nu2Vector3D)):(column("S") * exp(-log(column("L")) * (gamma2Vector3D / nu2Vector3D))):(column("dS") * exp(-log(column("L")) * (gamma2Vector3D / nu2Vector3D))):1 with yerrorbars pt 0 lw 2 palette,\ - data2Vector3D using (column("H")/column("T") * exp(log(column("L")) * beta2Vector3D * delta2Vector3D / nu2Vector3D)):(column("S") * exp(-log(column("L")) * (gamma2Vector3D / nu2Vector3D))):1 with lines palette + data2Vector3D using (column("H")/column("T") * exp(log(column("L")) * beta2Vector3D * delta2Vector3D / nu2Vector3D)):(column("S") * exp(-log(column("L")) * (gamma2Vector3D / nu2Vector3D))):1 with lines palette,\ + 1 * exp(log(x) * 2 / delta2Vector3D) with lines lc rgb "black" # plotting the second row set format x '$10^{%T}$' @@ -104,24 +113,33 @@ set ylabel @scaledylabel # plotting Ising 3D set xrange @isingRange -set yrange [0.5:500] +set yrange [0.5:200] + +set title '\threedee Ising' offset -6.5,-2.5 plot dataIsing3D using (column("H")/column("T") * exp(log(column("L")) * betaIsing3D * deltaIsing3D / nuIsing3D)):(column("S") * exp(-log(column("L")) * (gammaIsing3D / nuIsing3D))):(column("dS") * exp(-log(column("L")) * (gammaIsing3D / nuIsing3D))):1 with yerrorbars pt 0 lw 2 palette,\ - dataIsing3D using (column("H")/column("T") * exp(log(column("L")) * betaIsing3D * deltaIsing3D / nuIsing3D)):(column("S") * exp(-log(column("L")) * (gammaIsing3D / nuIsing3D))):1 with lines palette + dataIsing3D using (column("H")/column("T") * exp(log(column("L")) * betaIsing3D * deltaIsing3D / nuIsing3D)):(column("S") * exp(-log(column("L")) * (gammaIsing3D / nuIsing3D))):1 with lines palette,\ + 4 * exp(log(x) * 2 / deltaIsing3D) with lines lc rgb "black" unset ylabel # plotting 4 Potts 2D set xrange @pottsRange -set yrange [0.8:4] +set yrange [0.8:6] + +set title '\twodee 4-State Potts' offset -4,-2.5 plot data4Potts2D using (column("H")/column("T") * exp(log(column("L")) * beta4Potts2D * delta4Potts2D / nu4Potts2D)):(column("S") * exp(-log(column("L")) * (gamma4Potts2D / nu4Potts2D))):(column("dS") * exp(-log(column("L")) * (gamma4Potts2D / nu4Potts2D))):1 with yerrorbars pt 0 lw 2 palette,\ - data4Potts2D using (column("H")/column("T") * exp(log(column("L")) * beta4Potts2D * delta4Potts2D / nu4Potts2D)):(column("S") * exp(-log(column("L")) * (gamma4Potts2D / nu4Potts2D))):1 with lines palette + data4Potts2D using (column("H")/column("T") * exp(log(column("L")) * beta4Potts2D * delta4Potts2D / nu4Potts2D)):(column("S") * exp(-log(column("L")) * (gamma4Potts2D / nu4Potts2D))):1 with lines palette,\ + 1.4 * exp(log(x) * 2 / delta4Potts2D) with lines lc rgb "black" # plotting 3 Vector 3D set xrange @vectorRange -set yrange [0.1:100] +set yrange [0.3:100] + +set title '\threedee O(3)' offset -6.5,-2.5 plot data3Vector3D using (column("H")/column("T") * exp(log(column("L")) * beta3Vector3D * delta3Vector3D / nu3Vector3D)):(column("S") * exp(-log(column("L")) * (gamma3Vector3D / nu3Vector3D))):(column("dS") * exp(-log(column("L")) * (gamma3Vector3D / nu3Vector3D))):1 with yerrorbars pt 0 lw 2 palette,\ - data3Vector3D using (column("H")/column("T") * exp(log(column("L")) * beta3Vector3D * delta3Vector3D / nu3Vector3D)):(column("S") * exp(-log(column("L")) * (gamma3Vector3D / nu3Vector3D))):1 with lines palette + data3Vector3D using (column("H")/column("T") * exp(log(column("L")) * beta3Vector3D * delta3Vector3D / nu3Vector3D)):(column("S") * exp(-log(column("L")) * (gamma3Vector3D / nu3Vector3D))):1 with lines palette,\ + 1 * exp(log(x) * 2 / delta3Vector3D) with lines lc rgb "black" diff --git a/figs/fig_correlation-times.gplot b/figs/fig_correlation-times.gplot index 67c5dcb..874fa79 100644 --- a/figs/fig_correlation-times.gplot +++ b/figs/fig_correlation-times.gplot @@ -82,10 +82,13 @@ set ylabel @scaledylabel # ploting Ising 2D set xrange @isingRange -set yrange [0.2:1.1] +set yrange [0.2:1.2] + +set title '\twodee Ising' offset -6.5,-8 plot dataIsing2D using (column("H")/column("T") * exp(log(column("L")) * betaIsing2D * deltaIsing2D / nuIsing2D)):(column("t") * column("S") * exp(-log(column("L")) * (zIsing2D + 2))):(sqrt((column("dt")/column("t"))**2 + (column("dS")/column("S"))**2) * column("t") * column("S") * exp(-log(column("L")) * (zIsing2D + 2))):1 with yerrorbars pt 0 lw 2 palette,\ - dataIsing2D using (column("H")/column("T") * exp(log(column("L")) * betaIsing2D * deltaIsing2D / nuIsing2D)):(column("t") * column("S") * exp(-log(column("L")) * (zIsing2D + 2))):1 with lines palette + dataIsing2D using (column("H")/column("T") * exp(log(column("L")) * betaIsing2D * deltaIsing2D / nuIsing2D)):(column("t") * column("S") * exp(-log(column("L")) * (zIsing2D + 2))):1 with lines palette,\ + 0.7 * exp(- log(x) * zIsing2D * nuIsing2D / (betaIsing2D * deltaIsing2D)) with lines lc rgb "black" unset ylabel @@ -93,15 +96,21 @@ unset ylabel set xrange @pottsRange set yrange [0.05:2] +set title '\twodee 3-State Potts' offset -4,-8 + plot data3Potts2D using (column("H")/column("T") * exp(log(column("L")) * beta3Potts2D * delta3Potts2D / nu3Potts2D)):(column("t") * column("S") * exp(-log(column("L")) * (z3Potts2D + 2))):(sqrt((column("dt")/column("t"))**2 + (column("dS")/column("S"))**2) * column("t") * column("S") * exp(-log(column("L")) * (z3Potts2D + 2))):1 with yerrorbars pt 0 lw 2 palette,\ - data3Potts2D using (column("H")/column("T") * exp(log(column("L")) * beta3Potts2D * delta3Potts2D / nu3Potts2D)):(column("t") * column("S") * exp(-log(column("L")) * (z3Potts2D + 2))):1 with lines palette + data3Potts2D using (column("H")/column("T") * exp(log(column("L")) * beta3Potts2D * delta3Potts2D / nu3Potts2D)):(column("t") * column("S") * exp(-log(column("L")) * (z3Potts2D + 2))):1 with lines palette,\ + 0.6 * exp(- log(x) * z3Potts2D * nu3Potts2D / (beta3Potts2D * delta3Potts2D)) with lines lc rgb "black" # plotting 2 Vector 3D set xrange @vectorRange set yrange [0.4:2] +set title '\threedee O(2)' offset -6.5,-8 + plot data2Vector3D using (column("H")/column("T") * exp(log(column("L")) * beta2Vector3D * delta2Vector3D / nu2Vector3D)):(column("t") * column("S") * exp(-log(column("L")) * (z2Vector3D + 3))):(sqrt((column("dt")/column("t"))**2 + (column("dS")/column("S"))**2) * column("t") * column("S") * exp(-log(column("L")) * (z2Vector3D + 3))):1 with yerrorbars pt 0 lw 2 palette,\ - data2Vector3D using (column("H")/column("T") * exp(log(column("L")) * beta2Vector3D * delta2Vector3D / nu2Vector3D)):(column("t") * column("S") * exp(-log(column("L")) * (z2Vector3D + 3))):1 with lines palette + data2Vector3D using (column("H")/column("T") * exp(log(column("L")) * beta2Vector3D * delta2Vector3D / nu2Vector3D)):(column("t") * column("S") * exp(-log(column("L")) * (z2Vector3D + 3))):1 with lines palette,\ + 1.1 * exp(- log(x) * z2Vector3D * nu2Vector3D / (beta2Vector3D * delta2Vector3D)) with lines lc rgb "black" # plotting the second row set format x '$10^{%T}$' @@ -112,8 +121,11 @@ set ylabel @scaledylabel set xrange @isingRange set yrange [0.2:1] +set title '\threedee Ising' offset -6.5,-8 + plot dataIsing3D using (column("H")/column("T") * exp(log(column("L")) * betaIsing3D * deltaIsing3D / nuIsing3D)):(column("t") * column("S") * exp(-log(column("L")) * (zIsing3D + 3))):(sqrt((column("dt")/column("t"))**2 + (column("dS")/column("S"))**2) * column("t") * column("S") * exp(-log(column("L")) * (zIsing3D + 3))):1 with yerrorbars pt 0 lw 2 palette,\ - dataIsing3D using (column("H")/column("T") * exp(log(column("L")) * betaIsing3D * deltaIsing3D / nuIsing3D)):(column("t") * column("S") * exp(-log(column("L")) * (zIsing3D + 3))):1 with lines palette + dataIsing3D using (column("H")/column("T") * exp(log(column("L")) * betaIsing3D * deltaIsing3D / nuIsing3D)):(column("t") * column("S") * exp(-log(column("L")) * (zIsing3D + 3))):1 with lines palette,\ + 0.5 * exp(- log(x) * zIsing3D * nuIsing3D / (betaIsing3D * deltaIsing3D)) with lines lc rgb "black" unset ylabel @@ -121,13 +133,19 @@ unset ylabel set xrange @pottsRange set yrange [0.02:4] +set title '\twodee 4-State Potts' offset -4,-8 + plot data4Potts2D using (column("H")/column("T") * exp(log(column("L")) * beta4Potts2D * delta4Potts2D / nu4Potts2D)):(column("t") * column("S") * exp(-log(column("L")) * (z4Potts2D + 2))):(sqrt((column("dt")/column("t"))**2 + (column("dS")/column("S"))**2) * column("t") * column("S") * exp(-log(column("L")) * (z4Potts2D + 2))):1 with yerrorbars pt 0 lw 2 palette,\ - data4Potts2D using (column("H")/column("T") * exp(log(column("L")) * beta4Potts2D * delta4Potts2D / nu4Potts2D)):(column("t") * column("S") * exp(-log(column("L")) * (z4Potts2D + 2))):1 with lines palette + data4Potts2D using (column("H")/column("T") * exp(log(column("L")) * beta4Potts2D * delta4Potts2D / nu4Potts2D)):(column("t") * column("S") * exp(-log(column("L")) * (z4Potts2D + 2))):1 with lines palette,\ + 0.4 * exp(- log(x) * z4Potts2D * nu4Potts2D / (beta4Potts2D * delta4Potts2D)) with lines lc rgb "black" # plotting 3 Vector 3D set xrange @vectorRange set yrange [0.9:4] +set title '\threedee O(3)' offset -6.5,-8 + plot data3Vector3D using (column("H")/column("T") * exp(log(column("L")) * beta3Vector3D * delta3Vector3D / nu3Vector3D)):(column("t") * column("S") * exp(-log(column("L")) * (z3Vector3D + 3))):(sqrt((column("dt")/column("t"))**2 + (column("dS")/column("S"))**2) * column("t") * column("S") * exp(-log(column("L")) * (z3Vector3D + 3))):1 with yerrorbars pt 0 lw 2 palette,\ - data3Vector3D using (column("H")/column("T") * exp(log(column("L")) * beta3Vector3D * delta3Vector3D / nu3Vector3D)):(column("t") * column("S") * exp(-log(column("L")) * (z3Vector3D + 3))):1 with lines palette + data3Vector3D using (column("H")/column("T") * exp(log(column("L")) * beta3Vector3D * delta3Vector3D / nu3Vector3D)):(column("t") * column("S") * exp(-log(column("L")) * (z3Vector3D + 3))):1 with lines palette,\ + 2.1 * exp(- log(x) * z3Vector3D * nu3Vector3D / (beta3Vector3D * delta3Vector3D)) with lines lc rgb "black" diff --git a/monte-carlo.tex b/monte-carlo.tex index 265e376..db606a1 100644 --- a/monte-carlo.tex +++ b/monte-carlo.tex @@ -500,7 +500,7 @@ When $x<1$ transformations that do not change the energy of a bond can still activate it in the cluster, which allows nontrival clusters to be seeded when the height of the starting site is also the plane of reflection. This modification is likely useful in general for systems with large yet discrete -configuration spaces $X$. +state spaces. \section{Performance} \label{sec:performance} @@ -509,13 +509,13 @@ No algorithm is worthwhile if it doesn't run efficiently. This algorithm, being an extension of the Wolff algorithm into a new domain, should be considered successful if it likewise extends the efficiency of the Wolff algorithm into that domain. Some systems are not efficient under Wolff, and we -don't expect this extension to help them. For instance, Ising models with -random fields or bonds technically can be treated with Wolff +don't expect them to fare better when extended in a field. For instance, Ising +models with random fields or bonds technically can be treated with Wolff \cite{dotsenko_cluster_1991}, but it is not efficient because the clusters -formed do scale naturally with the correlation length -\cite{rieger_monte_1995,redner_graphical_1998}. Other approaches, like replica methods, should -be relied on instead -\cite{redner_graphical_1998,chayes_graphical_1998,machta_replica-exchange_2000}. +formed do scale naturally with the correlation length \cite{rieger_monte_1995, +redner_graphical_1998}. Other approaches, like replica methods, should be +relied on instead \cite{redner_graphical_1998, chayes_graphical_1998, +machta_replica-exchange_2000}. At a critical point, correlation time $\tau$ scales with system size $L=N^{-D}$ as $\tau\sim L^z$. Cluster algorithms are celebrated for their @@ -528,18 +528,25 @@ as a function of temperature $t$ and field $h$ of the form If a given dynamics for a system at zero field results in scaling like $L^z$, one should expect its natural extension in the presence of a field to scale roughly like $h^{-z\nu/\beta\delta}$ and collapse appropriately as a function -of $hL^{\beta\delta/\nu}$. We measured the autocorrelation time for the $D=2$ -square-lattice model at a variety of system sizes, temperatures, and fields -$B(s)=hs/\beta$ using standard methods \cite{ossola_dynamic_2004}. The -resulting scaling behavior, plotted in +of $hL^{\beta\delta/\nu}$. + +We measured the autocorrelation time of the energy $\H$ for a variety of +models at critical temperature with many system sizes and canonical fields +(see Table~\ref{table:models} with $h=\beta H$) using standard methods +\cite{ossola_dynamic_2004}. The resulting scaling behavior, plotted in Fig.~\ref{fig:correlation_time-collapse}, is indeed consistent with an -extension to finite field of the behavior at zero field. +extension to finite field of the behavior at zero field, with an eventual +finite-size crossover to constant autocorrelation time. \begin{figure*} \include{fig_correlation-times} \caption{ - Correlation times $\tau$ scaled by the average cluster size as a function - of external field for various models at various system sizes. + Scaling collapse of autocorrelation times $\tau$ for the energy $\H$ + scaled by the average cluster size as a function of external field for + various models of Table~\ref{table:models}. Critical exponents are + model-dependent. Colored lines and points depict values as measured by the + extended algorithm. Solid black lines show a plot proportional to + $h^{-z\nu/\beta\delta}$ for each model. } \label{fig:correlation_time-collapse} \end{figure*} -- cgit v1.2.3-70-g09d2