{ "cells": [ { "cell_type": "markdown", "id": "5ee3938b", "metadata": {}, "source": [ "# Generating Pulses\n", "\n", "Here is a demonstrastion of how to generate a single SASE pulse\n", "\n", "The 'sase.pulse' function generates an array containing a scalar complex electric field representation of an XFEL Source. The pulse function takes as its input the following parameters:\n", "\n", "1. Mesh Definition: numpy.ndarrays defining the extent of the wavefield array in space (m) and time (t)\n", "2. X-ray Properties: Photon energy (eV), Pulse energy (J), spectral bandwidth ($\\Delta E/E$)\n", "3. Gaussian Properties: Pulse width (m), Pulse duration (s) and Divergence half-angle ($\\theta$) \n", "4. Pulse Error: Spatial (m) and Temporal jitter (s), Transverse pointing error (rad.)\n", "\n", "See the module [documentation](https://twguest.github.io/phenom/API.html#phenom.source.sase_pulse) for more\n", "\n", "We begin by importing the sase_pulse function from the phenom.source module:" ] }, { "cell_type": "markdown", "id": "4e1af635", "metadata": {}, "source": [ "## Generate a Single Pulse" ] }, { "cell_type": "code", "execution_count": 1, "id": "1d1f79e8", "metadata": {}, "outputs": [], "source": [ "from phenom.source import sase_pulse\n", "from phenom.spectrum import linear_SASE_spectrum" ] }, { "cell_type": "markdown", "id": "4c0c4011", "metadata": {}, "source": [ "from which we can define a pulse of arbitrary characteristics" ] }, { "cell_type": "code", "execution_count": 3, "id": "04a17e35", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "## define the spatial/temporal mesh\n", "x = y = np.linspace(-250e-06, 250e-06, 500) \n", "t = np.linspace(-25e-15, 25e-15, 250)\n", "\n", "sase = linear_SASE_spectrum(t, 5e-03 , 5e-15, 9200)\n", "\n", "## define the pulse\n", "pulse = sase_pulse(x = x,\n", " y = y,\n", " t = t,\n", " photon_energy = 9200.,\n", " pulse_energy = 1e-04,\n", " pulse_duration = 5e-15,\n", " bandwidth = 1e-12,\n", " sigma = 50e-06,\n", " div = 2.5e-03,\n", " x0 = 0.0,\n", " y0 = 0.0,\n", " t0 = 0.0,\n", " theta_x = 0.0,\n", " theta_y = 0.0\n", " )" ] }, { "cell_type": "markdown", "id": "b276ddcc", "metadata": {}, "source": [ "We can visualise the spatial and temporal intensity properties of this field:" ] }, { "cell_type": "code", "execution_count": 5, "id": "2060dc23", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 0, 'Time (fs)')" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from matplotlib import pyplot as plt\n", "\n", "\n", "fig, [ax1, ax2] = plt.subplots(1,2, figsize = (9,3))\n", "\n", "### spatial intensity\n", "im = ax1.imshow((abs(pulse)**2).sum(axis = 2),\n", " extent = [x.min() * 1e06,\n", " x.max() * 1e06,\n", " y.min() * 1e06,\n", " y.max() * 1e06],\n", " cmap = 'bone'\n", " )\n", "\n", "plt.colorbar(im, label = \"Intensity (W/mm$^2$)\", ax = ax1)\n", "\n", "ax1.set_xlabel('x ($\\mu$m)')\n", "ax1.set_ylabel('y ($\\mu$m)')\n", "\n", "\n", "ax2.plot(t*1e15, (abs(pulse)**2).sum(axis = (0,1)))\n", "ax2.set_xlabel(\"Time (fs)\")" ] }, { "cell_type": "code", "execution_count": null, "id": "61d4cf76-440c-4eca-8888-c110d582d5b8", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (Spyder)", "language": "python3", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.17" } }, "nbformat": 4, "nbformat_minor": 5 }