-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathanimate_M.m
110 lines (94 loc) · 3.38 KB
/
animate_M.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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
function animate_M(folder_name)
dynamics = load([folder_name, '/dynamics.dat']);
tindex = dynamics(:,1);
time = dynamics(:,2);
dt = dynamics(:,3);
E = dynamics(:,4);
Mx = dynamics(:,5);
My = dynamics(:,6);
Mz = dynamics(:,7);
M = dynamics(:,8);
torque = dynamics(:,9);
clear dynamics
xdim = 42;
ydim = 26;
zdim = 3;
if(zdim == 3) zslice = 2;
elseif(zdim == 4) zslice = 3;
elseif(zdim == 5) zslice = 3;
elseif(zdim == 6) zslice = 3;
end
x = 0:xdim-1;
y = 0:ydim-1;
z = zslice:zslice;
[X,Y,Z] = meshgrid(x,y,z);
for bigindex = 0:0
start_tindex = 5000*bigindex %1
tdim = length(time);
%start_tindex = 0;
start_line = ydim*xdim*zdim*(start_tindex)
required_lines = ydim*xdim*zdim*tdim
%tdim = 1;
%return
Mfile = [folder_name, '/Mdynamics.dat'];
%system(['tail -n +' num2str(start_line) ' Mdynamics.dat | head -n' num2str(required_lines) ' > Mdynamics1.dat']);
%M_yxzt = load('Mdynamics1.dat');
M_yxzt = load(Mfile);
M_yxzt = M_yxzt(1:required_lines,:);
M_yxzt = reshape(M_yxzt', 3,ydim,xdim,zdim, tdim);
Mx = shiftdim(M_yxzt(1,:,:,zslice,:), 1);
My = shiftdim(M_yxzt(2,:,:,zslice,:), 1);
Mz = shiftdim(M_yxzt(3,:,:,zslice,:), 1);
clear M_yxzt
% subsample
sf = 1;
X = X(1:sf:end, 1:sf:end, 1:sf:end);
Y = Y(1:sf:end, 1:sf:end, 1:sf:end);
Z = Z(1:sf:end, 1:sf:end, 1:sf:end);
Mx = Mx(1:sf:end, 1:sf:end, 1:sf:end, :);
My = My(1:sf:end, 1:sf:end, 1:sf:end, :);
Mz = Mz(1:sf:end, 1:sf:end, 1:sf:end, :);
animation_skip = 10;
fig = figure; set(fig, 'name', folder_name);
set(gcf, 'OuterPosition', [0 0 1280 800]);
subplot(121);
q1 = quiver3(X,Y,Z, Mx(:,:,:,1), My(:,:,:,1), Mz(:,:,:,1), .5);
axis tight equal; grid off;
xlabel('x'); ylabel('y'); zlabel('z'); qt1 = title('Magnetization (M)');
[a,b] = view();
view(0,90);
subplot(122);
q2 = quiver3(X,Y,Z, Mx(:,:,:,1), My(:,:,:,1), Mz(:,:,:,1), .5);
axis tight; grid on
zlim ([zslice-1, zslice+1]);
%daspect([1 1 .5]);
daspect([1 1 1]);
xlabel('x'); ylabel('y'); zlabel('z'); qt2 = title('Magnetization (M)');
view(0,0);
set(qt1, 'string', ['M(t = ', num2str(time(start_tindex+1)), ')']);
set(qt2, 'string', ['M(t = ', num2str(time(start_tindex+1)), ')']);
%view(3)
%return
for i = [1:animation_skip:tdim, tdim]
set(q1, 'Udata', Mx(:,:,:,i));
set(q1, 'Vdata', My(:,:,:,i));
set(q1, 'Wdata', Mz(:,:,:,i));
set(q2, 'Udata', Mx(:,:,:,i));
set(q2, 'Vdata', My(:,:,:,i));
set(q2, 'Wdata', Mz(:,:,:,i));
set(qt1, 'string', ['M(t = ', num2str(time(i+start_tindex)), ')']);
set(qt2, 'string', ['M(t = ', num2str(time(i+start_tindex)), ')']);
drawnow;
end
print(gcf, ['M' num2str(start_tindex)], '-dpdf');
end % bigindex
%avgMx = squeeze(sum(sum(Mx)));
%avgMy = squeeze(sum(sum(My)));
%avgMz = squeeze(sum(sum(Mz)));
%avgM = sqrt(avgMx.^2 + avgMy.^2 + avgMz.^2);
%size(avgMx)
%subplot(222);
%plot(time, avgMx, time, avgMy, time, avgMz, time, avgM);
%legend('Mx', 'My', 'Mz', 'M');
%xlabel('time'); title('Magnetization (A/m)');
end % function