@@ -784,9 +784,7 @@ local function rbend_thick_new (elm, m, lw) -- [SPAR] --
784
784
m.atdebug(elm, m, lw, 'rbend_thick:0')
785
785
786
786
local el, eld, knl, beam, T in m
787
- -- local ld, k0 = (eld or el)*lw, knl[1]/abs(el)
788
- local l, ld, k0 = el*lw, (eld or el)*lw, knl[1]/abs(eld)
789
- local lw = (el/eld)*lw
787
+ local l, ld, k0 = el*lw, (eld or el)*lw, knl[1]/abs(el)
790
788
local beta, k0q, k0lq = beam.beta, k0*beam.charge, knl[1]*lw*beam.charge
791
789
792
790
for i=1,m.npar do
@@ -811,7 +809,6 @@ local function rbend_thick_new (elm, m, lw) -- [SPAR] --
811
809
local xt = l*(2*px - k0lq)*_ptt^2 / xtd
812
810
local dxs = asinc(xt*k0q)*xt
813
811
814
- -- MAD.dbg()
815
812
-- eq. 129 in Forest06 with modif. from Sagan
816
813
m[i].x = x + l*(2*px - k0lq) / (pz+pzs)
817
814
m[i].px = npx
@@ -828,8 +825,7 @@ local function rbend_thick_old (elm, m, lw) -- [SPAR] --
828
825
m.atdebug(elm, m, lw, 'rbend_thick:0')
829
826
830
827
local el, eld, knl, beam, T in m
831
- local l, ld, k0 = el*lw, (eld or el)*lw, knl[1]/abs(eld)
832
- local lw = (el/eld)*lw
828
+ local l, ld, k0 = el*lw, (eld or el)*lw, knl[1]/abs(el)
833
829
local beta, k0q, k0lq = beam.beta, k0*beam.charge, knl[1]*lw*beam.charge
834
830
835
831
for i=1,m.npar do
@@ -863,7 +859,6 @@ local function rbend_thick_old (elm, m, lw) -- [SPAR] --
863
859
end
864
860
865
861
M.rbend_thick = new_bend_thick and rbend_thick_new or rbend_thick_old
866
- M.rbend_strex = \el,m,lw -> M.strex_kick(el,m,(m.el/m.eld)*lw)
867
862
M.rbend_kick = \el,m,lw -> M.strex_kick(el,m,lw,true) -- checked
868
863
869
864
-- TKT [INTER_TKTF] -----------------------------------------------------------o
@@ -1616,30 +1611,30 @@ function M.strex_fringe (elm, m, lw_) -- [FRINGE_STREX] --
1616
1611
local e1, e2 = (m.e1 or elm.e1)*tdir, (m.e2 or elm.e2)*tdir
1617
1612
local h1, h2 = elm.h1 *tdir, elm.h2 *tdir
1618
1613
1619
- if lw == -1 then e1, e2, h1, h2 = e2, e1, h2, h1 end -- swap
1614
+ if sdir == -1 then e1, e2, h1, h2 = e2, e1, h2, h1 end -- swap
1620
1615
1621
1616
if sdir*lw == 1 then
1622
1617
! print(lw == 1 and 'forward entry' or 'backward exit')
1623
- local w = true
1624
1618
yrotation(-e1, m, 1)
1625
- if lw == -1 and m.elc ~= nil then
1626
- m.x, w = m.x+m.elc*sin((e2-e1)/2), false -- EDGE_TRUE_PARALLEL
1619
+ if m.etp_dir and m.etp_dir == lw then -- Exiting magnet
1620
+ for i=1,m.npar do
1621
+ m[i].x = m[i].x+m.elc*sin((e2-e1)/2) -- EDGE_TRUE_PARALLEL
1622
+ end
1627
1623
end
1628
1624
bend_face(h1, m, 1)
1629
1625
if m.frng ~= 0 then
1630
1626
if ftst(m.frng, fringe.bend) then bend_fringe(elm, m, 1) end
1631
1627
if ftst(m.frng, fringe.mult) then mult_fringe(elm, m, 1) end
1632
1628
if ftst(m.frng, fringe.qsad) then qsad_fringe(elm, m, 1) end
1633
1629
end
1634
- if w then -- ! EDGE_TRUE_PARALLEL
1630
+ if not m.etp_dir then -- ! EDGE_TRUE_PARALLEL
1635
1631
local a = 0.5*m.eh*(m.eld or m.el) - e1
1636
1632
bend_wedge(a, m, 1)
1637
1633
end
1638
1634
else
1639
1635
! print(lw == -1 and 'forward exit' or 'backward entry')
1640
- local w = false
1641
- if lw == 1 and m.elc == nil then -- ! EDGE_TRUE_PARALLEL
1642
- local a, w = 0.5*m.eh*(m.eld or m.el) - e2, true
1636
+ if not m.etp_dir then -- ! EDGE_TRUE_PARALLEL
1637
+ local a = 0.5*m.eh*(m.eld or m.el) - e2
1643
1638
bend_wedge(a, m, -1)
1644
1639
end
1645
1640
if m.frng ~= 0 then
@@ -1648,8 +1643,10 @@ function M.strex_fringe (elm, m, lw_) -- [FRINGE_STREX] --
1648
1643
if ftst(m.frng, fringe.bend) then bend_fringe(elm, m, -1) end
1649
1644
end
1650
1645
bend_face(h2, m, -1)
1651
- if w then
1652
- m.x, w = m.x+m.elc*sin((e2-e1)/2) -- EDGE_TRUE_PARALLEL
1646
+ if m.etp_dir and m.etp_dir == lw then -- Exiting magnet
1647
+ for i=1,m.npar do
1648
+ m[i].x = m[i].x+m.elc*sin((e2-e1)/2) -- EDGE_TRUE_PARALLEL
1649
+ end
1653
1650
end
1654
1651
yrotation(e2, m, -1)
1655
1652
end
@@ -1878,7 +1875,7 @@ function bend_fringe (elm, m, lw) -- [FRINGE_DIPOLE] --
1878
1875
local el, eld, sdir, tdir, beam in m
1879
1876
local fh = elm.hgap*(sdir*lw == -1 and elm.fintx or elm.fint)
1880
1877
local fsad = fh ~= 0 and 1/(72*fh) or 0
1881
- local k0w = m.knl[1]/abs(eld or el)*tdir*lw
1878
+ local k0w = m.knl[1]/abs(el)*tdir*lw
1882
1879
local b0 = k0w*beam.charge
1883
1880
local _beta = 1/beam.beta
1884
1881
0 commit comments