{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "*This notebook was created by Sergey Tomin (sergey.tomin@desy.de). Source and license info is on [GitHub](https://github.com/ocelot-collab/ocelot). June 2018.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Appendix: FODO in thin lens approximation \n", "\n", "*This notebook was created as an answer for a question what the min/max average beta function can have the EuXFEL SASE1 undulator. The right way is asking the optics expert but it is too simple and does not make you feel the beam optics of this SASE line. Another problem is that FEL experts like to work with average betas. To meet all these requirements, I wrote this notebook, which also might help someone to understand how to deal with linear optics in OCELOT.*\n", "\n", "Let's consider the FODO cell of the SASE undulator \n", "\n", "\n", "\n", "Introducing $d = L_{cell}/2$ as the distance between defocusing and focusing quadrupoles.\n", "\n", "We neglect focusing effect in the vertical plan of the horizontal planar undulator.\n", "\n", "The transfer matrix of the quadrupole in thin lens approximation:\n", "$$\n", "\\begin{equation}\n", "M_f = \n", "\\begin{bmatrix}\n", " 1 & 0 \\\\\n", " 1/f & 1 \n", "\\end{bmatrix}\n", "\\end{equation}\n", "$$\n", "where $f = 1/kl$ is focal length, $k$ is quad strength and $l$ is the quad length. \n", "\n", "Drift:\n", "$$\n", "\\begin{equation}\n", "M_d = \n", "\\begin{bmatrix}\n", " 1 & d \\\\\n", " 0 & 1 \n", "\\end{bmatrix}\n", "\\end{equation}\n", "$$" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import sympy as sp \n", "sp.init_printing()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Calculate the matrix for a half cell, starting in the middle of a defocusing quadrupole and ending in the meddile of a focusing lens. \n", "\n", "And denotes $f_h = 2 f$ focal length of the half quadrupole" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}\\frac{d + fh}{fh} & d\\\\- \\frac{d}{fh^{2}} & \\frac{- d + fh}{fh}\\end{matrix}\\right]$" ], "text/plain": [ "⎡d + fh ⎤\n", "⎢────── d ⎥\n", "⎢ fh ⎥\n", "⎢ ⎥\n", "⎢ -d -d + fh⎥\n", "⎢ ─── ───────⎥\n", "⎢ 2 fh ⎥\n", "⎣ fh ⎦" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fh, d = sp.symbols(\"fh, d\")\n", "\n", "Mqf = sp.Matrix([[1, 0],[-1/fh, 1]])\n", "Md = sp.Matrix([[1, d],[0, 1]])\n", "Mqd = sp.Matrix([[1, 0],[1/fh, 1]])\n", "M1 = Mqf*Md*Mqd\n", "sp.simplify(M1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For second half cell $f_h \\to -f_h$" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}- \\frac{2 d^{2}}{fh^{2}} + 1 & \\frac{2 d \\left(d + fh\\right)}{fh}\\\\\\frac{2 d \\left(d - fh\\right)}{fh^{3}} & - \\frac{2 d^{2}}{fh^{2}} + 1\\end{matrix}\\right]$" ], "text/plain": [ "⎡ 2 ⎤\n", "⎢ 2⋅d 2⋅d⋅(d + fh)⎥\n", "⎢ - ──── + 1 ────────────⎥\n", "⎢ 2 fh ⎥\n", "⎢ fh ⎥\n", "⎢ ⎥\n", "⎢ 2 ⎥\n", "⎢2⋅d⋅(d - fh) 2⋅d ⎥\n", "⎢──────────── - ──── + 1 ⎥\n", "⎢ 3 2 ⎥\n", "⎣ fh fh ⎦" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M2 = sp.Matrix([\n", "[(d - fh)/-fh, d],\n", "[ -d/fh**2, (-d -fh)/-fh]])\n", "M_cell = sp.simplify(M1*M2)\n", "M_cell" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Phase advance and stability of the FODO cell\n", "\n", "Phase advance is related to the transfer matrix by:\n", "$$\n", "\\cos \\phi_{cell} = \\frac{1}{2}Trace(M_{cell}) \n", "$$\n", "Stability requares:\n", "$$\n", "\\left|Trace(M_{cell})\\right| < 2\n", "$$" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFkAAAAyCAYAAAA3OHc2AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAFh0lEQVR4Ae2b21HcMBSGvZkUQEgHSwcQOoAOIFQAdBCGJ3hjoANCBQQ6CKmAhA5CByHbAfk/IXlkre292DJW8JkRknXxyp+Oj45kMXp+fs76Lqenpyvq47Ht59jG+8qf9L3v9O99Cp1UH88F9ND1VelLpX8prLm8Psfv+tw5r28HArvlXZ8rPVbeupfX22QqkNHin72lOKNjoy5sstW4Q8X5K1/VL1v3SuXY3m9lbZSHJu8oHsyFB/JG6VXvujIpcA8KG6rAZPc9rKgyTMSOAnWSkOjmQlC+LEpCbZz9vfPbKh/tRos3lE7Cs6D/Ub0LgUDrgLEokG21efRBWsBHiinL7DXxI9d9ltiavCcIX5cAgCbnWmyB4rZdKr1OUPpI4Umh9xJNkwUCMwGYWrEAMQFo5B8F4ALxTMEJPjE2mjgXtZ05keaVXzERBbIFN1Fc+yqrHI1lUsTGmrqK3WTna/KHV2TU+KdjmQvctVozoXI0E8DYWX8wSONhLGrHG8OIdYPWIQvOgTo700yoDiZiRfXDwSjY41gP3uV9W4UsYGMLztfMquf5rILcJFBJ7dFu7uFMBtnJS9s2GUCbgoUZ8IWJjL0G8hkAJjWAhjABD+wCfPJSllYhWzhTgJT/V5DuFO8CSzGAkVDj8YEfKFAdVnXY5rAOxUlJq+ai5smB6sACcKJrBgPNN2KhovFuI2j7fwDMw0XdIBIkJkBAMpkhtwr3yr9QAPoV1wofFa4VgM+ESB6ab7Ra6aQlKuSkySzQeSkDisQKFPmkwEoU19QoyQAZLA3EAma5b/ZUuJXSvI2seDF5d13ZZH67tyIQWwr498sIQAvLe90Lrcb0GS9rgPyClfmBsIww3/wW2LA9EzuLrfEAeRmsxTbALGzLFouzlVb95ODmb+JSmmp8/5KHxR3NVP4waHIJnaZZAmtWuLqP8TgGyE2JlrdnwrsV7AuKRycnJxjsHwqh4aa8SnZ5DfxCXffiKJL6MfL75adVxuLILYz8olV7gX8bCkv7KpMQ1s3sb7BPk7t0g58sTALCPglgjOZNkZszQ+1xA/GNC4MyTHxzApxVzQ7Umg9Y6THtBps8i94c5YLJRMcWr1tau1a8IU9JabIegnnj2D6B0RKlX/V0p9VWJjo2tMIvQqwkL5KCrAfp4+lOPjww4GXLcuMcdAbZjvJEnUHOdG3SitFONMHsXum67nzbgcpvFNyHAfYNyOMsRsHbUX4not+t66/pQyc2WR0BBm7StQIjvqVgRGUcHcDd4QuIg/dSOP2XjRi3qT9dunwOA+4UYPm7VLTsSpMBu68AaCCVwWTy4NtfpWgwwi/bQGffoJEWq31Zfyr7sWhBdMh6ALQWk8DEgLZMPZCtQ9+nysgsE7VhUJi9e3+6swtzYUyBBVzGi7x56uRtdS8mGkxQEqc7o634BMKsfgQCTWa5yiv9pPzCBrfyMuVxxg0zwkyNSWEyQVM5iVT4Wq1rAPNpx9zHXmeKC/VUpzcSDbJ7Qj08expAKV2yKh9TwpEBBoE9EQNLsfmqoDhfoioNYHxR3+kHNvePNnHp/o0kqk22UOhgna1F0xEWFaE2MgC+JHm6Mypk0eGVzwSvbvbHHrPTFdahLUcIclGdJE93xp74NkUo1M4cmk2gyQVNF0zMAgG/OnmJDRltDDU0hyaYmANghmfisLMsUirb5jdJIBEbMkvl+xoOVQcM8UzMwkOgWTYzEMlKNMgWDJpap43Y44KpsCRp50wFe7SzTI5t1s8o5sTnJr0yiI4GMI2r5jJsjIu2J7hsFfruWlAtjctofrLg4M+uKs793DSQtN/LVs2FgPKvuE4zscfulW+/5wndsVXIem72EziahBnIFBf8XPLeorRtkw1kgSR+82bCKdQ/iGreix501Z8AAAAASUVORK5CYII=", "text/latex": [ "$\\displaystyle - \\frac{4 d^{2}}{fh^{2}} + 2$" ], "text/plain": [ " 2 \n", " 4⋅d \n", "- ──── + 2\n", " 2 \n", " fh " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trace_M = sp.simplify(M_cell[0,0] + M_cell[1,1])\n", "trace_M" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Phase advance:\n", "$$\n", "\\cos \\phi_{cell} = \\frac{1}{2}Trace(M_{cell}) = \\frac{1}{2} \\Big(2 - \\frac{4 d^2}{f_h^2}\\Big) = 1 - \\frac{2 d^2}{f_h^2} = 1 - 2\\frac{L_{cell}^2}{16 f^2}\n", "$$\n", "\n", "using trigonometric double-angle formulae:\n", "$$\n", "\\cos 2\\phi = 1-2\\sin^2 \\phi\n", "$$\n", "and finally \n", "$$\n", "\\boxed{\\sin \\phi_{cell}/2 = \\frac{L_{cell}}{4f}}\n", "$$\n", "#### Stability \n", "$$\n", "\\left| 2 - \\frac{4 d^2}{f_h^2}\\right| < 2\n", "$$\n", "rewriting \n", "$$\n", "0 < \\frac{4 d^2}{f_h^2} < 4 \\qquad \\to \\qquad f_h > d\n", "$$\n", "Finally \n", "$$\n", "\\boxed{f > \\frac{L_{cell}}{4}}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### $\\beta$ - functions\n", "\n", "General solution of the Hill's equation $x'' + K(s)x = 0$:\n", "\n", "\\begin{equation}\n", "\\begin{cases}\n", "x(s) = \\sqrt{\\varepsilon \\beta(s)}\\cos(\\phi(s) + \\phi)\\\\\n", "x'(s) = -\\sqrt{\\frac{\\varepsilon}{\\beta(s)}}\\Big(\\alpha(s)\\cos(\\phi(s) + \\phi) + \\sin(\\phi(s) + \\phi)\\Big)\n", "\\end{cases}\n", "\\end{equation}\n", "$$$$\n", "Applying initial conditions at the point $s(0) = s_0$ with $\\phi(0) = 0$ and the particle coordinates $x_0, x'_0$, we will get:\n", "\n", "\\begin{equation}\n", "\\begin{cases}\n", "\\cos\\phi = \\frac{x_0}{\\sqrt{\\varepsilon \\beta_0}}\\\\\n", "\\sin\\phi = -\\frac{1}{\\sqrt{\\varepsilon}}\\Big( \\frac{\\alpha_0}{\\sqrt{\\beta_0}}x_0 + \\sqrt{\\beta_0}x'_0\\Big)\n", "\\end{cases}\n", "\\end{equation}\n", "inserting the result into the equation above:\n", "\\begin{equation}\n", "\\begin{bmatrix}\n", " x_1 \\\\\n", " x'_1 \n", "\\end{bmatrix} = \n", "\\begin{bmatrix}\n", " \\sqrt{\\frac{\\beta_1}{\\beta_0}}(\\cos\\phi_{0\\to1} + \\alpha_0\\sin\\phi_{0\\to1}) & \\sqrt{\\beta_1\\beta_0}\\sin\\phi_{0\\to1})\\\\\n", " \\frac{(\\alpha_0 - \\alpha_1)\\cos\\phi_{0\\to1} - (1 + \\alpha_0\\alpha_2)\\sin\\phi_{0\\to1}}{\\sqrt{\\beta_1\\beta_0}} & \\sqrt{\\frac{\\beta_0}{\\beta_1}}(\\cos\\phi_{0\\to1} - \\alpha_1\\sin\\phi_{0\\to1})\n", "\\end{bmatrix}\n", "\\cdot\n", "\\begin{bmatrix}\n", " x_0 \\\\\n", " x'_0 \n", "\\end{bmatrix}\n", "\\end{equation}\n", "$$$$\n", "Now consider half of the FODO cell (see picture above) ($\\phi_{0\\to1} = \\phi_{cell}/2$) and $\\beta_0 = \\beta_{min}$ and $\\beta_1 = \\beta_{max}$ (we consider horizontal plane) and remembering that in the middle of the quads $\\alpha = 0$. From another side, we have already calculated the transfer matrix for [a half of FODO cell](#half_cell). Collecting all together:\n", "\n", "\\begin{equation} \n", "\\begin{bmatrix}\n", " \\sqrt{\\frac{\\beta_{max}}{\\beta_{min}}}\\cos\\frac{\\phi_{cell}}{2} & \\sqrt{\\beta_{max}\\beta_{min}}\\sin\\frac{\\phi_{cell}}{2}\\\\\n", " -\\frac{\\sin\\frac{\\phi_{cell}}{2}}{\\sqrt{\\beta_{max}\\beta_{min}}} & \\sqrt{\\frac{\\beta_{min}}{\\beta_{max}}}\\cos\\frac{\\phi_{cell}}{2}\n", "\\end{bmatrix};\n", "\\qquad\n", "\\begin{bmatrix}\n", " 1 + d/f_h & d \\\\\n", " -d/f_h^2 & 1 - d/f_h \n", "\\end{bmatrix}\n", "\\end{equation}\n", "\n", "after some gymnastics with trigonometric identities (and taking into account $\\sin \\phi_{cell}/2 = \\frac{d}{f_h}= \\frac{L_{cell}}{4f}$)\n", "\n", "$$\n", "\\beta_{max} = \\frac{1 + \\sin \\frac{\\phi_{cell}}{2}}{\\sin\\phi_{cell}}L_{cell}\n", "$$\n", "\n", "$$\n", "\\beta_{min} = \\frac{1 - \\sin \\frac{\\phi_{cell}}{2}}{\\sin\\phi_{cell}}L_{cell}\n", "$$\n", "If we neglect the fact the beta function in the drift space takes the form of a quadratic function ($\\beta(s) = \\beta_0 - 2\\alpha_0 s + \\gamma_0 s^2$) and assume instead a linear behavior, the average $\\beta$-function will be\n", "$$\n", "\\overline \\beta \\approx \\frac{\\beta_{max} + \\beta_{min}}{2} = \\frac{L_{cell}}{\\sin\\phi_{cell}}\n", "$$\n", "\n", "What means that minimum average beta-function will be with phase advance $\\phi_{cell} = 90^0$. For SASE1 undulator $L_{cell} = 12.2$ and taking into account that our calculations were done with some level approximation:\n", "$$\n", "\\overline \\beta_{min} \\approx \\frac{12.2 m}{\\sin 90^0} = 12.2 m\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### More accurate solution\n", "Taking into account quadratic shape of the $\\beta$ in the drift space and go through some simple steps, finally we will get more exact solution:\n", "1. Twiss parameters transformation \n", "\\begin{equation}\n", "\\begin{bmatrix}\n", " \\beta \\\\\n", " \\alpha \\\\\n", " \\gamma\n", "\\end{bmatrix}_1 = \n", "\\begin{bmatrix}\n", " C^2 & -2SC & S^2\\\\\n", " -C C' & SC' + S'C & -SS'\\\\\n", " C'^2 & -2 S'C' & S'^2\n", "\\end{bmatrix}\n", "\\cdot\n", "\\begin{bmatrix}\n", " \\beta \\\\\n", " \\alpha \\\\\n", " \\gamma\n", "\\end{bmatrix}_0\n", "\\end{equation}\n", "Where $C,S, C', S'$ are elements of the transfer matrix\n", "\\begin{equation}\n", "M = \n", "\\begin{bmatrix}\n", " C & S \\\\\n", " C' & S' \n", "\\end{bmatrix}\n", "\\end{equation}\n", "\n", "2. twiss parameters after the thin quadrupole:\n", "$$\n", "\\beta_1 = \\beta_0 \\\\\n", "\\alpha_1 = -\\frac{\\beta_0}{f} + \\alpha_0 \\\\\n", "\\gamma_1 = \\frac{1}{f^2} - 2 \\frac{\\alpha_0}{f} + \\gamma_0\n", "$$\n", "In the middle of the quadrupole $\\alpha_0 = 0$ then\n", "$$\n", "\\alpha_1 = -\\frac{\\beta_0}{f_h}\n", "$$\n", "3. In the drift space $\\beta$ behave:\n", "$$\n", "\\beta(s) = \\beta_0 - 2\\alpha_0 s + \\gamma_0 s^2\n", "$$\n", "4. Because FODO cell is symetric and we are considering the thin lens approximation the average $\\overline \\beta$ is:\n", "$$\n", "\\overline \\beta = \\frac{2}{L}\\int_0^{L/2}\\left(\\beta_0 - 2\\alpha_0 s + \\gamma_0s^2 \\right)ds = \\beta_0 - \\frac{\\alpha_0 L}{2} + \\gamma_0\\frac{L^2}{12}\n", "$$\n", "5. Inserting expression for $\\beta_{min}$ and express focal length against the phase advance we will get:\n", "$$\n", "\\boxed{\\overline \\beta = \\frac{L}{6 \\sin\\phi_{cell}}\\big(5 + \\cos\\phi_{cell} \\big)}\n", "$$\n", "\n", "