{"id":394,"date":"2021-02-27T03:47:33","date_gmt":"2021-02-27T02:47:33","guid":{"rendered":"https:\/\/logbooks.ifosim.org\/pykat\/?p=394"},"modified":"2021-02-27T03:47:33","modified_gmt":"2021-02-27T02:47:33","slug":"quantum-noise-source-breakdown","status":"publish","type":"post","link":"https:\/\/logbooks.ifosim.org\/pykat\/blog\/quantum-noise-source-breakdown\/","title":{"rendered":"Quantum noise source breakdown"},"content":{"rendered":"\n<p>The quantum noise that limits the sensitivity of a detector can have multiple sources. The main contributor is usually the vacuum noise that enters into the interferometer from the dark or also known as the AS (Anti-Symmetric) port.<\/p>\n\n\n\n<p>More generally, vacuum noise will leak into the detector wherever there is an optical loss &#8211; which is essentially everywhere! You will see these breakdowns in recent papers such as https:\/\/arxiv.org\/abs\/1807.11734.<\/p>\n\n\n\n<p>There are many, many sources of loss in any given Finesse model, whether that&#8217;s some  simple loss at a mirror, or some higher order mode loss due to scattering from a surface defect. Finesse uses a multiple-input-single-output modelling method where it introduces vacuum noise at all possible loss points and projects this to a <code>qnoise<\/code> detector.<\/p>\n\n\n\n<p>It does this multiple noise injection by default, to make your life easier and ensure you as a simulator do not miss a loss source. However, you can also break loss sources down easily using the <code>vacuum<\/code> command. This plot uses the basic LIGO model from http:\/\/www.gwoptics.org\/finesse\/examples\/aligo_sensitivity.php. Below is some code that uses this command to select components separately to inject vacuum noise at to make this breakdown.<\/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\/image-1-1024x643.png\" alt=\"\" class=\"wp-image-396\" width=\"580\" height=\"364\" srcset=\"https:\/\/logbooks.ifosim.org\/pykat\/wp-content\/uploads\/sites\/4\/2021\/02\/image-1-1024x643.png 1024w, https:\/\/logbooks.ifosim.org\/pykat\/wp-content\/uploads\/sites\/4\/2021\/02\/image-1-300x188.png 300w, https:\/\/logbooks.ifosim.org\/pykat\/wp-content\/uploads\/sites\/4\/2021\/02\/image-1-768x482.png 768w, https:\/\/logbooks.ifosim.org\/pykat\/wp-content\/uploads\/sites\/4\/2021\/02\/image-1-1536x964.png 1536w, https:\/\/logbooks.ifosim.org\/pykat\/wp-content\/uploads\/sites\/4\/2021\/02\/image-1-2048x1285.png 2048w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/figure>\n\n\n\n<p>The above assumes a very high level of SRC loss! 10% in fact. This is added to the SRM loss parameter. I have also moved all the loss values from the ITMs to the ETMs, otherwise the ITM contributes towards both the ARM and the SRC loss terms.<\/p>\n\n\n\n<p>The `vacuum` command accepts a list of component names. Any loss or open port at that component will then be included in the quantum noise calculations &#8211; `vaccum all` is the default setting.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pykat\nimport matplotlib.pyplot as plt\npykat.init_pykat_plotting()\n\nkat = pykat.finesse.kat()\nkat.verbose = False\nkat.parse(\"\"\"\nl l1 $Pin 0 nin\ns s1 0 nin nprc1\n# Power recycling mirror\nm1 prm $prmT 0 90 nprc1 nprc2\ns prc $lprc nprc2 nbsin\n# Central beamsplitter\nbs bs1 .5 .5 0 45 nbsin n0y n0x nbsout\n\n# X-arm\ns ichx $lmichx n0x n1x\nm1 itmx $itmT 0 90 n1x n2x\ns armx $Larm n2x n3x\nm1 etmx 0 80u 89.999875 n3x n4x\nattr itmx mass $Mtm zmech sus1\nattr etmx mass $Mtm zmech sus1\n\n# Y-arm\ns ichy $lmichy n0y n1y\nm1 itmy $itmT 0 $michy_phi n1y n2y\ns army $Larm n2y n3y\nm1 etmy 0 80u 0.000125 n3y n4y\nattr itmy mass $Mtm zmech sus1\nattr etmy mass $Mtm zmech sus1\n\n# Signal recycling mirror\ns src $lsrc nbsout nsrc1\nm1 srm $srmT 0.1 $srm_phi nsrc1 nsrc2\ns sas 0 nsrc2 nAS\n\n# Force-to-position transfer function for longitudinal\n# motions of test masses\ntf sus1 1 0 p $mech_fres $mech_Q\nconst mech_fres 1 # 9 sus-thermal spike\nconst mech_Q 1M # Guess for suspension Q factor\n# DC readout: 100mW = michy_phi 0.07 _or_ darm_phi .00025\nconst michy_phi 0\nconst darm_phi .00025\n\nconst Larm 3995\nconst itmT 0.014\nconst srmT 0.2\nconst prmT 0.03\nconst Pin 125\nconst Mtm 40\nconst srm_phi -90\nconst lmichx 4.5\nconst lmichy 4.45\nconst lprc 53\nconst lsrc 50.525\n\n# Differentially modulate the arm lengths\nfsig darm armx 1 0\nfsig darm2 army 1 180\n\nqnoisedS NSR 1 $fs nsrc2\n\nxaxis darm f log 5 5k 1000\nyaxis log abs\n\"\"\")\n\n_kat = kat.deepcopy()\n_kat.parse(\"vacuum sas\")\nout = _kat.run()\nplt.loglog(out.x, out&#091;'NSR'], label='AS')\n\n_kat = kat.deepcopy()\n_kat.parse(\"vacuum itmx itmy etmx etmy\")\nout = _kat.run()\nplt.loglog(out.x, out&#091;'NSR'], label='Arm losses')\n\n_kat = kat.deepcopy()\n_kat.parse(\"vacuum srm\")\nout = _kat.run()\nplt.loglog(out.x, out&#091;'NSR'], label='SRC losses')\n\nout = kat.run()\nplt.loglog(out.x, out&#091;'NSR'], label='Total', c='orange', ls='--', lw=2)\nplt.legend()<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The quantum noise that limits the sensitivity of a detector can have multiple sources. The main contributor is usually the vacuum noise that enters into the interferometer from the dark or also known as the AS (Anti-Symmetric) port. More generally, vacuum noise will leak into the detector wherever there is an optical loss &#8211; which [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ssl_alp_hide_revisions":false,"footnotes":"","ssl_alp_hide_crossreferences_to":false},"categories":[1],"tags":[],"ssl-alp-coauthor":[18],"class_list":["post-394","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/posts\/394","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\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/comments?post=394"}],"version-history":[{"count":1,"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/posts\/394\/revisions"}],"predecessor-version":[{"id":397,"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/posts\/394\/revisions\/397"}],"wp:attachment":[{"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/media?parent=394"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/categories?post=394"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/tags?post=394"},{"taxonomy":"ssl-alp-coauthor","embeddable":true,"href":"https:\/\/logbooks.ifosim.org\/pykat\/wp-json\/wp\/v2\/ssl-alp-coauthor?post=394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}