コード例 #1
0
ファイル: propagator_NVE.py プロジェクト: twguest/FELpy
def propagate(wfr_directory, sdir, focus, analysis = False, crop = [], append = None, descriptor = "", VERBOSE = True):
    
    print("info")
    print("wavefront directory: {}".format(wfr_directory))
    print("save directory: {}".format(sdir))
    print("focus (i.e. beamline option): {}".format(focus))
    print("analysis: {}".format(analysis))
    print("crop: {}".format(crop))
    print("append: {}".format(append))
    
    for item in descriptor:
        print(item)
    
    wfr = Wavefront()
    wfr.load_hdf5(wdir)
    sdir = sdir + "/{}/".format(focus)
    
    bl = get_beamline_object(ekev = 4.96, options = focus, crop = crop)

    
    if append is not None:

        for item in append:
            bl.append(item[0],item[1])

    wfr.log(bl, descriptor)
    
    bl.propagate(wfr)
    
    if analysis: 
        wfr.analysis()
        
    wfr.store_hdf5(sdir)
コード例 #2
0
ファイル: focus_test.py プロジェクト: twguest/FELpy
def sliceFocus(wfr,
               ekev,
               focus='nano',
               nslices=500,
               axisName='x',
               outdir=None):

    spb = get_beamline_object(apertures=False, surface=False)

    el_n = len(spb.propagation_options[0]['optical_elements']) - 1

    spb.propagation_options[0]['optical_elements'][el_n].L *= 0.98
    slice_interval = 2.2 - copy(
        spb.propagation_options[0]['optical_elements'][el_n].L / nslices)

    spb.propagation_options[0]['propagation_parameters'][
        el_n] = propagation_parameters(5, 1, 5, 1, mode='fresnel')

    spb.propagate(wfr)
    plotIntensity(wfr)

    if axisName == 'x':
        data_focslice = np.zeros([nslices, np.shape(wfr.data.arrEhor)[0]])
    elif axisName == 'y':
        data_focslice = np.zeros([nslices, np.shape(wfr.data.arrEhor)[1]])

    for n in range(nslices):
        print("Slice {}/{}".format(n + 1, nslices))

        bl = Beamline()
        bl.append(SRWLOptD(slice_interval),
                  propagation_parameters(1, 1, 1, 1, mode='quadratic'))
        bl.propagate(wfr)
        plotIntensity(wfr)
        data_focslice[-n - 1, :] = wfr.get_intensity()[:, :, 0].sum(-1)
        #plt.plot(data_focslice[-n-1, :])
        plt.show()

    y = np.linspace(
        spb.bl.propagation_options[0]['optical_elements'][el_n].L,
        spb.bl.propagation_options[0]['optical_elements'][el_n].L +
        nslices * slice_interval, nslices)

    # =============================================================================
    #     ax1 =     colorbar_plot(data_focslice,
    #               get_mesh(data_focslice,
    #                                wfr.get_spatial_resolution()[0]*1e6,
    #                                y[1]-y[0]),
    #               aspect = 'auto',
    #               scale = 1,
    #               #norm=mpl.colors.LogNorm(),
    #               xlabel = "x($\mu m$)",
    #               ylabel = "z(m)",
    #               return_axes = True)
    #
    # =============================================================================
    return data_focslice
コード例 #3
0
def aperture(angle = 1e-03, ekev = 5.0):
    
   
    wfr= construct_SA1_wavefront(512, 512, ekev, 0.25)
    
    bl = get_beamline_object(ekev, apertures = True, surface = True,
                             crop = ["d1", "HOM1"], theta_HOM = angle)
    
    bl.propagate(wfr)
     
    return wfr.get_intensity().sum()
コード例 #4
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
コード例 #5
0
def propagate_NVE():

    wfr_directory = sys.argv[1].replace("*", "/")

    job_name = "NKB_4980eV_250pC_Source_to_NVE"
    python_command = propagate_NVE
    input_directory = dCache + "/NanoKB-Pulse/source/"

    save_directory = input_directory.replace("/source/", "/NVE/")
    mkdir_p(save_directory)

    log_directory = logs

    focus = "nano"
    analysis = False

    filename = __file__
    dt = datetime.now().__str__()
    function = python_command.__name__

    description = "Propagate NanoKB Pulses 4.98 keV, 250 pC from Undulator-exit to the NVE"

    crop = 'NVE'
    append = None

    print("info")
    print("wavefront directory: {}".format(wfr_directory))
    print("save directory: {}".format(save_directory))
    print("focus (i.e. beamline option): {}".format(focus))
    print("analysis: {}".format(analysis))
    print("datetime: {}".format(dt))
    print("filename: {}".format(filename))
    print("function: {}".format(function))
    print("description: {}".format(description))

    wfr = Wavefront()
    wfr.load_hdf5(wfr_directory)
    wfr.set_electric_field_representation('frequency')

    wfr = scale(wfr)

    print("wfr domain: {}".format(wfr.params.wDomain))

    bl = get_beamline_object(ekev=4.96,
                             options=focus,
                             crop=crop,
                             theta_KB=5e-03,
                             theta_HOM=3.5e-03)

    wfr.custom_fields['focus'] = focus
    wfr.custom_fields['job name'] = job_name
    wfr.custom_fields['input directory'] = wfr_directory
    wfr.custom_fields['datetime'] = dt
    wfr.custom_fields['function'] = function.__str__()
    wfr.custom_fields['filename'] = filename
    wfr.custom_fields['description'] = description
    #wfr.custom_fields['bl'] = bl.__str__

    bl.propagate(wfr)

    if analysis:
        wfr.analysis()

    wfr.store_hdf5(wfr_directory.replace("/source/", "/NVE/"))
コード例 #6
0
    return wfr


def z_eff(z1, z2):
    return z1 * z2 / (z1 + z2)


if __name__ == '__main__':
    z = z_eff(8e-03, 3.5)
    from wpg.wpg_uti_wf import plot_intensity_map as plotIntensity
    from felpy.model.src.coherent import construct_gaussian

    wfr = construct_SA1_wavefront(1024, 1024, 9.3, 0.25)

    bl = get_beamline_object(crop="NVE")
    bl.append(Drift(2.2 + 8e-02), propagation_parameters(1 / 20, 1, 1 / 50, 1))
    bl.propagate(wfr)
    plotIntensity(wfr)
# =============================================================================
#
#     plotIntensity(wfr)
#     # print("Pixel Size: {}".format(wfr.get_spatial_resolution()))
#     propThruMaskLite(wfr)
#     plotIntensity(wfr)
#
#     bl = Beamline()
#     bl.append(Drift(z), propagation_parameters(1/10,1,1/10,1, 'quadratic'))
#     bl.propagate(wfr)
#     plotIntensity(wfr)
#