def example_wolter3(): print( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> example_wolter3" ) p = 50. beam1 = Beam.initialize_as_person() beam1.set_point(p, 0., p) #beam1.set_rectangular_spot(5 / 2 * 1e-5, -5 / 2 * 1e-5, 5 / 2 * 1e-5, -5 / 2 * 1e-5) op_ax = Beam(1) op_ax.set_point(p, 0., p) beam = op_ax.merge(beam1) beam.set_divergences_collimated() beam.plot_xz() distance_between_the_foci = 10. wolter3 = CompoundOpticalElement.initialize_as_wolter_3( 20., 5., distance_between_the_foci) print(wolter3.oe[0].ccc_object.get_coefficients()) print(wolter3.oe[1].ccc_object.get_coefficients()) #beam = wolter3.trace_wolter3(beam, z0) beam = wolter3.trace_compound(beam) beam.plot_xz() beam.retrace(0.1) beam.plot_xz() plt.show()
def test_person(self): print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> test_person") beam = Beam.initialize_as_person() if do_plot: beam.plot_xz() plt.show()
def example_wolter2_good_rays(): print( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> example_wolter2_good_rays" ) p = 100. ##### if p=100 the trace_good_ray goes crazy beam1 = Beam.initialize_as_person(10000) # beam1 = Beam(100000) # beam1.set_circular_spot(1.) # beam1.set_rectangular_spot(5 / 2 * 1e-5, -5 / 2 * 1e-5, 5 / 2 * 1e-5, -5 / 2 * 1e-5) beam1.x *= 100. beam1.z *= 100. beam1.set_point(p, 0., p) op_ax = Beam(1) op_ax.set_point(p, 0., p) beam = op_ax.merge(beam1) beam.set_divergences_collimated() beam.plot_xz(0) p = 20000. q = 30. z0 = 5. focal = 2 * z0 + q wolter2 = CompoundOpticalElement.initialiaze_as_wolter_2(p1=p, q1=q, z0=z0) beam = wolter2.trace_good_rays(beam) beam.plot_good_xz() beam.retrace(10.) beam.plot_good_xz() plt.title("test_wolter2_good_rays") print(beam.flag) if do_plot: plt.show()
def example_kirk_patrick_baez(): print( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> example_kirk_patrick_baez" ) beam = Beam.initialize_as_person() beam.set_flat_divergence(1e-12, 1e-12) beam.x = beam.x * 1e-3 beam.z = beam.z * 1e-3 bound1 = BoundaryRectangle(xmax=2.5, xmin=-2.5, ymax=2.5, ymin=-2.5) bound2 = BoundaryRectangle(xmax=1., xmin=-1., ymax=1., ymin=-1.) kirk_patrick_baez = CompoundOpticalElement.initialize_as_kirkpatrick_baez( p=10., q=5., separation=4., theta=89 * np.pi / 180, bound1=bound1, bound2=bound2) beam = kirk_patrick_baez.trace_compound(beam) beam.plot_good_xz(0) plt.title('Kirk Patrick Baez') indices = np.where(beam.flag > 0) beam.retrace(50.) beam.plot_good_xz() print(kirk_patrick_baez.info()) print("Number of good rays: %f" % (beam.number_of_good_rays())) # beam.histogram() if do_plot: plt.show()
def example_optimezed_wolter1_good_rays(): print( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> example_optimezed_wolter1_good_rays" ) p = 100. beam1 = Beam.initialize_as_person() beam1.x *= 50. beam1.z *= 50. beam1.set_point(p, 0., p) op_ax = Beam(1) op_ax.set_point(p, 0., p) beam = op_ax.merge(beam1) beam.set_divergences_collimated() beam.plot_xz() p = 1e12 R = 100. theta = 1e-3 * np.pi / 180 wolter1 = CompoundOpticalElement.initialiaze_as_wolter_1_with_two_parameters( p1=p, R=R, theta=theta) beam = wolter1.trace_good_rays(beam) beam.plot_good_xz() indices = np.where(beam.flag >= 0) assert_almost_equal(beam.x[indices], 0., 8) assert_almost_equal(beam.z[indices], 0., 8) beam.retrace(100.) beam.plot_good_xz() plt.title("optimezed_wolter1_good_rays") if do_plot: plt.show()
import numpy as np import matplotlib.pyplot as plt from monwes.CompoundOpticalElement import CompoundOpticalElement do_plot = True main = "__main__" if main == "__main__": print( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> example_wolter3" ) p = 50. q = 5. beam1 = Beam.initialize_as_person() beam1.set_point(p, 0., p) #beam1.set_rectangular_spot(5 / 2 * 1e-5, -5 / 2 * 1e-5, 5 / 2 * 1e-5, -5 / 2 * 1e-5) op_ax = Beam(1) op_ax.set_point(p, 0., p) beam = op_ax.merge(beam1) beam.set_divergences_collimated() beam.plot_xz() distance_between_the_foci = 10. wolter3 = CompoundOpticalElement.initialize_as_wolter_3( p, q, distance_between_the_foci)