diff --git a/Matching/matchAramis.madx b/Matching/matchAramis.madx index b0dec52..94363cd 100644 --- a/Matching/matchAramis.madx +++ b/Matching/matchAramis.madx @@ -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; diff --git a/Matching/matchAthos.madx b/Matching/matchAthos.madx index 2079558..7de7167 100644 --- a/Matching/matchAthos.madx +++ b/Matching/matchAthos.madx @@ -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; diff --git a/Matching/matchInjector.madx b/Matching/matchInjector.madx index ca30019..bc5a9d3 100644 --- a/Matching/matchInjector.madx +++ b/Matching/matchInjector.madx @@ -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; diff --git a/Matching/matchLattice.py b/Matching/matchLattice.py index a14bdc6..ff1998e 100644 --- a/Matching/matchLattice.py +++ b/Matching/matchLattice.py @@ -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 diff --git a/Python_Code/onlinemodel/layout/layout.py b/Python_Code/onlinemodel/layout/layout.py index 23d020f..ea68f47 100644 --- a/Python_Code/onlinemodel/layout/layout.py +++ b/Python_Code/onlinemodel/layout/layout.py @@ -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')