{"id":363,"date":"2021-02-25T15:54:46","date_gmt":"2021-02-25T14:54:46","guid":{"rendered":"https:\/\/logbooks.ifosim.org\/pykat\/?p=363"},"modified":"2021-05-27T18:59:19","modified_gmt":"2021-05-27T16:59:19","slug":"shift-and-phase-change-from-tilted-beamsplitters-part-2-finesse-examples","status":"publish","type":"post","link":"https:\/\/logbooks.ifosim.org\/pykat\/blog\/shift-and-phase-change-from-tilted-beamsplitters-part-2-finesse-examples\/","title":{"rendered":"Shift and phase change from tilted beamsplitters &#8211; part 2: finesse examples"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Introduction<\/h1>\n\n\n\n<p>This is the second post discussing the shift and phase dependence of a beam going through a z-shaped telescope setup when both beamsplitters are tilted over a small angle <em>\u03b2<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/logbooks.ifosim.org\/pykat\/wp-content\/uploads\/sites\/4\/2021\/02\/experimental.svg\" alt=\"\" class=\"wp-image-353\" width=\"558\" height=\"166\"\/><\/figure>\n\n\n\n<p>The first post (<a rel=\"noreferrer noopener\" href=\"https:\/\/logbooks.ifosim.org\/pykat\/blog\/shift-and-phase-change-from-tilted-beamsplitters-part-1-theory\/\" data-type=\"URL\" data-id=\"https:\/\/logbooks.ifosim.org\/pykat\/blog\/shift-and-phase-change-from-tilted-beamsplitters-part-1-theory\/\" target=\"_blank\">part 1: theory<\/a>) derived both the shift in the position of the beam and the change in phase at the detector as a function of tilt angle and telescope size. This post will focus on giving example kat files and outputs from pykat + finesse 2 to verify the theoretical calculations (for the full notebook see <a href=\"https:\/\/logbooks.ifosim.org\/pykat\/wp-content\/uploads\/sites\/4\/2021\/03\/zbeam_shift_and_phase_20210303-final.ipynb\" data-type=\"URL\" data-id=\"https:\/\/logbooks.ifosim.org\/pykat\/wp-content\/uploads\/sites\/4\/2021\/03\/zbeam_shift_and_phase_20210303-final.ipynb\">zbeam_shift_and_phase_20210303-final.ipynb<\/a>).<\/p>\n\n\n\n<p>Additionally we also discuss convergence of the simulations as a function of maxtem, and the optimal positions of the beam waist <em>z<\/em><sub>0<\/sub> and the distance <em>s<\/em> between the two beamsplitters (for this part the notebook is <a href=\"https:\/\/logbooks.ifosim.org\/pykat\/wp-content\/uploads\/sites\/4\/2021\/03\/zbeam_shift_phase_convergence_20210304-final.ipynb\">zbeam_shift_phase_convergence_20210304-final.ipynb<\/a>).<\/p>\n\n\n\n<p>The two main results found in <a href=\"https:\/\/logbooks.ifosim.org\/pykat\/blog\/shift-and-phase-change-from-tilted-beamsplitters-part-1-theory\/\">part 1<\/a> are the shift <em>\u2206<\/em> given by<\/p>\n\n\n\n<div class=\"ssl-alp-tex\" data-katex-display=\"true\">\\Delta = s \\cdot \\sin 2\\beta \\qquad (1)<\/div>\n\n\n\n<p>and the phase change <em>\u03b4\u03c6<\/em> satisfying<\/p>\n\n\n\n<div class=\"ssl-alp-tex\" data-katex-display=\"true\">\\delta \\varphi = \\frac{2 s \\cdot \\sin^2 \\beta}{\\lambda} \\cdot 360\\degree \\qquad (2)<\/div>\n\n\n\n<h1 class=\"wp-block-heading\">Finesse simulations<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Basic experimental setup<\/h2>\n\n\n\n<p>Our experimental setup sketched above can be described by the following basic kat script.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># experimental setup:\nl laser 1.5 0 n0                        # laser (Power = 1 W, wavelength offset = 0)\ngauss g1 laser n0 10mm -1200            # set waist of 10mm 1.2km right of laser\nmaxtem 9\n\ns s1 1000 n0 nb11                       # space of 1km till first beam splitter\nbs bs1 1 0 0 30 nb11 nb12 nb13 nb14     # beam splitter 1 (R = 1.0, T = 0.0, phi = 0\u00b0, alpha = 30\u00b0)\ns s2 400 nb12 nb21                      # space between 2 beam splitters, 400 meter\nbs bs2 1 0 0 30 nb21 nb22 nb23 nb24     # beam splitter 2 (R = 1.0, T = 0.0, phi = 0\u00b0, alpha = 30\u00b0)\n\nattr bs1 xbeta 1e-5                     # tilt both splitters over 1e-5 radians\nattr bs2 xbeta 1e-5<\/code><\/pre>\n\n\n\n<p>it consists of:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>a laser with power 1.5 Watt<\/li><li>two beamsplitters, bs1 and bs2:<ul><li>the first 1 km right of the laser, the second 400 meters away from the first.<\/li><li>each having an angle of incidence (<em>\u03b1<\/em>) of 30\u00b0.<\/li><li>each tilted over a small angle (<em>\u03b2<\/em>) of 1e-5 radians.<\/li><\/ul><\/li><li>a Gaussian beam with waist-size <em>w<\/em><sub>0<\/sub> 10 mm, at a distance 1.2 km right of the laser, i.e. precisely in the middle between the two beamsplitters.<\/li><li>we do most calculations using maxtem 9 (i.e. n+m of the higher order modes is &lt;= 9)<\/li><li>furthermore, the reference wavelength <em>\u03bb<\/em> for finesse is 1064nm.<\/li><\/ul>\n\n\n\n<p>For these parameters eq. (1) gives the following value for <em>\u2206<\/em><\/p>\n\n\n\n<div class=\"ssl-alp-tex\" data-katex-display=\"true\">\\frac{\\Delta}{w_0} = \\frac{400 \\cdot \\sin (2 \\cdot 10^{-5})}{10^{-2}} \\approx 0.8<\/div>\n\n\n\n<p>while eq. (2) gives for <em>\u03b4\u03c6<\/em><\/p>\n\n\n\n<div class=\"ssl-alp-tex\" data-katex-display=\"true\">\\delta \\varphi = \\frac{2 \\cdot 400 \\cdot \\sin^2 10^{-5}}{1.064 \\cdot 10^{-6}} \\cdot 360\\degree \\approx 27.1 \\degree<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">First simulation: measure the beam shape after different distances<\/h2>\n\n\n\n<p>We will do two simulations, measuring the beam shape after 600 and 1000 meters respectively. For these simulations we add code like the following bit of katscript to the basic code above:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Simulation setup\ns s3 600 nb22 n1                        # distance from bs2 to detector, 600 meter\nbeam bd1 n1                             # measure beam shape after 600 meter\n\nxaxis bd1 x lin 0.5 1 200               # vary x around the expected peak at 0.8 w0\nyaxis abs<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"728\" height=\"325\" src=\"https:\/\/logbooks.ifosim.org\/pykat\/wp-content\/uploads\/sites\/4\/2021\/02\/beamintens_600_1000.svg\" alt=\"\" class=\"wp-image-369\"\/><\/figure>\n\n\n\n<p>We see that the Gaussian bundle over distance becomes lower and wider, but remains its peak at the expected position <em>x<\/em>\/<em>w<sub>0<\/sub><\/em> = 0.8, confirming we are simulating a parallel but shifted bundle.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Second simulation: phase shift<\/h2>\n\n\n\n<p>Now we turn to measure the phase shift of the outgoing beam resulting from the tilting of the beamsplitters. For this we use the following simulation script (again in addition to the basic experimental setup above):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Simulation setup\ns s3 600 nb22 n1             # measure at 600meter after 2nd bs (as 1st simulation)\nbeam bd1 0 n1                # use beam in amplitude\/phase setup, use lowest mode\nyaxis abs:deg                # output both amplitude and phase, only using phase for now\n\nxaxis bd1 x lin 0 1.6 200    # vary x around the peak at 0.8 w0<\/code><\/pre>\n\n\n\n<p>i.e. we use a beam detector in amplitude\/phase mode, measuring the phase along the beam cross section at a distance 600 meter after the second beamsplitter.<\/p>\n\n\n\n<p>For reference, we have also run the same simulation for <em>\u03b2<\/em>=0. We expect the full result to be shifted over 0.8 <em>w<\/em><sub>0<\/sub> and to have a phase that is larger by about 27.1\u00b0.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"705\" height=\"325\" src=\"https:\/\/logbooks.ifosim.org\/pykat\/wp-content\/uploads\/sites\/4\/2021\/02\/phaseshift-1.svg\" alt=\"\" class=\"wp-image-390\"\/><\/figure>\n\n\n\n<p>The right plot shows the phase vs. x dependency for the untilted beam around the peak at 0. The left plot shows in red the measured phase as a function of <em>x<\/em> of the full simulation (at <em>\u03b2<\/em>=1e-5), combined with a translated plot of the untilted result (blue points). We see indeed that<\/p>\n\n\n\n<div class=\"ssl-alp-tex\" data-katex-display=\"true\">\\varphi_{\\beta\\ne0}(x+\\Delta) = \\varphi_{\\beta=0}(x) + \\delta \\varphi<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Third simulation: dependency phase shift on beta<\/h2>\n\n\n\n<p>In this simulation, we measure the phase shift at the front of the beam as a function of the tilt <em>\u03b2<\/em>, where we expect to see the sin<sup>2<\/sup>(<em>\u03b2<\/em>) behaviour from eq. (2). To test this we use the following simulation script (again in addition to the experimental setup above):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Simulation setup\ns s3 600 nb22 n1             # measure at 600meter after 2nd bs (as 1st simulation)\nad bd1 0 0 0 n1              # amplitude detector for mode n=m=0 at freq=0\nyaxis abs:deg                # measure amplitude and phase\n\nxaxis bs1 xbeta lin -1.5e-5 1.5e-5 40    # vary xbeta\nput bs2 xbeta $x1<\/code><\/pre>\n\n\n\n<p>The measured phase vs. <em>\u03b2<\/em> dependency (red line) is plotted together with the theoretical curve (blue points) as following from eq. (2) using <em>s <\/em>= 400 and <em>\u03bb<\/em> = 1.064 nm<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"382\" height=\"325\" src=\"https:\/\/logbooks.ifosim.org\/pykat\/wp-content\/uploads\/sites\/4\/2021\/02\/phaseshift_beta-1.svg\" alt=\"\" class=\"wp-image-389\"\/><\/figure>\n\n\n\n<p>We see that the phase shift indeed exactly follows eq. (2) above. For modes with <em>n<\/em>&gt;0 we would see the same sin<sup>2<\/sup>(<em>\u03b2<\/em>) behaviour but with a constant offset depending on the mode number. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fourth set of simulations: convergence as a function of maxtem<\/h2>\n\n\n\n<p>Now we will turn to investigate the effect of the number of higher order modes used in the simulation &#8211; i.e. maxtem &#8211; on the acceptable range of the tilt parameter <em>\u03b2<\/em>. Additionally we will also look into the effects of the waist position <em>z<\/em><sub>0<\/sub> and the distance <em>s<\/em><sub>2<\/sub> between the beamsplitters on this convergence. We will measure convergence using the total power in the beam. For larger and larger values of <em>\u03b2<\/em> we need to include more and more higher order modes in the mode-expansion of the beam for a correct description. Hence by including only a finite set of modes in our simulation, we will &#8220;loose&#8221; energy to modes that are not included, resulting in missing total energy in the simulated beam. Hence the total energy in the beam can be used to study the convergence.<\/p>\n\n\n\n<p>Our first simulation will measure the total energy as a function of <em>\u03b2<\/em> for different values of maxtem. It will consist of the experimental setup katscript code above plus the following simulation part<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Simulation setup\nmaxtem {}                      # will be filled in the maxtem loop\n\ns s3 600 nb22 n1               # measure at 600meter after 2nd bs (as 1st simulation)\npd pd1 n1                      # use photodiode to measure integrated power\n\nxaxis bs1 xbeta lin 0 4e-5 40  # x-axis: vary xbeta of bs1 between 0 and 4\u00b710^-5\nput bs2 xbeta $x1              # use same xbeta for bs2<\/code><\/pre>\n\n\n\n<p>We run the simulation with different maxtem (3, 5, 7 and 9) at distance <em>s<\/em><sub>3 <\/sub>= 600 meter behind the second beamsplitter. To verify consistency, we also run the simulation for the larger value of <em>s<\/em><sub>3<\/sub> of 1km (for just one maxtem = 7).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"720\" height=\"325\" src=\"https:\/\/logbooks.ifosim.org\/pykat\/wp-content\/uploads\/sites\/4\/2021\/02\/totalpower_converge_maxtem_distance.svg\" alt=\"\" class=\"wp-image-372\"\/><\/figure>\n\n\n\n<p>We see clearly that we can simulate larger and larger <em>\u03b2<\/em> if we include more and more higher order modes in the simulation, i.e. by increasing the maxtem value. Note however that we expect this to break down (requiring a very large number of modes) when going to angles (much) larger than the diffraction angle. Furthermore, we see that the convergence is not dependent on the distance behind the second beamsplitter at which we measure the total power in the bundle.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Further convergence simulations: effect <em>z<\/em><sub>0<\/sub> and <em>s<\/em><sub>2<\/sub><\/h3>\n\n\n\n<p>Since the total power versus maxtem gives a good indication of the range of validity of <em>\u03b2<\/em>, we can use this dependency to also investigate the convergence as a function of the position of the waist <em>z<\/em><sub>0<\/sub> of the Gaussian beam and as a function of the length of <em>s<\/em><sub>2<\/sub><br>First we will look at the<em> z<\/em><sub>0<\/sub> dependence. For this simulation we use the basic setup above,  adding a simulation block similar to the one below<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Simulation setup\ns s3 600 nb22 n1                        # measure at 600meter after 2nd bs (as 1st simulation)\npd pd1 n1                               # use photodiode to measure integrated power\nyaxis abs\n\nxaxis bs1 xbeta lin 0 4e-5 40           # x-axis: vary xbeta of bs1 between 0 and 4\u00b710^-5\nput bs2 xbeta $x1                       # use same xbeta for bs2\n\nx2axis g_n0 zx lin 0 -2000 60           # pos. is distance left of laser, from 0 to 2000 right\nput g_n0 zy $x2                         # use same waist for y and x<\/code><\/pre>\n\n\n\n<p>We run the simulation for two different ranges in <em>z<\/em><sub>0<\/sub>: for a larger range, from the laser till the photodiode (left picture), and for a smaller range, around the two beam splitters (right picture, <em>z<\/em><sub>0<\/sub> varying from 600m right of the laser, i.e 400m left of bs1 till 1600m right of the laser, i.e. 200m right of bs2):<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/logbooks.ifosim.org\/pykat\/wp-content\/uploads\/sites\/4\/2021\/03\/convergance_beta_z0.svg\" alt=\"\" class=\"wp-image-405\" width=\"687\" height=\"316\"\/><\/figure>\n\n\n\n<p>We see that the optimal location for the waist is at the first beamsplitter which is located 1km right of the laser. The distance of 1.2 km we used above &#8211; i.e. between the two beamsplitters &#8211; is almost as good.<\/p>\n\n\n\n<p>Now that we have found the optimal waist location, we can also look for the effect of <em>s<\/em><sub>2<\/sub>, the distance between the two beamsplitters, on the convergence. We use again the same basic setup, adding the following simulation part:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Simulation setup\ngauss g_n0 laser n0 10e-3 -1000   # fix waist at 1km right of laser, i.e. at beamsplitter1\n\ns s3 600 nb22 n1                  # measure at 600meter after 2nd bs (as 1st simulation)\npd pd1 n1                         # use photodiode to measure integrated power\nyaxis abs\n\nxaxis bs1 xbeta lin 1e-5 4e-5 60  # x-axis: vary xbeta of bs1 between 0 and 4\u00b710^-5\nput bs2 xbeta $x1                 # use same xbeta for bs2\n\nx2axis s2 L lin 0 1000 60         # vary s2 from 0 to 1km<\/code><\/pre>\n\n\n\n<p>We fix the Gaussian waist at the position of the first beamsplitter, which we found above to be the optimal place. We always measure the beam power 600 meter after the second beamsplitter. We then vary the distance between the two beamsplitters <em>s<\/em><sub>2<\/sub>. In order to also see the dependence on the Rayleigh range, we do this for two different values of <em>w<\/em><sub>0<\/sub>: 10mm (left plot) and 12mm (right plot).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/logbooks.ifosim.org\/pykat\/wp-content\/uploads\/sites\/4\/2021\/03\/convergance_beta_s2-1.svg\" alt=\"\" class=\"wp-image-425\" width=\"693\" height=\"322\"\/><\/figure>\n\n\n\n<p>Looking first at the left picture, we see that the usable range of <em>\u03b2<\/em> roughly remains constant till a distance of about 200-300 meter and then quickly decreases for larger distances. Also note that, although our value of 400 meter results in a considerably smaller valid range of <em>\u03b2<\/em> than what we find at for example half that distance, we see that the product <em>s<\/em><sub>2<\/sub> \u00b7 sin2<em>\u03b2<\/em> (i.e. the maximum attainable relative shift <em>\u2206<\/em>\/<em>w<sub>0<\/sub><\/em>) does not change much between those two points and is actually slightly larger at the 400 meter distance.<\/p>\n\n\n\n<p>The distance of 200-300 meter corresponds roughly to the Rayleigh range <em>z<\/em><sub>R<\/sub> which for these parameters (<em>w<sub>0<\/sub><\/em> = 10mm, <em>\u03bb<\/em> = 1.064 \u03bcm) is 295 meter:<\/p>\n\n\n\n<div class=\"ssl-alp-tex\" data-katex-display=\"true\">z_R = \\frac{\\pi w_0^2}{\\lambda}<\/div>\n\n\n\n<p>At the same time the largest usable <em>\u03b2<\/em> at small distances (up to this 200-300 meter) depends on the diffraction angle <em>\u0398<\/em> which for these parameters is 3.4\u00b710^-5 radian (see Bond et al. eq. (9.19)):<\/p>\n\n\n\n<div class=\"ssl-alp-tex\" data-katex-display=\"true\">\\Theta\n  = \\arctan \\left(\\frac{w_0}{z_R}\\right)\n  \\approx \\frac{w_0}{z_R}\n  = \\frac{\\lambda}{\\pi w_0}<\/div>\n\n\n\n<p>although in general the largest usable <em>\u03b2<\/em> increases as a function of maxtem. To verify that the Rayleigh range and diffraction angle are indeed setting the relevant scales, we now look at the right picture. In this simulation the beam waist size <em>w<\/em><sub>0<\/sub> is 1.2 times larger, which gives <em>z<\/em><sub>R<\/sub>=425 meter  and <em>\u0398<\/em>=2.8\u00b710^-5 radian. To compare with the left picture, we have  scaled the vertical range (<em>s<\/em><sub>2<\/sub>) with a factor 1.2<sup>2<\/sup> and the horizontal range (<em>\u03b2<\/em>) with a factor 1\/1.2. This results in a visually very comparable picture, confirming that <em>z<\/em><sub>R<\/sub> and <em>\u0398<\/em> set the relevant scales and that up to about the Rayleigh range, the largest usable <em>\u03b2<\/em> is determined by the diffraction angle <em>\u0398<\/em> (and happens to be very close to it at maxtem 7).<br>From eq. (1) it now follows that the largest attainable shift <em>\u2206<\/em>\/<em>w<\/em><sub>0<\/sub> is actually independent of <em>w<\/em><sub>0<\/sub>.<br>To summarize, we see that the best location for the first beamsplitter is at the waist of the Gaussian beam, with the second beamsplitter just beyond the Rayleigh range and a maximum tilt limited by roughly the diffraction angle.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction This is the second post discussing the shift and phase dependence of a beam going through a z-shaped telescope setup when both beamsplitters are tilted over a small angle \u03b2. The first post (part 1: theory) derived both the shift in the position of the beam and the change in phase at the detector [&hellip;]<\/p>\n","protected":false},"author":40,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ssl_alp_hide_revisions":true,"footnotes":"","ssl_alp_hide_crossreferences_to":false},"categories":[1],"tags":[],"ssl-alp-coauthor":[48],"class_list":["post-363","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/posts\/363","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/comments?post=363"}],"version-history":[{"count":30,"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/posts\/363\/revisions"}],"predecessor-version":[{"id":463,"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/posts\/363\/revisions\/463"}],"wp:attachment":[{"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/media?parent=363"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/categories?post=363"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/tags?post=363"},{"taxonomy":"ssl-alp-coauthor","embeddable":true,"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/ssl-alp-coauthor?post=363"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}