Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Geometrical divergence does not match FWHM of build_gauss_wavefront #119

Open
mabelruiz opened this issue Feb 26, 2018 · 3 comments
Open

Comments

@mabelruiz
Copy link

The size of the beam at a distance z in fwhm is geometrically defined by: w_fwhm=div_fwhm*z, where

div_fwhm= lambda/pi()*width_fwhm

The value of the beam size are allways 1.6 times smaller than the given by buid_gaussian_wavefront command.

@mabelruiz
Copy link
Author

mabelruiz commented Feb 26, 2018

src_to_m0 = 21.4                                # m

''' #Source size (FWHM, Calculations)
             4 nm - 120 mum
             8 nm - 140 mum
             12 nm - 160 mum
             20 nm - 190 mum
             60 nm - 270 mum 
'''

wl=7.0e-9                                          # m
ekev=1239/(wl*1e12)
coh_time= 25e-15                                #[fs=1E-15] parms http://adweb.desy.de/home/faatz/www/FLASH-parms4.html
pulseEnergy= 0.465e-5;                         #[J]  parms http://adweb.desy.de/home/faatz/www/FLASH-parms4.html
w_fwhm =100*1e-6                                # source width. wl/(np.pi*theta_fwhm)# FWHM beam waist; 
w_0 = w_fwhm/(2*np.sqrt(np.log(2)))            # sigma of amplitude
w_rms= w_fwhm/1.36



M=1.6
zR= (np.pi*w_fwhm**2)/(wl*M)
wZ=w_fwhm*np.sqrt(1+(src_to_m0/zR)**2)
wRMS=wZ*0.735
theta_fwhm=wl*M/(np.pi*w_fwhm)

#defining limits and sample
num_points = 900
nslices = 30  
sig_num = 10                                    #range is 5 times the size of the beam width radius;
range_xy =w_rms * np.sqrt(1+(src_to_m0/zR)**2)/np.sqrt(2)*sig_num;     





print('Divergence (FWHM)  :{:.2f} urad'.format(theta_fwhm*1e6))
print('Waist FWHM@{:.2f}m :{:.2f} um'.format(src_to_m0,wZ*1e6))
print('Waist RMS@{:.2f}m  :{:.2f} um'.format(src_to_m0,wRMS*1e6))
print('Range x and y      :{:.2f} mm'.format(range_xy*1e3))

data_path='KB';mkdir_p(data_path)
fname='KB2'
bSaved=True

@mabelruiz
Copy link
Author

srwl_wf = build_gauss_wavefront(num_points, num_points, nslices, 
                                ekev, -range_xy/2, range_xy/2, -range_xy/2, range_xy/2, coh_time/np.sqrt(2), 
                                w_rms/2, w_rms/2, src_to_m0, pulseEn=pulseEnergy, 
                                pulseRange=None, _mx=None, _my=None)

FWM=0.76x0.76 mm

@mabelruiz mabelruiz changed the title Geometrical divergence does not match FWHM of build_gaussian_wavefront Geometrical divergence does not match FWHM of build_gauss_wavefront Feb 26, 2018
@tyjisinap
Copy link

I think the module build_gauss_wavefront can only build the perfact gauss beam that M2=1. And I don't know how to simulate the gauss beam that M2 >1. Have you find the answer?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants