Commit 9d7f673b authored by Jameson Graef Rollins's avatar Jameson Graef Rollins

docstring and whitespace cleanup

parent 929d5922
This diff is collapsed.
......@@ -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/cgi-bin/private/DocDB/ShowDocument?docid=3315"""
References:
Waldman and Fritschel, 'Reference Seismic Data for LLO', T0900312
https://dcc.ligo.org/cgi-bin/private/DocDB/ShowDocument?docid=3315
"""
fk = Seismic.KneeFrequency
a1 = Seismic.LowFrequencyLevel
a2 = a1*100
......
......@@ -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 input-output 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 two-photon 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 two-photon 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
......
......@@ -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
......
......@@ -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 finite-size test masses.
"""Amplitude coefficient of mirror thermal noise
Contribution for finite-size 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)
227-236 (hereafter BHV) and Liu and Thorne gr-qc/0002055 (hereafter LT)"""
227-236 (hereafter BHV) and Liu and Thorne gr-qc/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 gr-qc/0002055 equation 46)
Equation references to Bondu, et al. Physics Letters A 246 (1998)
227-236 (hereafter BHV) or Liu and Thorne gr-qc/0002055 (hereafter LT)"""
227-236 (hereafter BHV) or Liu and Thorne gr-qc/0002055 (hereafter LT)
"""
# extract some numbers
a = ifo.Materials.MassRadius
h = ifo.Materials.MassThickness
......
......@@ -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)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment