-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmake_ip15phase_v0.madx
98 lines (80 loc) · 2.51 KB
/
make_ip15phase_v0.madx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
! Usage
! mux_ip15=31.5; !31.0996151227458
! muy_ip15=29.5; !29.9471198309731
! call,file=make_ip15phase.madx;
! exec,check_ip(b1);
! mux_ip15=31.1; muy_ip15=29.9;
! mux_ip15=31.2; muy_ip15=29.8;
! mux_ip15=31.3; muy_ip15=29.7;
! mux_ip15=31.0; muy_ip15=30.0;
! mux_ip15=30.9; muy_ip15=30.1;
! mux_ip15=30.8; muy_ip15=30.2;
! mux_ip15=30.9; muy_ip15=30.2;
! mux_ip15=31.2; muy_ip15=30.2;
! mux_ip15=31.2; muy_ip15=29.7; relax_match15=0;
weakdeltaphasearc(BIM): macro = {
exec,phasearc(2,3,23,BIM);
exec,phasearc(3,4,34,BIM);
exec,phasearc(6,7,67,BIM);
exec,phasearc(7,8,78,BIM);
dmux15=mux23BIM+mux34BIM;
dmuy15=muy23BIM+muy34BIM;
dmux51=mux67BIM+mux78BIM;
dmuy51=muy67BIM+muy78BIM;
};
mkdelta_ip15(BIM,tmux,tmuy): macro = {
kqf.a23:=kqf.a34;
kqf.a67:=kqf.a78;
kqd.a23:=kqd.a34;
kqd.a67:=kqd.a78;
exec,weakdeltaphasearc(BIM);
dmuxtotaux15=dmux15; dmuytotaux15=dmuy15;
dmuxtotaux51=dmux51; dmuytotaux51=dmuy51;
match,use_macro;
vary, name=kqf.a34;
vary, name=kqf.a78;
vary, name=kqd.a34;
vary, name=kqd.a78;
use_macro,name=weakdeltaphasearc(BIM);
constraint,expr= dmux15=dmuxtotaux15+tmux;
constraint,expr= dmuy15=dmuytotaux15+tmuy;
constraint,expr= dmux51=dmuxtotaux51-tmux;
constraint,expr= dmuy51=dmuytotaux51-tmuy;
jacobian,calls=10,tolerance=1.0e-19;
endmatch;
kqf.a23=kqf.a23; kqf.a34=kqf.a34; kqf.a67=kqf.a67; kqf.a78=kqf.a78;
kqd.a23=kqd.a23; kqd.a34=kqd.a34; kqd.a67=kqd.a67; kqd.a78=kqd.a78;
};
exec,check_ip(b1);
dphix15=table(twiss,IP1,mux)-table(twiss,IP5,mux);
dphiy15=table(twiss,IP1,muy)-table(twiss,IP5,muy);
if (dphix15<0){ dphix15=dphix15+refqxb1;};
if (dphiy15<0){ dphiy15=dphiy15+refqyb1;};
dphix15= dphix15-mux_ip15;
dphiy15= dphiy15-muy_ip15;
exec,mkdelta_ip15(b1,dphix15,dphiy15);
! select all insertion
jac_calls=15;
jac_tol=1e-20;
exec,select(7,67,78,b1);
exec,select(3,23,34,b1);
scxir1=betx_IP1/betx0_IP1; scyir1=bety_IP1/bety0_IP1;
scxir5=betx_IP5/betx0_IP5; scyir5=bety_IP5/bety0_IP5;
value,scxir1,scyir1,scxir5,scyir5;
exec,selectIRAUX(7,8,1,2,3,b1,scxir1,scyir1,betx0_IP1,bety0_IP1);
exec,selectIRAUX(3,4,5,6,7,b1,scxir5,scyir5,betx0_IP5,bety0_IP5);
! rematch all insertion
relax_match15=0;
call,file="slhc/toolkit/rematch_ir234678.madx";
value,tarir3b1,tarir7b1,tarir4b1,tarir6b1,tarir2b1,tarir8b1;
value,relax_match15;
if (tarir3b1+tarir7b1+tarir4b1+tarir6b1+tarir2b1+tarir8b1>1e-10){
if (relax_match15>=2){
print, text="Error in rematching phase change";
exit;
};
if (relax_match15<2){
relax_match15=relax_match15+1;
call,file="slhc/toolkit/rematch_ir234678.madx";
};
};