diff --git a/gwinc/ifo/aLIGO/ifo.yaml b/gwinc/ifo/aLIGO/ifo.yaml index 28666445a58671fb4f68d4009bace1a74fca46c9..e6bb5328b8f8a82e5d57c3d28e0ac59798ff34ea 100644 --- a/gwinc/ifo/aLIGO/ifo.yaml +++ b/gwinc/ifo/aLIGO/ifo.yaml @@ -50,6 +50,14 @@ Infrastructure: mass: 2.99e-26 polarizability: 1.71e-30 + # Excess gas damping due to compensation plates and reaction masses + # Numbers are rough guesses from LIGO-T0900582 + # ExcessDamping is \sqrt{\Delta S_{F_0}} of (5) of + # http://dx.doi.org/10.1103/PhysRevD.84.063007 + ExcessDamping: 2.6e-15 # N/rtHz; excess force noise; section 6 + DiffusionTime: 800e-6 # s; diffusion time; section 4 + + TCS: # The presumably dominant effect of a thermal lens in the ITMs is an increased # mode mismatch into the SRC, and thus an increased effective loss of the SRC. diff --git a/gwinc/noise/residualgas.py b/gwinc/noise/residualgas.py index bdf31f5e33cffa74401f1aa246bff6e4d07cc571..3c3eeda7ff5efbb5f5f1c631418f73c70681d0ba 100644 --- a/gwinc/noise/residualgas.py +++ b/gwinc/noise/residualgas.py @@ -86,7 +86,41 @@ def residual_gas_damping(f, ifo, species, sustf): beta_inf = pi * radius**2 * pressure/thermal_vel beta_inf *= (1 + thickness/(2*radius) + pi/4) + force_noise = 4 * kT * beta_inf + + # add squeezed film damping if necessary as parametrized by (5) + if 'ExcessDamping' in ifo.Infrastructure.ResidualGas: + # the excess force noise and diffusion time are specified directly + # FIXME: probably need to scale this by the partial pressure and + # thermal velocity of each species to paremetrize it correctly + DeltaS0 = ifo.Infrastructure.ResidualGas.ExcessDamping**2 + try: + diffusion_time = ifo.Infrastructure.ResidualGas.DiffusionTime + except AttributeError: + msg = 'If excess residual gas damping is given a diffusion time ' \ + + 'must be specified as well' + raise ValueError(msg) + + elif 'gap' in ifo.Infrastructure.ResidualGas: + # if a gap between the test mass and another object is specified + # use the approximate model of section IIIA and B + gap = ifo.Infrastructure.ResidualGas.gap + + # Eq (14) + diffusion_time = sqrt(pi/2) * radius**2 / (gap * thermal_vel) + diffusion_time /= log(1 + (radius/gap)**2) + + # Eq (11) factoring out the low pass cutoff as in (5) + DeltaS0 = 4 * kT * pi*radius**2 * pressure * diffusion_time / gap + + else: + DeltaS0 = 0 + diffusion_time = 0 + + # Eq (5) + force_noise += DeltaS0 / (1 + (2*pi*f*diffusion_time)**2) + # convert force to displacement noise using the suspension susceptibility - noise = 4 * kT * beta_inf * abs(sustf.tst_suscept)**2 + noise = force_noise * abs(sustf.tst_suscept)**2 return noise