Cartoon of the evolution of a surface reconstruction from a bulk surface
Matlab code

% Cartoon depicting the formation of fractional-order rods as a result of

% reconstruction of the surface region to form larger surface net

% dimensions

clear; close all;

vid = VideoWriter('surfaceReconstruction.mp4','MPEG-4');

vid.Quality = 100;

vid.FrameRate = 15;

open(vid);

figure('units','pixels','position',[0 0 1920 1080],'ToolBar','none');

set(0,'defaultfigurecolor',[1 1 1]);

set(gca,'linewidth',7);

rainbow = customcolormap([0 0.05 0.1 0.15 0.5 2 5 6 7]/7, ...

{'#ffffff','#ff7777','#ff0000','#ff6a00','#ffff00','#00ff00','#00ffff','#0000ff','#7f00ff'});

rainbow = flip(rainbow);

colormap(rainbow);

myBlue = [0.4 0.44 0.73];

pos1 = [0.02 0.02 0.44 0.9]; % Real-space plot

pos2 = [0.54 0.02 0.44 0.9]; % Reciprocal-space plot

lp = [-0.4 0.4 0.7];

[xx,yy,zz] = sphere(50); % Real-space atoms

r1 = 0.35;

for del = 0:0.0025:0.14 % Shift selected atoms to produce a new surface net size

subplot('Position',pos1); % Real-space animation of the formation of a

% fictitious 3x3 reconstruction

newplot;

hold off

for jj = 1:16 % Position of atoms in x-dirn

for kk = 1:16 % Position of atoms in y-dirn

if (mod(kk,2) == 0) && (mod(jj,3) == 0) % Atoms that relax to new position

yposn = kk+del;

elseif (mod(kk,2) ~= 0) && (mod(jj,3) == 0)

yposn = kk-del;

else % Atoms remain in bulk position

yposn = kk;

end

surf(xx*r1+jj,yy*r1+yposn,zz*r1,'FaceColor',myBlue,'EdgeColor','none');

hold on;

end

end

axis off;

axis equal;

light('Position',lp,'Style','infinite');

xlim([0 17]);

ylim([0 17]);

zlim([-1 1]);

view(0,90);

subplot('Position',pos2); % Gradual appearance of superstructure signal

newplot

hold off

x = -1:0.0025:6;

y = x;

[X,Y] = meshgrid(x,y);

F = 0*cos(2*pi*(X+Y));

for ii = 1:15

for jj = 1:15

F = F+exp(-1000*((ii/3-X).^2+(jj/2-Y).^2)); % 3x2 SSR signal

end

end

ss = surf(X,Y,F*del,'LineStyle','none'); % Intensity proportional to del

hold on

x = -1:0.0025:6;

y = x;

[X,Y] = meshgrid(x,y);

F = 0*cos(2*pi*(X+Y));

for ii = 1:5

for jj = 1:5

F = F+exp(-1000*((ii-X).^2+(jj-Y).^2)); % Bulk signal

end

end

ss = surf(X,Y,F,'LineStyle','none');

view(0,90)

axis equal

axis off

axis tight

xlim([0.75 5.25]);

ylim([0.75 5.25]);

% Store the frame

frame = getframe(gcf);

writeVideo(vid,frame);

hold off;

end

hold off;

% Output the movie as an mpg file

close(vid);