SF+ matching and support for ELegant lattice export

This commit is contained in:
reiche committed 2026-10-13 09:39:40 +02:00
1 parent 85b8e89917
commit 4e9a35b0e7
8 files changed
+818 -323

No files matched your search

+48 -47
View File
@@ -19,6 +19,7 @@ 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;
@@ -30,7 +31,7 @@ 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;
CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mqua180$end, BETY < 60;
LMDIF,CALLS=8000,TOLERANCE=1.e-21;
ENDMATCH;
@@ -49,43 +50,41 @@ 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;
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/satsy02$start,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;
VARY,NAME=satsy01.mqua120.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;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy01$end,DY=0.0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy01$end,DPY=0.0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy01$end,BETX<10;
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;
!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;
twiss,chrom,SEQUENCE=swissfel,range=s20sy02$start/Satsy02.mqua010$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;
@@ -94,35 +93,35 @@ 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: 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;
VARY,NAME=satsy02.mqua010.k1,STEP=0.0001;
VARY,NAME=satsy02.mqua030.k1,STEP=0.0001;
VARY,NAME=satsy02.mqua050.k1,STEP=0.0001;
VARY,NAME=satsy02.mqua080.k1,STEP=0.0001;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua080$end,betx=twissAT1->BETX;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua080$end,bety=twissAT1->BETY;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua080$end,alfx=twissAT1->ALFX;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua080$end,alfy=twissAT1->ALFY;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua050$end,betx<150;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua050$end,bety<150;
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;
@@ -156,8 +155,8 @@ CONSTRAINT,SEQUENCE=SwissFEL,range= satbc01.mbnd100,BETX<180;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
CL1.k1 := -1.;
CL2.k1 := 1.3;
CL1.k1 := -1;
CL2.k1 := 1;
satcl01.mqua120.k1 := CL1.k1;
satcl01.mqua130.k1 := CL2.k1;
satcl01.mqua180.k1 := CL2.k1;
@@ -165,14 +164,16 @@ 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;
MATCH,SEQUENCE=SwissFEL,range=satcl01$start/satdi01$end,betx=3,alfx=0,bety=50,alfy=5,dx=0,dpx=0;
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;
!CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01$end,dx=0;
!CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01$end,dpx=0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satdi01.mqua025$start,dx=0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satdi01.mqua025$start,dpx=0;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
SIMPLEX,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
@@ -202,12 +203,12 @@ 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.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,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;