Exemplo n.º 1
0
def test_dipole():
    d = elements.Dipole('dipole', 1.0, 0.01)
    assert d.MaxOrder == 0
    assert len(d.PolynomA) == 2
    assert d.K == 0.0
    d = elements.Dipole('dipole', 1.0, 0.01, -0.5)
    assert d.MaxOrder == 1
    assert len(d.PolynomA) == 2
    assert d.K == -0.5
    d = elements.Dipole('dipole', 1.0, 0.01, PolynomB=[0.0, 0.1, 0.0])
    assert d.MaxOrder == 1
    assert len(d.PolynomA) == 3
    assert d.K == 0.1
    d = elements.Dipole('dipole', 1.0, 0.01, PolynomB=[0.0, 0.0, 0.005])
    assert d.MaxOrder == 2
    assert len(d.PolynomA) == 3
    assert d.K == 0.0
    d = elements.Dipole('dipole',
                        1.0,
                        0.01,
                        PolynomB=[0.0, 0.0, 0.005],
                        MaxOrder=0)
    assert d.MaxOrder == 0
    assert len(d.PolynomA) == 3
    assert d.K == 0.0
Exemplo n.º 2
0
def test_lattice_energy_radiation_periodicity():
    d = elements.Dipole('d1', 1, BendingAngle=numpy.pi/16, Energy=5.e+6,
                        PassMethod='BndMPoleSymplectic4RadPass')
    lat = Lattice([d], name='lattice', energy=3.e+6)
    assert lat.energy == 3.e+6
    assert lat.periodicity == 32
    assert lat.radiation is True
Exemplo n.º 3
0
def test_lattice_voltage_harmonic_number():
    rf = elements.RFCavity('rf', 0, 0.2e6, 0.5e9, 5, 3.e6)
    d = elements.Dipole('d1', 2.99792458, BendingAngle=numpy.pi/5)
    lat = Lattice([rf, d], name='lattice')
    assert lat.energy == 3.e+6
    assert lat.periodicity == 10
    assert lat.rf_voltage == 2e6
    assert lat.revolution_frequency == 10.e6
    assert lat.harmonic_number == 50
    assert lat.radiation is True
Exemplo n.º 4
0
def test_lattice_creation_short_scan_reads_radiation_status_correctly():
    d = elements.Dipole('d1',
                        1,
                        BendingAngle=numpy.pi,
                        Energy=5.e+6,
                        PassMethod='BndMPoleSymplectic4RadPass')
    lat = Lattice([d], name='lattice', energy=3.e+6, periodicity=32)
    assert len(lat) == 1
    assert lat.name == 'lattice'
    assert lat.energy == 3.e+6
    assert lat.periodicity == 32
    assert lat._radiation is True
Exemplo n.º 5
0
def test_lattice_creation_from_lattice_inherits_attributes():
    d = elements.Dipole('d1', 1, BendingAngle=numpy.pi, Energy=5.e+6,
                        PassMethod='BndMPoleSymplectic4RadPass')
    lat1 = Lattice([d], name='lattice', energy=3.e+6, periodicity=32,
                   an_attr=12)
    lat2 = Lattice(lat1, another_attr=5)
    assert id(lat1) != id(lat2)
    assert len(lat2) == 1
    assert lat2.name == 'lattice'
    assert lat2.energy == 3.e+6
    assert lat2.periodicity == 32
    assert lat2.radiation is True
    assert lat2.another_attr == 5
    with pytest.raises(AttributeError):
        assert lat2.an_attr == 12
Exemplo n.º 6
0
def test_divide_splits_attributes_correctly():
    pre = elements.Drift('drift', 1)
    post = pre.divide([0.2, 0.5, 0.3])
    assert len(post) == 3
    assert sum([e.Length for e in post]) == pre.Length
    pre = elements.Dipole('dipole', 1, KickAngle=[0.5, -0.5], BendingAngle=0.2)
    post = pre.divide([0.2, 0.5, 0.3])
    assert len(post) == 3
    assert sum([e.Length for e in post]) == pre.Length
    assert sum([e.KickAngle[0] for e in post]) == pre.KickAngle[0]
    assert sum([e.KickAngle[1] for e in post]) == pre.KickAngle[1]
    assert sum([e.BendingAngle for e in post]) == pre.BendingAngle
    pre = elements.RFCavity('rfc', 1, voltage=187500, frequency=3.5237e+8,
                            harmonic_number=31, energy=6.e+9)
    post = pre.divide([0.2, 0.5, 0.3])
    assert len(post) == 3
    assert sum([e.Length for e in post]) == pre.Length
    assert sum([e.Voltage for e in post]) == pre.Voltage
Exemplo n.º 7
0
def test_lattice_energy_is_not_defined_raises_AtError():
    d = elements.Dipole('d1', 1, BendingAngle=numpy.pi)
    with pytest.raises(AtError):
        Lattice([d])
Exemplo n.º 8
0
def test_bndstrmpole_symplectic_4_pass(rin):
    bend = elements.Dipole('b', 1.0)
    bend.PassMethod = 'BndStrMPoleSymplectic4Pass'
    l = Lattice([bend], name='lat', energy=3e9)
    atpass(l, rin, 1)