-
Notifications
You must be signed in to change notification settings - Fork 0
/
plot__M_E_C_X__vs__T.m
65 lines (56 loc) · 2.25 KB
/
plot__M_E_C_X__vs__T.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
function plot__M_E_C_X__vs__T(L, T, q, algorithm, M, E, C, X)
% Takes the spin-matrix side-length 'L', temperature vector 'T', number of
% possible spin states 'q', used algorithm 'algorithm', and vectors of the
% thermodynamic quantities 'M', 'E', 'C', 'X'.
% Plots these quantities as a function of temperature, and saves figure.
figure
%% Magnetization
subplot(2, 2, 1)
plot(T, M / L^2, '.')
xlim([min(T), max(T)])
if algorithm == 1 || algorithm == 2
ylim([0, 1])
else
ylim([1, q])
end
ylabel('$|\langle m \rangle| [\mu]$', 'Interpreter', 'latex', 'FontSize', 12)
title('Mean Spin Magnetization', 'FontSize', 12)
%% Magnetic susceptibility
subplot(2, 2, 2)
plot(T, X, '.')
xlim([min(T), max(T)])
ylabel('$\chi_M [\mu^2 / J]$', 'Interpreter', 'latex', 'FontSize', 12)
title('Magnetic Susceptibility', 'FontSize', 12)
%% Energy
subplot(2, 2, 3)
plot(T, E / (2 * L^2), '.')
xlim([min(T), max(T)])
xlabel('$T [J/k_B]$', 'Interpreter', 'latex', 'FontSize', 12)
ylabel('$\langle E \rangle / 2N [J]$', 'Interpreter', 'latex', ...
'FontSize', 12)
title('Mean Interaction Energy', 'FontSize', 12)
%% Heat capacity
subplot(2, 2, 4)
plot(T, C, '.')
xlim([min(T), max(T)])
xlabel('$T [J/k_B]$', 'Interpreter', 'latex', 'FontSize', 12)
ylabel('$C_V [k_B]$', 'Interpreter', 'latex', 'FontSize', 12)
title('Heat Capacity', 'FontSize', 12)
%% Titling & Saving
sgtitle_prefix = ['Thermodynamic averages VS temperature', newline, ...
'L = ', int2str(L)];
file_prefix = ['..', filesep, 'Plots', filesep, 'M_E_C_X_vs_T__L_', int2str(L)];
if algorithm == 1 % Metroplis
sgtitle([sgtitle_prefix, ' , Metropolis algorithm'])
saveas(gcf, [file_prefix, '__Metropolis__Ising.fig'])
saveas(gcf, [file_prefix, '__Metropolis__Ising.png'])
elseif algorithm == 2 % Wolff
sgtitle([sgtitle_prefix, ' , Wolff algorithm'])
saveas(gcf, [file_prefix, '__Wolff__Ising.fig'])
saveas(gcf, [file_prefix, '__Wolff__Ising.png'])
elseif algorithm == 3 % Heat Bath
sgtitle([sgtitle_prefix, ' , Heat-Bath algorithm for ', ...
int2str(q), '-state Potts model'])
saveas(gcf, [file_prefix, '__HeatBath__', int2str(q), 'Potts.fig'])
saveas(gcf, [file_prefix, '__HeatBath__', int2str(q), 'Potts.png'])
end