Cartoon of CTR formation through increasing the out-of-plane lattice constant to infinity
Matlab code 

% Movie depicting CTRs as envisaged in LEED as only sampling the very top

% layer. Total bollocks of course, in the x-ray world, but nonetheless

% informative... 

 

clear; close all;

 

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

vid.Quality = 100;

vid.FrameRate = 30;

open(vid);

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

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

set(gca,'linewidth',7);

 

myBlue = [0.4 0.44 0.73];

myGold = [220 166 3]/255; 

 

[x,y,z] = sphere(50); % Real-space atoms 

r1 = 0.5;

[a,b,c] = sphere(20); % Reciprocal-space Bragg peaks 

r2 = 0.1; 

[X,Y,Z] = cylinder; % Reciprocal-space CTRs 

 

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

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

 

LL = 10; 

hold off;

lp = [0.4 -0.4 0.7];

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

for sep = 0:0.05:2.3*LL % Increase out-of-plane lattice constant

    subplot('Position',pos1);

    newplot;

    hold off

    for jj = -LL:LL % Position of atoms in horizontal plane 

        for kk = -LL:LL % Horizontal planes' position 

            zposn = kk*(1+sep); 

            if (abs(zposn)<LL+r1) && (abs(jj)<LL-r1)

                surf(x*r1+jj,y*r1,z*r1+zposn,'FaceColor',myBlue,'EdgeColor','none');

            end 

        end 

        hold on;

    end

    

    axis off;

    axis equal

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

 

    xlim([-LL LL]);

    ylim([-LL LL]);

    zlim([-LL LL]);

    view(0,0);

    hold off;

    

    subplot('Position',pos2);

    newplot 

    hold off

    for jj = -LL:2.5:LL

        for kk = -10000:2.5:10000 % Large number to ensure we don't run out of Bragg peaks 

            zposn = kk/(1+sep); 

            if (abs(zposn)<LL+r2) && (abs(jj)<LL-r2)

                surf(x*r2+jj,y*r2,z*r2+zposn,'FaceColor',myGold,'EdgeColor','none');

            end 

        end 

        hold on;

    end

    

    axis off;

    axis equal

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

 

    xlim([-LL LL]);

    ylim([-LL LL]);

    zlim([-LL LL]);

    view(0,0);

    hold off;

    

    % Store the frame

    frame = getframe(gcf);

    writeVideo(vid,frame);

    hold off;

end

 

% Overlay in z-direction closely-packed Bragg peaks with continuous CTR

% cylinder 

for ii = 1:30 % Alpha value of CTR cylinder = ii/30

    subplot('Position',pos1);

    newplot;

    hold off

    for jj = -LL:LL

        if (abs(jj)<LL-r1)

            surf(x*r1+jj,y*r1,z*r1,'FaceColor',myBlue,'EdgeColor','none');

        end

        hold on;

    end

    

    axis off;

    axis equal;

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

    

    xlim([-LL LL]);

    ylim([-LL LL]);

    zlim([-LL LL]);

    view(0,0);

    hold off;

    

    subplot('Position',pos2);

    newplot 

    hold off

    for jj = -LL:2.5:LL

        for kk = -10000:2.5:10000 

            zposn = kk/(1+(2.3*LL)+0.05*ii); 

            if (abs(zposn)<LL+r2) && (abs(jj)<LL-r2)

                surf(x*r2+jj,y*r2,z*r2+zposn,'FaceColor',myGold,'EdgeColor','none');

            end 

        end 

        hold on;

        if (abs(jj)<LL-r2)

            surf(X*r2+jj,Y*r2,2*LL*(Z-0.5),'FaceColor',myGold,'EdgeColor','none','FaceAlpha',ii/30); 

        end

    end

    

    axis off;

    axis equal

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

 

    xlim([-LL LL]);

    ylim([-LL LL]);

    zlim([-LL LL]);

    view(0,0);

    hold off;

    

    % Store the frame

    frame = getframe(gcf);

    writeVideo(vid,frame);

    hold off;

end

 

hold off;

% Output the movie as an mpg file

close(vid);