Last modified by rangeadm on 2025/04/23 16:13

From version 22.1
edited by cpassow
on 2020/09/23 15:39
Change comment: There is no comment for this version
To version 25.1
edited by sndueste
on 2022/03/17 17:47
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.cpassow
1 +XWiki.sndueste
Tags
... ... @@ -1,0 +1,1 @@
1 +favourite|fel|simulation
Content
... ... @@ -2,20 +2,14 @@
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 -**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"]]
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: ==
12 12  
13 -{{markdown LinkifyHeaders="false"}}
14 -[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/git/https%3A%2F%2Fgitlab.desy.de%2Fchristopher.passow%2Fsase-pulses/master?filepath=simulating_SASE_pulses.ipynb)
15 -{{/markdown}}
16 -
17 -\\
18 -
19 19  [[~[~[image:attach:binder_badge.png~|~|thumbnail="true" width="150"~]~]>>url:https://mybinder.org/v2/git/https%3A%2F%2Fgitlab.desy.de%2Fchristopher.passow%2Fsase-pulses/master?filepath=simulating_SASE_pulses.ipynb||shape="rect"]]
20 20  
21 21  //CentralEnergy=80 # in eV//
... ... @@ -37,12 +37,14 @@
37 37  
38 38  \\
39 39  
40 -\\
34 +offline version:
41 41  
42 -[[attach:GenerateSASE.ipynb]]
43 43  
44 -[[attach:GenerateSASE.py]]
45 45  
38 +{{view-file att--filename="simulating_SASE_pulses.pdf" height="250"/}}
39 +
40 +[[attach:simulating_SASE_pulses.ipynb]]
41 +
46 46  \\
47 47  
48 48  \\
... ... @@ -52,3 +52,5 @@
52 52  \\
53 53  
54 54  \\
51 +
52 +\\
2020-07-07 16_48_07-Window.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
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.XWikiGuest
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.XWikiGuest
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.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +75.7 KB
Content
GenerateSASE.ipynb
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
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.XWikiGuest
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.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +103.3 KB
Content
SASEPulseGenV4.ipynb
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
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.XWikiGuest
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.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +6.6 KB
Content
image2020-2-5_15-14-4.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +55.4 KB
Content
partia__coherence1.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +328.7 KB
Content
partia__coherence2.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +72.5 KB
Content
simulating_SASE_pulses.ipynb
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +147.1 KB
Content
simulating_SASE_pulses.pdf
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +33.4 KB
Content