HOME Prise de donnees MML Controle commande Simulations Notes Hardware Ligne X Laser Interaction Diagnostiques Synchronisation
Effets dynamiques Anneau Linac RF Codes Lattice
  Notes concernant les codes utilises (ou en projet) au DEPAC dans le cadre de ThomX.  Not logged in ThomX    logo
Message ID: 1     Entry time: Wed Nov 22 17:10:07 2017
 Author: Entered by Biagini Maria Enrica from 134.158.88.169 on Wed Nov 22 17:09:51 2017 
 Status: Fixed 
 Type: Info 
 Category: Simulations 
 Important:
 Subject: MADX file for ThomX Ring 
 Icon: icon6.gif 

MADX file for the ring. Can tune the chromaticity, compute beta, alfa and tunes versus DE/E and tunes versus particles' amplitude in X and Y. Plots the beam sizes, beta and dispersion and the H invariant in x.

If you need more plots/calculations just let me know!

Attachment 1: ThomX_21Nov17.madx  8 kB  | Hide | Hide all
TITLE,”ThomX_10/11/17 from Iryna’s AT”;

option, warn, -info, echo;
Assign, echo=ThomX.echo;

E0:= 0.05;
beam, particle= ELECTRON, EX= 5.0E-08, EY = 5.0E-08, ENERGY= E0; !, RADIATE; !for EMIT

//Length of the ring
//L0 =  17.986715999999994;


//Dipoles, fringe as AT

BEND: SBEND, L=0.296351, ANGLE= 0.785398, E1=0.0332, E2=0.0332, FINT=0.5, hgap=0.01757532; 


!sept1: SBEND, L=0.251072, ANGLE= -0.16, E1=-0.16, E2=0, FINT= 0, HGAP= 0;
!kick1: SBEND, L=0.200004, ANGLE= -0.011, E1=-0.011, E2=0, FINT= 0, HGAP= 0;
!kick2: SBEND, L=0.200004, ANGLE= -0.011, E1=0, E2=-0.011, FINT= 0, HGAP= 0;
!sept2: SBEND, L=0.251072, ANGLE= -0.16, E1=0, E2=-0.16, FINT= 0, HGAP= 0;

//Drifts

dL := (0.296233-0.27646)/2;
dL_track := (0.296351 - 0.296233)/2;
dL_quad := (0.15731-0.15)/2;

SD0: drift, l:= 0.1000000E+00-dL - dL_track; 
SD1S1B : drift, l:= 0.600000E-01 - dL_quad; 
SD1S1: drift, l:=  0.190000E+00-LSX/2;
SD1S: drift, l:=  0.7500000E-01-LSX/2 - dL_quad;
SD3S2: drift, l:= 0.1250000E+00-LSX/2 - dL - dL_track;
SD2: drift, l:= 0.2100000E+00 - 2*dL_quad;
SD31: drift, l:= 0.7537500E+00 - dL - dL_quad - dL_track;
SD5B: drift, l:= 0.74;  !!contains RF/2, old= 0.6400000E+00; 
SD5: drift, l:=  0.0600000E+00 - dL_quad;
SD3S: drift, l:=  0.7500000E-01-LSX/2 - dL_quad;
SD3S1: drift, l:= 0.1350000E+00-LSX/2 - dL_quad;
SD2SB: drift, l:= 0.4000000E-01 - dL_quad;
SD2S: drift, l:=  0.1950000E+00 - dL - dL_track;
SD5Brf: drift, l:= 0.64;  !!contains RF/2, old= 0.7400000E+00; 



//Quadrupoles

QP1: quadrupole, l=0.15731, k1= -.4861690E+01;
QP2: quadrupole, l=0.15731, k1= 0.9441459E+01;
QP3: quadrupole, l=0.15731, k1= -.1854283E+02;
QP4: quadrupole, l=0.15731, k1= 0.1646009E+02;
QP31: quadrupole, l=0.15731, k1= -.8900146E+01;
QP41: quadrupole, l=0.15731, k1= 0.5107448E+01;

//Sextupoles (flag ON or OFF)

SX_ON = 1.;
lse:=1e-06;

!”thick” sextupoles
!k2SX1 :=  -325568.10*2*SX_ON;
!k2SX2 :=  2896110.38*2*SX_ON;
!k2SX3 := -8674118.16*2*SX_ON;

!SX1: sextupole, l=lse, k2= k2SX1; 
!SX2: sextupole, l=lse, k2= k2SX2;
!SX3: sextupole, l=lse, k2= k2SX3;

!Multipole/sextupoles
!AT sextupole values result in Cx=0.1, Cy=0.14
k2SX1 := -325568.10*lse*2*SX_ON;
k2SX2 :=  2896110.38*lse*2*SX_ON;
k2SX3 := -8674118.16*lse*2*SX_ON;

!Zero chromaticity in MADX: (k2*L)
!k2sx1              =       -0.265912254 ;
!k2sx2              =        5.743932173 ;
!k2sx3              =       -17.34823632 ;

SX1: multipole, lrad=0., knl:={0,0,k2SX1,0,0};
SX2: multipole, lrad=0., knl:={0,0,k2SX2,0,0};
SX3: multipole, lrad=0., knl:={0,0,k2SX3,0,0};

value,k2SX1,K2SX2,K2SX3;

!RF Cavity (flag ON or OFF)
RF_ON := 0;
RFVOLT:= 0.3*RF_ON;
RFC:   RFCAVITY, L=0.20, VOLT:=RFVOLT, LAG=0.5, HARMON=30;

//Markers

RING.END: Marker;
SEPT: MARKER;
Inj_KICKER: MARKER;
RING.START: MARKER;
Mqp31: MARKER;
Msd1s1: MARKER;
BPMx: marker;
BPMz: marker;
IP: marker;
HCOR: marker;
VCOR: marker;
//RFC: marker;

str1: line=(SD5B, BPMx, BPMz, SD5, QP1, SD2, QP2, SD31);
str1rf: line=(SD5Brf, BPMx, BPMz, SD5, QP1, SD2, QP2, SD31);
str2: line=(SD31, QP2, SD2, QP1, SD5, BPMx, BPMz, SD5B);
str2rf: line=(SD31, QP2, SD2, QP1, SD5, BPMx, BPMz, SD5Brf);

cell1: line=(BEND, SD3S2, SX1, HCOR, VCOR, SD3S, QP31, SD3S, SX3, HCOR, VCOR, SD3S1, QP41, SD1S1B, BPMx, BPMz, SD1S1, SX2, HCOR, VCOR, SD1S, QP4, SD2, QP3, SD2SB, BPMx, BPMz, SD2S, BEND, SD0); 
cell2: line=( SD0, BEND, SD2S, BPMx, BPMz, SD2SB, QP3, SD2, QP4, SD1S, SX2, HCOR, VCOR, SD1S1, BPMx, BPMz, SD1S1B, QP41, SD3S1, SX3, HCOR, VCOR, SD3S, QP31, SD3S, SX1, HCOR, VCOR, SD3S2, BEND);

 
RING: line=(RING.START, SEPT, str1, cell1, IP, cell2, str2rf, RFC, str1rf, cell1, cell2, str2,RING.END);


use, sequence=RING;

//AT values: betx=3.455893, alfx=0.3167609E-15 , bety=2.662101,alfy=0.2883261E-15,
//dx=0.0290735, dpx=-0.1604619E-15, 

select,flag = twiss,column = name,s,betx,alfx,dx,bety,alfy;
twiss,  save, file = ThomX.twiss;

plot, table=twiss, haxis= s, vaxis1= betx,bety, vaxis2 = dx, colour= 100, file= ThomX.plots;



!-------- MADX CLASSIC MATCHING (FASTER, NOT ROBUST, CHROMA ONLY) -------

match, sequence= RING;
       vary, name=K2SX1, step=0.01;
       vary, name=K2SX2, step=0.01;
!        vary, name=K2SX3, step=0.01;
        global, sequence=RING, DQ1=0.0;
        global, sequence=RING, DQ2=0.0;
        lmdif, calls = 1000, tolerance = 1.e-21;
        migrad, calls = 1000, tolerance = 1.e-21;
ENDMATCH;
value,K2SX1,K2SX2,K2SX3;

!TWISS, SAVE;

//Adds calculation of Hx invariant and sigmas to Twiss table

select, flag = twiss,full, column = sigx,sigpx,sigy, sigpy,Hinvx;

sigx:= sqrt(beam->ex*table(twiss,betx));
sigpx:= sqrt(beam->ex/table(twiss,betx));
sigy:= sqrt(beam->ey*table(twiss,bety));
sigpy:= sqrt(beam->ey/table(twiss,bety));

Gammax:= (1+table(twiss,alfx)*table(twiss,alfx)/table(twiss,betx));

Hinvx:= Gammax*table(twiss,dx)*table(twiss,dx)+2*table(twiss,alfx)*table(twiss,dx)*table(twiss,dpx)+table(twiss,betx)*table(twiss,dpx)*table(twiss,dpx);

twiss,  save, file = ThomX.sigma;
plot, table=twiss, haxis= s, vaxis= sigx, sigy, colour= 100;
plot, table=twiss, haxis= s, vaxis= Hinvx, colour= 100;

//Note: to have the emittance calculation parameter LAG in the RF needs to be NOT zero!
EMIT;


!=======================================================================!
! (Chromatic) TWISS WITH MADX output in twiss* detuning* chroma*        !
!=======================================================================!
!/*
!**** TUNES, BETAS AND ALFAS @ SS CENTRE Vs ENERGY DEVIATION (+-2.0%)****
de_t   := 0.02;  ! scan range
DP     := -de_t; ! scan start
NMAX   =  20;    ! scan points

SAVEBETA, label=TWSSIP, place=#e;

option,-info,-warn;   ! otherwise you get redifiniton warnings
n = 1; 
create,table=twiss_end,column=DELTA_P,bx,by,ax,ay;
create,table=twiss_tune,column=DELTA_P,Qx,Qy;
while (n < NMAX+1)
{
  TWISS, DELTAP=DP;
  DELTA_P :=DP*1e2;
  bx:=table(twiss,RING.END,betx); 
  by:=table(twiss,RING.END,bety); 
  ax:=table(twiss,RING.END,alfx); 
  ay:=table(twiss,RING.END,alfy); 
  Qx:=table(twiss,RING.END,mux)-3; 
  Qy:=table(twiss,RING.END,muy)-1; 
  if(Bx > 1e-100 && By > 1e-100)
  {
   fill,table=twiss_end;
   fill,table=twiss_tune;
  }
  DP:=-de_t*(1-2/NMAX*n);
  n  = n + 1;
};

PLOT, TABLE=twiss_tune, HAXIS=DELTA_P, VAXIS1=QX, VAXIS2=QY, STYLE=100,
      symbol=4,!VMIN=0.10,0.60,VMAX=0.30,0.80,
      TITLE="Tune Vs Dp/p [%]",noversion,FILE="RING-plots";

PLOT, TABLE=twiss_end, HAXIS=DELTA_P, VAXIS1=BX, VAXIS2=BY, STYLE=100,
      symbol=4,!VMIN=3.0,1.4,VMAX=6.0,3.0,
      TITLE="Beta Vs Dp/p [%], SS centre",noversion,FILE="RING-plots";

PLOT, TABLE=twiss_end, HAXIS=DELTA_P, VAXIS1=AX, VAXIS2=AY, STYLE=100,
      symbol=4,!VMIN=3.0,1.4,VMAX=6.0,3.0,
      TITLE="Alfa Vs Dp/p [%], SS centre",noversion,FILE="RING-plots";

write,table=twiss_end;
write,table=twiss_tune; write,table=twiss_tune,file=chroma_tunes.dat;


!***************** TUNES Vs INITIAL CONDITIONS *************************

de_t   := 0.040;  ! scan range [m]
DP    =  -de_t;      ! scan start
NMAX   =  20;        ! scan points


TWISS, SAVE;
SAVEBETA, label=TWSSIP, place=#e;

n = 1; 
create,table=twiss_detuneAx,column=Ax,Ay,Qx,Qy;
while (n < NMAX+1)
{
  TWISS, DELTAP=0,X=DP;
  Ax :=DP*1e3;
  Ay :=0;
  Qx:=table(twiss,RING.END,mux)-3; 
  Qy:=table(twiss,RING.END,muy)-1; 
  if(Qx < 1 && Qy < 1)
   {
    value,n,Ax,Ay,Qx,Qy; 
    fill,table=twiss_detuneAx;
   }

//  DP:=de_t/NMAX*n;
 DP:=-de_t*(1-2/NMAX*n);
  n  = n + 1;
};

PLOT, TABLE=twiss_detuneAx, HAXIS=Ax, VAXIS1=QX, VAXIS2=QY, STYLE=100,
      symbol=4,!VMIN=0.10,0.60,VMAX=0.30,0.80,
      TITLE="Tunes Vs X position [mm]",noversion;


de_t   := 0.020;  ! scan range [m]
DP     := 0;      ! scan start

n = 1; 
create,table=twiss_detuneAy,column=Ax,Ay,Qx,Qy;
while (n < NMAX+1)
{
  TWISS, DELTAP=0,Y=DP;
  Ax :=0;
  Ay :=DP*1e3;
  Qx:=table(twiss,RING.END,mux)-3; 
  Qy:=table(twiss,RING.END,muy)-1; 
  if(Qx < 1 && Qy < 1)
   {
    value,n,Ax,Ay,Qx,Qy; 
    fill,table=twiss_detuneAy;
   }
  DP:=de_t/NMAX*n;
  n  = n + 1;
};

PLOT, TABLE=twiss_detuneAy, HAXIS=Ay, VAXIS1=QX, VAXIS2=QY, STYLE=100,
      symbol=4,!VMIN=0.10,0.60,VMAX=0.30,0.80,
      TITLE="Tunes Vs Y position [mm]",noversion;

write,table=twiss_detuneAx;write,table=twiss_detuneAx,file=detuning_x.dat;
write,table=twiss_detuneAy;write,table=twiss_detuneAy,file=detuning_y.dat;


*/
!=======================================================================!
! END OF (Chromatic) TWISS WITH MADX output in twiss* detuning* chroma* !
!=======================================================================!


return;

stop;




ELOG V3.1.4-395e101