From 87bf3a5f07ad0bcff08967ca214b11df2adff622 Mon Sep 17 00:00:00 2001
From: Evan Hall <evan.hall@ligo.org>
Date: Mon, 30 Sep 2019 14:58:25 -0700
Subject: [PATCH] 6D seismometer table motion model

Following Mow-Lowry and Martynov, arXiv:1801.01468
---
 gwinc/noise/seismic.py | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gwinc/noise/seismic.py b/gwinc/noise/seismic.py
index 1ac20543..683e63ac 100644
--- a/gwinc/noise/seismic.py
+++ b/gwinc/noise/seismic.py
@@ -60,6 +60,30 @@ def seisBSC(f):
     return nt, nr
 
 
+def seis6D(f):
+    """ISI noise source spectra with a 6D seismometer.
+
+    This largely follows Mow-Lowry and Martynov, arXiv:1801.01468.
+
+    """
+
+    SEI_F = np.array([0.01, 0.03, 0.1, 0.2, 0.5, 1, 10, 100, 300])
+
+    SEI_T_self = np.array([1e-7, 1e-9, 3e-11, 6e-12, 3e-13, 1e-13, 3e-14, 1e-14, 1e-14])
+    nt_self = 10**(interp1d(SEI_F, log10(SEI_T_self))(f))
+    nt_gnd = 10*seisNLNM(f)
+    blend_t = np.abs(100/(1+1j*f/0.01)**4)
+    nt = np.sqrt(nt_self**2 + (blend_t * nt_gnd)**2)
+
+    SEI_R_self = np.array([2e-11, 5e-12, 1e-12, 6e-13, 3e-13, 2e-13, 6e-14, 2e-14, 2e-14])
+    nr_self = 10**(interp1d(SEI_F, log10(SEI_R_self))(f))
+    nr_gnd = np.abs(1e-7/(1+1j*f/0.001))
+    blend_r = np.abs(100/(1+1j*f/0.01)**4)
+    nr = np.sqrt(nr_self**2 + (blend_t * nr_gnd)**2)
+
+    return nt, nr
+
+
 def seisNLNM(f):
     """The Peterson New Low-Noise Model.
 
-- 
GitLab