Beispiel #1
0
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()
Beispiel #2
0
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)