Refinement of SF+ Optics -> Still needs position checks with HolyList
This commit is contained in:
@@ -41,7 +41,10 @@ class OpticsTools(QtWidgets.QMainWindow, QtCore.QObject, Ui_OpticsGUI):
|
||||
self.UIMatchOpticsSelect.clear()
|
||||
for key in self.match.matchlist.keys():
|
||||
self.UIMatchOpticsSelect.addItem(key)
|
||||
self.UIMatchOpticsSelect.setCurrentIndex(0)
|
||||
if phase == 0:
|
||||
self.UIMatchOpticsSelect.setCurrentIndex(0)
|
||||
else:
|
||||
self.UIMatchOpticsSelect.setCurrentIndex(1)
|
||||
self.updateMatchingCase()
|
||||
|
||||
|
||||
@@ -95,6 +98,8 @@ class OpticsTools(QtWidgets.QMainWindow, QtCore.QObject, Ui_OpticsGUI):
|
||||
if self.UISaveMatchSettings.isChecked():
|
||||
fileName = self.match.scriptdir+'/settings.json'
|
||||
self.saveSettingsdirect(fileName)
|
||||
if self.UIReportMatchStrength.isChecked():
|
||||
self.model.checkMagnetLimit()
|
||||
|
||||
|
||||
def updateMatchingCase(self):
|
||||
|
||||
@@ -271,11 +271,17 @@ ENDMATCH;
|
||||
!-----------------
|
||||
! into septum
|
||||
|
||||
S20SY01.MQUA020.k1= -1.4084554435040675;
|
||||
S20SY01.MQUA030.k1= 1.6527516900200674;
|
||||
S20SY01.MQUA050.k1= -1.2455405678473916;
|
||||
S20SY01.MQUA080.k1= 1.3915642831470632;
|
||||
|
||||
|
||||
MATCH,SEQUENCE=SwissFEL,range=#s/s20sy02$start,beta0 = Twiss0;
|
||||
VARY,NAME=s20sy01.mqua020.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
||||
VARY,NAME=s20sy01.mqua030.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
||||
VARY,NAME=s20sy01.mqua050.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
||||
VARY,NAME=s20sy01.mqua080.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
||||
VARY,NAME=s20sy01.mqua020.k1,STEP=0.0001,lower=-2.2,upper=2.2;
|
||||
VARY,NAME=s20sy01.mqua030.k1,STEP=0.0001,lower=-2.2,upper=2.2;
|
||||
VARY,NAME=s20sy01.mqua050.k1,STEP=0.0001,lower=-2.2,upper=2.2;
|
||||
VARY,NAME=s20sy01.mqua080.k1,STEP=0.0001,lower=-2.2,upper=2.2;
|
||||
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,betx=Twisssep->BETX;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,alfx=Twisssep->ALFX;
|
||||
|
||||
@@ -1,4 +1,16 @@
|
||||
option,-echo;
|
||||
! starting condition
|
||||
Twiss0: beta0,betx=10,alfx=0,bety=10,alfy=0;
|
||||
Twisssep: beta0,betx=10,alfx=-0.2,bety=15,alfy=1;
|
||||
Twiss0: beta0,betx=10,alfx=0,bety=10,alfy=0; ! location:swissfel$start
|
||||
TwissM1: beta0,betx=8.72,alfx=1,bety=8.72,alfy=1; ! location:sinsb04.mqua230$end
|
||||
TwissM2: beta0, betx = 11.1557, alfx = -1.17, bety = 50, alfy = 0.; ! label: After BC1 location:sindi02.mqua020$start
|
||||
Twisssep: beta0,betx=10,alfx=-0.2,bety=20,alfy=1.0; ! label: Septum location:s20sy02$start
|
||||
|
||||
|
||||
TwissAT1: beta0,betx=34.45,alfx=1,bety=34.45,alfy=1; ! label: Switchyard - Drift location:satsy02.mqua230
|
||||
TwissAT2: beta0,betx=5,alfx=1.77,bety=4,alfy=-1.04; ! label: Switchyard - Double Bend location:satsy03.mqua110
|
||||
TwissAT3: beta0,betx=14,alfx=0.7,bety=14,alfy=0.7; ! label: Beam Stopper location:satcb01.mqua430$end
|
||||
twissee: beta0,betx=7,bety=30,alfx=0.5,alfy=1.5; ! label: EEHG location:satma01.mqua250$end
|
||||
twisspor: beta0, betx=3.9036,alfx=-0.05021,bety=37.6374,alfy=4.4433; ! label: Porthos Septum location:s30cb15$end
|
||||
twissARECOL:beta0, betx = 2.304, alfx = -1.4045, bety = 25.929, alfy = -6.363; ! label: Aramis ECOL location:sarma01.mqua010$start
|
||||
! variables
|
||||
ECOLasBC = 0; ! Description: Flag to configure Aramis Energy collimator as a bunch compressor
|
||||
@@ -1,48 +1,12 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
y_sep=0.01;
|
||||
py_sep=0.0;
|
||||
|
||||
|
||||
|
||||
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;
|
||||
|
||||
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
|
||||
SYKICK=0;
|
||||
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;
|
||||
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;
|
||||
|
||||
|
||||
s20bc01.mqua010.k1:=1.;
|
||||
@@ -135,32 +99,13 @@ LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
|
||||
!L = 9;
|
||||
!alpha = 1.5;
|
||||
!beta = alpha*L;
|
||||
|
||||
|
||||
!MATCH,SEQUENCE=Swissfel,range=s20sy02$start/s30cb14$end,beta0=twisssep;
|
||||
!VARY,NAME=s30cb10.mqua430.k1,STEP=0.0001;
|
||||
!VARY,NAME=s30cb11.mqua430.k1,STEP=0.0001;
|
||||
!VARY,NAME=s30cb12.mqua430.k1,STEP=0.0001;
|
||||
!VARY,NAME=s30cb13.mqua430.k1,STEP=0.0001;
|
||||
!VARY,NAME=s30cb14.mqua430.k1,STEP=0.0001;
|
||||
!CONSTRAINT,SEQUENCE=SwissFEL,range= s30cb14.mqua430$end,betx=beta;
|
||||
!CONSTRAINT,SEQUENCE=SwissFEL,range= s30cb14.mqua430$end,bety=beta;
|
||||
!CONSTRAINT,SEQUENCE=SwissFEL,range= s30cb14.mqua430$end,alfx=alpha;
|
||||
!CONSTRAINT,SEQUENCE=SwissFEL,range= s30cb14.mqua430$end,alfy=alpha;
|
||||
!CONSTRAINT,SEQUENCE=SwissFEL,range= s30cb14.mqua430$end,X<1;
|
||||
!LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
||||
!ENDMATCH;
|
||||
|
||||
twiss,SEQUENCE=swissfel,range=s20sy02$start/S30cb14$END,beta0=twisssep;
|
||||
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
||||
|
||||
|
||||
|
||||
Select,flag=Error,pattern="SPO.*";
|
||||
EALIGN,DY=0.01;
|
||||
|
||||
|
||||
PSYKICK:=0.1;
|
||||
@@ -183,27 +128,21 @@ LMDIF, CALLS=1000, TOLERANCE=1.E-21;
|
||||
ENDMATCH;
|
||||
|
||||
|
||||
pbetx=3.9036;
|
||||
palfx=-0.05021;
|
||||
pbety=37.6374;
|
||||
palfy=4.4433;
|
||||
|
||||
twisspor: beta0, betx=pbetx,alfx=palfx, bety=pbety,alfy=palfy;
|
||||
|
||||
s30cb13.mqua430.k1 = 0.456;
|
||||
s30cb14.mqua430.k1 = -1.741;
|
||||
s30cb15.mqua010.k1 = 1.1533;
|
||||
s30cb15.mqua020.k1 = -0.0961;
|
||||
|
||||
|
||||
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/s30sy01$end,beta0=twisssep;
|
||||
VARY,NAME=s30cb13.mqua430.k1,STEP=0.0001;
|
||||
VARY,NAME=s30cb14.mqua430.k1,STEP=0.0001;
|
||||
VARY,NAME=s30cb15.mqua010.k1,STEP=0.0001;
|
||||
VARY,NAME=s30cb15.mqua020.k1,STEP=0.0001;
|
||||
CONSTRAINT, SEQUENCE=swissfel, RANGE=s30cb15$end,betx=pbetx;
|
||||
CONSTRAINT, SEQUENCE=swissfel, RANGE=s30cb15$end,bety=pbety;
|
||||
CONSTRAINT, SEQUENCE=swissfel, RANGE=s30cb15$end,alfx=palfx;
|
||||
CONSTRAINT, SEQUENCE=swissfel, RANGE=s30cb15$end,alfy=palfy;
|
||||
CONSTRAINT, SEQUENCE=swissfel, RANGE=s30cb15$end,betx=twisspor->betx;
|
||||
CONSTRAINT, SEQUENCE=swissfel, RANGE=s30cb15$end,bety=twisspor->bety;
|
||||
CONSTRAINT, SEQUENCE=swissfel, RANGE=s30cb15$end,alfx=twisspor->alfx;
|
||||
CONSTRAINT, SEQUENCE=swissfel, RANGE=s30cb15$end,alfy=twisspor->alfy;
|
||||
!LMDIF, CALLS=1000, TOLERANCE=1.E-21;
|
||||
Simplex, CALLS=1000, TOLERANCE=1.E-21;
|
||||
ENDMATCH;
|
||||
@@ -214,76 +153,147 @@ plot,haxis=s,vaxis=y,dy,range=s30cb15$start/#e,colour=100;
|
||||
|
||||
|
||||
|
||||
|
||||
S30cb15.MKDC010.cory := 0;
|
||||
S30cb15.MKAC020.cory := 0;
|
||||
S30cb15.MKDC030.cory := 0;
|
||||
S30cb15.MKAC040.cory := 0;
|
||||
S30CB15.MKDC050.cory := 0;
|
||||
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;
|
||||
|
||||
|
||||
sarcl02.mqua210.k1=-sarcl02.mqua130.k1*0.9;
|
||||
|
||||
MATCH,SEQUENCE=swissfel,range=sarcl02$start/sarma01.mqua010,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/sarma01.mqua010,betx=bx,alfx=ax,bety=by,alfy=ay;
|
||||
|
||||
nbetx= table(twiss,sarma01$start,betx);
|
||||
nalfx=-table(twiss,sarma01$start,alfx);
|
||||
nbety= table(twiss,sarma01$start,bety);
|
||||
nalfy=-table(twiss,sarma01$start,alfy);
|
||||
|
||||
|
||||
|
||||
|
||||
MATCH,SEQUENCE=swissfel,range=S30SY01$start/sarma01.mqua010,beta0=twisspor;
|
||||
!--------------------------------------------------
|
||||
! Match ecol
|
||||
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
|
||||
! energy collimator
|
||||
if (ECOLasBC ==0.) {
|
||||
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;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
!---------------------------------
|
||||
! match into energy collimator
|
||||
! reference point is sarma01-mqua010
|
||||
|
||||
|
||||
sarcl01.mqua020.k1 := 0.4550820417;
|
||||
sarcl01.mqua050.k1 := -0.02350776516;
|
||||
sarcl01.mqua080.k1 := -0.3705426893;
|
||||
sarcl01.mqua100.k1 := 0.3937186328;
|
||||
sarcl01.mqua140.k1 := 1.214406656;
|
||||
sarcl01.mqua190.k1 := -1.475278354;
|
||||
|
||||
|
||||
use,sequence=swissfel;
|
||||
MATCH,SEQUENCE=swissfel,range=s20SY02$start/sarma02$start,beta0=twisssep;
|
||||
VARY,NAME=sarcl01.mqua020.k1,STEP=0.0001;
|
||||
VARY,NAME=sarcl01.mqua050.k1,STEP=0.0001;
|
||||
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=sarcl01.mqua080,betx=beta;
|
||||
!CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua080,alfx=alpha;
|
||||
!CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua080,bety=beta;
|
||||
!CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua080,alfy=alpha;
|
||||
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl02$start,betx=nbetx;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl02$start,alfx=nalfx;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl02$start,bety=nbety;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl02$start,alfy=nalfy;
|
||||
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;
|
||||
|
||||
|
||||
|
||||
twiss,sequence=swissfel,range=s20SY02$start/sarcl01$start,beta0=twisssep;
|
||||
plot,haxis=s,vaxis=betx,bety,range=S30CB15$START/SARCL02$END,colour=100;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
!-----------------
|
||||
muAR=0.17;
|
||||
match,SEQUENCE=swissfel,range=sarun02$start/sarun03$end;
|
||||
Vary,name=sarun02.mqua080.k1,step=0.0001;
|
||||
@@ -342,9 +352,20 @@ CONSTRAINT,SEQUENCE=swissfel,range=sarun02$start,x<5;
|
||||
LMDIF,CALLS=100,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
! from eduard
|
||||
SARUN18.MQUA080.K1= -6.305232722687153e-01;
|
||||
SARUN19.MQUA080.K1= 1.167256186348939e+00;
|
||||
SARUN20.mqua220.K1= 8.363412365675689e-01;
|
||||
SARBD01.MQUA010.K1= -2.099999992065428e+00;
|
||||
SARBD01.MQUA020.K1= -2.099998228837625e+00;
|
||||
SARBD02.MQUA030.K1= -2.099998942347312e+00;
|
||||
|
||||
!The matching routine imposes bx=50 and ax=0 at the TDS,
|
||||
!sin(mux)~1 between the TDS and the dump screen,
|
||||
!and minimization of by/dispy^2 at the dump screen.
|
||||
!I find a solution fulfilling the conditions with by=1.136313m and dispy= 2.534262e-01 m at the screen.
|
||||
|
||||
twiss,SEQUENCE=swissfel,range=#s/sarun19$end,beta0=twiss0;
|
||||
twiss,SEQUENCE=swissfel,range=#s/sarbd02.dscr050$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;
|
||||
|
||||
|
||||
@@ -46,27 +46,28 @@ 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=-0.7;
|
||||
|
||||
|
||||
satsy01.mqua040.k1=0.7;
|
||||
|
||||
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/satsy02$end,beta0=twisssep;
|
||||
VARY,NAME=satsy01.mqua010.k1,STEP=0.0001;
|
||||
VARY,NAME=satsy01.mqua020.k1,STEP=0.0001;
|
||||
VARY,NAME=satsy01.mqua030.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;
|
||||
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
||||
JACOBIAN,CALLS=1000,TOLERANCE=1.e-21;
|
||||
SIMPLEX,CALLS=1000,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
|
||||
|
||||
|
||||
twiss,SEQUENCE=swissfel,range=s20sy02$start/Satsy02.mbnd200,beta0=twisssep;
|
||||
twiss,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;
|
||||
|
||||
@@ -74,24 +75,25 @@ plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100;
|
||||
|
||||
|
||||
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep;
|
||||
VARY,NAME=satsy03.mqua110.k1,STEP=0.0001;
|
||||
VARY,NAME=satsy03.mqua120.k1,STEP=0.0001;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mbnd200,DX=0.0;
|
||||
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
L = 38-9.8+6.25;
|
||||
satsy02.mqua210.k1=1;
|
||||
satsy02.mqua230.k1=0;
|
||||
satsy02.mqua240.k1=0;
|
||||
satsy02.mqua260.k1=0;
|
||||
|
||||
alpha=1.0;
|
||||
beta = L*alpha;
|
||||
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep;
|
||||
VARY,NAME=satsy02.mqua205.k1,STEP=0.0001;
|
||||
VARY,NAME=satsy02.mqua210.k1,STEP=0.0001;
|
||||
VARY,NAME=satsy02.mqua220.k1,STEP=0.0001;
|
||||
VARY,NAME=satsy02.mqua230.k1,STEP=0.0001;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua230,betx=beta;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua230,bety=beta;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua230,alfx=alpha;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua230,alfy=alpha;
|
||||
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;
|
||||
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
@@ -99,13 +101,13 @@ ENDMATCH;
|
||||
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.mqua320.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.mqua110,betx=5;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua110,bety=4;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua110,alfx=1.77;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua110,alfy=-1.04;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua120,betx=twissAT2->BETX;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua120,bety=twissAT2->BETY;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua120,alfx=twissAT2->ALFX;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua120,alfy=twissAT2->ALFY;
|
||||
|
||||
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
@@ -115,12 +117,12 @@ 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;
|
||||
|
||||
|
||||
exit;
|
||||
|
||||
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satbc01$end,beta0=twisssep;
|
||||
VARY,NAME=satsy03.mqua210.k1,STEP=0.0001;
|
||||
VARY,NAME=satsy03.mqua220.k1,STEP=0.0001;
|
||||
VARY,NAME=satsy03.mqua310.k1,STEP=0.0001;
|
||||
VARY,NAME=satsy03.mqua410.k1,STEP=0.0001;
|
||||
VARY,NAME=satsy03.mqua430.k1,STEP=0.0001;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satbc01.mbnd400,BETX<5;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satbc01.mbnd400,BETY<60;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satbc01.mbnd100,BETX<80;
|
||||
@@ -149,9 +151,9 @@ ENDMATCH;
|
||||
|
||||
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satcl01$end,beta0=twisssep;
|
||||
VARY,NAME=satbc01.mqua410.k1,STEP=0.0001;
|
||||
VARY,NAME=satbc01.mqua420.k1,STEP=0.0001;
|
||||
VARY,NAME=satbc01.mqua430.k1,STEP=0.0001;
|
||||
VARY,NAME=satbc01.mqua440.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;
|
||||
@@ -162,8 +164,8 @@ ENDMATCH;
|
||||
|
||||
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<18;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satdi01.dscr065$start, bety<18;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satdi01.dscr065$start, betx<19;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satdi01.dscr065$start, bety<19;
|
||||
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
@@ -174,19 +176,6 @@ plot,haxis=s,vaxis=re56,range=#s/#e,colour=100;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
scl:=1.5;
|
||||
ss:=0.83;
|
||||
|
||||
@@ -210,10 +199,10 @@ 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=beta;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,alfx=alpha;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,bety=beta;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,alfy=alpha;
|
||||
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;
|
||||
@@ -298,13 +287,10 @@ 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;
|
||||
@@ -313,14 +299,6 @@ 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;
|
||||
@@ -329,10 +307,10 @@ 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.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;
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
! reg filter for updated variables
|
||||
updateInjector := "S[I1].*k1;S20SY01.*k1";
|
||||
|
||||
! into laser heater
|
||||
|
||||
|
||||
sinlh01.mqua020.k1 = 0;
|
||||
sinlh01.mqua040.k1 = 0;
|
||||
sinlh01.mqua070.k1 = 0;
|
||||
sinsb03.mqua130.k1 = 0;
|
||||
sinsb03.mqua230.k1 = 0;
|
||||
|
||||
L = 8.72;
|
||||
alpha = 1;
|
||||
@@ -25,10 +18,10 @@ VARY,NAME=sinsb03.MQUA230.k1,STEP=0.0001;
|
||||
VARY,NAME=sinsb04.MQUA130.k1,STEP=0.0001;
|
||||
VARY,NAME=sinsb04.MQUA230.k1,STEP=0.0001;
|
||||
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua230$end, alfx = alpha;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua230$end, alfy = alpha;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua230$end, betx = beta;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua230$end, bety = beta;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua230$end, alfx = TwissM1->ALFX;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua230$end, alfy = TwissM1->ALFY;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua230$end, betx = TwissM1->BETX;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua230$end, bety = TwissM1->BETY;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua130$end, betx < 100;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua130$end, bety < 100;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sinlh01.mqua070$end, betx < 100;
|
||||
@@ -37,11 +30,7 @@ LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
||||
SIMPLEX,CALLS=1000,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
sinbc01.mqua020.k1=0.0;
|
||||
sinbc01.mqua050.k1=0;
|
||||
sinbc01.mqua070.k1=0;
|
||||
sinbc01.mqua090.k1=0;
|
||||
sinbc01.mqua110.k1=0;
|
||||
|
||||
|
||||
twiss,SEQUENCE=swissfel,range=#s/sinbc01$end,beta0 = Twiss0;
|
||||
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
||||
@@ -64,27 +53,7 @@ twiss,SEQUENCE=swissfel,range=#s/sinbc02$end,beta0 = Twiss0;
|
||||
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
||||
|
||||
sinma01.mqua020.k1=-0.1;
|
||||
sinma01.mqua030.k1=0;
|
||||
sinma01.mqua050.k1=0;
|
||||
sincb01.mqua230.k1=0;
|
||||
sincb01.mqua430.k1=0;
|
||||
|
||||
|
||||
sindi01.mqua020.k1=0;
|
||||
sindi01.mqua070.k1=0;
|
||||
|
||||
sindi02.mqua020.k1=0.0;
|
||||
sindi02.mqua030.k1=0.0;
|
||||
sindi02.mqua050.k1=0;
|
||||
sindi02.mqua060.k1=0;
|
||||
sindi02.mqua090.k1=0;
|
||||
|
||||
bc1betx=11.1557;
|
||||
bc1alfx=-1.17;
|
||||
bc1bety=50;
|
||||
bc1alfy=0;
|
||||
|
||||
beta=50;
|
||||
MATCH,SEQUENCE=SwissFEL,range=#s/sindi02$end,beta0 = Twiss0;
|
||||
VARY,NAME=sinma01.MQUA020.k1,STEP=0.0001;
|
||||
VARY,NAME=sinma01.MQUA030.k1,STEP=0.0001;
|
||||
@@ -93,10 +62,10 @@ VARY,NAME=sincb01.MQUA230.k1,STEP=0.0001;
|
||||
VARY,NAME=sincb01.MQUA430.k1,STEP=0.0001;
|
||||
VARY,NAME=sindi01.mqua020.k1,STEP=0.0001,lower=-3.5,upper=3.5;
|
||||
VARY,NAME=sindi01.mqua070.k1,STEP=0.0001,lower=-3.5,upper=3.5;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sindi02.mqua020$start,bety=bc1bety;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sindi02.mqua020$start,alfy=bc1alfy;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sindi02.mqua020$start,betx=bc1betx;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sindi02.mqua020$start,alfx=bc1alfx;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sindi02.mqua020$start,bety=TwissM2->BETY;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sindi02.mqua020$start,alfy=TwissM2->ALFY;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sindi02.mqua020$start,betx=TwissM2->BETX;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sindi02.mqua020$start,alfx=TwissM2->ALFX;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sinma01$end, betx < 100;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sinma01$end, bety < 100;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range=sincb01$end, betx < 100;
|
||||
@@ -110,28 +79,28 @@ twiss,SEQUENCE=swissfel,range=#s/sindi02$end,beta0 = Twiss0;
|
||||
plot,haxis=s,vaxis=betx,bety,range=sinbc02$start/#e,colour=100;
|
||||
|
||||
|
||||
s10cb01.mqua230.k1=0.2;
|
||||
s10cb01.mqua430.k1=-0.2;
|
||||
s10cb02.mqua230.k1=0.2;
|
||||
s10cb02.mqua430.k1=-0.2;
|
||||
|
||||
muLin1=0.2;
|
||||
|
||||
match,SEQUENCE=swissfel,range=S10cb01$start/s10cb01$end;
|
||||
Vary,name=S10CB01.MQUA230.k1,step=0.0001;
|
||||
Vary,name=S10CB01.MQUA430.k1,step=0.0001;
|
||||
constraint,sequence=swissfel,range=s10cb01$end,mux=muLin1;
|
||||
constraint,sequence=swissfel,range=s10cb01$end,muy=muLin1;
|
||||
match,SEQUENCE=swissfel,range=S10cb02$start/s10cb02$end;
|
||||
Vary,name=S10CB02.MQUA230.k1,step=0.0001;
|
||||
Vary,name=S10CB02.MQUA430.k1,step=0.0001;
|
||||
constraint,sequence=swissfel,range=s10cb02$end,mux=muLin1;
|
||||
constraint,sequence=swissfel,range=s10cb02$end,muy=muLin1;
|
||||
lmdif,calls=100,tolerance=1e-21;
|
||||
endmatch;
|
||||
|
||||
s10cb02.mqua230.k1 = s10cb01.mqua230.k1;
|
||||
s10cb02.mqua430.k1 = s10cb01.mqua430.k1;
|
||||
s10cb01.mqua230.k1 = s10cb02.mqua230.k1;
|
||||
s10cb01.mqua430.k1 = s10cb02.mqua430.k1;
|
||||
|
||||
twiss,SEQUENCE=swissfel,range=s10cb01$start/s10cb01$end;
|
||||
twiss,SEQUENCE=swissfel,range=s10cb02$start/s10cb02$end;
|
||||
|
||||
nbetx=table(twiss,s10cb01$end,betx);
|
||||
nalfx=table(twiss,s10cb01$end,alfx);
|
||||
nbety=table(twiss,s10cb01$end,bety);
|
||||
nalfy=table(twiss,s10cb01$end,alfy);
|
||||
nbetx=table(twiss,s10cb02$end,betx);
|
||||
nalfx=table(twiss,s10cb02$end,alfx);
|
||||
nbety=table(twiss,s10cb02$end,bety);
|
||||
nalfy=table(twiss,s10cb02$end,alfy);
|
||||
plot,haxis=s,vaxis=betx,bety,colour=100;
|
||||
|
||||
|
||||
@@ -178,33 +147,24 @@ S10CB10.MQUA430.k1=S10CB02.MQUA230.k1;
|
||||
S10CB11.MQUA230.k1=S10CB02.MQUA430.k1;
|
||||
|
||||
|
||||
|
||||
|
||||
twiss,SEQUENCE=swissfel,range=#s/s10cb10$end,beta0 = Twiss0;
|
||||
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
||||
|
||||
|
||||
s20sy01.mqua010.k1:=0;
|
||||
s20sy01.mqua020.k1:=0;
|
||||
s20sy01.mqua030.k1:=0;
|
||||
s20sy01.mqua040.k1:=0;
|
||||
|
||||
|
||||
MATCH,SEQUENCE=SwissFEL,range=#s/s20sy02$start,beta0 = Twiss0;
|
||||
VARY,NAME=s20sy01.mqua010.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
||||
VARY,NAME=s20sy01.mqua020.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
||||
VARY,NAME=s20sy01.mqua060.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
||||
VARY,NAME=s20sy01.mqua030.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
||||
VARY,NAME=s20sy01.mqua040.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
||||
!VARY,NAME=s20sy01.mqua080.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,betx=10;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,alfx=-0.2;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,bety=15;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,alfy=1;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,betx=twisssep->BETX;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,alfx=twisssep->ALFX;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,bety=twisssep->BETY;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,alfy=twisssep->ALFY;
|
||||
!CONSTRAINT,SEQUENCE=swissfel,range=s20sy01.mqua020$end,bety<80;
|
||||
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
!Twisssep: beta0,betx=20,alfx=-0.5,bety=15,alfy=1;
|
||||
|
||||
twiss,SEQUENCE=swissfel,range=#s/s20sy01$end,beta0 = Twiss0;
|
||||
plot,haxis=s,vaxis=betx,bety,range=s10cb08$start/#e,colour=100;
|
||||
|
||||
@@ -57,9 +57,9 @@ class MatchMaker:
|
||||
def match(self, om, variables = None, Injector=True, Athos = True, Aramis = False, Porthos = False):
|
||||
|
||||
if Athos:
|
||||
target = 'SATBD01'
|
||||
target = 'SATBD02'
|
||||
else:
|
||||
target = 'SARBD01'
|
||||
target = 'SARBD02'
|
||||
|
||||
f = io.StringIO()
|
||||
madx = CMadX(f)
|
||||
|
||||
41
model.py
41
model.py
@@ -305,3 +305,44 @@ class Model:
|
||||
return start,end
|
||||
|
||||
|
||||
########################################3
|
||||
def checkMagnetLimit(self):
|
||||
# using magnet calibration
|
||||
quad={}
|
||||
quad['QFA'] = [0.15, 0.173, 150.0, 91.1, 0.0, 0.74521, -0.00813, -0.03542,
|
||||
22.5e-3] # From MEASUREMENT. Documentation: https://intranet.psi.ch/pub/Swiss_FEL/FinQuadrupoles/QFA.pdf
|
||||
quad['QFB'] = [0.08, 0.11, 10.0, 4.9, 0.0, 0.03815, -1.8e-4, -0.7e-3,
|
||||
22.5e-3] # From MEASUREMENT(?). Documentation(Implementaion): the matlab version Injector on-line model, Curr2KLquad.m
|
||||
quad['QFC'] = [0.08, 0.11, 10.0, 10.1, 0.0, 0.5, 0.0, 0.0,
|
||||
1.0] # From DESIGN(?). Documentation: Injector wiki, Subsystems (as of 14th Aug 2014)
|
||||
quad['QFD'] = [0.15, 0.1628, 10.0, 5.6, 0.0, 0.23313, -27.6e-4, 15.5e-4,
|
||||
0.011] # From Measurement. Documentation: FEL-SS88-007-7.pdf (found in Alfresco: Company Home > Projects > SwissFEL > Facility > 8850 Magnets)
|
||||
quad['QFF'] = [0.08, 0.0875, 10.0, 2.9, 0.0, 0.32897, -0.5e-4, -42.9e-4,
|
||||
0.006] # From Measurement. Documentation: FEL-SS88-008-8.pdf (found in Alfresco)
|
||||
quad['QFM'] = [0.3, 0.311, 50.0, 21.1, 0.0, 0.64541, -0.00296, -0.00617, 0.011] # From Measurement
|
||||
|
||||
k1brho={}
|
||||
for key in quad.keys():
|
||||
[PhysicalLength, MagneticLength, Imax, Ilin, b0, b1, b2, b3, R] = quad[key] # quick conversion for quadrupoles and sextupoles
|
||||
if abs(Imax) < Ilin:
|
||||
B = b0 + b1
|
||||
else:
|
||||
B = b0 + b1 + b2 +b3
|
||||
k1brho[key]= B * MagneticLength/R/PhysicalLength
|
||||
#k1 = val/brho
|
||||
|
||||
elements=self.getElements()
|
||||
print('Relative Magnet Strength')
|
||||
for ele in elements:
|
||||
if 'MQUA' in ele.Name.upper():
|
||||
bg = ele.Baugruppe
|
||||
Energy = self.om.EnergyAt(ele.Name)[0]*1e-6
|
||||
gamma = (Energy + 0.511) / 0.511 # Energy in units of MeV since 29.06.2015
|
||||
beta = np.sqrt(1 - 1 / gamma ** 2)
|
||||
p = 511e3 * beta * gamma / 1e9 # momentum in GeV/c
|
||||
brho = p / 0.299792 # P[GeV/c]=0.3*Brho[T.m]
|
||||
if bg in k1brho.keys():
|
||||
k1max=k1brho[bg]/brho
|
||||
rat=np.abs(ele.k1/k1max)*100.
|
||||
print('%s: %5.1f (percent)' % (ele.Name.replace('.','-'),rat))
|
||||
|
||||
|
||||
@@ -356,9 +356,9 @@ class Ui_OpticsGUI(object):
|
||||
self.UIInitAllMagnets = QtWidgets.QCheckBox(self.widget)
|
||||
self.UIInitAllMagnets.setObjectName("UIInitAllMagnets")
|
||||
self.verticalLayout_3.addWidget(self.UIInitAllMagnets)
|
||||
self.UIModifyKnobs = QtWidgets.QCheckBox(self.widget)
|
||||
self.UIModifyKnobs.setObjectName("UIModifyKnobs")
|
||||
self.verticalLayout_3.addWidget(self.UIModifyKnobs)
|
||||
self.UIReportMatchStrength = QtWidgets.QCheckBox(self.widget)
|
||||
self.UIReportMatchStrength.setObjectName("UIReportMatchStrength")
|
||||
self.verticalLayout_3.addWidget(self.UIReportMatchStrength)
|
||||
self.label_19 = QtWidgets.QLabel(self.widget)
|
||||
font = QtGui.QFont()
|
||||
font.setBold(True)
|
||||
@@ -366,6 +366,9 @@ class Ui_OpticsGUI(object):
|
||||
self.label_19.setFont(font)
|
||||
self.label_19.setObjectName("label_19")
|
||||
self.verticalLayout_3.addWidget(self.label_19)
|
||||
self.UIModifyKnobs = QtWidgets.QCheckBox(self.widget)
|
||||
self.UIModifyKnobs.setObjectName("UIModifyKnobs")
|
||||
self.verticalLayout_3.addWidget(self.UIModifyKnobs)
|
||||
self.UIMatchKnobs = QtWidgets.QTableWidget(self.widget)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Expanding)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
@@ -657,8 +660,9 @@ class Ui_OpticsGUI(object):
|
||||
self.UIMatchAramis.setText(_translate("OpticsGUI", "Aramis"))
|
||||
self.UISaveMatchSettings.setText(_translate("OpticsGUI", "Save matched machine settings automtically"))
|
||||
self.UIInitAllMagnets.setText(_translate("OpticsGUI", "Initialize all magnets to zero before matching"))
|
||||
self.UIModifyKnobs.setText(_translate("OpticsGUI", "Overwrite default values for matching variables "))
|
||||
self.UIReportMatchStrength.setText(_translate("OpticsGUI", "Report matched quadrupole strength"))
|
||||
self.label_19.setText(_translate("OpticsGUI", "Matching Variables"))
|
||||
self.UIModifyKnobs.setText(_translate("OpticsGUI", "Overwrite default values for matching variables "))
|
||||
item = self.UIMatchKnobs.horizontalHeaderItem(0)
|
||||
item.setText(_translate("OpticsGUI", "Parameter"))
|
||||
item = self.UIMatchKnobs.horizontalHeaderItem(1)
|
||||
|
||||
@@ -582,9 +582,9 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="UIModifyKnobs">
|
||||
<widget class="QCheckBox" name="UIReportMatchStrength">
|
||||
<property name="text">
|
||||
<string>Overwrite default values for matching variables </string>
|
||||
<string>Report matched quadrupole strength</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -601,6 +601,13 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="UIModifyKnobs">
|
||||
<property name="text">
|
||||
<string>Overwrite default values for matching variables </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTableWidget" name="UIMatchKnobs">
|
||||
<property name="sizePolicy">
|
||||
|
||||
Reference in New Issue
Block a user