Skip to content
Snippets Groups Projects

Residual gas sub-budgets and updates

Merged Kevin Kuns requested to merge kevin.kuns/pygwinc:residual-gas into master
6 unresolved threads

Adds residual gas damping and additional molecular species to the residual gas calculations. The gas scattering and gas damping are now tracked separately for each species in an excess gas sub-budget. The damping calculation is done in the infinite volume limit by default but adds corrections for squeezed film damping if specified in the yaml file. The aLIGO excess gas sub-budget is shown below as an example.

excess_gas

The new yaml file fields are explained in this comment. The yaml files in this merge request are simpler and none of the interferometers include squeezed film damping.

For aLIGO, Aplus, and Voyager, H2, N2, and H2O are considered. The numbers for aLIGO are taken from the link in this comment. The numbers for Aplus and Voyager are copied from aLIGO and should be checked. The Cosmic Explorer interferometers additionally consider CO2 and Ar.

Closes #63 (closed).

Edited by Jameson Rollins

Merge request reports

Merge request pipeline #232177 passed

Merge request pipeline passed for cee15789

Approved by

Merged by Jameson RollinsJameson Rollins 3 years ago (Jun 2, 2021 8:31pm UTC)

Merge details

  • Changes merged into master with ede743c8 (commits were squashed).
  • Deleted the source branch.

Pipeline #238221 passed

Pipeline passed for ede743c8 on master

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
757 768
758 769 """
759 770 style = dict(
760 label='Excess Gas',
761 color='#add00d',
762 linestyle='--',
771 label='H$_2$ scattering',
772 color='xkcd:red orange'
773 )
774
775 def calc(self):
776 cavity = arm_cavity(self.ifo)
777 species = self.ifo.Infrastructure.ResidualGas.H2
778 n = noise.residualgas.residual_gas_scattering(
779 self.freq, self.ifo, cavity, species)
780 dhdl_sqr, sinc_sqr = dhdl(self.freq, self.ifo.Infrastructure.Length)
  • 909 linestyle='-',
    910 )
    911
    912 noises = [
    913 ExcessGasScatteringH2,
    914 ExcessGasScatteringN2,
    915 ExcessGasScatteringH2O,
    916 ExcessGasScatteringO2,
    917 ExcessGasDampingH2,
    918 ExcessGasDampingN2,
    919 ExcessGasDampingH2O,
    920 ExcessGasDampingO2,
    921 ]
    922
    923
    924 def _calc_residual_gas_damping(f, ifo, species, sustf):
  • Can someone else sign off on the actual noise calc?

    Edited by Jameson Rollins
  • 921 ]
    922
    923
    924 def _calc_residual_gas_damping(f, ifo, species, sustf):
    925 """Redundant calculation of res gas damping for each species
    926
    927 Can get rid of if budgets are calculated at runtime
    928 """
    929 squeezed_film = ifo.Infrastructure.ResidualGas.get('SqueezedFilm', Struct())
    930
    931 if squeezed_film is None:
    932 raise ValueError('Must specify either excess damping or a gap')
    933
    934 # Calculate squeezed film for ETM and ITM seperately if either is given
    935 # explicitly. If only one is given, it is not computed for the other one.
    936 if ('ETM' in squeezed_film) or ('ITM' in squeezed_film):
  • Kevin Kuns added 1 commit

    added 1 commit

    • b7f7ba72 - move calc_residual_gas_damping from noises.py to residualgas.py

    Compare with previous version

  • Jameson Rollins
  • 125 raise ValueError('Must specify either excess damping or a gap')
    126
    127 # Eq (5)
    128 force_noise += DeltaS0 / (1 + (2*pi*f*diffusion_time)**2)
    129
    130 # convert force to displacement noise using the suspension susceptibility
    131 noise = force_noise * abs(sustf.tst_suscept)**2
    132
    133 return noise
    134
    135
    136 def calc_residual_gas_damping(f, ifo, species, sustf):
    137 """Redundant calculation of res gas damping for each species
    138
    139 Can get rid of if budgets are calculated at runtime
    140 """
    • The docstring should also be updated to say clearly what it returns.

      Should mention it's for FPMI.

      Also what does "redundant" mean here? it only calculates the noise for a single species.

    • Author Maintainer

      I updated the docstring and changed the function name, but this doesn't really have anything to do with an FPMI.

    • four TM, two ITM, two ETM. That's a FPMI

    • Author Maintainer

      I moved the function back to noises.py. This now conforms with the convention that the functions in the noise files do not depend on the number of test masses while the functions in noises.py call those functions appropriately to calculate the noise for the four test masses.

    • Please register or sign in to reply
  • Kevin Kuns added 1 commit

    added 1 commit

    • 0a83defa - rename residual gas functions and update docstrings

    Compare with previous version

  • Kevin Kuns added 1 commit

    added 1 commit

    • cee15789 - move gas damping calculation function back to noises.py

    Compare with previous version

  • Author Maintainer

    It doesn't sound like there are any objections to the actual physics. I therefore assume we can merge this by the middle of next week and am making the summer school lectures with it. Again, residual gas damping is a new noise source not included on master. David has also been specifically asked to discuss residual gas noise.

  • I approve this in terms of code integration, but I have not reviewed the math of the new functions in noises.residualgas so I'll leave it up to someone else to approve.

  • Evan Hall approved this merge request

    approved this merge request

  • Jameson Rollins mentioned in commit ede743c8

    mentioned in commit ede743c8

    • This MR breaks compatibility with all budgets that were using the Excess Gas noise source and do not yet have the new parameters in their ifo.yaml files.

      It might be better in such cases to either keep the new code backward compatible, or else rename the new noise source and keep the old one around for a while with a deprecation warning.

    • Author Maintainer

      That's the way I originally wrote it, but then it was decided that we should add the new variable and break backwards compatibility.

    • Please register or sign in to reply
  • Christopher Wipf mentioned in issue #104

    mentioned in issue #104

  • Please register or sign in to reply
    Loading