Reference Optics optimized
This commit is contained in:
@@ -9,7 +9,7 @@ Twisssep: beta0,betx = 48.26, alfx = 7.322, bety = 14.293, alfy = -3.513; ! lab
|
||||
TwissAT1: beta0, betx=35.76, alfx = -1.166, bety = 24.087, alfy = 0.648; ! label: Athos diagnostics location: satdi01.mqua250$start
|
||||
twissee: beta0, betx=7,bety=30,alfx=0.5,alfy=1.5; ! label: EEHG location: satma01.mqua250$end
|
||||
twissAT2: beta0, betx=50,bety=50,alfx=0.0,alfy=0; ! label: Athos XTCAV location: satbd01.mqua010$start
|
||||
twissL3: beta0, betx = 8.83, alfx = 0.0548, bety = 30.44, alfy = -1.866; ! label: Linac 3 location:s30cb10.mqua430$start
|
||||
twissL3: beta0, betx = 8.83, alfx = 0.548, bety = 30.44, alfy = -1.866; ! label: Linac 3 location:s30cb10.mqua430$start
|
||||
twissARECOL:beta0, betx = 2.304, alfx = -1.4045, bety = 25.929, alfy = -6.363; ! label: Aramis ECOL location:sarma01.mqua010$start
|
||||
|
||||
! variables
|
||||
|
||||
@@ -4,14 +4,18 @@
|
||||
! switch yard
|
||||
! matching condition at the septum, the new design by Natalia on 27th July 2011
|
||||
! find the correct kicker strength to have the right dispersion and offset.
|
||||
|
||||
S20SY02.MKDC010.cory := 0;
|
||||
S20SY02.MKAC020.cory := 0;
|
||||
S20SY02.MKDC030.cory := 0;
|
||||
S20SY02.MKAC040.cory := 0;
|
||||
S20SY02.MKDC050.cory := 0;
|
||||
|
||||
|
||||
!------------------------------
|
||||
! match periodic lattice of linac 3
|
||||
s30cb01.mqua430.k1 := 0.8168941546;
|
||||
s30cb02.mqua430.k1 := -0.8168914699;
|
||||
muLin3=0.188;
|
||||
muLin3=0.1883;
|
||||
|
||||
match,SEQUENCE=swissfel,range=s30cb01$start/s30cb03$start;
|
||||
Vary,name=S30CB01.MQUA430.k1,step=0.0001;
|
||||
@@ -82,70 +86,80 @@ plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
||||
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
|
||||
! energy collimator
|
||||
if (ECOLasBC ==0.) {
|
||||
sarcl02.mqua130.k1=1.8;
|
||||
R56 = -000e-6;
|
||||
|
||||
sarcl02.mqua130.k1=1.8;
|
||||
R56 = -000e-6;
|
||||
MATCH,RMATRIX,SEQUENCE=swissfel,range=SARCL02$START/SARCL02$END,betx=10,alfx=0,bety=10,alfy=0;
|
||||
VARY,NAME=sarcl02.mqua130.k1,STEP=0.0001;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.mqua210,re56=R56*0.5;
|
||||
LMDIF,CALLS=100,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
MATCH,RMATRIX,SEQUENCE=swissfel,range=SARCL02$START/SARCL02$END,betx=10,alfx=0,bety=10,alfy=0;
|
||||
VARY,NAME=sarcl02.mqua130.k1,STEP=0.0001;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.mqua210,re56=R56*0.5;
|
||||
LMDIF,CALLS=100,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
sarcl02.mqua210.k1=-sarcl02.mqua130.k1*0.9;
|
||||
sarcl02.mqua250.k1= sarcl02.mqua130.k1;
|
||||
|
||||
MATCH,SEQUENCE=swissfel,range=SARCL02$START/SARCL02$END,betx=10,alfx=0,bety=10,alfy=0;
|
||||
VARY,NAME=sarcl02.mqua250.k1,STEP=0.0001;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.dbpm260$end,dpx=0;
|
||||
LMDIF,CALLS=100,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
sarcl02.mqua310.k1=sarcl02.mqua250.k1;
|
||||
sarcl02.mqua350.k1=sarcl02.mqua210.k1;
|
||||
sarcl02.mqua460.k1=sarcl02.mqua130.k1;
|
||||
|
||||
dL=0.625+0.25;
|
||||
bx0=25;
|
||||
bx=bx0+dL*dL/bx0;
|
||||
ax=-dL/bx0;
|
||||
by0=0.8;
|
||||
by=by0+dL*dL/by0;
|
||||
ay=-dL/by0;
|
||||
|
||||
twiss,sequence=swissfel,range=sarcl02.mqsk300/sarcl02$end,betx=bx,alfx=ax,bety=by,alfy=ay;
|
||||
plot,haxis=s,vaxis=betx,bety,colour=100;
|
||||
|
||||
nbetx= table(twiss,sarcl02$end,betx);
|
||||
nalfx=-table(twiss,sarcl02$end,alfx);
|
||||
nbety= table(twiss,sarcl02$end,bety);
|
||||
nalfy=-table(twiss,sarcl02$end,alfy);
|
||||
|
||||
|
||||
sarcl02.msex255.k2:=110;
|
||||
sarcl02.msex305.k2:=110;
|
||||
|
||||
|
||||
MATCH,chrom,SEQUENCE=sarcl02,range=#s/#e,betx=nbetx,alfx=nalfx,bety=nbety,alfy=nalfy;
|
||||
VARY,NAME=ecol_k2,STEP=0.0001;
|
||||
CONSTRAINT,SEQUENCE=Sarcl02,range=#e,ddx=0;
|
||||
LMDIF,CALLS=100,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
sarcl02.msex255.k2=ecol_k2;
|
||||
sarcl02.msex305.k2=ecol_k2;
|
||||
|
||||
twiss,chrom,rmatrix,range=SARCL02$START/SARCL02$END,betx=nbetx,alfx=nalfx,bety=nbety,alfy=nalfy;
|
||||
plot,haxis=s,vaxis=betx,colour=100;
|
||||
plot,haxis=s,vaxis=bety,colour=100;
|
||||
plot,haxis=s,vaxis=dx,colour=100;
|
||||
plot,haxis=s,vaxis=ddx,colour=100;
|
||||
plot,haxis=s,vaxis=re56,colour=100;
|
||||
|
||||
|
||||
} else {
|
||||
sarcl02.mqua130.k1=0;
|
||||
sarcl02.mqua210.k1=0;
|
||||
sarcl02.mqua250.k1=0;
|
||||
sarcl02.mqua310.k1=0;
|
||||
sarcl02.mqua350.k1=0;
|
||||
sarcl02.mqua460.k1=0;
|
||||
sarcl02.msex255.k2=0;
|
||||
sarcl02.msex305.k2=0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
sarcl02.mqua210.k1=-sarcl02.mqua130.k1*0.9;
|
||||
sarcl02.mqua250.k1= sarcl02.mqua130.k1;
|
||||
|
||||
|
||||
MATCH,SEQUENCE=swissfel,range=SARCL02$START/SARCL02$END,betx=10,alfx=0,bety=10,alfy=0;
|
||||
VARY,NAME=sarcl02.mqua250.k1,STEP=0.0001;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.dbpm260$end,dpx=0;
|
||||
LMDIF,CALLS=100,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
sarcl02.mqua310.k1=sarcl02.mqua250.k1;
|
||||
sarcl02.mqua350.k1=sarcl02.mqua210.k1;
|
||||
sarcl02.mqua460.k1=sarcl02.mqua130.k1;
|
||||
|
||||
|
||||
dL=0.625+0.25;
|
||||
bx0=25;
|
||||
bx=bx0+dL*dL/bx0;
|
||||
ax=-dL/bx0;
|
||||
by0=0.8;
|
||||
by=by0+dL*dL/by0;
|
||||
ay=-dL/by0;
|
||||
|
||||
|
||||
twiss,sequence=swissfel,range=sarcl02.mqsk300/sarcl02$end,betx=bx,alfx=ax,bety=by,alfy=ay;
|
||||
plot,haxis=s,vaxis=betx,bety,colour=100;
|
||||
|
||||
nbetx= table(twiss,sarcl02$end,betx);
|
||||
nalfx=-table(twiss,sarcl02$end,alfx);
|
||||
nbety= table(twiss,sarcl02$end,bety);
|
||||
nalfy=-table(twiss,sarcl02$end,alfy);
|
||||
|
||||
|
||||
sarcl02.msex255.k2:=110;
|
||||
sarcl02.msex305.k2:=110;
|
||||
|
||||
|
||||
MATCH,chrom,SEQUENCE=sarcl02,range=#s/#e,betx=nbetx,alfx=nalfx,bety=nbety,alfy=nalfy;
|
||||
VARY,NAME=ecol_k2,STEP=0.0001;
|
||||
CONSTRAINT,SEQUENCE=Sarcl02,range=#e,ddx=0;
|
||||
LMDIF,CALLS=100,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
sarcl02.msex255.k2=ecol_k2;
|
||||
sarcl02.msex305.k2=ecol_k2;
|
||||
|
||||
twiss,chrom,rmatrix,range=SARCL02$START/SARCL02$END,betx=nbetx,alfx=nalfx,bety=nbety,alfy=nalfy;
|
||||
plot,haxis=s,vaxis=betx,colour=100;
|
||||
plot,haxis=s,vaxis=bety,colour=100;
|
||||
plot,haxis=s,vaxis=dx,colour=100;
|
||||
plot,haxis=s,vaxis=ddx,colour=100;
|
||||
plot,haxis=s,vaxis=re56,colour=100;
|
||||
|
||||
|
||||
|
||||
@@ -171,12 +185,21 @@ VARY,NAME=sarcl01.mqua080.k1,STEP=0.0001;
|
||||
VARY,NAME=sarcl01.mqua100.k1,STEP=0.0001;
|
||||
VARY,NAME=sarcl01.mqua140.k1,STEP=0.0001;
|
||||
VARY,NAME=sarcl01.mqua190.k1,STEP=0.0001;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarma01.mqua010$start,betx=twissARECOL->BETX;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarma01.mqua010$start,alfx=twissARECOL->ALFX;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarma01.mqua010$start,bety=twissARECOL->BETY;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarma01.mqua010$start,alfy=twissARECOL->ALFY;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua050,bety<30;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua190,betx<30;
|
||||
if (ECOLasBC ==0.){
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarma01.mqua010$start,betx=twissARECOL->BETX;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarma01.mqua010$start,alfx=twissARECOL->ALFX;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarma01.mqua010$start,bety=twissARECOL->BETY;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarma01.mqua010$start,alfy=twissARECOL->ALFY;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua050,bety<30;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua190,betx<30;
|
||||
} else {
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.dscr280$start,betx = 10;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.dscr280$start,alfx=0.14;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.dscr280$start,bety = 10;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.dscr280$start,alfy=0.14;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua050,bety<70;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua190,betx<70;
|
||||
}
|
||||
LMDIF,CALLS=100,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
@@ -210,7 +233,7 @@ nbety=table(twiss,sarun04$end,bety);
|
||||
nalfy=table(twiss,sarun04$end,alfy);
|
||||
|
||||
|
||||
sarma02.mqua050.k1=sarun03.mqua080.k1;
|
||||
sarma02.mqua050.k1=sarun03.mqua080.k1*0.5;
|
||||
sarma02.mqua120.k1=sarun04.mqua080.k1;
|
||||
sarun01.mqua080.k1=sarun03.mqua080.k1;
|
||||
sarun02.mqua080.k1=sarun04.mqua080.k1;
|
||||
@@ -219,11 +242,11 @@ sarun02.mqua080.k1=sarun04.mqua080.k1;
|
||||
! matching into the undulator line
|
||||
|
||||
|
||||
sarma01.mqua010.k1 := -1.435783623;
|
||||
sarma01.mqua060.k1 := 1.29993551;
|
||||
sarma01.mqua080.k1 := -0.1356922498;
|
||||
sarma01.mqua120.k1 := -0.4142170392;
|
||||
sarma01.mqua140.k1 := 0.4428419456;
|
||||
sarma01.mqua010.k1 := -1.1706132612849132;
|
||||
sarma01.mqua060.k1 := 1.5075569628969636;
|
||||
sarma01.mqua080.k1 :=-0.6940972890297992;
|
||||
sarma01.mqua120.k1 := -0.18956644741333395;
|
||||
sarma01.mqua140.k1 := 0.5634249743213624;
|
||||
|
||||
|
||||
|
||||
@@ -238,7 +261,8 @@ CONSTRAINT,SEQUENCE=swissfel,range=sarun03$start,alfx=nalfx;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarun03$start,bety=nbety;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarun03$start,alfy=nalfy;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarma01.mqua060,betx<40;
|
||||
LMDIF,CALLS=300,TOLERANCE=1.e-21;
|
||||
SIMPLEX,CALLS=1000,TOLERANCE=1.e-21;
|
||||
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
|
||||
@@ -263,14 +287,14 @@ sarbd01.mqua020.k1=0;
|
||||
|
||||
|
||||
|
||||
match,sequence=swissfel,range=s20SY02$start/#e,beta0=twisssep;
|
||||
match,sequence=swissfel,range=s20SY02$start/satbd02$end,beta0=twisssep;
|
||||
vary,name=sarun19.mqua080.k1,step=0.0001,lower=-3,upper=3;
|
||||
vary,name=sarun20.mqua080.k1,step=0.0001,lower=-3,upper=3;
|
||||
vary,name=sarbd02.mqua030.k1,step=0.0001;
|
||||
constraint,sequence=swissfel,range=#e,betx<200;
|
||||
constraint,sequence=swissfel,range=#e,bety<150;
|
||||
constraint,sequence=swissfel,range=#e,dx<100;
|
||||
constraint,sequence=swissfel,range=#e,dy<0.5;
|
||||
constraint,sequence=swissfel,range=satbd02$end,betx<200;
|
||||
constraint,sequence=swissfel,range=satbd02$end,bety<150;
|
||||
constraint,sequence=swissfel,range=satbd02$end,dx<100;
|
||||
constraint,sequence=swissfel,range=satbd02$end,dy<0.5;
|
||||
lmdif,calls=300,tolerance=1e-21;
|
||||
endmatch;
|
||||
|
||||
|
||||
@@ -9,14 +9,17 @@ py_sep=0.0;
|
||||
dy_sep=-y_sep;
|
||||
dpy_sep=-py_sep;
|
||||
|
||||
|
||||
Syskick:=0.0002538/2.;
|
||||
S20SY02.MKDC010.cory := SYKICK*2;
|
||||
S20SY02.MKAC020.cory := SYKICK*3;
|
||||
S20SY02.MKDC030.cory := SYKICK*2;
|
||||
S20SY02.MKAC040.cory := SYKICK*3;
|
||||
S20SY02.MKDC050.cory := SYKICK*2;
|
||||
|
||||
|
||||
S20SY02.MQUA070.k1= -0.8522139943144122;
|
||||
S20SY02.MQUA100.k1= -0.5378671955035621;
|
||||
S20SY02.MQUA140.k1= 1.042013352497239;
|
||||
S20SY02.MQUA180.k1= -1.2175949038409828;
|
||||
|
||||
use,sequence=swissfel;
|
||||
MATCH,SEQUENCE=swissfel,range=s20sy02$start/s20sy02$end,beta0=twisssep;
|
||||
@@ -83,16 +86,16 @@ LMDIF, CALLS=1000, TOLERANCE=1.E-21;
|
||||
ENDMATCH;
|
||||
|
||||
|
||||
|
||||
satsy01.mqua280.k1 = satsy01.mqua280.k1*(1+leakdisp);
|
||||
|
||||
!------------------------------------------
|
||||
! close vertical dispersion
|
||||
satcl01.mqsk125.k1 = 0;
|
||||
|
||||
satsy02.mqua010.k1 := - 1.71;
|
||||
satsy02.mqua110.k1 := 1.22622;
|
||||
satsy02.mqua120.k1 := 1.64073;
|
||||
satsy02.mqua230.k1 = -1.61620;
|
||||
satsy02.mqua010.k1 := -1.8649770138303619;
|
||||
satsy02.mqua110.k1 := 2.09998;
|
||||
satsy02.mqua120.k1 := -1.3492181718919152;
|
||||
|
||||
|
||||
MATCH,SEQUENCE=swissfel,range=s20SY02$start/satcl01$end,beta0=twisssep;
|
||||
@@ -124,15 +127,6 @@ LMDIF, CALLS=1000, TOLERANCE=1.E-21;
|
||||
ENDMATCH;
|
||||
|
||||
|
||||
satsy02.mqua230.k1 = -0.12*0;
|
||||
satsy03.mqua010.k1 = 0.56*0;
|
||||
satsy03.mqua040.k1 = 0.72*0;
|
||||
satsy03.mqua070.k1 = 0.427*0;
|
||||
satsy03.mqua100.k1 = -0.01*0;
|
||||
satsy03.mqua130.k1 = -0.67*0;
|
||||
|
||||
|
||||
|
||||
MATCH,SEQUENCE=swissfel,range=#s/#e,range=s20SY02$start/satcl01$end,beta0=twisssep;
|
||||
VARY, NAME=satsy02.mqua230.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
|
||||
VARY, NAME=satsy03.mqua010.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
|
||||
@@ -140,9 +134,9 @@ VARY, NAME=satsy03.mqua040.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
|
||||
VARY, NAME=satsy03.mqua070.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
|
||||
VARY, NAME=satsy03.mqua100.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
|
||||
VARY, NAME=satsy03.mqua130.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
|
||||
CONSTRAINT, SEQUENCE=swissFEL, RANGE=satcl01.msex160,betx=10;
|
||||
CONSTRAINT, SEQUENCE=swissFEL, RANGE=satcl01.msex160,betx=20;
|
||||
CONSTRAINT, SEQUENCE=swissFEL, RANGE=satcl01.msex160,alfx=-0.01;
|
||||
CONSTRAINT, SEQUENCE=swissFEL, RANGE=satcl01.msex160,bety<10.0; ! was 13.8
|
||||
CONSTRAINT, SEQUENCE=swissFEL, RANGE=satcl01.msex160,bety=10; ! was 13.8
|
||||
CONSTRAINT, SEQUENCE=swissFEL, RANGE=satcl01.msex160,alfy=-0.01;
|
||||
constraint, sequence=swissfel, range=satsy03.mqua130$end, betx <90 ;
|
||||
constraint, sequence=swissfel, range=satsy03.mqua130$end, bety <90 ;
|
||||
@@ -165,7 +159,6 @@ plot,haxis=s,vaxis=dx,dy,range=s20SY02$start/#e,colour=100;
|
||||
plot,haxis=s,vaxis=re56,range=s20SY02$start/#e,colour=100;
|
||||
|
||||
|
||||
|
||||
!---------------------------------------
|
||||
! match first cell of linac1RF cell of Athos
|
||||
muATL := 0.053;
|
||||
@@ -297,16 +290,10 @@ plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
||||
|
||||
satma01.mqua050.k1 = 1.;
|
||||
|
||||
satma01.mqua120.k1=0;
|
||||
satma01.mqua140.k1=0;
|
||||
satma01.mqua160.k1=0;
|
||||
satma01.mqua180.k1=0;
|
||||
satma01.mqua230.k1=0;
|
||||
satma01.mqua250.k1=0;
|
||||
|
||||
|
||||
MATCH, SEQUENCE=swissfel,range=s20sy02$start/satma01$end,beta0=twisssep;
|
||||
VARY,NAME=satcb03.mqua430.k1,STEP=0.0001,lower=-3.8,upper=3.8;
|
||||
VARY,NAME=satma01.mqua050.k1,STEP=0.0001,lower=-3.8,upper=3.8;
|
||||
VARY,NAME=satma01.mqua120.k1,STEP=0.0001,lower=-3.8,upper=3.8;
|
||||
VARY,NAME=satma01.mqua140.k1,STEP=0.0001,lower=-3.8,upper=3.8;
|
||||
VARY,NAME=satma01.mqua160.k1,STEP=0.0001,lower=-3.8,upper=3.8;
|
||||
|
||||
@@ -15,6 +15,7 @@ CONSTRAINT,SEQUENCE=SwissFEL,range=sinlh02.mqua410$start, bety = TwissM1->BETY;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua130$end, X < 10;
|
||||
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
||||
SIMPLEX,CALLS=1000,TOLERANCE=1.e-21;
|
||||
SIMPLEX,CALLS=1000,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
|
||||
@@ -42,8 +43,15 @@ nalfy=table(twiss,sinsb04$end,alfy);
|
||||
|
||||
! Matching from Laser heater into S-band linac
|
||||
|
||||
sinsb03.mqua130.k1 = sinsb04.mqua130.k1;
|
||||
sinsb03.mqua230.k1 = sinsb04.mqua230;
|
||||
|
||||
SINLH02.MQUA410.k1= -1.1004699049013937;
|
||||
SINLH03.MQUA030.k1= 1.214540293254702;
|
||||
SINLH03.MQUA040.k1= 2.3655916310830505;
|
||||
SINLH03.MQUA060.k1= -1.8720927342603897;
|
||||
SINLH03.MQUA080.k1= -3.30357388716279;
|
||||
SINSB03.MQUA130.k1= 1.705920260985911;
|
||||
SINSB03.MQUA230.k1= -1.1958386267066743;
|
||||
|
||||
|
||||
MATCH,SEQUENCE=SwissFEL,range=#s/sinsb04$end,beta0 = Twiss0;
|
||||
VARY,NAME=sinlh02.MQUA410.k1,STEP=0.0001,lower=-3.5,upper=3.5;
|
||||
@@ -63,7 +71,9 @@ CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb03.mqua130$start,bety<50;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb03.mqua230$start,betx<50;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb03.mqua230$start,bety<50;
|
||||
|
||||
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
||||
|
||||
simplex,CALLS=1000,TOLERANCE=1.e-21;
|
||||
jacobian,CALLS=1000,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
|
||||
@@ -230,7 +240,6 @@ lmdif,calls=100,tolerance=1e-21;
|
||||
endmatch;
|
||||
|
||||
s20cb03.mqua430.k1 = s20cb01.mqua430.k1;
|
||||
s20cb04.mqua430.k1 = s20cb01.mqua430.k1;
|
||||
|
||||
twiss,SEQUENCE=swissfel,range=s20cb01$start/s20cb02$end;
|
||||
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
2) switch between references
|
||||
3) Allo filter to update quadrupoles to be part of the match scripts and not globally written in the code
|
||||
|
||||
#) include ecol in reference matching script
|
||||
#
|
||||
#) Give feedback on the matching results to GUI
|
||||
#) allow for some progress indication of matching
|
||||
|
||||
#) make matching more robust.
|
||||
#) Fix matching point of linac 3
|
||||
|
||||
#
|
||||
#) Check for maximum gradient for matched values
|
||||
3) Match for sextupoles!
|
||||
|
||||
@@ -59,7 +59,7 @@ class MatchMaker:
|
||||
if Athos:
|
||||
target = 'SATBD01'
|
||||
else:
|
||||
target = 'SARUN20'
|
||||
target = 'SARBD01'
|
||||
|
||||
f = io.StringIO()
|
||||
madx = CMadX(f)
|
||||
@@ -71,23 +71,21 @@ class MatchMaker:
|
||||
if not variables is None:
|
||||
madx.definePresets(variables)
|
||||
if Injector:
|
||||
if self.signal:
|
||||
self.signal.emit('Matching Injector ...')
|
||||
print('Matching Injector ...')
|
||||
madx.madx.call(self.scriptdir+'/matchInjector.madx', chdir=True)
|
||||
self.updateOnlineModel(om,madx.madx, 's[i1].*k1|s20sy01.*k1')
|
||||
self.updateOnlineModel(om,madx.madx, 's[i1].*k[12]|s20cb.*k1|s20sy01.*k1')
|
||||
self.parseMatchOutput(f.getvalue().split('\n'),'Injector')
|
||||
|
||||
if Athos:
|
||||
f.flush()
|
||||
f.truncate(0)
|
||||
print('Matching Athos ...')
|
||||
if self.signal:
|
||||
self.signal.emit('Matching Athos ...')
|
||||
madx.madx.call(self.scriptdir+'/matchAthos.madx', chdir=True)
|
||||
self.updateOnlineModel(om, madx.madx, 'sat.*k1|s20sy02.*m[kq]')
|
||||
self.updateOnlineModel(om, madx.madx, 'sat.*mqua.*k1|sat.*msex.*k2|s20sy02.*m[kq]')
|
||||
self.parseMatchOutput(f.getvalue().split('\n'), 'Athos')
|
||||
if Aramis:
|
||||
f.flush()
|
||||
if self.signal:
|
||||
self.signal.emit('Matching Aramis ...')
|
||||
f.truncate(0)
|
||||
print('Matching Aramis ...')
|
||||
if target=='SATBD01':
|
||||
target = 'SARUN20'
|
||||
om.setBranch(target, 'SINLH01')
|
||||
@@ -95,7 +93,7 @@ class MatchMaker:
|
||||
madx.commonHeader('SwissFEL', '#s/#e', None) # sets header
|
||||
madx.madx.call(self.scriptdir + '/initTwiss.madx')
|
||||
madx.madx.call(self.scriptdir + '/matchAramis.madx', chdir=True)
|
||||
self.updateOnlineModel(om, madx.madx, 's[3a][0r].*k1|s20sy03.*k1')
|
||||
self.updateOnlineModel(om, madx.madx, 's[3a][0r].*k[12]|s20sy03.*k1')
|
||||
self.parseMatchOutput(f.getvalue().split('\n'), 'Aramis')
|
||||
if self.signal:
|
||||
self.signal.emit('Matching done')
|
||||
@@ -142,6 +140,14 @@ class MatchMaker:
|
||||
print('... Updating', ele.Name, 'to k1=',ele.k1)
|
||||
else:
|
||||
print('### Unidentified element', element)
|
||||
elif '.k2' in var:
|
||||
element = var.split('.k2')[0]
|
||||
ele = om.getElement(element)
|
||||
if not ele is None:
|
||||
ele.k2 = madx.globals.get(var, 0)
|
||||
print('... Updating', ele.Name, 'to k2=', ele.k2)
|
||||
else:
|
||||
print('### Unidentified element', element)
|
||||
elif '.cory' in var:
|
||||
element = var.split('.cory')[0]
|
||||
ele = om.getElement(element)
|
||||
|
||||
Reference in New Issue
Block a user