Files
OpticsTools/Scripts/Reference-SwissFEL/matchAthos.madx

397 lines
14 KiB
Plaintext

!-----------------------------------
! 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.
y_sep=0.01;
py_sep=0.0;
dy_sep=-y_sep;
dpy_sep=-py_sep;
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;
use,sequence=swissfel;
MATCH,SEQUENCE=swissfel,range=s20sy02$start/s20sy02$end,beta0=twisssep;
VARY,NAME=s20sy02.mqua070.k1,STEP=0.0001,lower=-3,upper=3;
VARY,NAME=s20sy02.mqua100.k1,STEP=0.0001,lower=-3,upper=3;
VARY,NAME=s20sy02.mqua140.k1,STEP=0.0001,lower=-3,upper=3;
VARY,NAME=s20sy02.mqua180.k1,STEP=0.0001,lower=-3,upper=3;
VARY,NAME=SYKICK,STEP=0.0001;
CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mbnd200,y=y_sep;
CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mbnd200,py=py_sep;
CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mbnd200,dy<-0.006;
CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mbnd200,dpy<1;
CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mqua180, BETY < 60;
LMDIF,CALLS=8000,TOLERANCE=1.e-21;
ENDMATCH;
use,sequence=swissfel;
select,flag=Error,pattern="SAT.*";
ealign,DY=0.01;
satsy01.mqua020.k1 := 0.48577;
satsy01.mqua040.k1 := 1.0122;
satsy01.mqua070.k1 := -0.055;
satsy01.mqua090.k1 := -0.826;
kmin=-2.1;
kmax=2.1;
MATCH,SEQUENCE=swissfel,range=s20SY02$start/satcl01$end,beta0=twisssep;
VARY, NAME=satsy01.mqua020.k1, STEP=0.00001,LOWER=0,UPPER=4;
VARY, NAME=satsy01.mqua040.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
VARY, NAME=satsy01.mqua070.k1, STEP=0.00001,LOWER=Kmin,UPPER=KMAX;
VARY, NAME=satsy01.mqua090.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01.mbnd200, DX < 7.05e2;
CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01.mbnd200, DPX = 10.e-3;
CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01.mbnd200, ALFX=0;
CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01.mbnd200, ALFY=0;
CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01.mbnd200, DPY =-1.16e-4;
!CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01.mbnd200, DPY =0;
LMDIF, CALLS=1000, TOLERANCE=1.E-21;
ENDMATCH;
satsy01.mqua210.k1=satsy01.mqua090.k1;
satsy01.mqua230.k1=satsy01.mqua070.k1;
satsy01.mqua260.k1=satsy01.mqua040.k1;
satsy01.mqua280.k1=satsy01.mqua020.k1;
satsy01.mqua300.k1 := 5.27400e-01;
MATCH,SEQUENCE=swissfel,range=s20SY02$start/satcl01$end,beta0=twisssep;
VARY, NAME=satsy01.mqua230.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
VARY, NAME=satsy01.mqua210.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
VARY, NAME=satsy01.mqua300.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
VARY, NAME=satsy01.mqua280.k1, STEP=0.00001,LOWER=-4,UPPER=4;
CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01$end, DX = 0;
CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01$end, DPX = 0;
CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01$end, DY < -0.008;
CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01$end, X<10;
LMDIF, CALLS=1000, TOLERANCE=1.E-21;
ENDMATCH;
leakdisp = 0;
satsy01.mqua280.k1 = satsy01.mqua280.k1*(1+leakdisp);
!------------------------------------------
! close vertical dispersion
satsy02.mqua010.k1 := - 1.71;
satsy02.mqua110.k1 := 1.22622;
satsy02.mqua120.k1 := 1.64073;
satsy02.mqua230.k1 = -1.61620;
MATCH,SEQUENCE=swissfel,range=s20SY02$start/satcl01$end,beta0=twisssep;
VARY, NAME=satsy02.mqua010.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
VARY, NAME=satsy02.mqua110.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
VARY, NAME=satsy02.mqua120.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy02$end, DY = 0.0;
CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy02$end, DPY = 0.0;
CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy02$end, X <0;
LMDIF, CALLS=1000, TOLERANCE=1.E-21;
ENDMATCH;
satcl011:=-1.3;
satcl012:= 1.1;
satcl01.mqua120.k1:=satcl011;
satcl01.mqua130.k1:=satcl012;
satcl01.mqua180.k1:=satcl012;
satcl01.mqua190.k1:=satcl011;
MATCH, SEQUENCE=swissfel, range=SATCL01$START/SATCL01$END,betx=5,alfx=0,bety=30,alfy=0;
VARY, NAME=satcl011, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
VARY, NAME=satcl012, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
CONSTRAINT, SEQUENCE=swissfel, RANGE=satcl01$end, DX = 0;
CONSTRAINT, SEQUENCE=swissfel, RANGE=satcl01$end, DPX = 0;
LMDIF, CALLS=1000, TOLERANCE=1.E-21;
ENDMATCH;
satsy02.mqua230.k1 = -0.12;
satsy03.mqua010.k1 = 0.56;
satsy03.mqua040.k1 = 0.72;
satsy03.mqua070.k1 = 0.427;
satsy03.mqua100.k1 = -0.01;
satsy03.mqua130.k1 = -0.67;
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;
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.8;
CONSTRAINT, SEQUENCE=swissFEL, RANGE=satcl01.msex160,alfx=-0.01;
CONSTRAINT, SEQUENCE=swissFEL, RANGE=satcl01.msex160,bety<30.8; ! 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 ;
LMDIF, CALLS=1000, TOLERANCE=1.E-21;
ENDMATCH;
MATCH, SEQUENCE=swissfel, range=s20SY02$start/satcl01$end,beta0=twisssep;
VARY, NAME= satcl01.mqua180.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
VARY, NAME= satcl01.mqua190.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax;
CONSTRAINT, SEQUENCE=swissfel, RANGE=satcl01$end, DX = 0;
CONSTRAINT, SEQUENCE=swissfel, RANGE=satcl01$end, DPX = 0;
LMDIF, CALLS=1000, TOLERANCE=1.E-21;
ENDMATCH;
twiss,sequence=swissfel,range=s20sy02$start/satcl01$end,rmatrix,beta0=twisssep;
plot,haxis=s,vaxis=betx,bety,range=s20SY02$start/#e,colour=100;
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;
! Linac 1 Fodo lattice matching
satcb01.mqua230.k1 := 1.490961973;
satcb01.mqua430.k1 := -1.490511125;
match,SEQUENCE=swissfel,range=satcb01$start/satcb01$end;
Vary,name=SatCB01.MQUA230.k1,step=0.0001;
Vary,name=SatCB01.MQUA430.k1,step=0.0001;
constraint,sequence=satcb01,range=#e,mux=muATL;
constraint,sequence=satcb01,range=#e,muy=muATL;
lmdif,calls=100,tolerance=1e-21;
endmatch;
satcl02.mqua230.k1=satcb01.mqua230.k1;
satcl02.mqua430.k1=satcb01.mqua430.k1;
twiss,SEQUENCE=swissfel,range=satcb01$start/satcb01$end;
nbetx=table(twiss,satcb01$end,betx);
nalfx=table(twiss,satcb01$end,alfx);
nbety=table(twiss,satcb01$end,bety);
nalfy=table(twiss,satcb01$end,alfy);
!---------------------------------------
! match to reference point at satdi01-mqua250
MATCH, SEQUENCE=swissfel,range=s20sy02$start/satcb01$start,beta0=twisssep;
VARY,NAME=satdi01.mqua025.k1,STEP=0.0001,lower=-2.0,upper=2.0;
VARY,NAME=satdi01.mqua080.k1,STEP=0.0001,lower=-2.0,upper=2.0;
VARY,NAME=satdi01.mqua220.k1,STEP=0.0001,lower=-1.8,upper=1.8;
VARY,NAME=satdi01.mqua230.k1,STEP=0.0001,lower=-1.8,upper=1.8;
CONSTRAINT,SEQUENCE=swissfel,range=satdi01.mqua250$start,betx=35.76;
CONSTRAINT,SEQUENCE=swissfel,range=satdi01.mqua250$start,alfx=-1.166;
CONSTRAINT,SEQUENCE=swissfel,range=satdi01.mqua250$start,bety=24.087;
CONSTRAINT,SEQUENCE=swissfel,range=satdi01.mqua250$start,alfy=0.648;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
!------------------------------------
! match into SATCB01
MATCH, SEQUENCE=swissfel,range=s20sy02$start/satcb01$end,beta0=twisssep;
VARY,NAME=satdi01.mqua250.k1,STEP=0.0001,lower=-1.8,upper=1.8;
VARY,NAME=satdi01.mqua260.k1,STEP=0.0001,lower=-1.8,upper=1.8;
VARY,NAME=satdi01.mqua280.k1,STEP=0.0001,lower=-1.8,upper=1.8;
VARY,NAME=satdi01.mqua300.k1,STEP=0.0001,lower=-1.8,upper=1.8;
CONSTRAINT,SEQUENCE=swissfel,range=satcb01$start,betx=nbetx;
CONSTRAINT,SEQUENCE=swissfel,range=satcb01$start,alfx=nalfx;
CONSTRAINT,SEQUENCE=swissfel,range=satcb01$start,bety=nbety;
CONSTRAINT,SEQUENCE=swissfel,range=satcb01$start,alfy=nalfy;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
twiss, SEQUENCE=swissFEL,range=s20sy02$start/satcl02$end,beta0=twisssep;
plot,haxis=s,vaxis=betx,bety,range=satdi01$start/satcl02$end,colour=100;
!!!!!!!!!!!!!!!!!!!!!! Athos undulator
pol=-1;
satun06.mqua080.k1 := -1.699673315*pol;
satun07.mqua080.k1 := 1.746074065*pol;
muAT=0.15;
match,SEQUENCE=swissfel,range=satun06$start/satun07$end;
Vary,name=satun06.mqua080.k1,step=0.0001;
Vary,name=satun07.mqua080.k1,step=0.0001;
constraint,sequence=swissfel,range=satun07$end,mux=muAT;
constraint,sequence=swissfel,range=satun07$end,muy=muAT;
lmdif,calls=100,tolerance=1e-21;
endmatch;
satun08.mqua080.k1 := satun06.mqua080.k1;
satun09.mqua080.k1 := satun07.mqua080.k1;
satun10.mqua080.k1 := satun06.mqua080.k1;
satun11.mqua080.k1 := satun07.mqua080.k1;
satun12.mqua080.k1 := satun06.mqua080.k1;
satun13.mqua080.k1 := satun07.mqua080.k1;
satun14.mqua080.k1 := satun06.mqua080.k1;
satun15.mqua080.k1 := satun07.mqua080.k1;
satun16.mqua420.k1 := satun06.mqua080.k1;
satun17.mqua080.k1 := satun07.mqua080.k1;
satun18.mqua080.k1 := satun06.mqua080.k1;
satun19.mqua080.k1 := satun07.mqua080.k1;
satun20.mqua080.k1 := satun06.mqua080.k1;
satun21.mqua080.k1 := satun07.mqua080.k1;
satun22.mqua080.k1 := satun06.mqua080.k1;
twiss,sequence=swissfel,range=satun06$start/satun07$end;
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
ATbetx=table(twiss,satun07$end,betx);
ATalfx=table(twiss,satun07$end,alfx);
ATbety=table(twiss,satun07$end,bety);
ATalfy=table(twiss,satun07$end,alfy);
eebetx=8;
eealfx=0.5;
eebety=30;
eealfy=-0.5;
eebetx=7;
eealfx=0.5;
eebety=30;
eealfy=1.5;
twissee: beta0,betx=eebetx,bety=eebety,alfx=eealfx,alfy=eealfy;
MATCH, SEQUENCE=swissfel,range=satma01.mqua250$end/satun07$end,beta0=twissee;
VARY,NAME=satma01.mqua610.k1,STEP=0.0001,lower=-2.0,upper=2.0;
VARY,NAME=satma01.mqua630.k1,STEP=0.0001,lower=-2.0,upper=2.0;
VARY,NAME=satma01.mqua640.k1,STEP=0.0001,lower=-2.0,upper=2.0;
VARY,NAME=satun04.mqua060.k1,STEP=0.0001,lower=-3.8,upper=3.8;
VARY,NAME=satun05.mqua420.k1,STEP=0.0001,lower=-3.8,upper=3.8;
CONSTRAINT,SEQUENCE=swissfel,range=satun06$start,betx=ATbetx;
CONSTRAINT,SEQUENCE=swissfel,range=satun06$start,bety=ATbety;
CONSTRAINT,SEQUENCE=swissfel,range=satun06$start,alfx=ATalfx;
CONSTRAINT,SEQUENCE=swissfel,range=satun06$start,alfy=ATalfy;
CONSTRAINT,SEQUENCE=swissfel,range=satun06$start,x<10;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
twiss,SEQUENCE=swissfel,range=satma01.mqua250$end/satun11$end,beta0=twissee;
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
scl=4;
satcb02.mqua230.k1=scl*0.2;
satcb02.mqua430.k1=-scl*0.2;
satcb03.mqua230.k1=scl*0.2;
satcb03.mqua430.k1=-scl*0.2;
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.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;
VARY,NAME=satma01.mqua180.k1,STEP=0.0001,lower=-3.8,upper=3.8;
VARY,NAME=satma01.mqua230.k1,STEP=0.0001,lower=-3.0,upper=3.0;
VARY,NAME=satma01.mqua250.k1,STEP=0.0001,lower=-3.0,upper=3.0;
CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,betx=eebetx;
CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,bety=eebety;
CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,alfx=eealfx;
CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,alfy=eealfy;
CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua120$start, betx <70;
CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua120$start, bety <70;
CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua140$start, betx <70;
CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua140$start, bety <70;
CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua160$start, betx <70;
CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua160$start, bety <70;
CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua180$start, betx <70;
CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua180$start, bety <70;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
MATCH, SEQUENCE=swissfel,range=s20sy02$start/satbd01$end,beta0=twisssep;
VARY,NAME=satun22.mqua080.k1,STEP=0.0001,lower=-5.0,upper=5.0;
VARY,NAME=satma02.mqua010.k1,STEP=0.0001,lower=-5.0,upper=5.0;
VARY,NAME=satma02.mqua020.k1,STEP=0.0001,lower=-5.0,upper=5.0;
VARY,NAME=satma02.mqua040.k1,STEP=0.0001,lower=-5.0,upper=5.0;
VARY,NAME=satma02.mqua050.k1,STEP=0.0001,lower=-5.0,upper=5.0;
VARY,NAME=satma02.mqua070.k1,STEP=0.0001,lower=-5.0,upper=5.0;
CONSTRAINT,SEQUENCE=swissfel,range=satbd01.mqua010$start,betx=50;
CONSTRAINT,SEQUENCE=swissfel,range=satbd01.mqua010$start,bety=50;
CONSTRAINT,SEQUENCE=swissfel,range=satbd01.mqua010$start,alfx=0;
CONSTRAINT,SEQUENCE=swissfel,range=satbd01.mqua010$start,alfy=0;
CONSTRAINT,SEQUENCE=swissfel,range=satbd01.mqua010$start,x=0;
CONSTRAINT,SEQUENCE=swissfel,range=satbd01.mqua010$start,px=0;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
SATBD01.MQUA010.K1= 5.069789237265826e-01;
SATBD01.MQUA030.K1= -6.184665903305938e-01 ;
SATBD01.MQUA050.K1= 1.324854421128419e-01 ;
SATBD01.MQUA070.K1= 4.740280173415730e-01 ;
SATBD01.MQUA090.K1= -7.442648986155268e-01;
SATBD02.MQUA030.K1= -1.050806764409536e+00;
twiss,SEQUENCE=swissfel,range=s20sy02$start/satbd01$end,beta0=twisssep;
plot,haxis=s,vaxis=betx,bety,range=satdi01$start/#e,colour=100;
twiss,SEQUENCE=swissfel,range=#s/satbd01$end,beta0=twiss0;
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100;