Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Sign in
Toggle navigation
pygwinc
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Insights
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Locked Files
Issues
31
Issues
31
List
Boards
Labels
Service Desk
Milestones
Merge Requests
5
Merge Requests
5
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Security & Compliance
Security & Compliance
Dependency List
Packages
Packages
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gwinc
pygwinc
Commits
9d7f673b
Commit
9d7f673b
authored
May 23, 2018
by
Jameson Graef Rollins
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
docstring and whitespace cleanup
parent
929d5922
Changes
6
Expand all
Hide whitespace changes
Inline
Sidebyside
Showing
6 changed files
with
175 additions
and
130 deletions
+175
130
gwinc/noise/coatingthermal.py
gwinc/noise/coatingthermal.py
+87
76
gwinc/noise/newtonian.py
gwinc/noise/newtonian.py
+15
12
gwinc/noise/quantum.py
gwinc/noise/quantum.py
+36
22
gwinc/noise/residualgas.py
gwinc/noise/residualgas.py
+13
6
gwinc/noise/substratethermal.py
gwinc/noise/substratethermal.py
+24
12
gwinc/noise/suspensionthermal.py
gwinc/noise/suspensionthermal.py
+0
2
No files found.
gwinc/noise/coatingthermal.py
View file @
9d7f673b
This diff is collapsed.
Click to expand it.
gwinc/noise/newtonian.py
View file @
9d7f673b
...
...
@@ 6,6 +6,7 @@ import logging
def
gravg
(
f
,
ifo
):
"""Return estimate of newtonian noise contribribution to h(f)^2
N = GRAVG(F, IFO) returns the gravity gradient (Newtonian) noise
contribution in strain^2/Hz for four mirrors.
...
...
@@ 25,8 +26,8 @@ def gravg(f, ifo):
added to Bench by Gregg Harry 8/27/03
seismic spectrum modified by Jan Harms 05/11/2010
Calculates gravity gradient noise for four mirrors
**  Add reference here  **"""
"""
L
=
ifo
.
Infrastructure
.
Length
G
=
scipy
.
constants
.
G
rho
=
ifo
.
Seismic
.
Rho
...
...
@@ 52,7 +53,8 @@ def gravg(f, ifo):
def
ground
(
Seismic
,
f
):
"""Returns estimate of seismic displacement spectrum
"""Estimate of seismic displacement spectrum
N = GROUND(SEISMIC, F) returns the estimated ground (seismic)
displacement spectrum in meters / rtHz at frequencies F using
parameters SEISMIC (usually a field of the IFOMODEL).
...
...
@@ 66,19 +68,20 @@ def ground(Seismic, f):
ylabel('meters / rtHz');
xlabel('Hz');
This function is currently only used by gravg.m (Newtonian Noise).
This function is currently only used by gravg.m (Newtonian Noise).
Jan says: The seismic NN is 90th percentile. But this was just to
lift the spectra above the aLIGO GWINC sensitivity. 90th, 95th,
whatever percentile does not matter since you want to guarantee that
NN is not limiting at any time. So in the spectral plot the only
important information is that NN can be high enough to be seen in
the detector.
Jan says: The seismic NN is 90th percentile. But this was just to
lift the spectra above the aLIGO GWINC sensitivity. 90th, 95th,
whatever percentile does not matter since you want to guarantee
that NN is not limiting at any time. So in the spectral plot the
only important information is that NN can be high enough to be
seen in
the detector.
References:
Waldman and Fritschel, 'Reference Seismic Data for LLO', T0900312
https://dcc.ligo.org/cgibin/private/DocDB/ShowDocument?docid=3315"""
References:
Waldman and Fritschel, 'Reference Seismic Data for LLO', T0900312
https://dcc.ligo.org/cgibin/private/DocDB/ShowDocument?docid=3315
"""
fk
=
Seismic
.
KneeFrequency
a1
=
Seismic
.
LowFrequencyLevel
a2
=
a1
*
100
...
...
gwinc/noise/quantum.py
View file @
9d7f673b
...
...
@@ 6,12 +6,12 @@ import logging
def
shotrad
(
f
,
ifo
):
"""Quantum noise
model
"""Quantum noise
corresponding author: mevans
modifications for resonant delay lines: Stefan Ballmer"""
modifications for resonant delay lines: Stefan Ballmer
"""
# deal with multiple bounces, required for resonant delay lines
# Stefan Ballmer 2012
if
'NFolded'
in
ifo
.
Infrastructure
:
...
...
@@ 220,7 +220,9 @@ def shotrad(f, ifo):
def
shotradSignalRecycled
(
f
,
ifo
):
"""Quantum noise model  signal recycled IFO (see shotrad for more info)
"""Quantum noise model for signal recycled IFO
See shotrad for more info.
All references to Buonanno & Chen PRD 64 042006 (2001) (hereafter BnC)
Updated to include losses DEC 2006 Kirk McKenzie using BnC notation
...
...
@@ 236,8 +238,9 @@ def shotradSignalRecycled(f, ifo):
coeff = frequency dependent overall noise coefficient (Nx1)
Mifo = IFO inputoutput relation for the AS port
Msig = signal transfer to the AS port
Mnoise = noise fields produced by losses in the IFO at the AS port
"""
Mnoise = noise fields produced by losses in the IFO at the AS port
"""
# f % Signal Freq. [Hz]
lambda_
=
ifo
.
Laser
.
Wavelength
# Laser Wavelength [m]
hbar
=
scipy
.
constants
.
hbar
# Plancks Constant [Js]
...
...
@@ 359,9 +362,11 @@ def shotradSignalRecycled(f, ifo):
def
make2x2TF
(
A11
,
A12
,
A21
,
A22
):
"""Create a transfer matrix with 2x2xnF
The vectors must all have nF elements"""
"""Create transfer matrix with 2x2xnF
The vectors must all have nF elements.
"""
nF
=
max
([
size
(
A11
),
size
(
A12
),
size
(
A21
),
size
(
A22
)])
# if any input is just a number, expand it
...
...
@@ 386,16 +391,15 @@ def make2x2TF(A11, A12, A21, A22):
def
getProdTF
(
lhs
,
rhs
):
"""Compute the product of 2 or more Nout x Nin x Naf
frequency dependent transfer matrices. (see also getTF)
"""Compute the product of M Nout x Nin x Naf frequency dependent transfer matrices
See also getTF.
NOTE: To perform more complicated operations on transfer
matrices, see LTI object FRD ("help frd"). This
function is the same as: freqresp(frd(lhs) * frd(rhs), f)
%%
Example:
mOL = getProdTF(mCtrl, sigAC);"""
"""
# check matrix size
if
lhs
.
shape
[
1
]
!=
rhs
.
shape
[
0
]:
raise
Exception
(
'Matrix size mismatch size(lhs, 2) =
%
d !=
%
d = size(rhs, 1)'
%
(
lhs
.
shape
[
1
],
rhs
.
shape
[
0
]))
...
...
@@ 425,9 +429,11 @@ def getProdTF(lhs, rhs):
def
sqzInjectionLoss
(
Min
,
L
):
"""Add injection losses to the squeezed field
lambda_in is defined as ifo.Squeezer.InjectionLoss"""
"""Injection losses for squeezed field
lambda_in is defined as ifo.Squeezer.InjectionLoss
"""
eye2
=
np
.
eye
(
Min
.
shape
[
0
],
Min
.
shape
[
1
])
Meye
=
np
.
transpose
(
np
.
tile
(
eye2
,
(
Min
.
shape
[
2
],
1
,
1
)),
axes
=
(
1
,
2
,
0
))
...
...
@@ 436,8 +442,9 @@ def sqzInjectionLoss(Min, L):
def
sqzFilterCavityChain
(
f
,
params
,
Mn
):
"""compute the transfer relation for a chain of filter cavities
noise added by cavity losses are also output
"""Transfer relation for a chain of filter cavities
Noise added by cavity losses are also output.
f = frequency vector [Hz]
param.fdetune = detuning [Hz]
...
...
@@ 458,8 +465,9 @@ def sqzFilterCavityChain(f, params, Mn):
[Mc, Mn] = sqzFilterCavityChain(f, params);
Mn = [getProdTF(Mc, Mn0), Mn];
corresponding author: mevans
"""
corresponding author: mevans
"""
# make an identity TF
Mc
=
make2x2TF
(
ones
(
f
.
shape
),
0
,
0
,
1
)
...
...
@@ 487,10 +495,14 @@ def sqzFilterCavityChain(f, params, Mn):
def
sqzFilterCavity
(
f
,
Lcav
,
Ti
,
Te
,
Lrt
,
fdetune
,
MinR
,
MinT
=
1
):
"""Function which gives the reflection matrix (for vacuum fluctuations entering the input mirror) and the
transmission matrix (for vacuum fluctuations entering the end mirror) of
one filter cavity. The input parameters are the cavity parameters and the
2X2 matrix of the incoming fields in the twophoton formalism
"""Reflection/transmission matrix for filter cavity
Function which gives the reflection matrix for vacuum fluctuations
entering the input mirror and the transmission matrix for vacuum
fluctuations entering the end mirror of one filter cavity. The
input parameters are the cavity parameters and the 2X2 matrix of
the incoming fields in the twophoton formalism.
(R_alpha x S_r) for a freq independent squeezed field.
f = vector frequency in Hz
Lf = length of the filter cavity
...
...
@@ 508,7 +520,9 @@ def sqzFilterCavity(f, Lcav, Ti, Te, Lrt, fdetune, MinR, MinT=1):
and unsqueezed input. [] can be used to avoid adding a noise
term to Mnoise.
corresponding authors: LisaB, mevans"""
corresponding authors: LisaB, mevans
"""
# reflectivities
Ri
=
1

Ti
...
...
gwinc/noise/residualgas.py
View file @
9d7f673b
...
...
@@ 4,15 +4,22 @@ import scipy.constants
def
gas
(
f
,
ifo
):
"""The following function models the noise spectrum caused by the passage of
residual gas molecules through the laser beams in the arms of the
interferometer. The method used here is presented by Rainer Weiss,
Micheal E. Zucker, and Stanley E. Whitcomb in their paper Optical
"""Residual gas noise in arm cavities
The following function models the noise spectrum caused by the
passage of residual gas molecules through the laser beams in the
arms of the interferometer.
The method used here is presented by Rainer Weiss, Micheal
E. Zucker, and Stanley E. Whitcomb in their paper Optical
Pathlength Noise in Sensitive Interferometers Due to Residual Gas.
Added to Bench by Zhigang Pan, Summer 2006
Cleaned up by PF, Apr 07; eliminated numerical integration and
substituted first order expansion of exp, to speed it up"""
Cleaned up by PF, Apr 07
Eliminated numerical integration and substituted first order
expansion of exp, to speed it up.
"""
L
=
ifo
.
Infrastructure
.
Length
Lambda
=
ifo
.
Laser
.
Wavelength
k
=
scipy
.
constants
.
k
...
...
gwinc/noise/substratethermal.py
View file @
9d7f673b
...
...
@@ 6,9 +6,11 @@ import scipy.integrate
import
scipy.constants
def
carrierdensity
(
f
,
ifo
):
"""strain noise psd arising from charge carrier density
fluctuations in ITM substrate (for semiconductor substrates)."""
"""Strain noise arising from charge carrier density fluctuations in ITM substrate
For semiconductor substrates
"""
w
=
ifo
.
Optics
.
ITM
.
BeamRadius
L
=
ifo
.
Infrastructure
.
Length
H
=
ifo
.
Materials
.
MassThickness
...
...
@@ 49,12 +51,16 @@ def carrierdensity(f, ifo):
psdMeters
=
2
*
(
psdElec
+
psdHole
)
n
=
psdMeters
/
(
gPhase
*
L
)
**
2
return
n
def
thermorefractiveITM
(
f
,
ifo
):
"""strain noise psd arising from thermorefractive
fluctuations in ITM substrate (for semiconductor substrates)."""
"""Strain noise from thermorefractive fluctuations in ITM substrate
For semiconductor substrates.
"""
w
=
ifo
.
Optics
.
ITM
.
BeamRadius
L
=
ifo
.
Infrastructure
.
Length
...
...
@@ 92,13 +98,14 @@ def thermorefractiveITM(f, ifo):
psdMeters
=
2
*
psd
# two itms
n
=
psdMeters
/
(
gPhase
*
L
)
**
2
return
n
def
subbrownian
(
f
,
ifo
):
"""strain noise psd arising from the Brownian thermal noise
due to mechanical loss in the substrate material"""
"""Strain noise from the Brownian thermal noise due to substrate mechanical loss
"""
wITM
=
ifo
.
Optics
.
ITM
.
BeamRadius
wETM
=
ifo
.
Optics
.
ETM
.
BeamRadius
Y
=
ifo
.
Materials
.
Substrate
.
MirrorY
...
...
@@ 131,8 +138,9 @@ def subbrownian(f, ifo):
def
subbrownianFiniteCorr
(
ifo
,
opticName
):
"""Estimate amplitude coefficient of
mirror thermal noise contribution for finitesize test masses.
"""Amplitude coefficient of mirror thermal noise
Contribution for finitesize test masses.
[cftm, aftm] = subbrownianFiniteCorr(ifo, opticName)
cftm = finite mirror correction factor
...
...
@@ 141,8 +149,9 @@ def subbrownianFiniteCorr(ifo, opticName):
S_x(f) = (8 * kB * T / (2*pi*f)) * Phi(f) * aftm
Equation references to Bondu, et al. Physics Letters A 246 (1998)
227236 (hereafter BHV) and Liu and Thorne grqc/0002055 (hereafter LT)
"""
227236 (hereafter BHV) and Liu and Thorne grqc/0002055 (hereafter LT)
"""
# get some numbers
a
=
ifo
.
Materials
.
MassRadius
h
=
ifo
.
Materials
.
MassThickness
...
...
@@ 187,8 +196,9 @@ def subbrownianFiniteCorr(ifo, opticName):
def
subtherm
(
f
,
ifo
):
"""
noise psd arising from thermoelastic fluctuations in mirror"""
"""
Noise from thermoelastic fluctuations in mirror
"""
wITM
=
ifo
.
Optics
.
ITM
.
BeamRadius
wETM
=
ifo
.
Optics
.
ETM
.
BeamRadius
sigma
=
ifo
.
Materials
.
Substrate
.
MirrorSigma
...
...
@@ 217,12 +227,14 @@ def subtherm(f, ifo):
def
subthermFiniteCorr
(
ifo
,
opticName
):
"""finite size test mass correction to noise amplitude coefficient
"""Finite size test mass correction to noise amplitude coefficient
(Liu & Thorne grqc/0002055 equation 46)
Equation references to Bondu, et al. Physics Letters A 246 (1998)
227236 (hereafter BHV) or Liu and Thorne grqc/0002055 (hereafter LT)
"""
227236 (hereafter BHV) or Liu and Thorne grqc/0002055 (hereafter LT)
"""
# extract some numbers
a
=
ifo
.
Materials
.
MassRadius
h
=
ifo
.
Materials
.
MassThickness
...
...
gwinc/noise/suspensionthermal.py
View file @
9d7f673b
...
...
@@ 70,5 +70,3 @@ def susptherm(f, ifo):
# 4 masses, turn into gravitational wave strain
noise
*=
4
/
ifo
.
Infrastructure
.
Length
**
2
return
np
.
squeeze
(
noise
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment