Exemplo n.º 1
0
    def testGenesisV2(self):
        """ Testing the conversion of genesis1.3 v2 output into a wpg wavefront."""

        # Convert.
        wavefront = genesis_v2.read_genesis_file("lcls/lcls.out", "lcls/lcls.out.dfl")

        # Check type.
        self.assertIsInstance(wavefront, Wavefront)

        # Plot.
        plot_intensity_map(wavefront)
Exemplo n.º 2
0
def no_mirror(ekev = 5.0):
    wfr= construct_SA1_wavefront(512, 512, ekev, 0.25)
        
    bl = get_beamline_object(ekev, apertures = False, surface = False,
                             crop = ["d1", "d1"])
    
    bl.propagate(wfr)
    ii = wfr.get_intensity().sum()
    plot_intensity_map(wfr)
    
    return ii
Exemplo n.º 3
0
    def propagate_sequential(self, wfr, return_intensity = False, return_mesh = False, savedir = "", checkpoints = []):
        """
        Propagate sequentially through each optical element in beamline.

        :param wfr: Input wavefront (will be re-writed after propagation)
        :param outdir: save directory
        """
               
        
        if return_intensity:
            intensity = []
        if return_mesh:
            mesh = []
            
        for itr in range(len(self.propagation_options[0]['optical_elements'])):
            oe = self.propagation_options[0]['optical_elements'][itr]
            pp = self.propagation_options[0]['propagation_parameters'][itr]
            
            bl = srwlib.SRWLOptC([oe],[pp])
            
            try:
                print(oe.name)
            except:
                print(oe)
             
            
            srwl.PropagElecField(wfr._srwl_wf, bl)
            
            if return_intensity:
                intensity.append(wfr.get_intensity().sum(-1))
            if return_mesh:
                mesh.append(wfr.get_mesh())
                    
            plot_intensity_map(wfr)
            
        if return_intensity:
            
            if return_mesh:
                return intensity, mesh
            else:
                return intensity
Exemplo n.º 4
0
plt.imshow(create_mask(nx, ny))
wfr = construct_SA1_wavefront(512, 512, 5, .8, mx=0, xoff=0, tiltX=0)

period = nx * wfr.get_spatial_resolution()[0] * (512 / (nx))
print(period)
wav = wfr.get_wavelength()

d = (2 * period**2) / wav

arr = create_mask(nx, ny)
np.save("/opt/arr", arr)
im = Image.fromarray(arr)
im = im.convert('RGB')
im.save("/opt/arr.png")

obj = srwloptT("/opt/arr.png",
               wfr.get_spatial_resolution()[0] * (512 / 75),
               wfr.get_spatial_resolution()[1] * (512 / 75),
               1e-06,
               1e-8,
               atten_len=1e-08)

bl = Beamline()
bl.append(Drift(50), propagation_parameters(1, 1, 1, 1, mode='quadratic'))
bl.append(obj, propagation_parameters(1, 1, 1, 1))
bl.append(Drift(d),
          propagation_parameters(1 / 3, 4, 1 / 3, 4, mode='fraunhofer'))
bl.propagate(wfr)
plot_intensity_map(wfr)
Exemplo n.º 5
0
from PIL import Image

ekev = 25
wav = ekev2wav(25)
k = np.pi * 2 / wav
delta = 4e-07
d2waist = (wav) / (np.arctan(.27 / 8) * np.pi)

r = 75e-03

wfr = Wavefront(
    construct_gaussian(1024, 1024, 25, -15e-02, 15e-02, -15e-02, 15e-02, 3e-2,
                       3e-02, d2waist))

### PLOT 1
plot_intensity_map(wfr)

bl = Beamline()

bl.append(Drift(1), propagation_parameters(1, 1, 1, 1))
bl.propagate(wfr)

x = np.linspace(wfr.params.Mesh.xMin, wfr.params.Mesh.xMax, wfr.params.Mesh.nx)
y = np.ones([wfr.params.Mesh.nx, wfr.params.Mesh.ny])

thickness = norm(cylinder_thickness(x, r, offset=0), lim=(0, 255))

sdir = "../../data/samples/cylinder_thickness.png"

im = Image.fromarray(thickness * y)
im = im.convert("L")