From 9a97886300ea606dc84f28b57dde8799be8c9d62 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim <gubaidulinvadim@gmail.com> Date: Mon, 15 Jul 2024 15:44:42 +0200 Subject: [PATCH] added two tests: emittance calculation and emittance calculation with nonzero dispersion --- tests/test_bunch.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/test_bunch.py b/tests/test_bunch.py index 7c1499a..17ffd33 100644 --- a/tests/test_bunch.py +++ b/tests/test_bunch.py @@ -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 -- GitLab