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);