Skip to content
Snippets Groups Projects

Emittance calculation

Merged GUBAIDULIN requested to merge emittance_calculation into develop
2 unresolved threads
+ 33
0
@@ -70,4 +70,37 @@ def test_bunch_plots(mybunch):
mybunch.plot_phasespace()
mybunch.plot_profile()
assert True
def test_bunch_emittance(demo_ring):
mp_number = 1_000_000
current = 1.2e-3
mybunch = Bunch(demo_ring, mp_number=mp_number, current=current,
track_alive=False)
mybunch.init_gaussian()
np.testing.assert_allclose(mybunch.emit[0], demo_ring.emit[0], rtol=0, atol=1e-13,
err_msg=f'Emittances do not match. {demo_ring.emit[0]} initialised, {mybunch.emit[0]:} calculated')
np.testing.assert_allclose(mybunch.emit[1], demo_ring.emit[1], rtol=0, atol=1e-13,
err_msg=f'Emittances do not match. {demo_ring.emit[1]} initialised, {mybunch.emit[1]:} calculated')
np.testing.assert_allclose(mybunch.emit[0], mybunch.cs_invariant[0]/2, rtol=0, atol=1e-13,
err_msg=f'Emittances do not match. {mybunch.cs_invariant[0]/2} calculated with optics functions, {mybunch.emit[0]:} calculated with coordinates only')
np.testing.assert_allclose(mybunch.emit[1], mybunch.cs_invariant[1]/2, rtol=0, atol=1e-13,
err_msg=f'Emittances do not match. {mybunch.cs_invariant[1]/2} calculated with optics functions, {mybunch.emit[1]:} calculated with coordinates only')
def test_bunch_emittance_with_dispersion(demo_ring):
mp_number = 1_000_000
current = 1.2e-3
demo_ring.optics.local_dispersion = np.array([1e-2, 1e-3, 1e-2, 1e-3])
mybunch = Bunch(demo_ring, mp_number=mp_number, current=current,
track_alive=False)
mybunch.init_gaussian()
np.testing.assert_allclose(mybunch.emit[0], demo_ring.emit[0], rtol=0, atol=1e-13,
err_msg=f'Emittances do not match. {demo_ring.emit[0]} initialised, {mybunch.emit[0]:} calculated')
np.testing.assert_allclose(mybunch.emit[1], demo_ring.emit[1], rtol=0, atol=1e-13,
err_msg=f'Emittances do not match. {demo_ring.emit[1]} initialised, {mybunch.emit[1]:} calculated')
np.testing.assert_allclose(mybunch.emit[0], mybunch.cs_invariant[0]/2, rtol=0, atol=1e-13,
err_msg=f'Emittances do not match. {mybunch.cs_invariant[0]/2} calculated with optics functions, {mybunch.emit[0]:} calculated with coordinates only')
np.testing.assert_allclose(mybunch.emit[1], mybunch.cs_invariant[1]/2, rtol=0, atol=1e-13,
err_msg=f'Emittances do not match. {mybunch.cs_invariant[1]/2} calculated with optics functions, {mybunch.emit[1]:} calculated with coordinates only')
\ No newline at end of file
Loading