Skip to content

Commit 30b57b3

Browse files
authored
Merge pull request #287 from jgray-19/multh
Curved Multipole
2 parents e92269c + fc24114 commit 30b57b3

File tree

3 files changed

+7055
-10
lines changed

3 files changed

+7055
-10
lines changed

src/madl_dynmap.mad

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,38 @@ local function bxby (nmul, knl, ksl, x, y)
104104
return bx, by
105105
end
106106

107-
local function bxbyh (nmul, knl, ksl, x, y, h) -- [GETMAGNETIC] TODO: useful?
108-
error("NYI")
107+
local getanbnr in require("madl_dynmaph")
108+
109+
local function bxbyh (nmul, bf_X, bf_Y, x, y, eh) -- [GETMAGNETIC]
110+
nmul = nmul + 2
111+
local bx, by, k, b1, b2 = 0, 0, 0
112+
for a = nmul, 1, -1 do
113+
local btx, bty = 0, 0
114+
for j = nmul-a, 1, -1 do
115+
k = k + 1
116+
btx = (btx + bf_X[k]) * y ! x1
117+
bty = (bty + bf_Y[k]) * y
118+
end
119+
120+
k = k + 1
121+
btx = (btx + bf_X[k])
122+
bty = (bty + bf_Y[k])
123+
124+
bx = (bx + btx) * x
125+
by = (by + bty) * x
126+
end
127+
128+
local btx, bty = 0, 0
129+
for j = nmul, 1, -1 do
130+
k = k + 1
131+
btx = (btx + bf_X[k]) * y
132+
bty = (bty + bf_Y[k]) * y
133+
end
134+
135+
k = k + 1
136+
b1 = (by + bty + bf_Y[k]) * (1 + eh*x)
137+
b2 = (bx + btx + bf_X[k]) * (1 + eh*x)
138+
return b2, b1
109139
end
110140

111141
-- call make_coef(S_B_from_V,I,0)
@@ -593,19 +623,19 @@ end
593623
function M.curex_kick (elm, m, lw, no_k0l) -- [SKICK] -- checked
594624
m.atdebug(elm, m, lw, 'curex_kick:0', no_k0l)
595625

596-
local el, eh, tdir, nmul, knl, ksl, beam in m
626+
local el, eh, tdir, nmul, knl, bf_X, bf_Y, beam in m
597627
local bdir = tdir*beam.charge
598-
local dby = no_k0l == true and knl[1] or eh*el*bdir-knl[1]
599628

600629
for i=1,m.npar do
601630
local x, px, y, py, beam in m[i]
602631
local bdir = beam and tdir*beam.charge or bdir
603-
local dby = beam and not no_k0l and eh*el*bdir-knl[1] or dby
604-
local bx,by = bxby(nmul, knl, ksl, x, y) -- bxbyh
605-
local r = 1+eh*x
632+
local bx, by = bxbyh(nmul, bf_X, bf_Y, x, y, eh) !m.bf_X, m.bf_Y instead of knl, ksl
606633

607-
m[i].px = px - (lw*bdir)*(by-dby)*r
608-
m[i].py = py + (lw*bdir)* bx *r
634+
m[i].px = px - (lw*bdir)*by
635+
m[i].py = py + (lw*bdir)*bx
636+
if no_k0l == true then
637+
m[i].px = m[i].px + (lw*bdir*knl[1])*(1 + eh*x)
638+
end
609639
end
610640

611641
m.atdebug(elm, m, lw, 'curex_kick:1', no_k0l)

0 commit comments

Comments
 (0)