@@ -104,8 +104,38 @@ local function bxby (nmul, knl, ksl, x, y)
104
104
return bx, by
105
105
end
106
106
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
109
139
end
110
140
111
141
-- call make_coef(S_B_from_V,I,0)
@@ -593,19 +623,19 @@ end
593
623
function M.curex_kick (elm, m, lw, no_k0l) -- [SKICK] -- checked
594
624
m.atdebug(elm, m, lw, 'curex_kick:0', no_k0l)
595
625
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
597
627
local bdir = tdir*beam.charge
598
- local dby = no_k0l == true and knl[1] or eh*el*bdir-knl[1]
599
628
600
629
for i=1,m.npar do
601
630
local x, px, y, py, beam in m[i]
602
631
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
606
633
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
609
639
end
610
640
611
641
m.atdebug(elm, m, lw, 'curex_kick:1', no_k0l)
0 commit comments