diff --git a/src/pybdsim/Builder.py b/src/pybdsim/Builder.py index 93d786c..8a0f656 100644 --- a/src/pybdsim/Builder.py +++ b/src/pybdsim/Builder.py @@ -97,6 +97,8 @@ 'angle', 'vkick', 'hkick', + 'knl', + 'ksl', } @@ -304,6 +306,8 @@ def _split_length(self, points): accumulated_length = 0.0 split_elements = [] This = type(self) # This class, we use to construct the output. + if This == Element: + raise TypeError("Only a specific element can be split.") # Not length or name. We change these here. We leave # updating other parameters (based on length or otherwise) to # other methods or functions. @@ -320,13 +324,16 @@ def _split_length(self, points): def split_strength(kwo, sub_section_length): kwargs = kwo.copy() + f = sub_section_length / total_length for k in splittable_strengths: v = other_kwargs[k] if type(v) == tuple: - nv = v[0] * (length / total_length) - kwargs[k] = (nv, v[1]) + if k in ('knl', 'ksl'): + kwargs[k] = tuple(vi*f for vi in v) + else: + kwargs[k] = (v[0] * f, v[1]) else: - kwargs[k] = v * (length / total_length) + kwargs[k] = v * f return kwargs i = 0 @@ -335,14 +342,14 @@ def split_strength(kwo, sub_section_length): length = round(point - accumulated_length, 15) accumulated_length += length kws = split_strength(other_kwargs, length) - split_elements.append(This(name, category, l=length, **kws)) + split_elements.append(This(name, l=length, **kws)) i += 1 # Add the final element (for n points we have n+1 elements, so # we add the last one here "by hand"). left_over_length = round(total_length - accumulated_length, 15) kws = split_strength(other_kwargs, left_over_length) - split_elements.append(This("{}_split_{}".format(self['name'], i + 1), category, l=left_over_length, **kws)) + split_elements.append(This("{}_split_{}".format(self['name'], i), l=left_over_length, **kws)) return split_elements @@ -584,17 +591,6 @@ class Multipole(Element): def __init__(self, name, l, knl, ksl, **kwargs): Element.__init__(self, name, 'multipole', l=l, knl=knl, ksl=ksl, **kwargs) - def split(self, points): - split_mps = self._split_length(points) - for mp in split_mps: - new_knl = tuple([integrated_strength * mp['l'] / self['l'] - for integrated_strength in mp['knl']]) - new_ksl = tuple([integrated_strength * mp['l'] / self['l'] - for integrated_strength in mp['ksl']]) - mp['knl'] = new_knl - mp['ksl'] = new_ksl - return split_mps - class ThinMultipole(Element): def __init__(self, name, knl=(0,0), ksl=(0,0), **kwargs): diff --git a/tests/__init__.py b/tests/__init__.py index e4bafe5..0a9d389 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1 +1 @@ -import tests +#import tests diff --git a/tests/test_builder.py b/tests/test_builder.py index 1104012..91837e8 100644 --- a/tests/test_builder.py +++ b/tests/test_builder.py @@ -1,143 +1,129 @@ import pybdsim -import pytest - -@pytest.fixture -def drift(): - return pybdsim.Builder.Drift('myd', 0.5) - -@pytest.fixture -def hkicker(): - return pybdsim.Builder.HKicker('myh', 0.5, l=0.5) - -@pytest.fixture -def vkicker(): - return pybdsim.Builder.VKicker('myv', 0.5, l=0.5) - -@pytest.fixture -def kicker(): - return pybdsim.Builder.Kicker('myk', 0.5, 0.5, l=0.5) - -@pytest.fixture -def tkicker(): - return pybdsim.Builder.TKicker('myt', 0.5, 0.5, l=0.5) - -@pytest.fixture -def multipole(): - return pybdsim.Builder.Multipole("mym", 0.5, - (0.5, 0.5, 0.5, 0.5, 0.5), - (0.5, 0.5, 0.5, 0.5, 0.5)) - -@pytest.fixture -def quadrupole(): - return pybdsim.Builder.Quadrupole('myq', 0.5, 0.5) - -@pytest.fixture -def sextupole(): - return pybdsim.Builder.Sextupole('mys', 0.5, 0.5) - -@pytest.fixture -def octupole(): - return pybdsim.Builder.Octupole('myo', 0.5, 0.5) - -@pytest.fixture -def decapole(): - return pybdsim.Builder.Decapole('myd', 0.5, 0.5) - -@pytest.fixture -def sbend(): - return pybdsim.Builder.SBend('mys', 0.5, angle=0.5, - e1=0.1, e2=0.2, - fint=0.1, fintx=0.2, - h1=0.1, h2=0.2, hgap=0.5) - -@pytest.fixture -def rbend(): - return pybdsim.Builder.RBend('myr', 0.5, angle=0.5, - e1=0.1, e2=0.2, - fint=0.1, fintx=0.2, - h1=0.1, h2=0.2, hgap=0.5) - -def test_Drift_repr(drift): - expected = 'myd: drift, l=0.5;\n' - assert repr(drift) == expected - -#def test_Drift_split(drift): -# split_drifts = drift.split([0.2, 0.4]) -# expected = [pybdsim.Builder.Drift('myd_split_0', 0.2), -# pybdsim.Builder.Drift('myd_split_1', 0.2), -# pybdsim.Builder.Drift('myd_split_2', 0.1)] -# assert split_drifts == expected - -def test_HKicker_repr(hkicker): - expected = 'myh: hkicker, hkick=0.5, l=0.5;\n' - assert repr(hkicker) == expected - -#def test_HKicker_split(hkicker): -# split_kickers = hkicker.split([0.2, 0.4]) -# expected = [pybdsim.Builder.HKicker('myh_split_0', 0.2, l=0.2), -# pybdsim.Builder.HKicker('myh_split_1', 0.2, l=0.2), -# pybdsim.Builder.HKicker('myh_split_2', 0.1, l=0.1)] -# assert split_kickers == expected - -def test_VKicker_repr(vkicker): - expected = 'myv: vkicker, l=0.5, vkick=0.5;\n' - assert repr(vkicker) == expected - -#def test_VKicker_split(vkicker): -# split_kickers = vkicker.split([0.2, 0.4]) -# expected = [pybdsim.Builder.VKicker('myv_split_0', 0.2, l=0.2), -# pybdsim.Builder.VKicker('myv_split_1', 0.2, l=0.2), -# pybdsim.Builder.VKicker('myv_split_2', 0.1, l=0.1)] -# assert split_kickers == expected - -def test_Kicker_repr(kicker): - expected ='myk: kicker, hkick=0.5, l=0.5, vkick=0.5;\n' - assert repr(kicker) == expected - -#def test_Kicker_split(kicker): -# split_kickers = kicker.split([0.2, 0.4]) -# expected = [pybdsim.Builder.Kicker('myk_split_0', 0.2, 0.2, l=0.2), -# pybdsim.Builder.Kicker('myk_split_1', 0.2, 0.2, l=0.2), -# pybdsim.Builder.Kicker('myk_split_2', 0.1, 0.1, l=0.1)] -# assert split_kickers == expected - -def test_TKicker_repr(tkicker): - expected = 'myt: tkicker, hkick=0.5, l=0.5, vkick=0.5;\n' - assert repr(tkicker) == expected - -#def test_TKicker_split(tkicker): -# split_tkickers = tkicker.split([0.2, 0.4]) -# expected = [pybdsim.Builder.TKicker('myt_split_0', 0.2, 0.2, l=0.2), -# pybdsim.Builder.TKicker('myt_split_1', 0.2, 0.2, l=0.2), -# pybdsim.Builder.TKicker('myt_split_2', 0.1, 0.1, l=0.1)] -# assert split_tkickers == expected - -def test_Gap_repr(): + +def test_drift(): + drift = pybdsim.Builder.Drift('myd', 0.5) + +def test_hkicker(): + hkicker = pybdsim.Builder.HKicker('myh', 0.5, l=0.5) + +def test_vkicker(): + vkicker = pybdsim.Builder.VKicker('myv', 0.5, l=0.5) + +def test_kicker(): + pybdsim.Builder.Kicker('myk', 0.5, 0.5, l=0.5) + +def test_tkicker(): + pybdsim.Builder.TKicker('myt', 0.5, 0.5, l=0.5) + +def test_multipole(): + pybdsim.Builder.Multipole("mym", 0.5, (0.5, 0.5, 0.5, 0.5, 0.5), (0.5, 0.5, 0.5, 0.5, 0.5)) + +def test_quadrupole(): + pybdsim.Builder.Quadrupole('myq', 0.5, 0.5) + +def test_sextupole(): + pybdsim.Builder.Sextupole('mys', 0.5, 0.5) + +def test_octupole(): + pybdsim.Builder.Octupole('myo', 0.5, 0.5) + +def test_decapole(): + pybdsim.Builder.Decapole('myd', 0.5, 0.5) + +def test_sbend(): + pybdsim.Builder.SBend('mys', 0.5, angle=0.5, e1=0.1, e2=0.2, fint=0.1, fintx=0.2, h1=0.1, h2=0.2, hgap=0.5) + +def test_rbend(): + pybdsim.Builder.RBend('myr', 0.5, angle=0.5, e1=0.1, e2=0.2, fint=0.1, fintx=0.2, h1=0.1, h2=0.2, hgap=0.5) + +def test_drift_repr(): + drift = pybdsim.Builder.Drift('myd', 0.5) + assert repr(drift) == 'myd: drift, l=0.5;\n' + +def test_drift_split(): + drift = pybdsim.Builder.Drift('myd', 0.5) + split_drifts = drift.split([0.2, 0.4]) + expected = [pybdsim.Builder.Drift('myd_split_0', 0.2), + pybdsim.Builder.Drift('myd_split_1', 0.2), + pybdsim.Builder.Drift('myd_split_2', 0.1)] + assert split_drifts == expected + +def test_hkicker_repr(): + hkicker = pybdsim.Builder.HKicker('myh', 0.5, l=0.5) + assert repr(hkicker) == 'myh: hkicker, hkick=0.5, l=0.5;\n' + +def test_hkicker_split(): + hkicker = pybdsim.Builder.HKicker('myh', 0.5, l=0.5) + split_kickers = hkicker.split([0.2, 0.4]) + expected = [pybdsim.Builder.HKicker('myh_split_0', 0.2, l=0.2), + pybdsim.Builder.HKicker('myh_split_1', 0.2, l=0.2), + pybdsim.Builder.HKicker('myh_split_2', 0.1, l=0.1)] + assert split_kickers == expected + +def test_vkicker_repr(): + vkicker = pybdsim.Builder.VKicker('myv', 0.5, l=0.5) + assert repr(vkicker) == 'myv: vkicker, l=0.5, vkick=0.5;\n' + +def test_vkicker_split(): + vkicker = pybdsim.Builder.VKicker('myv', 0.5, l=0.5) + split_kickers = vkicker.split([0.2, 0.4]) + expected = [pybdsim.Builder.VKicker('myv_split_0', 0.2, l=0.2), + pybdsim.Builder.VKicker('myv_split_1', 0.2, l=0.2), + pybdsim.Builder.VKicker('myv_split_2', 0.1, l=0.1)] + assert split_kickers == expected + +def test_kicker_repr(): + kicker = pybdsim.Builder.Kicker('myk', 0.5, 0.5, l=0.5) + assert repr(kicker) == 'myk: kicker, hkick=0.5, l=0.5, vkick=0.5;\n' + +def test_kicker_split(): + kicker = pybdsim.Builder.Kicker('myk', 0.5, 0.5, l=0.5) + split_kickers = kicker.split([0.2, 0.4]) + expected = [pybdsim.Builder.Kicker('myk_split_0', 0.2, 0.2, l=0.2), + pybdsim.Builder.Kicker('myk_split_1', 0.2, 0.2, l=0.2), + pybdsim.Builder.Kicker('myk_split_2', 0.1, 0.1, l=0.1)] + assert split_kickers == expected + +def test_tkicker_repr(): + tkicker = pybdsim.Builder.TKicker('myt', 0.5, 0.5, l=0.5) + assert repr(tkicker) == 'myt: tkicker, hkick=0.5, l=0.5, vkick=0.5;\n' + +def test_tkicker_split(): + tkicker = pybdsim.Builder.TKicker('myt', 0.5, 0.5, l=0.5) + split_tkickers = tkicker.split([0.2, 0.4]) + expected = [pybdsim.Builder.TKicker('myt_split_0', 0.2, 0.2, l=0.2), + pybdsim.Builder.TKicker('myt_split_1', 0.2, 0.2, l=0.2), + pybdsim.Builder.TKicker('myt_split_2', 0.1, 0.1, l=0.1)] + assert split_tkickers == expected + +def test_gap_repr(): assert (repr(pybdsim.Builder.Gap('myg', 0.6)) == "myg: gap, l=0.6;\n") -def test_Marker_repr(): +def test_marker_repr(): assert (repr(pybdsim.Builder.Marker("mym")) == 'mym: marker;\n') -def test_Multipole_repr(multipole): +def test_multipole_repr(): + multipole = pybdsim.Builder.Multipole("mym", 0.5, (0.5, 0.5, 0.5, 0.5, 0.5), (0.5, 0.5, 0.5, 0.5, 0.5)) expected = ("mym: multipole, knl={0.5,0.5,0.5,0.5,0.5}," " ksl={0.5,0.5,0.5,0.5,0.5}, l=0.5;\n") assert repr(multipole) == expected -#def test_Multipole_split(multipole): -# split_multipoles = multipole.split([0.2, 0.4]) -# expected = [pybdsim.Builder.Multipole('mym_split_0', 0.2, -# (0.2, 0.2, 0.2, 0.2, 0.2), -# (0.2, 0.2, 0.2, 0.2, 0.2)), -# pybdsim.Builder.Multipole('mym_split_1', 0.2, -# (0.2, 0.2, 0.2, 0.2, 0.2), -# (0.2, 0.2, 0.2, 0.2, 0.2)), -# pybdsim.Builder.Multipole('mym_split_2', 0.1, -# (0.1, 0.1, 0.1, 0.1, 0.1), -# (0.1, 0.1, 0.1, 0.1, 0.1))] -# assert split_multipoles == expected - - -def test_ThinMultipole_repr(): +def test_multipole_split(): + multipole = pybdsim.Builder.Multipole("mym", 0.5, (0.5, 0.5, 0.5, 0.5, 0.5), (0.5, 0.5, 0.5, 0.5, 0.5)) + split_multipoles = multipole.split([0.2, 0.4]) + expected = [pybdsim.Builder.Multipole('mym_split_0', 0.2, + (0.2, 0.2, 0.2, 0.2, 0.2), + (0.2, 0.2, 0.2, 0.2, 0.2)), + pybdsim.Builder.Multipole('mym_split_1', 0.2, + (0.2, 0.2, 0.2, 0.2, 0.2), + (0.2, 0.2, 0.2, 0.2, 0.2)), + pybdsim.Builder.Multipole('mym_split_2', 0.1, + (0.1, 0.1, 0.1, 0.1, 0.1), + (0.1, 0.1, 0.1, 0.1, 0.1))] + assert split_multipoles == expected + + +def test_thinmultipole_repr(): m = pybdsim.Builder.ThinMultipole("myt", (0.5, 0.5, 0.5, 0.5, 0.5), (0.5, 0.5, 0.5, 0.5, 0.5)) @@ -145,119 +131,123 @@ def test_ThinMultipole_repr(): 'knl={0.5,0.5,0.5,0.5,0.5}, ' 'ksl={0.5,0.5,0.5,0.5,0.5};\n')) -def test_quadrupole_repr(quadrupole): +def test_quadrupole_repr(): + quadrupole = pybdsim.Builder.Quadrupole('myq', 0.5, 0.5) assert repr(quadrupole) == 'myq: quadrupole, k1=0.5, l=0.5;\n' -#def test_Quadrupole_splitting(quadrupole): -# split_quadrupoles = quadrupole.split([0.2, 0.4]) -# expected = [pybdsim.Builder.Quadrupole('myq_split_0', l=0.2, k1=0.5), -# pybdsim.Builder.Quadrupole('myq_split_1', l=0.2, k1=0.5), -# pybdsim.Builder.Quadrupole('myq_split_2', l=0.1, k1=0.5)] -# assert expected == split_quadrupoles +def test_quadrupole_split(): + quadrupole = pybdsim.Builder.Quadrupole('myq', 0.5, 0.5) + split_quadrupoles = quadrupole.split([0.2, 0.4]) + expected = [pybdsim.Builder.Quadrupole('myq_split_0', l=0.2, k1=0.5), + pybdsim.Builder.Quadrupole('myq_split_1', l=0.2, k1=0.5), + pybdsim.Builder.Quadrupole('myq_split_2', l=0.1, k1=0.5)] + assert expected == split_quadrupoles -def test_Sextupole_repr(sextupole): +def test_sextupole_repr(): + sextupole = pybdsim.Builder.Sextupole('mys', 0.5, 0.5) assert repr(sextupole) == 'mys: sextupole, k2=0.5, l=0.5;\n' -#def test_Sextupole_splitting(sextupole): -# split_sextupoles = sextupole.split([0.2, 0.4]) -# expected = [pybdsim.Builder.Sextupole('mys_split_0', l=0.2, k2=0.5), -# pybdsim.Builder.Sextupole('mys_split_1', l=0.2, k2=0.5), -# pybdsim.Builder.Sextupole('mys_split_2', l=0.1, k2=0.5)] -# assert expected == split_sextupoles +def test_sextupole_split(): + sextupole = pybdsim.Builder.Sextupole('mys', 0.5, 0.5) + split_sextupoles = sextupole.split([0.2, 0.4]) + expected = [pybdsim.Builder.Sextupole('mys_split_0', l=0.2, k2=0.5), + pybdsim.Builder.Sextupole('mys_split_1', l=0.2, k2=0.5), + pybdsim.Builder.Sextupole('mys_split_2', l=0.1, k2=0.5)] + assert expected == split_sextupoles -def test_Octupole_repr(octupole): +def test_octupole_repr(): + octupole = pybdsim.Builder.Octupole('myo', 0.5, 0.5) assert repr(octupole) == 'myo: octupole, k3=0.5, l=0.5;\n' -#def test_Octupole_splitting(octupole): -# split_octupoles = octupole.split([0.2, 0.4]) -# expected = [pybdsim.Builder.Octupole('myo_split_0', l=0.2, k3=0.5), -# pybdsim.Builder.Octupole('myo_split_1', l=0.2, k3=0.5), -# pybdsim.Builder.Octupole('myo_split_2', l=0.1, k3=0.5)] -# assert expected == split_octupoles +def test_octupole_split(): + octupole = pybdsim.Builder.Octupole('myo', 0.5, 0.5) + split_octupoles = octupole.split([0.2, 0.4]) + expected = [pybdsim.Builder.Octupole('myo_split_0', l=0.2, k3=0.5), + pybdsim.Builder.Octupole('myo_split_1', l=0.2, k3=0.5), + pybdsim.Builder.Octupole('myo_split_2', l=0.1, k3=0.5)] + assert expected == split_octupoles -def test_Decapole_repr(decapole): +def test_decapole_repr(): + decapole = pybdsim.Builder.Decapole('myd', 0.5, 0.5) assert repr(decapole) == 'myd: decapole, k4=0.5, l=0.5;\n' -#def test_Decapole_splitting(decapole): -# split_decapoles = decapole.split([0.2, 0.4]) -# expected = [pybdsim.Builder.Decapole('myd_split_0', l=0.2, k4=0.5), -# pybdsim.Builder.Decapole('myd_split_1', l=0.2, k4=0.5), -# pybdsim.Builder.Decapole('myd_split_2', l=0.1, k4=0.5)] -# assert expected == split_decapoles - -def test_SBend_repr(sbend): - expected = ('mys: sbend, angle=0.5, e1=0.1, e2=0.2, fint=0.1, fintx=0.2,' - ' h1=0.1, h2=0.2, hgap=0.5, l=0.5;\n') - assert repr(sbend) == expected - -#def test_SBend_split(sbend): -# split_sbends = sbend.split([0.2, 0.4]) -# expected = [pybdsim.Builder.SBend('mys_split_0', 0.2, -# angle=0.2, e1=0.1, fint=0.1, -# h1=0.1, hgap=0.5), -# pybdsim.Builder.SBend('mys_split_1', 0.2, -# angle=0.2, hgap=0.5), -# pybdsim.Builder.SBend('mys_split_2', 0.1, -# angle=0.1, e2=0.2, fintx=0.2, -# h2=0.2, hgap=0.5)] -# assert split_sbends == expected - -def test_RBend_repr(rbend): - expected = ('myr: rbend, angle=0.5, e1=0.1, e2=0.2, fint=0.1, fintx=0.2,' - ' h1=0.1, h2=0.2, hgap=0.5, l=0.5;\n') - assert repr(rbend) == expected - -#def test_RBend_split(rbend): -# split_rbends = rbend.split([0.2, 0.4]) -# expected = [pybdsim.Builder.RBend('myr_split_0', 0.2, -# angle=0.2, e1=0.1, fint=0.1, -# h1=0.1, hgap=0.5), -# pybdsim.Builder.RBend('myr_split_1', 0.2, -# angle=0.2, hgap=0.5), -# pybdsim.Builder.RBend('myr_split_2', 0.1, -# angle=0.1, e2=0.2, fintx=0.2, -# h2=0.2, hgap=0.5)] -# assert split_rbends == expected - -def test_RFCavity_repr(): +def test_decapole_split(): + decapole = pybdsim.Builder.Decapole('myd', 0.5, 0.5) + split_decapoles = decapole.split([0.2, 0.4]) + expected = [pybdsim.Builder.Decapole('myd_split_0', l=0.2, k4=0.5), + pybdsim.Builder.Decapole('myd_split_1', l=0.2, k4=0.5), + pybdsim.Builder.Decapole('myd_split_2', l=0.1, k4=0.5)] + assert expected == split_decapoles + +def test_sbend_repr(): + sbend = pybdsim.Builder.SBend('mys', 0.5, angle=0.5, e1=0.1, e2=0.2, fint=0.1, fintx=0.2, h1=0.1, h2=0.2, hgap=0.5) + assert repr(sbend) == 'mys: sbend, angle=0.5, e1=0.1, e2=0.2, fint=0.1, fintx=0.2, h1=0.1, h2=0.2, hgap=0.5, l=0.5;\n' + +def test_sbend_split(): + sbend = pybdsim.Builder.SBend('mys', 0.5, angle=0.5, e1=0.1, e2=0.2, fint=0.1, fintx=0.2, h1=0.1, h2=0.2, hgap=0.5) + split_sbends = sbend.split([0.2, 0.4]) + expected = [pybdsim.Builder.SBend('mys_split_0', 0.2, + angle=0.2, e1=0.1, fint=0.1, + h1=0.1, hgap=0.5), + pybdsim.Builder.SBend('mys_split_1', 0.2, + angle=0.2, hgap=0.5), + pybdsim.Builder.SBend('mys_split_2', 0.1, + angle=0.1, e2=0.2, fintx=0.2, + h2=0.2, hgap=0.5)] + assert split_sbends == expected + +def test_rbend_repr(): + rbend = pybdsim.Builder.RBend('myr', 0.5, angle=0.5, e1=0.1, e2=0.2, fint=0.1, fintx=0.2, h1=0.1, h2=0.2, hgap=0.5) + assert repr(rbend) == 'myr: rbend, angle=0.5, e1=0.1, e2=0.2, fint=0.1, fintx=0.2, h1=0.1, h2=0.2, hgap=0.5, l=0.5;\n' + +def test_rbend_split(): + rbend = pybdsim.Builder.RBend('myr', 0.5, angle=0.5, e1=0.1, e2=0.2, fint=0.1, fintx=0.2, h1=0.1, h2=0.2, hgap=0.5) + split_rbends = rbend.split([0.2, 0.4]) + expected = [pybdsim.Builder.RBend('myr_split_0', 0.2, + angle=0.2, e1=0.1, fint=0.1, + h1=0.1, hgap=0.5), + pybdsim.Builder.RBend('myr_split_1', 0.2, + angle=0.2, hgap=0.5), + pybdsim.Builder.RBend('myr_split_2', 0.1, + angle=0.1, e2=0.2, fintx=0.2, + h2=0.2, hgap=0.5)] + assert split_rbends == expected + +def test_rfcavity_repr(): rf = pybdsim.Builder.RFCavity('rf', 0.5, 0.5) assert repr(rf) == 'rf: rfcavity, gradient=0.5, l=0.5;\n' -def test_RCol_repr(): +def test_rcol_repr(): rcol = pybdsim.Builder.RCol("rc", 0.5, 0.5, 0.5) assert repr(rcol) == 'rc: rcol, l=0.5, xsize=0.5, ysize=0.5;\n' -def test_ECol_repr(): +def test_ecol_repr(): ecol = pybdsim.Builder.ECol("ec", 0.5, 0.5, 0.5) assert repr(ecol) == 'ec: ecol, l=0.5, xsize=0.5, ysize=0.5;\n' -def test_Degrader_repr(): +def test_degrader_repr(): degrader = pybdsim.Builder.Degrader("deg", 0.5, 1, 2, 3, 4, 5) expected = ('deg: degrader, degraderHeight=3, l=0.5,' ' materialThickness=4, numberWedges=1, wedgeLength=2;\n') assert repr(degrader) == expected -def test_MuSpoiler_repr(): +def test_muspoiler_repr(): spoiler = pybdsim.Builder.MuSpoiler("mu", 0.5, 1.0) - expected = 'mu: muspoiler, B=1.0, l=0.5;\n' - assert repr(spoiler) == expected + assert repr(spoiler) == 'mu: muspoiler, B=1.0, l=0.5;\n' def test_Solenoid_repr(): sol = pybdsim.Builder.Solenoid("sol", 0.5, 0.1) - expected = 'sol: solenoid, ks=0.1, l=0.5;\n' - assert repr(sol) == expected + assert repr(sol) == 'sol: solenoid, ks=0.1, l=0.5;\n' def test_Shield_repr(): shield = pybdsim.Builder.Shield('mys', 0.5) - expected = 'mys: shield, l=0.5;\n' - assert repr(shield) == expected + assert repr(shield) == 'mys: shield, l=0.5;\n' def test_Laser_repr(): laser = pybdsim.Builder.Laser('myl', 0.1, 0.2, 0.3, 0.4, 5370) - expected = 'myl: laser, l=0.1, waveLength=5370, x=0.2, y=0.3, z=0.4;\n' - assert repr(laser) == expected + assert repr(laser) == 'myl: laser, l=0.1, waveLength=5370, x=0.2, y=0.3, z=0.4;\n' -def test_Insert(): +def test_insert(): machine = pybdsim.Builder.Machine() machine.AddDrift(name="dr", length=0.1) machine.Insert(pybdsim.Builder.RBend("myr", 0.1, angle=0), index = "dr") @@ -282,19 +272,7 @@ def test_eventgeneratorfile_repr(): expected = 'beam,\tdistrType="eventgeneratorfile:FORMAT",\n\tenergy=100*GeV, \n\tparticle="proton";' assert repr(beam) == expected -#def test_element_split_drift(): -# c = pybdsim.Builder.Element('d1', 'drift', l=(0.4, 'm'), aper1=(2, 'cm')) -# b = c/2 -# first = b[0] -# l = first.Length() -# assert(l == 0.2) - -#def test_element_split_sbend(): -# c = pybdsim.Builder.Element('sb1', 'sbend', l=(0.4,'m'), angle=0.2) -# b = c/2 -# first = b[0] -# l = first.Length() -# assert(l == 0.2) -# assert(first['angle'] == 0.1) #test_element_split_sbend() +#test_drift_split() +#test_multipole_split() \ No newline at end of file