source: MML/trunk/machine/SOLEIL/Booster/applications/orbitX_disp_23juillet.m @ 4

Last change on this file since 4 was 4, checked in by zhangj, 10 years ago

Initial import--MML version from SOLEIL@2013

File size: 3.9 KB
Line 
1% Correction orbite mesurï¿œe 18 BPM 18 corr
2% nux = 5.95
3
4clear beta_bpmx  phi_bpmx s_bpmx
5clear beta_corrx phi_corrx s_corrx
6clear beta_defx  phi_defx
7clear Cc K  X Xr
8ncell=44;
9betax=10.5;
10b1   =10.5;
11b2   =2.;
12nux=5.95*2*pi;
13dnux=nux/ncell;
14ds=3.5595;
15ncorrx=22;
16nbpmx=22;
17% table BPM
18loc(1) =01;loc(2) =04;loc(3) =05;loc(4) =08;loc(5) =09;loc(6)=11;
19loc(7) =13;loc(8) =14;loc(9) =17;loc(10)=18;loc(11)=21;
20loc(12)=23;loc(13)=26;loc(14)=27;loc(15)=30;loc(16)=31;loc(17)=33;
21loc(18)=35;loc(19)=36;loc(20)=39;loc(21)=40;loc(22)=43;
22
23bet(1) =b1;bet(2) =b2;bet(3) =b1;bet(4) =b2;bet(5) =b1;bet(6)=b1;
24bet(7) =b1;bet(8) =b2;bet(9) =b1;bet(10)=b2;bet(11)=b1;
25bet(12)=b1;bet(13)=b2;bet(14)=b1;bet(15)=b2;bet(16)=b1;bet(17)=b1;
26bet(18)=b1;bet(19)=b2;bet(20)=b1;bet(21)=b2;bet(22)=b1;
27
28hs(1) =01;hs(2) =01;hs(3) =01;hs(4) =01;hs(5) =01;hs(6)=01;
29hs(7) =01;hs(8) =01;hs(9) =01;hs(10)=01;hs(11)=00;
30hs(12)=01;hs(13)=01;hs(14)=00;hs(15)=01;hs(16)=01;hs(17)=01;
31hs(18)=00;hs(19)=01;hs(20)=00;hs(21)=01;hs(22)=01;
32
33%table correcteurs
34on(1) =01;on(2) =01;on(3) =01;on(4) =01;on(5) =01;on(6)=01;
35on(7) =01;on(8) =01;on(9) =01;on(10)=01;on(11)=01;
36on(12)=01;on(13)=01;on(14)=01;on(15)=01;on(16)=01;on(17)=01;
37on(18)=01;on(19)=01;on(20)=01;on(21)=01;on(22)=01;
38
39
40% on rempli la matrice C tel que X=C.K
41% cotᅵ bpm sur chaque qp foc, on commence sur un qd (inj booster)
42i=0;
43for j=1:nbpmx,
44    if (hs(j)==1)
45       i=i+1;
46       beta_bpmx(i)=bet(j);
47       phi_bpmx(i)=dnux*loc(j);
48       s_bpmx(i)=ds*loc(j);
49    end   
50end
51nbpmxr=i;
52% cotᅵ correcteurs sur chaque qp foc, on commence sur un qd (inj booster)
53i=0;
54for j=1:ncorrx,
55    if (on(j)==1)
56       i=i+1;
57       beta_corrx(i)=betax;
58       phi_corrx(i)=(2*dnux)*(j-0.5);
59       s_corrx(i)=(2*ds)*(j-0.5);
60    end   
61end
62ncorrxr=i;
63% matrice Cc cas fermᅵ cyclique
64c3=2*sin(nux/2);
65for i = 1:nbpmxr,
66   for j = 1:ncorrxr
67      c1=sqrt(beta_bpmx(i)*beta_corrx(j));
68      c2=cos(nux/2-abs(phi_bpmx(i)-phi_corrx(j)));
69      Cc(i,j) = c1*c2/c3;
70   end
71end
72sprintf(' Nombre de BPM : %g ', nbpmxr)
73sprintf(' Nombre de COR : %g ', ncorrxr)
74
75% % cotᅵ vecteur X repesentant les defaut d'orbites mesurᅵ en mm
76% dispsersion donnᅵ avec beta (def + corr inclus)
77
78X(1)=1.2;       d(1)=1.8;
79X(2)=-3.45;     d(2)=-0.1;
80X(3)=-4.5 ;     d(3)=0.1;
81X(4)=0.7;       d(4)=1.6;
82X(5)=-7.2;      d(5)=2.1;
83X(6)=1.8;       d(6)=-0.6;
84X(7)=-0.3;     d(7)=1.2;
85X(8)=-1.16;    d(8)=1.3;
86X(9)=-6.8;    d(9)=1.3;
87X(10)=-1.05;  d(10)=0.;
88X(11)=0;      d(11)=1.;
89
90X(12)=-4;     d(12)=1.8;
91X(13)=-4.3;   d(13)=-.1;
92X(14)=0;      d(14)=0.1;
93X(15)= -0.25;  d(15)=1.6;
94X(16)=-2.4;   d(16)=2.1;
95X(17)=-8.8;   d(17)=0.6;
96X(18)=0;      d(18)=1.2;
97X(19)= 0.74;   d(19)=1.3;
98X(20)=0;      d(20)=1.3;
99X(21)=-4.8;   d(21)=0.;
100X(22)=5.5;    d(22)=1.;
101
102%cas avec delatE
103i=0;
104for i=1:nbpmx,
105    X(i)=X(i)+d(i)*(0.002)*1000;   
106end
107
108i=0;
109for j=1:nbpmx,
110    if (hs(j)==1)
111       i=i+1;
112       Xr(i)=X(j);
113    end   
114end
115
116% Rï¿œsolution par SVD matrice Cc cyclique sur X
117[U,S,V] = svds(Cc,ncorrxr);
118diag(S)
119minvp=10;
120for i=1:min(nbpmxr,ncorrxr)
121    if(S(i,i)<minvp)
122        S(i,i)=0;
123    else
124        S(i,i)=1/S(i,i);
125    end   
126end   
127Cci=V*S*U';
128K=Cci*transpose(Xr);
129Xcorr= transpose(-Xr) + Cc*K;
130figure(2);plot(s_bpmx,Xr,'-ok',s_bpmx,Xcorr,'--ok');
131legend('X','X corrigï¿œe',2);
132title('Correction mode anneau');ylabel('Orbite');xlabel('Position S');
133
134clear nb
135j=0;
136for i=1:ncorrx,
137    nb(i)=i;
138end
139j=0;
140sumcorr=0;
141for i=1:ncorrx
142    if(on(i)==0)
143        K1(i)=0;
144    else
145        j=j+1;
146        K1(i)=K(j)/1000;
147        sumcorr =sumcorr + K1(i);
148    end     
149end
150sprintf('Somme corrcteurs=%d',sumcorr);
151sprintf('CH%d    HC  %d \n',[nb ; K1]);
152   
153   
154%  correcteurs du 23 juillet
155for i=1:ncorrx,
156    K0(i)=0;
157end
158K0(1)=0.073/1000;
159K0(6)=0.65/1000;
160K0(13)=-0.43/1000;
161K0(22)=-0.13/1000;
162sprintf('CH%d    HC  %d \n',[nb ; (K1-K0)]);
163
164K2 = (K1-K0);
165save 'corrx.mat' K2
166figure(4);bar(K2 ,0.6);
167title('Correcteurs');ylabel('Deviation');xlabel('Position S');
Note: See TracBrowser for help on using the repository browser.