def test_plane_mirror(): print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> test_plane_mirror") beam1 = Beam(5000) beam1.set_point(0, 0, 0) beam1.set_flat_divergence(5e-3, 5e-2) p = 1. q = 1. theta = np.pi / 4 alpha = 0 plane_mirror = Optical_element.initialize_as_plane_mirror( p, q, theta, alpha) xmin = -10**5 xmax = 10**5 ymin = 10**5 ymax = -10**5 bound = BoundaryRectangle(xmax, xmin, ymax, ymin) plane_mirror.rectangular_bound(bound) beam1 = plane_mirror.trace_optical_element(beam1) beam1.plot_xz() beam1.plot_xpzp() if do_plot: plt.show()
def test_boundary_condition(): #beam1 = Beam(10000) #beam1.set_point(0, 0, 0) #beam1.set_flat_divergence(5e-3, 5e-2) shadow_beam = run_shadow_source() beam1 = Beam(10000) beam1.initialize_from_arrays( shadow_beam.getshonecol(1), shadow_beam.getshonecol(2), shadow_beam.getshonecol(3), shadow_beam.getshonecol(4), shadow_beam.getshonecol(5), shadow_beam.getshonecol(6), shadow_beam.getshonecol(10), 0 ) bound1=BoundaryRectangle(xmax=0.005,xmin=-0.005,ymax=0.05,ymin=-0.05) bound2=BoundaryRectangle(xmax=0.01,xmin=-0.01,ymax=0.1,ymin=-0.1) plane_mirror=Optical_element.initialize_as_plane_mirror(2,1,65*np.pi/180,0) parabolic_mirror=Optical_element.initialize_as_surface_conic_paraboloid_from_focal_distances(5,2,28*np.pi/180,90*np.pi/180) plane_mirror.rectangular_bound(bound1) parabolic_mirror.rectangular_bound(bound2) beam1=plane_mirror.trace_optical_element(beam1) beam1=parabolic_mirror.trace_optical_element(beam1) beam1.plot_xz() plt.title("Total points plot") beam1.plot_good_xz() plt.title("Good points plot") print(beam1.flag) indices=np.where(beam1.flag>0) print("The good number of ray are: %f" %(beam1.flag[indices].size)) plt.show() shadow_beam=trace_shadow(shadow_beam) assert_almost_equal(beam1.x, shadow_beam.getshonecol(1), 8) assert_almost_equal(beam1.y, shadow_beam.getshonecol(2), 8) assert_almost_equal(beam1.z, shadow_beam.getshonecol(3), 8)