Skip to content

Commit 204932f

Browse files
authored
Merge pull request #380 from jgray-19/sol_fixes
Multipole Solenoid Fixes
2 parents 7df2f73 + 137c156 commit 204932f

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

src/mad_dynmap.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -503,12 +503,12 @@ inline void strex_kick (cflw<M> &m, num_t lw, int is, bool no_k0l=false)
503503
template <typename M, typename T=M::T, typename P=M::P, typename R=M::R>
504504
inline void strex_kicks (cflw<M> &m, num_t lw, M &p, T &pz)
505505
{
506-
if (fval(m.ks) < minstr || fval(m.lrad) < minlen) return;
506+
if (fabs(m.ks) < minstr || fabs(m.lrad) < minlen) return;
507507

508-
num_t wchg = lw*m.sdir*m.edir*m.charge;
509-
P hss = lw*sqr(R(m.ks));
508+
num_t wchg = lw*m.edir*m.charge; // lrad is already weighted by sdir
509+
P hss = lw*R(m.lrad)*sqr(R(m.ks));
510510
T _dpp = inv(pz);
511-
T ang = 0.5*wchg*R(m.ks)*R(m.lrad)*_dpp;
511+
T ang = (0.5*wchg)*R(m.ks)*R(m.lrad)*_dpp;
512512
T ca = cos(ang), sa = sin(ang);
513513

514514
T nx = ca*p. x + sa*p. y;
@@ -527,7 +527,7 @@ inline void strex_kicks (cflw<M> &m, num_t lw, M &p, T &pz)
527527
template <typename M, typename T=M::T, typename P=M::P, typename R=M::R>
528528
inline void strex_kickhs (cflw<M> &m, num_t lw, int is)
529529
{ (void)is;
530-
if ((!m.nmul && fval(m.ks) < minstr) || !m.charge) return;
530+
if ((!m.nmul && fabs(m.ks) < minstr) || !m.charge) return;
531531

532532
mdump(0);
533533
num_t wchg = lw*m.sdir*m.edir*m.charge;

src/madl_etrck.mad

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -786,7 +786,7 @@ local function track_multipole (elm, m)
786786

787787
if m.cmap and not m.pmap then
788788
m.cflw.lrad = m.lrad
789-
m.cflw.ks = m.ksi/m.lrad
789+
m.cflw.ks = m.ksi/lrad
790790
cpy_mult(m)
791791
end
792792

0 commit comments

Comments
 (0)