Changes for page Partial Coherence Simulation
Last modified by rangeadm on 2025/04/23 16:13
Summary
-
Page properties (4 modified, 0 added, 0 removed)
-
Attachments (0 modified, 15 added, 0 removed)
- 2020-07-07 16_48_07-Window.png
- 2020-07-07 16_51_14-Window.png
- 2020-07-07 16_52_27-Window.png
- 2020-07-07 16_53_22-Window.png
- GenerateSASE.ipynb
- GenerateSASE.py
- SASEPulseGenV2.ipynb
- SASEPulseGenV4.ipynb
- badge_logo.svg
- binder_badge.png
- image2020-2-5_15-14-4.png
- partia__coherence1.png
- partia__coherence2.png
- simulating_SASE_pulses.ipynb
- simulating_SASE_pulses.pdf
Details
- Page properties
-
- Parent
-
... ... @@ -1,0 +1,1 @@ 1 +FS-FLASH USER tmp.Additional helpful things.WebHome - Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. cpassow1 +XWiki.rangeadm - Tags
-
... ... @@ -1,0 +1,1 @@ 1 +favourite|fel|simulation - Content
-
... ... @@ -2,10 +2,10 @@ 2 2 3 3 The only input parameters are the center wavelength, spectral bandwidth and the pulse duration. 4 4 5 -Below you can find a python implementation (by (% class="twikiNewLink" %)MartinB(%%)) of the partial coherence method as described in: 5 +Below you can find a python implementation (by (% class="twikiNewLink" %)Martin Beye and Christopher Passow(%%)) of the partial coherence method as described in: 6 6 7 - (%style="margin-left:60.0px;"%)8 -* *ThomasPfeiferetal.//Partial-coherencemethod tomodel experimentalfree-electronlaser pulsestatistics,//Opt. Lett.35,3441-3443(2010);** [[link to the paper>>url:http://dx.doi.org/10.1364/OL.35.003441||shape="rect"]]7 +* **Thomas Pfeifer et al. //Partial-coherence method to model experimental free-electron laser pulse statistics,// Opt. Lett. 35, 3441-3443 (2010);** [[link to the paper>>url:http://dx.doi.org/10.1364/OL.35.003441||shape="rect"]] 8 +* and here a paper comparing the model to advanced simulations and experiments [[I. Bermudez et al Optics Express 29, 10491 (2021)>>url:https://doi.org/10.1364/OE.419977||shape="rect"]] 9 9 10 10 == 11 11 Examples: == ... ... @@ -31,12 +31,14 @@ 31 31 32 32 \\ 33 33 34 - \\34 +offline version: 35 35 36 -[[attach:GenerateSASE.ipynb]] 37 37 38 -[[attach:GenerateSASE.py]] 39 39 38 +{{view-file att--filename="simulating_SASE_pulses.pdf" height="250"/}} 39 + 40 +[[attach:simulating_SASE_pulses.ipynb]] 41 + 40 40 \\ 41 41 42 42 \\ ... ... @@ -46,3 +46,5 @@ 46 46 \\ 47 47 48 48 \\ 51 + 52 +\\
- 2020-07-07 16_48_07-Window.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.rangeadm - Size
-
... ... @@ -1,0 +1,1 @@ 1 +82.8 KB - Content
- 2020-07-07 16_51_14-Window.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.rangeadm - Size
-
... ... @@ -1,0 +1,1 @@ 1 +59.9 KB - Content
- 2020-07-07 16_52_27-Window.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.rangeadm - Size
-
... ... @@ -1,0 +1,1 @@ 1 +95.5 KB - Content
- 2020-07-07 16_53_22-Window.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.rangeadm - Size
-
... ... @@ -1,0 +1,1 @@ 1 +75.7 KB - Content
- GenerateSASE.ipynb
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.rangeadm - Size
-
... ... @@ -1,0 +1,1 @@ 1 +3.5 KB - Content
-
... ... @@ -1,0 +1,104 @@ 1 +{ 2 + "cells": [ 3 + { 4 + "cell_type": "code", 5 + "execution_count": 1, 6 + "metadata": { 7 + "collapsed": true 8 + }, 9 + "outputs": [], 10 + "source": [ 11 + "import numpy as np\n", 12 + "import matplotlib.pyplot as plt\n", 13 + "\n", 14 + "def GetSASE(CentralEnergy, dE_FWHM, dt_FWHM, samples=0, Axis=True):\n", 15 + " h=4.135667662 #in eV*fs\n", 16 + " dE=dE_FWHM/2.355 #in eV, converts to sigma\n", 17 + " dt=dt_FWHM/2.355 #in fs, converts to sigma\n", 18 + " if samples == 0:\n", 19 + " \tsamples=int(400.*dt*CentralEnergy/h)\n", 20 + " else:\n", 21 + " \tif (samples < 400.*dt*CentralEnergy/h):\n", 22 + " \t\tprint(\"Number of samples is a little small, proceeding anyway. Got\", samples, \"prefer more than\",400.*dt*CentralEnergy/h)\n", 23 + "\n", 24 + " EnAxis=np.linspace(0.,20.*CentralEnergy,num=samples)\n", 25 + " EnInput=np.zeros(samples, dtype=np.complex64)\n", 26 + " #for i in range(samples):\n", 27 + " EnInput=np.exp(-(EnAxis-CentralEnergy)**2/2./dE**2+2*np.pi*1j*np.random.random(size=samples))\n", 28 + " En_FFT=np.fft.fft(EnInput)\n", 29 + " TAxis=np.fft.fftfreq(samples,d=(20.*CentralEnergy)/samples)*h\n", 30 + " TOutput=np.exp(-TAxis**2/2./dt**2)*En_FFT\n", 31 + " EnOutput=np.fft.ifft(TOutput)\n", 32 + " if (Axis):\n", 33 + " \treturn EnAxis, EnOutput, TAxis, TOutput\n", 34 + " else:\n", 35 + " \treturn EnOutput, TOutput\n", 36 + "\n" 37 + ] 38 + }, 39 + { 40 + "cell_type": "code", 41 + "execution_count": 2, 42 + "metadata": { 43 + "collapsed": true 44 + }, 45 + "outputs": [], 46 + "source": [ 47 + "\n", 48 + "# set the main parameters here:\n", 49 + "CentralEnergy=80. # in eV\n", 50 + "bandwidth=0.5 # bandwidth in %\n", 51 + "dt_FWHM=30. # FWHM of the temporal duration on average \n", 52 + "\n", 53 + "dE_FWHM=CentralEnergy/100 *bandwidth # calculate bandwidth of the spectrum in eV\n", 54 + "\n", 55 + "# calculate 3 SASE pulses\n", 56 + "EnAxis, EnOutput, TAxis, TOutput = GetSASE(CentralEnergy=CentralEnergy, dE_FWHM=dE_FWHM, dt_FWHM=dt_FWHM)\n", 57 + "EnAxis2, EnOutput2, TAxis2, TOutput2 = GetSASE(CentralEnergy=CentralEnergy, dE_FWHM=dE_FWHM, dt_FWHM=dt_FWHM)\n", 58 + "EnAxis3, EnOutput3, TAxis3, TOutput3 = GetSASE(CentralEnergy=CentralEnergy, dE_FWHM=dE_FWHM, dt_FWHM=dt_FWHM)\n", 59 + "\n", 60 + "\n", 61 + "# plot spectrum\n", 62 + "ax1 = plt.subplot(1, 2, 1)\n", 63 + "plt.plot(EnAxis,np.absolute(EnOutput),EnAxis2,np.absolute(EnOutput2),EnAxis3,np.absolute(EnOutput3) )\n", 64 + "plt.xlim(CentralEnergy-2.*dE_FWHM,CentralEnergy+2.*dE_FWHM)\n", 65 + "plt.title('Average pulse duration: %.1f fs' % dt_FWHM ) \n", 66 + "ax1.set_xlabel('Photon energy in eV')\n", 67 + "ax1.set_ylabel('spectral intensity')\n", 68 + "\n", 69 + "# plot time structure\n", 70 + "ax1 =plt.subplot(1, 2, 2)\n", 71 + "plt.plot(TAxis,np.absolute(TOutput),TAxis2,np.absolute(TOutput2), TAxis3,np.absolute(TOutput3))\n", 72 + "plt.xlim(-2.*dt_FWHM,+2.*dt_FWHM)\n", 73 + "ax1.set_xlabel('time in fs')\n", 74 + "ax1.set_ylabel('pulse amplitude')\n", 75 + "\n", 76 + "plt.show()\n", 77 + "\n", 78 + "\n" 79 + ] 80 + } 81 + ], 82 + "metadata": { 83 + "kernelspec": { 84 + "display_name": "Python 3", 85 + "language": "python", 86 + "name": "python3" 87 + }, 88 + "language_info": { 89 + "codemirror_mode": { 90 + "name": "ipython", 91 + "version": 3 92 + }, 93 + "file_extension": ".py", 94 + "mimetype": "text/x-python", 95 + "name": "python", 96 + "nbconvert_exporter": "python", 97 + "pygments_lexer": "ipython3", 98 + "version": "3.4.3" 99 + } 100 + }, 101 + "nbformat": 4, 102 + "nbformat_minor": 0 103 +} 104 +
- GenerateSASE.py
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.rangeadm - Size
-
... ... @@ -1,0 +1,1 @@ 1 +2.0 KB - Content
-
... ... @@ -1,0 +1,56 @@ 1 +import numpy as np 2 +import matplotlib.pyplot as plt 3 + 4 +def GetSASE(CentralEnergy, dE_FWHM, dt_FWHM, samples=0, Axis=True): 5 +h=4.135667662 #in eV*fs 6 +dE=dE_FWHM/2.355 #in eV, converts to sigma 7 +dt=dt_FWHM/2.355 #in fs, converts to sigma 8 +if samples == 0: 9 +samples=int(400.*dt*CentralEnergy/h) 10 +else: 11 +if (samples < 400.*dt*CentralEnergy/h): 12 +print("Number of samples is a little small, proceeding anyway. Got", samples, "prefer more than",400.*dt*CentralEnergy/h) 13 + 14 +EnAxis=np.linspace(0.,20.*CentralEnergy,num=samples) 15 +EnInput=np.zeros(samples, dtype=np.complex64) 16 +EnInput=np.exp(-(EnAxis-CentralEnergy)**2/2./dE**2+2*np.pi*1j*np.random.random(size=samples)) 17 +En_FFT=np.fft.fft(EnInput) 18 +TAxis=np.fft.fftfreq(samples,d=(20.*CentralEnergy)/samples)*h 19 +TOutput=np.exp(-TAxis**2/2./dt**2)*En_FFT 20 +EnOutput=np.fft.ifft(TOutput) 21 +if (Axis): 22 +return EnAxis, EnOutput, TAxis, TOutput 23 +else: 24 +return EnOutput, TOutput 25 + 26 + 27 +# set the main parameters here: 28 +CentralEnergy=80. # in eV 29 +bandwidth=0.5 # bandwidth in % 30 +dt_FWHM=30. # FWHM of the temporal duration on average 31 + 32 +dE_FWHM=CentralEnergy/100 *bandwidth # calculate bandwidth of the spectrum in eV 33 + 34 +# calculate 3 SASE pulses 35 +EnAxis, EnOutput, TAxis, TOutput = GetSASE(CentralEnergy=CentralEnergy, dE_FWHM=dE_FWHM, dt_FWHM=dt_FWHM) 36 +EnAxis2, EnOutput2, TAxis2, TOutput2 = GetSASE(CentralEnergy=CentralEnergy, dE_FWHM=dE_FWHM, dt_FWHM=dt_FWHM) 37 +EnAxis3, EnOutput3, TAxis3, TOutput3 = GetSASE(CentralEnergy=CentralEnergy, dE_FWHM=dE_FWHM, dt_FWHM=dt_FWHM) 38 + 39 + 40 +# plot spectrum 41 +ax1 = plt.subplot(1, 2, 1) 42 +plt.plot(EnAxis,np.absolute(EnOutput),EnAxis2,np.absolute(EnOutput2),EnAxis3,np.absolute(EnOutput3) ) 43 +plt.xlim(CentralEnergy-2.*dE_FWHM,CentralEnergy+2.*dE_FWHM) 44 +plt.title('Average pulse duration: %.1f fs' % dt_FWHM ) 45 +ax1.set_xlabel('Photon energy in eV') 46 +ax1.set_ylabel('spectral intensity') 47 + 48 +# plot time structure 49 +ax1 =plt.subplot(1, 2, 2) 50 +plt.plot(TAxis,np.absolute(TOutput),TAxis2,np.absolute(TOutput2), TAxis3,np.absolute(TOutput3)) 51 +plt.xlim(-2.*dt_FWHM,+2.*dt_FWHM) 52 +ax1.set_xlabel('time in fs') 53 +ax1.set_ylabel('pulse amplitude') 54 + 55 +plt.show() 56 +
- SASEPulseGenV2.ipynb
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.rangeadm - Size
-
... ... @@ -1,0 +1,1 @@ 1 +103.3 KB - Content
- SASEPulseGenV4.ipynb
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.rangeadm - Size
-
... ... @@ -1,0 +1,1 @@ 1 +3.7 KB - Content
-
... ... @@ -1,0 +1,105 @@ 1 +{ 2 + "cells": [ 3 + { 4 + "cell_type": "code", 5 + "execution_count": 1, 6 + "metadata": { 7 + "collapsed": false 8 + }, 9 + "outputs": [], 10 + "source": [ 11 + "# -*- coding: utf-8 -*-\n", 12 + "import numpy as np\n", 13 + "from IPython import embed\n", 14 + "import matplotlib.pyplot as plt\n", 15 + "\n", 16 + "def GetSASE(CentralEnergy, dE_FWHM, dt_FWHM, samples=0, Axis=True):\n", 17 + " h=4.135667662 #in eV*fs\n", 18 + " dE=dE_FWHM/2.355 #in eV, converts to sigma\n", 19 + " dt=dt_FWHM/2.355 #in fs, converts to sigma\n", 20 + " if samples == 0:\n", 21 + " \tsamples=int(400.*dt*CentralEnergy/h)\n", 22 + " else:\n", 23 + " \tif (samples < 400.*dt*CentralEnergy/h):\n", 24 + " \t\tprint(\"Number of samples is a little small, proceeding anyway. Got\", samples, \"prefer more than\",400.*dt*CentralEnergy/h)\n", 25 + "\n", 26 + " EnAxis=np.linspace(0.,20.*CentralEnergy,num=samples)\n", 27 + " EnInput=np.zeros(samples, dtype=np.complex64)\n", 28 + " #for i in range(samples):\n", 29 + " EnInput=np.exp(-(EnAxis-CentralEnergy)**2/4./dE**2+2*np.pi*1j*np.random.random(size=samples))\n", 30 + " En_FFT=np.fft.fft(EnInput)\n", 31 + " TAxis=np.fft.fftfreq(samples,d=(20.*CentralEnergy)/samples)*h\n", 32 + " TOutput=np.exp(-TAxis**2/4./dt**2)*En_FFT\n", 33 + " EnOutput=np.fft.ifft(TOutput)\n", 34 + " if (Axis):\n", 35 + " \treturn EnAxis, EnOutput, TAxis, TOutput\n", 36 + " else:\n", 37 + " \treturn EnOutput, TOutput\n", 38 + "\n" 39 + ] 40 + }, 41 + { 42 + "cell_type": "code", 43 + "execution_count": 2, 44 + "metadata": { 45 + "collapsed": false 46 + }, 47 + "outputs": [], 48 + "source": [ 49 + "# set the main parameters here:\n", 50 + "CentralEnergy=80. # in eV\n", 51 + "bandwidth=0.3 # bandwidth in %\n", 52 + "dt_FWHM=30. # FWHM of the temporal duration on average \n", 53 + "\n", 54 + "dE_FWHM=CentralEnergy/100 *bandwidth # calculate bandwidth of the spectrum in eV\n", 55 + "\n", 56 + "# calculate 3 SASE pulses\n", 57 + "EnAxis, EnOutput, TAxis, TOutput = GetSASE(CentralEnergy=CentralEnergy, dE_FWHM=dE_FWHM, dt_FWHM=dt_FWHM)\n", 58 + "EnAxis2, EnOutput2, TAxis2, TOutput2 = GetSASE(CentralEnergy=CentralEnergy, dE_FWHM=dE_FWHM, dt_FWHM=dt_FWHM)\n", 59 + "EnAxis3, EnOutput3, TAxis3, TOutput3 = GetSASE(CentralEnergy=CentralEnergy, dE_FWHM=dE_FWHM, dt_FWHM=dt_FWHM)\n", 60 + "\n", 61 + "\n", 62 + "# plot them\n", 63 + "ax1 = plt.subplot(1, 2, 1)\n", 64 + "plt.plot(EnAxis,np.absolute(EnOutput),EnAxis2,np.absolute(EnOutput2),EnAxis3,np.absolute(EnOutput3) )\n", 65 + "plt.xlim(CentralEnergy-2.*dE_FWHM,CentralEnergy+2.*dE_FWHM)\n", 66 + "plt.title('Average pulse duration: %.1f fs' % dt_FWHM ) \n", 67 + "ax1.set_xlabel('Photon energy in eV')\n", 68 + "ax1.set_ylabel('spectral intensity')\n", 69 + "\n", 70 + "ax1 =plt.subplot(1, 2, 2)\n", 71 + "plt.plot(TAxis,np.absolute(TOutput),TAxis2,np.absolute(TOutput2), TAxis, np.max(np.absolute(TOutput))*np.exp(-TAxis**2/2/dt_FWHM**2*2.355**2))\n", 72 + "plt.plot(TAxis,np.absolute(TOutput),TAxis2,np.absolute(TOutput2), TAxis3,np.absolute(TOutput3))\n", 73 + "\n", 74 + "plt.xlim(-2.*dt_FWHM,+2.*dt_FWHM)\n", 75 + "ax1.set_xlabel('time in fs')\n", 76 + "ax1.set_ylabel('pulse amplitude')\n", 77 + "\n", 78 + "plt.show()\n" 79 + ] 80 + } 81 + ], 82 + "metadata": { 83 + "celltoolbar": "Raw Cell Format", 84 + "kernelspec": { 85 + "display_name": "Python 3", 86 + "language": "python", 87 + "name": "python3" 88 + }, 89 + "language_info": { 90 + "codemirror_mode": { 91 + "name": "ipython", 92 + "version": 3 93 + }, 94 + "file_extension": ".py", 95 + "mimetype": "text/x-python", 96 + "name": "python", 97 + "nbconvert_exporter": "python", 98 + "pygments_lexer": "ipython3", 99 + "version": "3.4.3" 100 + } 101 + }, 102 + "nbformat": 4, 103 + "nbformat_minor": 2 104 +} 105 +
- badge_logo.svg
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.rangeadm - Size
-
... ... @@ -1,0 +1,1 @@ 1 +3.3 KB - Content
-
... ... @@ -1,0 +1,1 @@ 1 +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="109" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="109" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h64v20H0z"/><path fill="#579aca" d="M64 0h45v20H64z"/><path fill="url(#b)" d="M0 0h109v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/png;base64,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"/> <text x="415" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="370">launch</text><text x="415" y="140" transform="scale(.1)" textLength="370">launch</text><text x="855" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">binder</text><text x="855" y="140" transform="scale(.1)" textLength="350">binder</text></g> </svg>
- binder_badge.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.rangeadm - Size
-
... ... @@ -1,0 +1,1 @@ 1 +6.6 KB - Content
- image2020-2-5_15-14-4.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.rangeadm - Size
-
... ... @@ -1,0 +1,1 @@ 1 +55.4 KB - Content
- partia__coherence1.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.rangeadm - Size
-
... ... @@ -1,0 +1,1 @@ 1 +328.7 KB - Content
- partia__coherence2.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.rangeadm - Size
-
... ... @@ -1,0 +1,1 @@ 1 +72.5 KB - Content
- simulating_SASE_pulses.ipynb
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.rangeadm - Size
-
... ... @@ -1,0 +1,1 @@ 1 +147.1 KB - Content
- simulating_SASE_pulses.pdf
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.rangeadm - Size
-
... ... @@ -1,0 +1,1 @@ 1 +33.4 KB - Content