Files
OpticsTools/Scripts/Final/SFPlus/matchAthos.madx
Sven e804a91924 Optimizing SF+ matching including sextupoles.
Lattice plots have now also an indication for screens
2026-01-26 12:51:50 +01:00

425 lines
15 KiB
Plaintext

!
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;
select,flag=Error,pattern="SAT.*";
ealign,DY=0.01;
Print,text='MATCH POINT: Kicker Strength of Septum';
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.007;
CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mbnd200,dpy=1.7e-3;
CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mqua180, BETY < 60;
LMDIF,CALLS=8000,TOLERANCE=1.e-21;
ENDMATCH;
! this statements are needed to have explicit values in the output file
S20SY02.MKDC010.c1= SYKICK*2;
S20SY02.MKAC020.c1= SYKICK*3;
S20SY02.MKDC030.c1= SYKICK*2;
S20SY02.MKAC040.c1= SYKICK*3;
S20SY02.MKDC050.c1= SYKICK*2;
twiss,SEQUENCE=swissfel,range=s20sy02$start/S20SY02$END,beta0=twisssep;
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
plot,haxis=s,vaxis=y,dy,range=#s/#e,colour=100;
satsy01.mqua110.k1=-1.7;
Print,text='MATCH POINT: Closed Dispersion in Switchyard';
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/satsy02$end,beta0=twisssep;
VARY,NAME=satsy01.mqua020.k1,STEP=0.0001;
VARY,NAME=satsy01.mqua050.k1,STEP=0.0001;
VARY,NAME=satsy01.mqua080.k1,STEP=0.0001;
VARY,NAME=satsy02.mqua010.k1,STEP=0.0001;
!VARY,NAME=satsy01.mqua110.k1,STEP=0.0001;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy01$end,DX=0.0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy01$end,DPX=0.0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mbnd200,DY=0.0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mbnd200,DPY=0.0;
JACOBIAN,CALLS=1000,TOLERANCE=1.e-21;
SIMPLEX,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
Print,text='MATCH POINT: Sextupoles in Switch Yard';
MATCH,chrom,SEQUENCE=swissfel,range=s20sy02$start/satsy02$end,beta0=twisssep;
VARY,NAME=satsy01.msex030.k2,STEP=0.0001;
VARY,NAME=satsy01.msex090.k2,STEP=0.0001;
CONSTRAINT,SEQUENCE=swissfel,range=satsy01$end,ddx=0;
CONSTRAINT,SEQUENCE=swissfel,range=satsy01$end,ddpx=0;
LMDIF,CALLS=100,TOLERANCE=1.e-21;
ENDMATCH;
twiss,chrom,SEQUENCE=swissfel,range=s20sy02$start/Satsy02.mqua210$start,beta0=twisssep;
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100;
plot,haxis=s,vaxis=ddx,range=#s/#e,colour=100;
Print,text='MATCH POINT: Closed Dispersion in SATSY03';
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep;
VARY,NAME=satsy03.mqua130.k1,STEP=0.0001;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mbnd200,DX=0.0;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
Print,text='MATCH POINT: Sextupoles in SATSY03';
MATCH,chrom,SEQUENCE=swissfel,range=s20sy02$start/satsy03$end,beta0=twisssep;
VARY,NAME=satsy03.msex110.k2,STEP=0.0001;
VARY,NAME=satsy03.msex140.k2,STEP=0.0001;
CONSTRAINT,SEQUENCE=swissfel,range=satsy03.mqua220$start,ddx=0;
CONSTRAINT,SEQUENCE=swissfel,range=satsy03.mqua220$start,ddpx=0;
LMDIF,CALLS=100,TOLERANCE=1.e-21;
ENDMATCH;
Print,text='MATCH POINT: Switchyard Drift';
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep;
VARY,NAME=satsy02.mqua210.k1,STEP=0.0001;
VARY,NAME=satsy02.mqua230.k1,STEP=0.0001;
VARY,NAME=satsy02.mqua240.k1,STEP=0.0001;
VARY,NAME=satsy02.mqua260.k1,STEP=0.0001;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua260$end,betx=twissAT1->BETX;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua260$end,bety=twissAT1->BETY;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua260$end,alfx=twissAT1->ALFX;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua260$end,alfy=twissAT1->ALFY;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua230$end,betx<120;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
Print,text='MATCH POINT: Match into SATSY03';
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep;
VARY,NAME=satsy02.mqua300.k1,STEP=0.0001;
VARY,NAME=satsy02.mqua310.k1,STEP=0.0001;
VARY,NAME=satsy02.mqua330.k1,STEP=0.0001;
VARY,NAME=satsy02.mqua340.k1,STEP=0.0001;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua130,betx=twissAT2->BETX;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua130,bety=twissAT2->BETY;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua130,alfx=twissAT2->ALFX;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua130,alfy=twissAT2->ALFY;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
twiss,SEQUENCE=swissfel,range=s20sy02$start/Satsy03.mbnd200,beta0=twisssep;
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100;
Print,text='MATCH POINT: BC2 in Switchyard';
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satbc01$end,beta0=twisssep;
VARY,NAME=satsy03.mqua220.k1,STEP=0.0001;
VARY,NAME=satsy03.mqua310.k1,STEP=0.0001;
VARY,NAME=satsy03.mqua430.k1,STEP=0.0001;
CONSTRAINT,SEQUENCE=SwissFEL,range= satbc01.mbnd400,BETX<3;
CONSTRAINT,SEQUENCE=SwissFEL,range= satbc01.mbnd400,BETY<160;
CONSTRAINT,SEQUENCE=SwissFEL,range= satbc01.mbnd100,BETX<180;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
CL1.k1 := -1.;
CL2.k1 := 1.3;
satcl01.mqua120.k1 := CL1.k1;
satcl01.mqua130.k1 := CL2.k1;
satcl01.mqua180.k1 := CL2.k1;
satcl01.mqua190.k1 := CL1.k1;
Print,text='MATCH POINT: Closed Dispersion in SATCL01';
MATCH,SEQUENCE=SwissFEL,range=satcl01$start/satcl01$end,betx=3,alfx=0,bety=50,alfy=5;
VARY,NAME=cl1.k1,STEP=0.0001;
VARY,NAME=cl2.k1,STEP=0.0001;
CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01$end,dx=0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01$end,dpx=0;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
satbc01.mqua410.k1=0;
satbc01.mqua430.k1=0;
satbc01.mqua450.k1=0;
satbc01.mqua470.k1=0;
Print,text='MATCH POINT: Match into SATCL01';
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satcl01$end,beta0=twisssep;
VARY,NAME=satbc01.mqua410.k1,STEP=0.0001;
VARY,NAME=satbc01.mqua430.k1,STEP=0.0001;
VARY,NAME=satbc01.mqua450.k1,STEP=0.0001;
VARY,NAME=satbc01.mqua470.k1,STEP=0.0001;
CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01.msex160, alfx = 0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01.msex160, alfy = 0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01.msex160, betx = 10;
CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01.msex160, bety =15;
SIMPLEX,CALLS=1000,TOLERANCE=1.e-21;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
Print,text='MATCH POINT: Sextupole in SATCL01';
MATCH,chrom,SEQUENCE=SwissFEL,range=s20sy02$start/satdi01$end,beta0=twisssep;
VARY,NAME=satcl01.msex110.k2,STEP=0.0001;
VARY,NAME=satcl01.msex160.k2,STEP=0.0001;
VARY,NAME=satcl01.mqua180.k1,STEP=0.0001;
VARY,NAME=satcl01.mqua190.k1,STEP=0.0001;
CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01$end,ddx=0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01$end,ddpx=0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01$end,dx=0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01$end,dpx=0;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
Print,text='MATCH POINT: Minimizing Beam Size in HERO Modulator';
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satdi01$end,beta0=twisssep;
VARY,NAME=satdi01.mqua025.k1,STEP=0.0001;
CONSTRAINT,SEQUENCE=SwissFEL,range= satdi01.dscr065$start, betx<22;
CONSTRAINT,SEQUENCE=SwissFEL,range= satdi01.dscr065$start, bety<22;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
twiss,chrom,SEQUENCE=swissfel,rmatrix,range=s20sy02$start/satdi01.dscr065$end,beta0=twisssep;
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100;
plot,haxis=s,vaxis=ddx,range=#s/#e,colour=100;
plot,haxis=s,vaxis=re56,range=#s/#e,colour=100;
scl:=1.5;
ss:=0.83;
satdi01.mqua080.k1:=0.8*scl;
satdi01.mqua220.k1:=-0.52*scl;
satdi01.mqua230.k1:=-1.2*ss;
satdi01.mqua250.k1:=1.2*ss;
satcb01.mqua230.k1:=1.2*ss;
satcb01.mqua430.k1:=-1.2*ss+0.2;
L = 20.;
alpha=0.7;
beta=L*alpha;
Print,text='MATCH POINT: Match through Athos C-Band Linac';
MATCH, SEQUENCE=SwissFEL,range=s20sy02$start/satcb01$end,beta0=twisssep;
VARY,NAME=satdi01.mqua080.k1,STEP=0.0001,lower=-1.8,upper=1.8;
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;
VARY,NAME=satdi01.mqua250.k1,STEP=0.0001,lower=-1.8,upper=1.8;
VARY,NAME=satcb01.mqua230.k1,STEP=0.0001,lower=-1.8,upper=1.8;
VARY,NAME=satcb01.mqua430.k1,STEP=0.0001,lower=-1.8,upper=1.8;
CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,betx=twissAT3->BETX;
CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,alfx=twissAT3->ALFX;
CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,bety=twissAT3->BETY;
CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,alfy=twissAT3->ALFY;
CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$start,x<10;
CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$start,y<10;
CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$start,DX<10;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
twiss,SEQUENCE=swissfel,range=s20sy02$start/satma01$end,beta0=twisssep;
plot,haxis=s,vaxis=betx,bety,range=satdi01$start/satma01.dscr030$start,colour=100;
!!!!!!!!!!!!!!!!!!!!!! Athos undulator
pol=-1;
satun06.mqua080.k1 := -1.699673315*pol;
satun07.mqua080.k1 := 1.746074065*pol;
muAT=0.15;
Print,text='MATCH POINT: FODO - Athos Undulator';
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;
satun23.mqua080.k1 := satun07.mqua080.k1;
satun24.mqua080.k1 := satun06.mqua080.k1;
satun25.mqua080.k1 := satun07.mqua080.k1;
satun26.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;
Print,text='MATCH POINT: Match into Athos Undulator';
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=6.5;
satcb02.mqua230.k1=scl*0.2;
satcb02.mqua430.k1=-scl*0.2;
satcb03.mqua230.k1=scl*0.2;
satcb03.mqua430.k1=-scl*0.2;
Print,text='MATCH POINT: Match through EEHG Section';
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=twissee->BETX;
CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,bety=twissee->BETY;
CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,alfx=twissee->ALFX;
CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,alfy=twissee->ALFY;
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;
twiss,SEQUENCE=swissfel,range=s20sy02$start/satun11$end,beta0=twisssep;
plot,haxis=s,vaxis=betx,bety,range=satdi01$start/#e,colour=100;
Print,text='MATCH POINT: Athos XTCAV';
MATCH, SEQUENCE=swissfel,range=s20sy02$start/satbd01$end,beta0=twisssep;
VARY,NAME=satun26.mqua080.k1,STEP=0.0001,lower=-5.0,upper=5.0;
VARY,NAME=satun25.mqua080.k1,STEP=0.0001,lower=-5.0,upper=5.0;
VARY,NAME=satun24.mqua080.k1,STEP=0.0001,lower=-5.0,upper=5.0;
VARY,NAME=satun23.mqua080.k1,STEP=0.0001,lower=-5.0,upper=5.0;
CONSTRAINT,SEQUENCE=swissfel,range=satbd01.mqua010$start,betx=twissAT4->BETX;
CONSTRAINT,SEQUENCE=swissfel,range=satbd01.mqua010$start,bety=twissAT4->BETY;
CONSTRAINT,SEQUENCE=swissfel,range=satbd01.mqua010$start,alfx=twissAT4->ALFX;
CONSTRAINT,SEQUENCE=swissfel,range=satbd01.mqua010$start,alfy=twissAT4->ALFY;
!CONSTRAINT,SEQUENCE=swissfel,range=satun25.mqua080$start,betx < 80;
!CONSTRAINT,SEQUENCE=swissfel,range=satun25.mqua080$start,bety < 80;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
! fixed values, given by Eduard
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/satun26$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;