Download matlab code

% Cartoon movie of increasing microbunching in XFELs

clear; close all;

vid = VideoWriter('microbunching.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]); % black background = [0 0 0]. Normally white [1 1 1]

set(gcf,'color','white');

set(gca,'linewidth',7);

 

 

M = 160; % Number of loops

col = [0.3 0.4 0.7];

 

for i = 1:M

    newplot;

    hold on

    for j = -9:3:9

        nE = 4*round(4*M*exp(-j^2/100)); % number of electrons/microbunch

        x = randn(nE,1); % positions of electrons along x

        y = randn(nE,1); % positions of electrons along y

        xR = 10/log((i^(i/40)+2)^2); % scale of ellipse in x-direction

        yR = 1.6*exp(-j^2/100); % scale of ellipse in y-direction

        bunch = scatter(x*xR - j,yR*y,14,'filled','MarkerFaceColor',col); % plot electrons in phase space

        alpha = 0.7; % Opaqueness of each individual electron

        set(bunch, 'MarkerEdgeAlpha',0,'MarkerFaceAlpha',alpha);

        axis square % Keep scaling 1:1 for x,y

        axis([-14 14 -7 7]) % axis limits

        axis off

    end

    % Store the frame

    frame = getframe(gcf);

    writeVideo(vid,frame);

    hold off;

end

hold off;

% Output the movie as an mpg file

close(vid);


Cartoon showing the emergence of microbunches through SASE

Matlab code