Skip to content
Snippets Groups Projects
Commit 1a9c0a55 authored by Lina Hoummi's avatar Lina Hoummi
Browse files

corrected_resonances_type_Qx_M_in_diagram

parent c594f0eb
No related branches found
No related tags found
No related merge requests found
...@@ -6,8 +6,8 @@ delta = 0; ...@@ -6,8 +6,8 @@ delta = 0;
%% Lattice to be analysed %% Lattice to be analysed
ring = atreduce(sr.model().ring); load('../Lattices/ESRF_standard_cell.mat')
% ring = rmin; ring = ARCA;% ring = rmin;
%% Sextupolar resonances %% Sextupolar resonances
if sext if sext
......
...@@ -4,20 +4,24 @@ function sext_resonances(ring, Denergy, varargin) ...@@ -4,20 +4,24 @@ function sext_resonances(ring, Denergy, varargin)
% of sextupolar resonances on the dynamic aperture at a given % of sextupolar resonances on the dynamic aperture at a given
% energy deviation. % energy deviation.
% %
% Follwoing the paper "Nonlinear dynamics with sextupoles in % Following the paper "Nonlinear dynamics with sextupoles in
% low-emittance light source storage rings", R. Nagaoka, K. Yoshida and % low-emittance light source storage rings", R. Nagaoka, K. Yoshida and
% M. Hara, 1991 % M. Hara, 1991
% %
% Aumented with the inclusion of the energy deviation component. %
% - Resonances of the type Qx = M to be confirmed
% - To be augmented with the inclusion of the energy deviation component.
% - Higher-order to be included
%
%
% Inputs : - ring, lattice to be analysed, can full or parts % Inputs : - ring, lattice to be analysed, can full or parts
% - Denergy, energy deviation % - Denergy, energy deviation
% %
% Optional outputs : - orders, stating the order of sextupole resonance % Optional outputs : - orders, stating the order of sextupole resonance
% required. DEFAULT = linear resonances 1,3. % required. DEFAULT = linear resonances 1,3.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% if nargin <3 % if nargin <3
% order = [1;3]; % order = [1;3];
% end % end
...@@ -52,6 +56,7 @@ betay=beta(:,2); ...@@ -52,6 +56,7 @@ betay=beta(:,2);
betax0 = betax(1); betax0 = betax(1);
betay0 = betay(1); betay0 = betay(1);
% Averaged twiss functions to be closer to the thin lens approximation
[lindata,avebeta,avemu,avedisp,nu,xsi]=atavedata(RING1,0,1:length(RING1)+1); [lindata,avebeta,avemu,avedisp,nu,xsi]=atavedata(RING1,0,1:length(RING1)+1);
beta = avebeta; beta = avebeta;
disp = avedisp; disp = avedisp;
...@@ -60,6 +65,7 @@ betax=beta(:,1); ...@@ -60,6 +65,7 @@ betax=beta(:,1);
betay=beta(:,2); betay=beta(:,2);
alpha=cat(1,lindata.alpha); alpha=cat(1,lindata.alpha);
alphax=alpha(:,1); alphax=alpha(:,1);
alphay=alpha(:,2);
nux=muxy(length(RING1)+1,1)/2/pi; nux=muxy(length(RING1)+1,1)/2/pi;
nuy=muxy(length(RING1)+1,2)/2/pi; nuy=muxy(length(RING1)+1,2)/2/pi;
phix=muxy(:,1); phix=muxy(:,1);
...@@ -127,8 +133,6 @@ for k=1:N ...@@ -127,8 +133,6 @@ for k=1:N
delta = Qx-k/3; delta = Qx-k/3;
xa_l_m= delta/A3M(k)/6*sqrt(betax0); %left boundary xa_l_m= delta/A3M(k)/6*sqrt(betax0); %left boundary
xa_r_m= -2*xa_l_m; %right boundary xa_r_m= -2*xa_l_m; %right boundary
if(xa_l_m > -b/10^3 && xa_l_m < b/10^3 ) if(xa_l_m > -b/10^3 && xa_l_m < b/10^3 )
x(1,1) = xa_l_m*10^3; y(1,1) = 0; x(1,1) = xa_l_m*10^3; y(1,1) = 0;
x(1,2) = xa_l_m*10^3; y(1,2) = a; x(1,2) = xa_l_m*10^3; y(1,2) = a;
...@@ -145,13 +149,12 @@ xa_r_m= -2*xa_l_m; %right boundary ...@@ -145,13 +149,12 @@ xa_r_m= -2*xa_l_m; %right boundary
str = ['(3,', num2str(k),')']; str = ['(3,', num2str(k),')'];
text(xa_r_m*10^3, a*rand, str, 'FontSize',10,'FontWeight','bold', 'Color', [0, 0, 0]); text(xa_r_m*10^3, a*rand, str, 'FontSize',10,'FontWeight','bold', 'Color', [0, 0, 0]);
end end
end end
%% Resonances of type Qx = M %% Resonances of type Qx = M // extracted from CATS
x1st=[]; x1st=[];
y1st=[]; y1st=[];
for k=1:N for k=1:N
ystep = 0.05; ystep = 0.001;
m3 = 3*k; m3 = 3*k;
if(m3 >= 0 && m3 <= N) if(m3 >= 0 && m3 <= N)
delta = Qx-k; delta = Qx-k;
...@@ -206,108 +209,25 @@ for k=1:N ...@@ -206,108 +209,25 @@ for k=1:N
plot(x1stN(1,1:ic-1)*1000,y1stN(1,1:ic-1)*1000,'Color',[0.8,0.1,0.1],'LineWidth',2.5); plot(x1stN(1,1:ic-1)*1000,y1stN(1,1:ic-1)*1000,'Color',[0.8,0.1,0.1],'LineWidth',2.5);
ResLab=['[1,',num2str(k),']']; ResLab=['[1,',num2str(k),']'];
ic1pos = round((ic1-1+1)/2) + round((ic1-1-1)/3.0*(2*rand-1.0)/3.0); ic1pos = round((ic1-1+1)/2) + round((ic1-1-1)/3.0*(2*rand-1.0)/3.0);
text(x1stN(1,ic1pos),y1stN(1,ic1pos),... text(x1stN(1,ic1pos)*1000,y1stN(1,ic1pos)*1000,...
texlabel(ResLab,'literal'),'FontSize',20,'FontWeight','bold','Color',[0.8,0.1,0.1]) texlabel(ResLab,'literal'),'FontSize',14,'FontWeight','bold','Color',[0.8,0.1,0.1])
end end
end end
end end
Iy = y.^2/2/betay0;
FF = alphaM.*(B1M./(delta.^2))*12^2/2/betay0;
GF = lambda.*(B1M./(delta.^2))*6^2/betay0;
%F(m,y) = @(m,y) sqrt(1+ FF(m)*y^2);
%xa_r_1(m,y)=@(m,y) -(delta(m)/alphaM(m))'/6*(1+F(m,y))*sqrt(betax0); %left boundary
%xa_l_1(m,y)=@(m,y) +(delta(m)/alphaM(m))/6*(2*F(m,y)-1)*sqrt(betax0); %right boundary
% for k = 1:N+1,
% C = (alphaM(k+N)/2/lambda(k+N)+1)/(GF(k+N));
% test = sqrt(C)-a/1000;
% if (test<0)
% ymin = 0;
% ymax = a/1000;
% else
% ymin = 0;
% ymax = +sqrt(C);
% end
%
% y = linspace(ymin, ymax, 100)*sqrt(betay0);
% F = sqrt(1*ones(1,100)+ FF(k+N)*(y.^2));
% xa_r_1=-(delta(k+N)/alphaM(k+N))/6*(1*ones(1,100)+F)*sqrt(betax0); %left boundary
% xa_l_1= (delta(k+N)/alphaM(k+N))/6*(2*F-1*ones(1,100))*sqrt(betax0); %right boundary
% plot(xa_l_1*1000, y*1000, 'r')
% plot(xa_r_1*1000, y*1000, 'r')
% str = ['[1,',num2str(M(k+N)),']'];
%
% % if (xa_r_1(1)*1000<b)&&(-b<xa_r_1(1)*1000)
% % text(xa_r_1(1)*1000 + 0.15, a/3, str, 'FontSize',10,'FontWeight','bold', 'Color', [1, 0, 0]);
% % end
%
% if (xa_l_1(1)*1000<b)&&(-b<xa_l_1(1)*1000)
% text(xa_l_1(1)*1000 - 0.15, a/3, str, 'FontSize',10,'FontWeight','bold', 'Color', [1, 0, 0]);
% end
% end
%
%
% % for k = 1:N+1,
% % if (FF(k+N)>0)
% % ymin = 0;
% % ymax = a/1000;
% y = linspace(ymin, ymax, 100)*sqrt(betay0);
% F = sqrt(1*ones(1,100)+ FF(k+N)*(y.^2));
% xa_r_1=-(delta(k+N)/alphaM(k+N))/6*(1*ones(1,100)+F)*sqrt(betax0); %left boundary
% xa_l_1= (delta(k+N)/alphaM(k+N))/6*(2*F-1*ones(1,100))*sqrt(betax0); %right boundary
% plot(xa_l_1*1000, y*1000, 'r')
% plot(xa_r_1*1000, y*1000, 'r')
% str = ['[1,',num2str(M(k+N)),']'];
% if (xa_r_1(1)*1000<b)&&(-b<xa_r_1(1)*1000)
% text(xa_r_1(1)*1000 + 0.15, a/3, str, 'FontSize',10,'FontWeight','bold', 'Color', [1, 0, 0]);
% end
%
% if (xa_l_1(1)*1000<b)&&(-b<xa_l_1(1)*1000)
% text(xa_l_1(1)*1000 - 0.15, a/3, str, 'FontSize',10,'FontWeight','bold', 'Color', [1, 0, 0]);
% end
% elseif (FF(k+N)<0)
% ymin = 0;
% ymax = +sqrt(-1/FF(k+N));
% y = linspace(ymin, ymax, 100)*sqrt(betay0);
% F = sqrt(1*ones(1,100)+ FF(k+N)*(y.^2));
% xa_r_1=-(delta(k+N)/alphaM(k+N))/6*(1*ones(1,100)+F)*sqrt(betax0); %left boundary
% xa_l_1= (delta(k+N)/alphaM(k+N))/6*(2*F-1*ones(1,100))*sqrt(betax0); %right boundary
% plot(xa_l_1*1000, y*1000, 'r');
% plot(xa_r_1*1000, y*1000, 'r');
% str = ['[1,',num2str(M(k+N)),']'];
%
% if (xa_r_1(1)*1000<b)&&(-b<xa_r_1(1)*1000)
% text(xa_r_1(1)*1000 + 0.15, a/3, str, 'FontSize',10,'FontWeight','bold', 'Color', [1, 0, 0]);
% end
%
% if (xa_l_1(1)*1000<b)&&(-b<xa_l_1(1)*1000)
% text(xa_l_1(1)*1000 - 0.15, a/3, str, 'FontSize',10,'FontWeight','bold', 'Color', [1, 0, 0]);
% end
% end
% end
%
%% Fichiers de sortie
%% Output files
fid = fopen('resonances_sextupoles_out.txt','w'); fid = fopen('resonances_sextupoles_out.txt','w');
%ouvre un fichier ou le creer
%�crit dans ce fichier, fid est sa reference pour matlab
fprintf(fid,'%s\n','Betatron tune (Qx, Qy)'); fprintf(fid,'%s\n','Betatron tune (Qx, Qy)');
fprintf(fid,'%i\t %i%i\n',Qx); fprintf(fid,'%i\t %i%i\n',Qx);
fprintf(fid,'%i\n\n',Qy); fprintf(fid,'%i\n\n',Qy);
fprintf(fid,'%s\n','Initial Twiss and dispersion alphax betax alphay betay disp0 disp0p'); fprintf(fid,'%s\n','Initial Twiss and dispersion alphax betax alphay betay disp0 disp0p');
fprintf(fid,'%i\t %i\t %i\t %i\n',alphax(1), betax0, alpha(2,1), betay0); fprintf(fid,'%i\t %i\t %i\t %i\n',alphax(1), betax0, alphay(1), betay0);
fprintf(fid,'%i\t %i\n\n',disp(1,1), disp(2,1)); fprintf(fid,'%i\t %i\n\n',disp(1,1), disp(2,1));
fprintf(fid,'%s\n','Nonlinear magnets list'); fprintf(fid,'%s\n','Nonlinear magnets list');
fprintf(fid,'%s\n','Sextupoles'); fprintf(fid,'%s\n','Sextupoles');
fprintf(fid,'%s\n','Index Phix/2pi Phiy/2pi SK SKB s/R'); fprintf(fid,'%s\n','Index Phix/2pi Phiy/2pi SK SKB s/R');
for k=1:n_sext for k=1:n_sext
...@@ -315,17 +235,6 @@ SK = betax(indice(k))^(3/2)*k2l(k); ...@@ -315,17 +235,6 @@ SK = betax(indice(k))^(3/2)*k2l(k);
SKB = betax(indice(k))^(1/2)* betay(indice(k))*k2l(k); SKB = betax(indice(k))^(1/2)* betay(indice(k))*k2l(k);
fprintf(fid,'%i\t %i\t %i\t %i\t %i\t %i\n\n', 3, phix(indice(k)), phiy(indice(k)), SK, SKB, s(indice(k))/R); fprintf(fid,'%i\t %i\t %i\t %i\t %i\t %i\n\n', 3, phix(indice(k)), phiy(indice(k)), SK, SKB, s(indice(k))/R);
end end
%
% fprintf(fid,'%s\n','Octupoles');
% fprintf(fid,'%s\n','Index Phix/2pi Phiy/2pi TX TY TB s/R');
% for k=1:n_oct,
% TX = betax(indice_oct(k))^(2)*k3l(indice_oct(k));
% TY = betay(indice_oct(k))^(2)*k3l(indice_oct(k));
% TB = betax(indice_oct(k))*betay(indice_oct(k))*k3l(indice_oct(k));
% fprintf(fid,'%i\t %i\t %i\t %i\t %i\t %i\t %i\n\n', 4, phix(indice_oct(k)), phiy(indice_oct(k)), TX, TY, TB, s(indice_oct(k))/R);
% end
%n'oublie pas de fermer le fichier sinon tu ne peux pas le lire
fclose(fid) fclose(fid)
save 'test.txt'
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment