Skip to content

Commit fa742d7

Browse files
committed
add forgotten dmu functions
1 parent f002618 commit fa742d7

File tree

3 files changed

+96
-18
lines changed

3 files changed

+96
-18
lines changed

examples/ex-fodo-trkopt/ex-fodo-trkopt.mad

Lines changed: 83 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ local printf, tblcat in MAD.utility
1717
-- Import types functions
1818
local deferred in MAD.typeid
1919
-- Import from local toolbox
20-
local twiss_4plot, plot_twiss, plot_chrom, tw_cols in require "toolbox"
20+
local twiss_4plot, plot_twiss, plot_chrom, plot_wchrom, tw_cols in require "toolbox"
2121

2222
-- FODO Setup ------------------------------------------------------------------
2323

@@ -93,7 +93,13 @@ plot_twiss {
9393
}
9494
if chrm then
9595
plot_chrom {
96-
title = "FODO", -- plot title
96+
title = "FODO (chrom)", -- plot title
97+
sequence = fodo, -- sequence for layout
98+
table = twp, -- twiss table for plot
99+
output = fplt,
100+
}
101+
plot_wchrom {
102+
title = "FODO (chrom)", -- plot title
97103
sequence = fodo, -- sequence for layout
98104
table = twp, -- twiss table for plot
99105
output = fplt,
@@ -202,7 +208,13 @@ plot_twiss {
202208
}
203209
if chrm then
204210
plot_chrom {
205-
title = "Matched FODO", -- plot title
211+
title = "Matched FODO (chrom)", -- plot title
212+
sequence = fodo, -- sequence for layout
213+
table = twp, -- twiss table for plot
214+
output = fplt,
215+
}
216+
plot_wchrom {
217+
title = "Matched FODO (chrom)", -- plot title
206218
sequence = fodo, -- sequence for layout
207219
table = twp, -- twiss table for plot
208220
output = fplt,
@@ -225,8 +237,9 @@ local kopts = {
225237
"disp1_10" , "disp1_01" , "disp2_10" , "disp2_01" , -- 17
226238
"disp3_10" , "disp3_01" , "disp4_10" , "disp4_01"} , -- 21
227239
not chrm and {} or
228-
{"wx_10" , "wx_01" , "wxp_10" , "wxp_01" , -- 25
229-
"wy_10" , "wy_01" , "wyp_10" , "wyp_01" }) -- 29
240+
{"dmu1_10" , "dmu1_01" , "dmu2_10" , "dmu2_01" , -- 25
241+
"wx_10" , "wx_01" , "wxp_10" , "wxp_01" , -- 29
242+
"wy_10" , "wy_01" , "wyp_10" , "wyp_01" }) -- 33
230243
,
231244
tblcat(
232245
{"beta11_20", "beta11_02", "beta22_20", "beta22_02", -- 1
@@ -236,16 +249,17 @@ local kopts = {
236249
"disp1_20" , "disp1_02" , "disp2_20" , "disp2_02" , -- 17
237250
"disp3_20" , "disp3_02" , "disp4_20" , "disp4_02"} , -- 21
238251
not chrm and {} or
239-
{"wx_20" , "wx_02" , "wxp_20" , "wxp_02" , -- 25
240-
"wy_20" , "wy_02" , "wyp_20" , "wyp_02" }) -- 29
252+
{"dmu1_20" , "dmu1_02" , "dmu2_20" , "dmu2_02" , -- 25
253+
"wx_20" , "wx_02" , "wxp_20" , "wxp_02" , -- 29
254+
"wy_20" , "wy_02" , "wyp_20" , "wyp_02" }) -- 33
241255
}
242256

243257
-- Loop over orders -------------------
244258

245259
for ord=1,2 do
246260

247-
local nk = 24+(chrm and 8 or 0)
248-
assert(#kopts[ord] == nk, "invalid kopts, expecting 32 got "..#kopts[ord])
261+
local nk = 24+(chrm and 12 or 0)
262+
assert(#kopts[ord] == nk, "invalid kopts, expecting "..nk.." got "..#kopts[ord])
249263

250264
-- Compute parametric twiss -----------
251265
local mo = ord+(chrm and 2 or 1)
@@ -285,14 +299,18 @@ twp:addcol("dy_vs_k1d_da" , \ri -> twp[kopts[ord][22]][ri])
285299
twp:addcol("dpy_vs_k1f_da" , \ri -> twp[kopts[ord][23]][ri])
286300
twp:addcol("dpy_vs_k1d_da" , \ri -> twp[kopts[ord][24]][ri])
287301
if chrm then
288-
twp:addcol("wx_vs_k1f_da" , \ri -> twp[kopts[ord][25]][ri])
289-
twp:addcol("wx_vs_k1d_da" , \ri -> twp[kopts[ord][26]][ri])
290-
twp:addcol("wxp_vs_k1f_da" , \ri -> twp[kopts[ord][27]][ri])
291-
twp:addcol("wxp_vs_k1d_da" , \ri -> twp[kopts[ord][28]][ri])
292-
twp:addcol("wy_vs_k1f_da" , \ri -> twp[kopts[ord][29]][ri])
293-
twp:addcol("wy_vs_k1d_da" , \ri -> twp[kopts[ord][30]][ri])
294-
twp:addcol("wyp_vs_k1f_da" , \ri -> twp[kopts[ord][31]][ri])
295-
twp:addcol("wyp_vs_k1d_da" , \ri -> twp[kopts[ord][32]][ri])
302+
twp:addcol("dmu1_vs_k1f_da" , \ri -> twp[kopts[ord][25]][ri])
303+
twp:addcol("dmu1_vs_k1d_da" , \ri -> twp[kopts[ord][26]][ri])
304+
twp:addcol("dmu2_vs_k1f_da" , \ri -> twp[kopts[ord][27]][ri])
305+
twp:addcol("dmu2_vs_k1d_da" , \ri -> twp[kopts[ord][28]][ri])
306+
twp:addcol("wx_vs_k1f_da" , \ri -> twp[kopts[ord][29]][ri])
307+
twp:addcol("wx_vs_k1d_da" , \ri -> twp[kopts[ord][30]][ri])
308+
twp:addcol("wxp_vs_k1f_da" , \ri -> twp[kopts[ord][31]][ri])
309+
twp:addcol("wxp_vs_k1d_da" , \ri -> twp[kopts[ord][32]][ri])
310+
twp:addcol("wy_vs_k1f_da" , \ri -> twp[kopts[ord][33]][ri])
311+
twp:addcol("wy_vs_k1d_da" , \ri -> twp[kopts[ord][34]][ri])
312+
twp:addcol("wyp_vs_k1f_da" , \ri -> twp[kopts[ord][35]][ri])
313+
twp:addcol("wyp_vs_k1d_da" , \ri -> twp[kopts[ord][36]][ri])
296314
end
297315

298316
-- Compute finite difference twiss ----
@@ -343,6 +361,10 @@ do
343361
twp:addcol("dpy_vs_k1f_fd" , \ri -> ((a*twfp.dpy [ri] + b*tw.dpy [ri] + c*twfm.dpy [ri])/(d*dh^e)))
344362
twp:addcol("dpy_vs_k1d_fd" , \ri -> ((a*twdp.dpy [ri] + b*tw.dpy [ri] + c*twdm.dpy [ri])/(d*dh^e)))
345363
if chrm then
364+
twp:addcol("dmu1_vs_k1f_fd" , \ri -> ((a*twfp.dmu1 [ri] + b*tw.dmu1 [ri] + c*twfm.dmu1 [ri])/(d*dh^e)))
365+
twp:addcol("dmu1_vs_k1d_fd" , \ri -> ((a*twdp.dmu1 [ri] + b*tw.dmu1 [ri] + c*twdm.dmu1 [ri])/(d*dh^e)))
366+
twp:addcol("dmu2_vs_k1f_fd" , \ri -> ((a*twfp.dmu2 [ri] + b*tw.dmu2 [ri] + c*twfm.dmu2 [ri])/(d*dh^e)))
367+
twp:addcol("dmu2_vs_k1d_fd" , \ri -> ((a*twdp.dmu2 [ri] + b*tw.dmu2 [ri] + c*twdm.dmu2 [ri])/(d*dh^e)))
346368
twp:addcol("wx_vs_k1f_fd" , \ri -> ((a*twfp.wx [ri] + b*tw.wx [ri] + c*twfm.wx [ri])/(d*dh^e)))
347369
twp:addcol("wx_vs_k1d_fd" , \ri -> ((a*twdp.wx [ri] + b*tw.wx [ri] + c*twdm.wx [ri])/(d*dh^e)))
348370
twp:addcol("wxp_vs_k1f_fd" , \ri -> ((a*twfp.phix [ri] + b*tw.phix [ri] + c*twfm.phix [ri])/(d*dh^e)))
@@ -382,6 +404,10 @@ do
382404
twp:addcol("dpy_vs_k1f_dif" , \ri -> twp.dpy_vs_k1f_da [ri] - twp.dpy_vs_k1f_fd [ri])
383405
twp:addcol("dpy_vs_k1d_dif" , \ri -> twp.dpy_vs_k1d_da [ri] - twp.dpy_vs_k1d_fd [ri])
384406
if chrm then
407+
twp:addcol("dmu1_vs_k1f_dif" , \ri -> twp.dmu1_vs_k1f_da [ri] - twp.dmu1_vs_k1f_fd [ri])
408+
twp:addcol("dmu1_vs_k1d_dif" , \ri -> twp.dmu1_vs_k1d_da [ri] - twp.dmu1_vs_k1d_fd [ri])
409+
twp:addcol("dmu2_vs_k1f_dif" , \ri -> twp.dmu2_vs_k1f_da [ri] - twp.dmu2_vs_k1f_fd [ri])
410+
twp:addcol("dmu2_vs_k1d_dif" , \ri -> twp.dmu2_vs_k1d_da [ri] - twp.dmu2_vs_k1d_fd [ri])
385411
twp:addcol("wx_vs_k1f_dif" , \ri -> twp.wx_vs_k1f_da [ri] - twp.wx_vs_k1f_fd [ri])
386412
twp:addcol("wx_vs_k1d_dif" , \ri -> twp.wx_vs_k1d_da [ri] - twp.wx_vs_k1d_fd [ri])
387413
twp:addcol("wxp_vs_k1f_dif" , \ri -> twp.wxp_vs_k1f_da [ri] - twp.wxp_vs_k1f_fd [ri])
@@ -403,6 +429,7 @@ plot {
403429
x1y1 = {s = {"beta11_vs_k1f_da", "beta11_vs_k1d_da", "beta22_vs_k1f_da", "beta22_vs_k1d_da"}},
404430
xlabel = "s [m]" , -- x-axis label
405431
ylabel = "β_{x,y} [m]", -- y-axis label left
432+
y2label = "", -- y-axis label right
406433
legend = {beta11_vs_k1f_da="β_x vs k1f", beta11_vs_k1d_da="β_x vs k1d",
407434
beta22_vs_k1f_da="β_y vs k1f", beta22_vs_k1d_da="β_y vs k1d"},
408435
styles = "lines", linewidth=1.5, fontsize=16, -- styles
@@ -602,6 +629,45 @@ plot {
602629

603630
if chrm then
604631

632+
plot {
633+
title = "dmu vs params (order "..ord..")", -- plot title
634+
sequence = fodo, -- sequence for layout
635+
table = twp, -- twiss table for plot
636+
x1y1 = {s = {"dmu1_vs_k1f_da", "dmu1_vs_k1d_da", "dmu2_vs_k1f_da", "dmu2_vs_k1d_da"}},
637+
xlabel = "s [m]" , -- x-axis label
638+
ylabel = "dμ_{x,y} [m]", -- y-axis label left
639+
legend = {dmu1_vs_k1f_da="dμ_x vs k1f", dmu1_vs_k1d_da="dμ_x vs k1d",
640+
dmu2_vs_k1f_da="dμ_y vs k1f", dmu2_vs_k1d_da="dμ_y vs k1d"},
641+
styles = "lines", linewidth=1.5, fontsize=16, -- styles
642+
output = fplt,
643+
}
644+
645+
plot {
646+
title = "dmu vs fd (order "..ord..")", -- plot title
647+
sequence = fodo, -- sequence for layout
648+
table = twp, -- twiss table for plot
649+
x1y1 = {s = {"dmu1_vs_k1f_fd", "dmu1_vs_k1d_fd", "dmu2_vs_k1f_fd", "dmu2_vs_k1d_fd"}},
650+
xlabel = "s [m]" , -- x-axis labellabel
651+
ylabel = "dμ_{x,y} [m]", -- y-axis label left
652+
legend = {dmu1_vs_k1f_fd="dμ_x vs k1f", dmu1_vs_k1d_fd="dμ_x vs k1d",
653+
dmu2_vs_k1f_fd="dμ_y vs k1f", dmu2_vs_k1d_fd="dμ_y vs k1d"},
654+
styles = "lines", linewidth=1.5, fontsize=16, -- styles
655+
output = fplt,
656+
}
657+
658+
plot {
659+
title = "dmu vs prms and fd diff (order "..ord..")", -- plot title
660+
sequence = fodo, -- sequence for layout
661+
table = twp, -- twiss table for plot
662+
x1y1 = {s = {"dmu1_vs_k1f_dif", "dmu1_vs_k1d_dif", "dmu2_vs_k1f_dif", "dmu2_vs_k1d_dif"}},
663+
xlabel = "s [m]" , -- x-axis label
664+
ylabel = "Error on dμ_{x,y} [m]", -- y-axis label left
665+
legend = {dmu1_vs_k1f_dif="dμ_x vs k1f err", dmu1_vs_k1d_dif="dμ_x vs k1d err",
666+
dmu2_vs_k1f_dif="dμ_y vs k1f err", dmu2_vs_k1d_dif="dμ_y vs k1d err"},
667+
styles = "lines", linewidth=1.5, fontsize=16, -- styles
668+
output = fplt,
669+
}
670+
605671
plot {
606672
title = "w vs params (order "..ord..")", -- plot title
607673
sequence = fodo, -- sequence for layout
31.5 KB
Binary file not shown.

examples/ex-fodo-trkopt/toolbox.mad

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,23 @@ tbox.plot_twiss = plot {
3939
exec = false, -- template, no exec
4040
}
4141

42-
-- Template for plotting Montaigue functions.
42+
-- Template for plotting chromatic functions.
4343
tbox.plot_chrom = plot {
44+
x1y1 = {s = {"dmu1", "dmu2"}}, -- x vs y1 columns
45+
xlabel = "s [m]" , -- x-axis label
46+
ylabel = "dμ_{x,y}", -- y-axis label left
47+
y2label = "", -- y-axis label right
48+
legend = {dmu1="dμ_x", dmu2="dμ_y"}, -- column labels
49+
styles = "lines", linewidth=1.5, fontsize=16, -- styles
50+
exec = false, -- template, no exec
51+
}
52+
53+
-- Template for plotting Montaigue functions.
54+
tbox.plot_wchrom = plot {
4455
x1y1 = {s = {"wx", "wy", "phix", "phiy"}}, -- x vs y1 columns
4556
xlabel = "s [m]" , -- x-axis label
4657
ylabel = "w_{x,y} , w_{x,y}p [m]", -- y-axis label left
58+
y2label = "", -- y-axis label right
4759
legend = {wx="w_x", wy="w_y", -- column labels
4860
phix="w_xp", phiy="w_yp"}, -- idem
4961
styles = "lines", linewidth=1.5, fontsize=16, -- styles

0 commit comments

Comments
 (0)