예제 #1
0
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)
예제 #2
0
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()
예제 #3
0
    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()