From 4909a0ee7b8c92aeb0e00cafc5a74582b4d36b56 Mon Sep 17 00:00:00 2001
From: Christopher Wipf <wipf@ligo.mit.edu>
Date: Tue, 14 Apr 2020 15:44:50 -0700
Subject: [PATCH] Revise suspension model

Upper joint temperature comes from the stage above
Drop support for BQuad suspension type
Use the fiber end cross-section consistently in wireTELoss()
Remove the "questionable approximation" in continuumWireKh
Correct the spring constant calculation in continuumWireKv
---
 gwinc/suspension.py | 22 ++--------------------
 1 file changed, 2 insertions(+), 20 deletions(-)

diff --git a/gwinc/suspension.py b/gwinc/suspension.py
index 16b1d51..6434d00 100644
--- a/gwinc/suspension.py
+++ b/gwinc/suspension.py
@@ -100,7 +100,6 @@ def getJointParams(sus, n):
             TempUpper = stages[n-1].Temp
         else:
             TempUpper = sus.Temp
-    TempUpper = Temp  # FIXME: reproduces the old calculation
 
     ##############################
     # material parameters
@@ -114,10 +113,6 @@ def getJointParams(sus, n):
     elif 'WireMaterial' in stage:
         wireMatUpper = stage.WireMaterial
         wireMatLower = stage.WireMaterial
-    # FIXME: reproduces the old calculation
-    elif n == last_stage and sus.Type == 'BQuad':
-        wireMatUpper = 'Silicon'
-        wireMatLower = 'Silicon'
     elif n == last_stage:
         wireMatUpper = 'Silica'
         wireMatLower = 'Silica'
@@ -132,9 +127,6 @@ def getJointParams(sus, n):
     # support blade (upper joint only)
     if 'BladeMaterial' in stage:
         bladeMat = stage.BladeMaterial
-    # FIXME: reproduces the old calculation
-    elif n == last_stage and sus.Type == 'BQuad':
-        bladeMat = 'Silicon'
     else:
         bladeMat = 'MaragingSteel'
 
@@ -206,7 +198,7 @@ def wireGeometry(r, N, RibbonThickness=None, TaperedEndRadius=None, **kwargs):
     return (xsect, xsectEnd, xII, mu_v, mu_h)
 
 
-def wireTELoss(w, tension, xsectEnd, xII, Temp, alpha, beta, rho, C, K, Y, xsect,
+def wireTELoss(w, tension, xsectEnd, xII, Temp, alpha, beta, rho, C, K, Y,
                RibbonThickness=None, **kwargs):
     """Thermoelastic calculations for wires
 
@@ -222,9 +214,6 @@ def wireTELoss(w, tension, xsectEnd, xII, Temp, alpha, beta, rho, C, K, Y, xsect
     # horizontal TE time constant, wires
     # The constant 7.37e-2 is 1/(4*q0^2) from eq 12, C. Zener 10.1103/PhysRev.53.90 (1938)
     tau = 7.37e-2 * 4 * (rho * C * xsectEnd) / (pi * K)
-    # FIXME: reproduces the old calculation
-    # then xsect can be dropped from the argument list
-    tau = 7.37e-2 * 4 * (rho * C * xsect) / (pi * K)
 
     # deal with ribbon geometry
     if RibbonThickness is not None:
@@ -306,16 +295,12 @@ def continuumWireKh(w, N, length, tension, xsect, xII, rho, Y, phi):
     #     = T k (cos(k L) + k delta sin(k L))
     #   for w -> 0, this reduces to N_w * T * k
     khnum = N * tension * k * (coskl + dk * sinkl)
-    # FIXME: reproduces the old calculation
-    khnum = N * tension * k * (1 + dk**2) * (coskl + dk * sinkl)
 
     # denominator, horiz spring constant
     #   D after equation 8 in GG
     #   D = sin(k L) - 2 k delta cos(k L)
     #   for w -> 0, this reduces to k (L - 2 delta)
     khden = sinkl - 2 * dk * coskl
-    # FIXME: reproduces the old calculation
-    khden = (1 - dk**2) * sinkl - 2 * dk * coskl
 
     return khnum/khden
 
@@ -336,9 +321,6 @@ def continuumWireKv(w, N, length, xsect, xsectEnd, rho, Y, phi,
         kv_mid = N * xsect * Y * k / tan(k * l_mid)
         kv_end = N * xsectEnd * Y * k / tan(k * l_end)
         kv = 1/(2/kv_end + 1/kv_mid)
-        # FIXME: reproduces the old calculation
-        kv_end = N * xsectEnd * Y * k / tan(k * 2*l_end)
-        kv = 1/(1/kv_end + 1/kv_mid)
 
     return kv
 
@@ -491,7 +473,7 @@ def suspQuad(f, sus):
             # nominally this term becomes zero for steel wires as ds_w is zero
             # The last term is for TE loss
             phih_TE = wireTELoss(w, tension, xsectEnd, xII, Temp,
-                                 alpha_w, beta_w, rho_w, C_w, K_w, Y_w, xsect,
+                                 alpha_w, beta_w, rho_w, C_w, K_w, Y_w,
                                  **wireShape)
             phih = phi_w * (1 + mu_h * ds_w) + phih_TE
 
-- 
GitLab