Skip to content
Snippets Groups Projects

Adding Hong et al. calculations for Coating Brownian Noise

Merged Anchal Gupta requested to merge anchal.gupta/pygwinc:master into master

Modified getCoatBrownian() to accept different Bulk and Shear Loss Angles and calculate brownian noise using Hong et a. PRD 87, 082001 (2013).

Function Description:

This function calculates Coating ThermoOptic noise using Hong et al . PRD 87, 082001 (2013). All references to 'the paper', 'Eq' adn 'Sec' are to this paper.

Important Note

Inside this function phi is used for denoting the phase shift suffered by light in one way propagation through a layer. This is in conflict with present nomenclature everywhere else where it is used as loss angle.

The layers are assumed to be alernating low-n high-n layers, with low-n first. Inputs:

     f = frequency vector in Hz

   ifo = parameter struct from IFOmodel.m

 wBeam = beam radius (at 1 / e^2 power)

  dOpt = the optical thickness, normalized by lambda, of each
         coating layer.

New required arguments:

   mTi = Mirror Transmittance

    Ic = Circulating Laser Power falling on the Mirror (W)

The following new arguments should be made available in the Materials object and lines 112-114 and 120-122 should be uncommented:

 lossBlown = Coating Bulk Loss Angle of Low Refractive Index layer

 lossSlown = Coating Shear Loss Angle of Low Refractive Index layer

lossBhighn = Coating Bulk Loss Angle of High Refractive Index layer

lossShighn = Coating Shear Loss Angle of High Refractive Index layer

   PETlown = Relevant component of Photoelastic Tensor of High n layer*

  PEThighn = Relevant component of Photoelastic Tensor of Low n layer*

Returns:

SbrZ = Brownian noise spectra for one mirror in m^2 / Hz

*Default values of PETlown and PEThighn are chosen from sec. A.1. to get the longitudnal coefficent of photoelasticity as -0.5 as been asserted by the paper there for Tantala and -0.27 for Silica. These values also need to be added in Materials object.

The test job failed at a later stage of uploading artifacts and the part of calculation of noise ran without any errors or warnings.

Edited by Anchal Gupta

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Anchal Gupta changed the description

    changed the description

  • Anchal Gupta added 26 commits

    added 26 commits

    Compare with previous version

  • Anchal Gupta added 1 commit

    added 1 commit

    • e879b168 - Corrected calculation of derivatives of complex reflectivity

    Compare with previous version

  • Author Contributor

    I updated my fork with the present pygwinc master and made some changes to the code. I found that I was unable to reproduce fig 5 from Hong et al. paper. I found a slightly more computationally brute force but the correct way of writing the code for calculating derivatives of the total complex reflectivity of the coating with respect of phase shift due to each layer and reflectivities of each interface. These corrections have been added and the fig 5 of the paper can be reproduced now. This doesn't change the final result though and hence this error was hard to detect. But now, I am almost certain that this code correctly implements the paper's calculation for calculating coating brownian noise with different shear and bulk loss angles.

  • Anchal Gupta added 1 commit

    added 1 commit

    Compare with previous version

  • It's been a while since I read the Hong paper. Why does this calculation result in a different slope for the aLIGO coating Brownian noise estimate?

  • Author Contributor

    CoatingBrownianNoiseComparisonWithOld.pdf I'm attaching a comparison plot here. Note, here the bulk and shear values were still kept the same in the Hong et al. calculations and in the gwinc calculations, I have kept the Phihighn_slope and Philown_slope zero. Otherwise, it would be comparing apples and oranges. Now, I do see a difference in overall level of noise but dependence on f is the same. The minute difference could be coming in through photoelastic effect considerations or due to differences in transfer functions of bulk and shear noise fields to phase noise of layer thickness and surface height fluctuations (Table I in Hong et al.). But honestly, as the paper is very convoluted, it is hard to figure out 'rolling back which thing in the calculation will make it the same as yours'.

  • Author Contributor

    If we would like to add the ability to provide frequency-dependent loss angles, I do have a code for that. This code, however, takes the loss angles as python function definitions instead of a float number and that would be hard to feed in through the yaml files that is being done right now. Another way could be to have a fixed model of dependence (polynomial or exponential) and provide coefficients for that. I think that's what is being done right now but just from staring at the code, I couldn't figure out what the Phihighn_slope and Philown_slope refer to actually. But I thought we are not so sure yet of the model of frequency dependence of these loss angles.

  • Evan Hall mentioned in issue #38 (closed)

    mentioned in issue #38 (closed)

  • I made a comment in #38 (closed) about some of these issues. The upshot is that I think your new code should go into a separate function, so that the aLIGO calculation still uses the existing getCoatBrownian function, while at the same time anyone who wants to can use the new Hong calculation. The fact that the Hong calculation gives a different answer than the existing calculation is what is breaking the build right now (it fails on the comparison between the pygwinc and matgwinc aLIGO curves).

    Edited by Evan Hall
  • Anchal Gupta added 9 commits

    added 9 commits

    Compare with previous version

  • Author Contributor

    I updated my fork with the present pygwinc master and made the requested changes to the code. For using Hong et al. calculations, one would need to use coatbrownianhong instead of coatbrownian. But additional requirements on the Materials object for calculations are mandatory now. The following new arguments should be made available in the Materials object without which this function can not be used:

     lossBlown = Coating Bulk Loss Angle of Low Refractive Index layer
    
     lossSlown = Coating Shear Loss Angle of Low Refractive Index layer
    
    lossBhighn = Coating Bulk Loss Angle of High Refractive Index layer
    
    lossShighn = Coating Shear Loss Angle of High Refractive Index layer
    
       PETlown = Relevant component of Photoelastic Tensor of High n layer*
    
      PEThighn = Relevant component of Photoelastic Tensor of Low n layer*
    
    ^   lossBlown, lossSlown, lossBhighn and lossShighn can be string containing
        python expression to provide dependence on frequency. The expression
        should be a valid python expression and must have a single variable 'f'
        for frequency. Ex: '(0.22)*1e-3 + (f - 1000)/1000 * (0.13) * 1e-3'
    *   Choice of PETlown and PEThighn can be inspired from sec. A.1. of the paper.
        There, values are chosen to get the longitudinal coefficient of
        photoelasticity as -0.5 for Tantala and -0.27 for Silica.
        These values also need to be added in Materials object.

    The pipeline passes now of course as it is built for the old code which is intact. All changes in this merge request are now strictly additions (no amendments).

  • Anchal Gupta added 61 commits

    added 61 commits

    Compare with previous version

  • Anchal Gupta added 1 commit

    added 1 commit

    • 5f664c28 - Renamed function and variables to match new coding style of rest of the code

    Compare with previous version

  • Anchal Gupta added 1 commit

    added 1 commit

    • 2041c387 - Pep8 conformed in my part of code

    Compare with previous version

  • Anchal Gupta added 1 commit

    added 1 commit

    • e882cb53 - Made use of eval more secure with whitelists and blacklists

    Compare with previous version

  • Anchal Gupta added 1 commit

    added 1 commit

    • c2c86c63 - Added extra required fields for coating_brownian_hong

    Compare with previous version

  • Anchal Gupta added 4 commits

    added 4 commits

    Compare with previous version

  • Anchal Gupta added 1 commit

    added 1 commit

    • 15c5a4ba - Testing coating_brownian_hong function

    Compare with previous version

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
Please register or sign in to reply
Loading