def test_spherical_mirror(): print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> test_spherical_mirror") beam1 = Beam(5000) beam1.set_point(0, 0, 0) beam1.set_flat_divergence(5e-3, 5e-2) p = 2. q = 1. theta = 30 theta = theta * np.pi / 180 alpha = 0 * np.pi / 180 spherical_mirror = Optical_element.initialize_as_spherical_mirror( p, q, theta, alpha) #spherical_mirror.set_spherical_mirror_radius_from_focal_distances() print(spherical_mirror.R) beam1 = spherical_mirror.trace_optical_element(beam1) beam1.plot_xz() beam1.plot_xpzp() print(np.mean(beam1.flag)) if do_plot: plt.show() assert_almost_equal(np.abs(beam1.x).mean(), 0.0, 2) assert_almost_equal(np.abs(beam1.y).mean(), 0.0, 2) assert_almost_equal(np.abs(beam1.z).mean(), 0.0, 2)
def test_my_hyperbolic_mirror(): beam = Beam() beam.set_flat_divergence(0.005, 0.0005) p1 = 130. q1 = 0. spherical_mirror = Optical_element.initialize_as_spherical_mirror(p1, q1, theta=0, alpha=0, R=130.) beam = spherical_mirror.trace_optical_element(beam) p = 15 q = p1 - p theta = 0 * np.pi / 180 hyp_mirror = Optical_element.initialize_my_hyperboloid(p, q, theta) beam = hyp_mirror.trace_optical_element(beam) beam.plot_xz() assert_almost_equal(beam.x, 0., 10) assert_almost_equal(beam.y, 0., 10) assert_almost_equal(beam.z, 0., 10) if do_plot: plt.show()
beam1 = Beam() # beam1.set_point(0,0,0) # beam1.set_flat_divergence(5e-3,5e-2) beam1.initialize_from_arrays( beam_shadow.getshonecol(1), beam_shadow.getshonecol(2), beam_shadow.getshonecol(3), beam_shadow.getshonecol(4), beam_shadow.getshonecol(5), beam_shadow.getshonecol(6), beam_shadow.getshonecol(10), ) #### Data of the plane mirron p = 1. q = 1. theta = 45 alpha = 90 R = 2 * p * q / (q + p) / np.cos(theta) spherical_mirror = Optical_element.initialize_as_spherical_mirror( p, q, theta, alpha, R) beam1 = spherical_mirror.trace_optical_element(beam1) beam1.plot_xz() plt.title("xz diagram on the image plane") beam1.plot_xpzp() plt.title("xpzp diagram on the image plane") plt.show()