From 7a2b6fd34b292bcbcc13922af939dae1c3b76fd0 Mon Sep 17 00:00:00 2001
From: Jameson Graef Rollins <jrollins@finestructure.net>
Date: Tue, 28 Aug 2018 13:51:59 -0700
Subject: [PATCH] remove unused precomp variables and calculations

The products of precompQuantum (primarily fSQL) are currently only
used in squeeze.py (which is itself not used anywhere).  Remove this
function from preocomp, and move relevant bits into squeeze.py

Also remove unused variables in precompPower that could confuse
memoization.
---
 gwinc/precomp.py | 54 ------------------------------------------------
 gwinc/squeeze.py | 27 +++++++++++++++++++-----
 2 files changed, 22 insertions(+), 59 deletions(-)

diff --git a/gwinc/precomp.py b/gwinc/precomp.py
index f4c3bbc4..e112510b 100644
--- a/gwinc/precomp.py
+++ b/gwinc/precomp.py
@@ -110,15 +110,6 @@ def precompIFO(f, ifoin, PRfixed=True):
     ifo.gwinc.BeamWaistToETM = z2
     ifo.Optics.PRM.Transmittance = Tpr
 
-    ##############################
-    # calc quantum parameters
-
-    fSQL, fGammaIFO, fGammaArm = precompQuantum(ifo)
-
-    ifo.gwinc.fSQL = fSQL
-    ifo.gwinc.fGammaIFO = fGammaIFO
-    ifo.gwinc.fGammaArm = fGammaArm
-
     ##############################
     # saved seismic spectrum
 
@@ -161,20 +152,13 @@ def precompPower(ifo, PRfixed=True):
     """Compute power on beamsplitter, finesse, and power recycling factor.
 
     """
-    # constants
     c       = scipy.constants.c
     pin     = ifo.Laser.Power
-    lambda_ = ifo.Laser.Wavelength
     t1      = sqrt(ifo.Optics.ITM.Transmittance)
     r1      = sqrt(1 - ifo.Optics.ITM.Transmittance)
-    t2      = sqrt(ifo.Optics.ETM.Transmittance)
     r2      = sqrt(1 - ifo.Optics.ETM.Transmittance)
-    t3      = sqrt(ifo.Optics.SRM.Transmittance)
     t5      = sqrt(ifo.Optics.PRM.Transmittance)
     r5      = sqrt(1 - ifo.Optics.PRM.Transmittance)
-    wl      = 2*pi * c/lambda_
-    lrec    = ifo.Optics.SRM.CavityLength
-    effic   = ifo.Optics.PhotoDetectorEfficiency
     loss    = ifo.Optics.Loss                          # single TM loss
     bsloss  = ifo.Optics.BSLoss
     acoat   = ifo.Optics.ITM.CoatingAbsorption
@@ -191,7 +175,6 @@ def precompPower(ifo, PRfixed=True):
     if PRfixed:
         Tpr = ifo.Optics.PRM.Transmittance  # use given value
     else:
-        #prfactor = 1/(2*loss * neff + bsloss);         % power recycling factor
         Tpr = 1-(rarm*sqrt(1-bsloss))**2 # optimal recycling mirror transmission
         t5 = sqrt(Tpr)
         r5 = sqrt(1 - Tpr)
@@ -203,49 +186,12 @@ def precompPower(ifo, PRfixed=True):
     asub = 1.3*2*ifo.Optics.ITM.Thickness*ifo.Optics.SubstrateAbsorption
     pbsl = 2*pcrit/(asub+acoat*neff) # bs power limited by thermal lensing
 
-    #pbs = min([pbs, pbsl]);
     if pbs > pbsl:
         logging.warning('P_BS exceeds BS Thermal limit!')
 
     return pbs, parm, finesse, prfactor, Tpr
 
 
-def precompQuantum(ifo):
-    """Compute quantum noise parameters.
-
-    """
-
-    # physical constants
-    hbar = scipy.constants.hbar # J s
-    c    = scipy.constants.c    # m / s
-
-    # IFO parameters
-    lambda_= ifo.Laser.Wavelength
-    Titm   = ifo.Optics.ITM.Transmittance
-    Tsrm   = ifo.Optics.SRM.Transmittance
-    m      = ifo.Materials.MirrorMass
-    L      = ifo.Infrastructure.Length
-    Lsrc   = ifo.Optics.SRM.CavityLength
-
-    # power on BS (W) computed in precompBSPower
-    Pbs    = ifo.gwinc.pbs
-    Parm   = ifo.gwinc.parm
-
-    # derived parameters
-    w0 = 2 * pi * c / lambda_      # carrier frequency (rad/s)
-    gammaArm = Titm * c / (4 * L)  # arm cavity pole (rad/s)
-    fGammaArm = gammaArm / (2*pi)
-    rSR = sqrt(1 - Tsrm)
-
-    # fSQL as defined in D&D paper (eq 33 in P1400018 and/or PRD paper)
-    tSR = sqrt(Tsrm)
-    fSQL = (1/(2*pi))*(8/c)*sqrt((Parm*w0)/(m*Titm))*(tSR/(1+rSR))
-
-    # gammaIFO in Hz
-    fGammaIFO = fGammaArm * ((1 + rSR) / (1 - rSR))
-
-    return fSQL, fGammaIFO, fGammaArm
-
 def dhdl(f, armlen):
     """Strain to length conversion for noise power spetra
 
diff --git a/gwinc/squeeze.py b/gwinc/squeeze.py
index a658fba1..8ebe24a6 100644
--- a/gwinc/squeeze.py
+++ b/gwinc/squeeze.py
@@ -1,6 +1,21 @@
 from numpy import pi, sqrt
 import scipy.constants
 
+
+def sql(ifo):
+    """Computer standard quantum limit (SQL) for IFO"""
+    c = scipy.constants.c
+    Parm = ifo.gwinc.parm
+    w0 = 2 * pi * c / ifo.Laser.Wavelength
+    m = ifo.Materials.MirrorMass
+    Titm = ifo.Optics.ITM.Transmittance
+    Tsrm = ifo.Optics.SRM.Transmittance
+    tSR = sqrt(Tsrm)
+    rSR = sqrt(1 - Tsrm)
+    fSQL = (1/(2*pi))*(8/c)*sqrt((Parm*w0)/(m*Titm))*(tSR/(1+rSR))
+    return fSQL
+
+
 def computeFCParams(ifo, fcParams):
     """Compute ideal filter cavity Tin, detuning [Hz] and bandwidth [Hz]
 
@@ -9,21 +24,23 @@ def computeFCParams(ifo, fcParams):
     c = scipy.constants.c
     fsrFC = c / (2 * fcParams.L)
     lossFC = fcParams.Lrt + fcParams.Te
-  
+
+    fSQL = sql(ifo)
+
     # detuning and cavity bandwidth (D&D paper P1400018 and/or PRD)
-    eps = 4 / (2 + sqrt(2 + 2 * sqrt(1 + (4 * pi * ifo.gwinc.fSQL / (fsrFC * lossFC))**4)))
+    eps = 4 / (2 + sqrt(2 + 2 * sqrt(1 + (4 * pi * fSQL / (fsrFC * lossFC))**4)))
     s1eps = sqrt(1 - eps)
 
     # cavity bandwidth [Hz]
-    gammaFC = ifo.gwinc.fSQL / sqrt(s1eps + s1eps**3)
+    gammaFC = fSQL / sqrt(s1eps + s1eps**3)
     # cavity detuning [Hz]
     detuneFC = s1eps * gammaFC
-  
+
     # input mirror transmission
     TinFC = 4 * pi * gammaFC / fsrFC - lossFC
     if TinFC < lossFC:
         raise RuntimeError('IFC: Losses are too high! %.1f ppm max.' % 1e6 * gammaFC / fsrFC)
-  
+
     # Add to fcParams structure
     fcParams.Ti = TinFC
     fcParams.fdetune = -detuneFC
-- 
GitLab