New lattice 11.0.3 to try to solve the conflict of the bunch compressor BC2 with the switchyard extraction.
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 5s
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 5s
This commit is contained in:
@@ -7,9 +7,9 @@ alphay0=0;
|
||||
|
||||
Twiss0: beta0,betx=betax0,alfy=alphay0,bety=betay0,alfy=alphay0;
|
||||
|
||||
Twisssep: beta0,betx=40,alfx=0,bety=60,alfy=5;
|
||||
|
||||
!Twisssep: beta0,betx=40,alfx=0,bety=60,alfy=5;
|
||||
|
||||
Twisssep: beta0,betx=10,alfx=-0.2,bety=15,alfy=1;
|
||||
|
||||
|
||||
y_sep=0.01;
|
||||
@@ -54,14 +54,16 @@ S20SY02.MKAC040.c1:= SYKICK*3;
|
||||
S20SY02.MKDC050.c1:= SYKICK*2;
|
||||
|
||||
|
||||
s20bc01.mqua010.k1:=1.;
|
||||
|
||||
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/s20bc02$end,beta0=twisssep;
|
||||
VARY,NAME=s20bc01.mqua010.k1,STEP=0.0001;
|
||||
VARY,NAME=s20bc01.mqua030.k1,STEP=0.0001;
|
||||
VARY,NAME=s20bc01.mqua050.k1,STEP=0.0001;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= s20bc02$end,betx<3;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= s20bc02$end,bety<100;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= s20bc01$end,betx<150;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= s20bc01$end,bety<50;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= s20bc02$end,betx<4;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= s20bc02$end,bety<90;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= s20bc01$end,betx<250;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= s20bc01$end,bety<20;
|
||||
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
@@ -69,6 +71,7 @@ twiss,SEQUENCE=swissfel,range=s20sy02$start/S20BC02$END,beta0=twisssep;
|
||||
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
||||
|
||||
|
||||
|
||||
muLin3=0.2;
|
||||
pol = 1;
|
||||
s20cb01.mqua430.k1=0.5*pol;
|
||||
|
||||
@@ -5,12 +5,13 @@ betay0=10;
|
||||
alphay0=0;
|
||||
|
||||
Twiss0: beta0,betx=betax0,alfy=alphay0,bety=betay0,alfy=alphay0;
|
||||
Twisssep: beta0,betx=40,alfx=0,bety=60,alfy=5;
|
||||
!Twisssep: beta0,betx=40,alfx=0,bety=60,alfy=5;
|
||||
Twisssep: beta0,betx=10,alfx=-0.2,bety=15,alfy=1;
|
||||
|
||||
y_sep=0.01;
|
||||
py_sep=0.0;
|
||||
dy_sep=-y_sep;
|
||||
dpy_sep=-py_sep;
|
||||
!dy_sep=-y_sep;
|
||||
!dpy_sep=-py_sep;
|
||||
|
||||
|
||||
S20SY02.MKDC010.cory := SYKICK*2;
|
||||
@@ -48,13 +49,14 @@ 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.mqua040.k1=0.8;
|
||||
|
||||
satsy01.mqua040.k1=0.7;
|
||||
|
||||
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/satsy02$end,beta0=twisssep;
|
||||
VARY,NAME=satsy01.mqua010.k1,STEP=0.0001;
|
||||
@@ -71,6 +73,8 @@ LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
|
||||
|
||||
|
||||
twiss,SEQUENCE=swissfel,range=s20sy02$start/Satsy02.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;
|
||||
@@ -84,9 +88,9 @@ CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mbnd200,DX=0.0;
|
||||
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
||||
ENDMATCH;
|
||||
|
||||
L = 38-9.8;
|
||||
L = 38-9.8+6.25;
|
||||
|
||||
alpha=1.05;
|
||||
alpha=1.0;
|
||||
beta = L*alpha;
|
||||
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep;
|
||||
VARY,NAME=satsy02.mqua205.k1,STEP=0.0001;
|
||||
@@ -122,7 +126,6 @@ plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100;
|
||||
|
||||
|
||||
|
||||
|
||||
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satbc01$end,beta0=twisssep;
|
||||
VARY,NAME=satsy03.mqua210.k1,STEP=0.0001;
|
||||
VARY,NAME=satsy03.mqua310.k1,STEP=0.0001;
|
||||
|
||||
@@ -189,20 +189,28 @@ 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.mqua005.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
||||
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.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;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,betx=40;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,alfx=0;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,bety=60;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,alfy=5;
|
||||
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01.mqua020$end,bety<80;
|
||||
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.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;
|
||||
|
||||
@@ -10,7 +10,8 @@ def match(athos=True):
|
||||
if athos:
|
||||
target='SATBD01'
|
||||
else:
|
||||
target='SARBD01'
|
||||
target='SARUN20'
|
||||
print(target)
|
||||
om.setBranch(target, 'SINLH01')
|
||||
madx = CMadX()
|
||||
madx.E0 = 2000
|
||||
|
||||
@@ -312,10 +312,17 @@ import math
|
||||
# 5) Extended after burner in Aramis to 3 elements
|
||||
# 6) Added collimator spoilers in Athos
|
||||
|
||||
# Layout 11.0.3
|
||||
# Solving conflicts in SF+
|
||||
# 1) Moved switchyard extraction 6.25 m upstream while keeping BC2 position the same
|
||||
# 2) Extended drift in SATSY02 by 6.25 m
|
||||
# 3) Add space between septum and the quadrupoles for matching into Linac 2
|
||||
# 4) Replaced X-band cavities in SATSY with C-band cavities
|
||||
|
||||
class SwissFEL:
|
||||
def __init__(self,alt=0):
|
||||
self.alt=alt
|
||||
self.Version='11.0.2'
|
||||
self.Version='11.0.3'
|
||||
|
||||
def Types(self,TM):
|
||||
# type definitions for the SwissFEL lattice
|
||||
@@ -1299,11 +1306,10 @@ class SwissFEL:
|
||||
SY02.append(TM.generate('MKBR', 201), 0., 'relative')
|
||||
else:
|
||||
SY01 = LineContainer('SY01', -0.2)
|
||||
SY01.append(TM.generate('QFD', 5), 0.2, 'relative')
|
||||
SY01.append(TM.generate('QFD', 20), 3-0.25, 'relative')
|
||||
SY01.append(TM.generate('QFD', 30), 3-0.25, 'relative')
|
||||
SY01.append(TM.generate('QFD', 50), 3-0.25, 'relative')
|
||||
SY01.append(TM.generate('QFD', 80), 4-0.25, 'relative')
|
||||
SY01.append(TM.generate('QFD', 10), 0.2, 'relative')
|
||||
SY01.append(TM.generate('QFD', 20), 2, 'relative')
|
||||
SY01.append(TM.generate('QFD', 30), 2, 'relative')
|
||||
SY01.append(TM.generate('QFD', 40), 2, 'relative')
|
||||
|
||||
SY02 = LineContainer('SY02', -0.7502)
|
||||
SY02.append(TM.generate('RESKICKAC', 5, {'design_kick': 0}), 0.285, 'relative')
|
||||
@@ -1346,10 +1352,10 @@ class SwissFEL:
|
||||
SY03.append(TM.generate('QFD',100),0.053,'relative')
|
||||
else:
|
||||
BC01 = LineContainer('BC01', -0.5)
|
||||
BC01.append(TM.generate('QFD', 10), 3.5, 'relative')
|
||||
BC01.append(TM.generate('DBPM-C16', 20), 0.2, 'relative')
|
||||
BC01.append(TM.generate('QFD', 10), 3.5+2.25, 'relative')
|
||||
BC01.append(TM.generate('DBPM-C16', 20), 0.2+2, 'relative')
|
||||
BC01.append(TM.generate('QFD', 30), 1.2, 'relative')
|
||||
BC01.append(TM.generate('DBPM-C16', 40), 2.5-0.985-0.3, 'relative')
|
||||
BC01.append(TM.generate('DBPM-C16', 40), 2.5-0.985-0.3+2, 'relative')
|
||||
BC01.append(TM.generate('QFD', 50), 0.2, 'relative')
|
||||
|
||||
BC02 = LineContainer('BC02', -0.521)
|
||||
@@ -1689,17 +1695,19 @@ class SwissFEL:
|
||||
if self.alt == 2:
|
||||
SY01 = LineContainer('SY01', 0)
|
||||
SY01.append(Alignment({'dy': 0.01, 'Tag': 'ALIG', 'index': 1}))
|
||||
SY01.append(TM.generate('QFM-veryshort', 10), 4, 'relative') # before BPM, after, Sex, Qsk, cor
|
||||
SY01.append(TM.generate('QFM-veryshort', 20), 4, 'relative') # before BPM, after cor
|
||||
SY01.append(TM.generate('QFM-veryshort', 30), 2.5, 'relative') # before BPM, after Sex,Qsk,cor
|
||||
SY01.append(TM.generate('QFM-veryshort', 40), 2.5, 'relative') # before BPM, magnet is QFD.
|
||||
dx=0.5
|
||||
dy=-0.5
|
||||
SY01.append(TM.generate('QFM-veryshort', 10), 4+dx, 'relative') # before BPM, after, Sex, Qsk, cor
|
||||
SY01.append(TM.generate('QFM-veryshort', 20), 4-dx, 'relative') # before BPM, after cor
|
||||
SY01.append(TM.generate('QFM-veryshort', 30), 2.5+dy, 'relative') # before BPM, after Sex,Qsk,cor
|
||||
SY01.append(TM.generate('QFM-veryshort', 40), 2.5-dy, 'relative') # before BPM, magnet is QFD.
|
||||
# saftety copy
|
||||
# SY01.append(TM.generate('QFM-veryshort', 10), 4, 'relative') # before BPM, after, Sex, Qsk, cor
|
||||
# SY01.append(TM.generate('QFM-veryshort', 20), 4, 'relative') # before BPM, after cor
|
||||
# SY01.append(TM.generate('QFM-veryshort', 30), 2.5, 'relative') # before BPM, after Sex,Qsk,cor
|
||||
# SY01.append(TM.generate('QFM-veryshort', 40), 2.5, 'relative') # before BPM, magnet is QFD.
|
||||
SY01.append(TM.generate('AFBC3-noCor', 100, {'angle': -2, 'design_angle': -2, 'e1': 1, 'e2': 0., 'BC': 'Switch Yard 1'}), 0.3,'relative')
|
||||
SY02 = LineContainer('SY02', 66-1.7555-6.3852-9.8)
|
||||
SY02 = LineContainer('SY02', 66-1.7555-6.3852-9.8+6.25)
|
||||
SY02.append(TM.generate('QFM-veryshort', 10), 0.3, 'relative')
|
||||
SY02.append(TM.generate('AFL', 100,{'angle': 0.57, 'design_angle': 0.57, 'e1': 0, 'e2': 1., 'Tilt': math.asin(1)}),0.3, 'relative')
|
||||
SY02.append(TM.generate('AFL', 200,{'angle': -0.57, 'design_angle': -0.57, 'e1': 1, 'e2': 0., 'Tilt': math.asin(1)}),0.8, 'relative')
|
||||
@@ -1707,7 +1715,7 @@ class SwissFEL:
|
||||
SY02.append(TM.generate('QFM-veryshort', 210), 1.5, 'relative')
|
||||
SY02.append(TM.generate('QFM-veryshort', 220), 4.5, 'relative')
|
||||
SY02.append(TM.generate('QFM-veryshort', 230), 1.5, 'relative')
|
||||
SY02.append(TM.generate('QFM-veryshort', 300), 38-9.8, 'relative')
|
||||
SY02.append(TM.generate('QFM-veryshort', 300), 38-9.8+6.25, 'relative')
|
||||
SY02.append(TM.generate('QFM-veryshort', 310), 1.5, 'relative')
|
||||
SY02.append(TM.generate('QFM-veryshort', 320), 4.5-1, 'relative')
|
||||
SY02.append(TM.generate('QFM-veryshort', 330), 1.5+1., 'relative')
|
||||
@@ -1717,15 +1725,15 @@ class SwissFEL:
|
||||
SY03.append(TM.generate('QFM-veryshort', 110), 3.5, 'relative')
|
||||
SY03.append(TM.generate('AFBC3-noCor', 200,{'angle': 2.5, 'design_angle': 2.5, 'e1': 1, 'e2': 0., 'BC': 'Switch Yard 2'}), 3.5,'relative')
|
||||
SY03.append(TM.generate('QFM-veryshort', 210), 0.5, 'relative')
|
||||
SY03.append(TM.generate('TW Cav X-Band',300),0.4,'relative')
|
||||
SY03.append(TM.generate('QFM-veryshort', 310), 2-0.4-0.965, 'relative')
|
||||
SY03.append(TM.generate('TW Cav X-Band', 400), 0.4, 'relative')
|
||||
SY03.append(TM.generate('QFM-veryshort', 410), 2-0.4-0.965, 'relative')
|
||||
SY03.append(TM.generate('TW Cav C-Band',300),0.1,'relative')
|
||||
SY03.append(TM.generate('QFM-veryshort', 310), 3.-0.4-0.965-0.785, 'relative')
|
||||
SY03.append(TM.generate('TW Cav C-Band', 400), 0.1, 'relative')
|
||||
SY03.append(TM.generate('QFM-veryshort', 410), 3.-0.4-0.965-0.785, 'relative')
|
||||
|
||||
BC01 = LineContainer('BC01',-0.2)
|
||||
angAT=0.5
|
||||
|
||||
varSYBC = VariableContainer(6, 0)
|
||||
varSYBC = VariableContainer(5, 0)
|
||||
BC01.append(TM.generate('AFBC3-noCor', 100,{'angle': -angAT, 'design_angle': -angAT, 'e1': 1, 'e2': 0., 'BC': 'Switch Yard 3'}), 0.5,'relative')
|
||||
BC01.append(TM.generate('AFBC3-noCor', 200,{'angle': angAT, 'design_angle': angAT, 'e1': 0, 'e2': 1., 'BC': 'Switch Yard 3'}), 0,varSYBC)
|
||||
BC01.append(TM.generate('AFBC3-noCor', 300,{'angle': angAT, 'design_angle': angAT, 'e1': 1, 'e2': 0., 'BC': 'Switch Yard 3'}), 0.5-0.2,'relative')
|
||||
|
||||
Reference in New Issue
Block a user