From fac4bee1b2f92f9283d63c17ed69be325f839690 Mon Sep 17 00:00:00 2001
From: Jason Altekruse <jaltekruse@contractor.usgs.gov>
Date: Thu, 14 Jan 2021 12:20:50 -0700
Subject: [PATCH] added uncertainty calcs and fixed median - validated at input
 for global interface and slab against official python code

---
 .../earthquake/nshmp/gmm/ParkerEtAl_2020.java | 335 ++++++++++++++++--
 .../usgs/earthquake/nshmp/gmm/PSHAB20.java    |   3 +-
 src/test/resources/gmm/PSHAB20_results.csv    |  69 ++--
 3 files changed, 354 insertions(+), 53 deletions(-)

diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/ParkerEtAl_2020.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/ParkerEtAl_2020.java
index f328e240..d715e776 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/ParkerEtAl_2020.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/ParkerEtAl_2020.java
@@ -8,6 +8,7 @@ import static gov.usgs.earthquake.nshmp.gmm.Imt.PGA;
 import static java.lang.Math.exp;
 import static java.lang.Math.log;
 import static java.lang.Math.log10;
+import static java.lang.Math.max;
 import static java.lang.Math.min;
 import static java.lang.Math.pow;
 import static java.lang.Math.sqrt;
@@ -34,6 +35,9 @@ import gov.usgs.earthquake.nshmp.gmm.GmmInput.Constraints;
  * plane, zHypBar, in Eq. 4.6 without modification to coefficients or
  * uncertainty.
  *
+ * Path term (Eqs. 4.2 and 4.3 in PEER report) appears to differ in the official
+ * Python implementation. Compare implementations of getPathTerm() below
+ *
  * <p><b>Reference:</b> Parker, G.A, Stewart, J.P., Boore, D.M., Atkinson, G.M.,
  * Hassani, B. (2020) NGA-Subduction global ground-motion models with regional
  * adjustment factors. Report no. 2020/03. Berkeley, CA: PEER, 131 p.
@@ -105,6 +109,19 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
   private static final double DB1 = 20.0; // km
   private static final double DB2 = 67.0; // km
 
+  /* Ï• parameters */
+  private static final double R1 = 200; // km
+  private static final double R2 = 500; // km
+  private static final double V1 = 200; // m/s
+  private static final double V2 = 500; // m/s
+  /* Ï•S2S and Ï•SS parameters */
+  private static final double R3 = 200; // km
+  private static final double R4 = 500; // km
+  private static final double R5 = 500; // km
+  private static final double R6 = 800; // km
+  private static final double V3 = 200; // m/s
+  private static final double V4 = 800; // m/s
+
   private static final class Coefficients {
     final Imt imt;
     final double c0; // model constant
@@ -117,7 +134,7 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
     final double c_e1, c_e2, c_e3, del_None, del_Seattle; // Cascadia basin
     final double Ï„, Ï•21, Ï•22, Ï•2v, vm, Ï•2s2s0, a1, Ï•2ss1, Ï•2ss2, a2; // alleatory
                                                                      // uncertainty
-    final double 𝜎Ep1, 𝜎Ep2, t1, t2;
+    final double σε1, σε2, t1, t2;
 
     Coefficients(Imt imt, CoefficientContainer cc, boolean isSlab, String region) {
       this.imt = imt;
@@ -168,11 +185,11 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
       Ï•2ss1 = coeffs.get("phi2SS1");
       Ï•2ss2 = coeffs.get("phi2SS2");
       a2 = coeffs.get("a2");
-      // epistemic model
-      𝜎Ep1 = 0.4; // GLOBAL INTERFACE
-      𝜎Ep2 = 0.4; // GLOBAL INTERFACE
-      t1 = 0.2; // GLOBAL INTERFACE
-      t2 = 0.2; // GLOBAL INTERFACE
+      // epistemic model (period-independent)
+      σε1 = getσε1(region, isSlab);
+      σε2 = getσε2(region, isSlab);
+      t1 = getT1(region, isSlab);
+      t2 = getT2(region, isSlab);
     }
 
     private static final String getA0Col(boolean isSlab, String region) {
@@ -187,6 +204,79 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
       return a0Col;
     }
 
+    /* Table E4 */
+    private static final double getσε1(String region, boolean isSlab) {
+      // return region.equals(Region.ALASKA) ? 0.15 :
+      // region.equals(Region.ALEUTIANS) ? 0.15 :
+      // region.equals(Region.CASCADIA) ? 0.43 : 0.4; // else GLOBAL
+      switch (region) {
+        case Region.GLOBAL:
+          return isSlab ? 0.35 : 0.4;
+        case Region.ALASKA:
+          return isSlab ? 0.15 : .15;
+        case Region.ALEUTIANS:
+          return isSlab ? 0.25 : .15;
+        case Region.CASCADIA:
+          return isSlab ? 0.35 : 0.43;
+        default:
+          throw new IllegalArgumentException("Region [" + region + "] not supported");
+      }
+    }
+
+    /* Table E4 */
+    private static final double getσε2(String region, boolean isSlab) {
+      // return region.equals(Region.ALASKA) ? 0.1 :
+      // region.equals(Region.ALEUTIANS) ? 0.11 :
+      // region.equals(Region.CASCADIA) ? 0.33 : 0.4; // else GLOBAL
+      switch (region) {
+        case Region.GLOBAL:
+          return isSlab ? 0.22 : 0.4;
+        case Region.ALASKA:
+          return isSlab ? 0.12 : .1;
+        case Region.ALEUTIANS:
+          return isSlab ? 0.18 : .1;
+        case Region.CASCADIA:
+          return isSlab ? 0.16 : 0.33;
+        default:
+          throw new IllegalArgumentException("Region [" + region + "] not supported");
+      }
+    }
+
+    /* Table E4 */
+    private static final double getT1(String region, boolean isSlab) {
+      // return region.equals(Region.ALASKA) ? 1 :
+      // region.equals(Region.ALEUTIANS) ? 1 :
+      // region.equals(Region.CASCADIA) ? 0.2 : 0.2; // else GLOBAL
+      switch (region) {
+        case Region.GLOBAL:
+          return isSlab ? 0.15 : 0.2;
+        case Region.ALASKA:
+          return isSlab ? 0.5 : 1;
+        case Region.ALEUTIANS:
+          return isSlab ? 0.3 : 1;
+        case Region.CASCADIA:
+          return isSlab ? 0.2 : 0.2;
+        default:
+          throw new IllegalArgumentException("Region [" + region + "] not supported");
+      }
+    }
+
+    /* Table E4 */
+    private static final double getT2(String region, boolean isSlab) {
+      switch (region) {
+        case Region.GLOBAL:
+          return isSlab ? 2 : 0.4;
+        case Region.ALASKA:
+          return isSlab ? 1 : 4;
+        case Region.ALEUTIANS:
+          return isSlab ? 0.8 : 4;
+        case Region.CASCADIA:
+          return isSlab ? 3 : 0.5;
+        default:
+          throw new IllegalArgumentException("Region [" + region + "] not supported");
+      }
+    }
+
     private static final double getSaturationMagnitude(String region, boolean isSlab) {
       // TODO? Read from coeff table?
       // Parket et al. (2020) Table 4.1
@@ -207,14 +297,6 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
           throw new IllegalArgumentException("Region [" + region + "] not supported");
       }
     }
-
-    // set/get epistemic uncertainty parameters
-    // Region,SigEp1,SigEp2,T1,T2
-    // Global,0.4,0.4,0.2,0.4
-    // Alaska,0.15,0.1,1,4
-    // Aleutian,0.15,0.1,1,4
-    // Cascadia,0.43,0.33,0.2,0.5
-
   }
 
   private final Coefficients coeffs;
@@ -242,7 +324,18 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
     double μ = calcMean(coeffs, isSlab(), getBasin(), in.Mw, in.rRup, in.zHyp, pgaRef,
         in.vs30, in.z2p5);
 
-    double σ = 0.0;
+    double ϕTotal = getϕTotal(coeffs, in.rRup, in.vs30);
+    double σ = Maths.hypot(coeffs.τ, ϕTotal);
+
+    // System.out.println("calc for T = " + coeffs.imt.toString());
+    // System.out.printf(" Ï•Total = %.6f\n", Ï•Total);
+    // System.out.printf(" σ = %.6f\n", σ);
+
+    double ϕS2S = getϕS2S(coeffs, in.rRup, in.vs30);
+    double ϕSS = getϕSS(coeffs, in.rRup, in.vs30);
+
+    double σε = getσε(coeffs);
+
     return DefaultScalarGroundMotion.create(μ, σ);
   }
 
@@ -252,6 +345,14 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
 
   abstract String getBasin();
 
+  // abstract double σε1();
+  //
+  // abstract double σε2();
+  //
+  // abstract double t1();
+  //
+  // abstract double t2();
+
   /* calc median at 760 reference conditions */
   private static final double calcMean(
       final Coefficients c,
@@ -268,7 +369,7 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
     // System.out.printf(" mc = %.2f\n", c.mc);
     // System.out.printf(" h = %.6f\n", h);
     // System.out.printf(" Fp = %.6f\n", Fp);
-    System.out.printf("  Fm(ref) = %.6f\n", Fm);
+    // System.out.printf(" Fm(ref) = %.6f\n", Fm);
     // System.out.printf(" Fd = %.6f\n", Fd);
     // System.out.printf(" Fb = %.6f (reference calc)\n", 0.0);
     // System.out.printf(" mu = %.6f\n", c.c0 + Fp + Fm + Fd);
@@ -299,19 +400,19 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
     double Fsb = getSiteBasinTerm(c, basin, vs30, z2p5);
     double Fs = Fslin + Fsnl + Fsb;
 
-    System.out.println("calcMean for T = " + c.imt.toString());
-    System.out.printf("  Vs30 = %.2f\n", vs30);
-    System.out.printf("  h = %.6f\n", h);
-    System.out.printf("  Fp = %.6f\n", Fp);
-    System.out.printf("  Fm = %.6f\n", Fm);
-    System.out.printf("  Fd = %.6f\n", Fd);
-    System.out.printf("  PGAref = %.6f\n", pgaRef);
-    System.out.printf("  Fslin = %.6e\n", Fslin);
-    System.out.printf("  Fsnl = %.6e\n", Fsnl);
-    System.out.printf("  Fssb = %.6e\n", Fsb);
-    System.out.printf("  Fs = %.6e\n", Fs);
-    System.out.printf("  mu = %.6f\n", c.c0 + Fp + Fm + Fd + Fs);
-    System.out.printf("  y = %.6f\n", exp(c.c0 + Fp + Fm + Fd + Fs));
+    // System.out.println("calcMean for T = " + c.imt.toString());
+    // System.out.printf(" Vs30 = %.2f\n", vs30);
+    // System.out.printf(" h = %.6f\n", h);
+    // System.out.printf(" Fp = %.6f\n", Fp);
+    // System.out.printf(" Fm = %.6f\n", Fm);
+    // System.out.printf(" Fd = %.6f\n", Fd);
+    // System.out.printf(" PGAref = %.6f\n", pgaRef);
+    // System.out.printf(" Fslin = %.6e\n", Fslin);
+    // System.out.printf(" Fsnl = %.6e\n", Fsnl);
+    // System.out.printf(" Fssb = %.6e\n", Fsb);
+    // System.out.printf(" Fs = %.6e\n", Fs);
+    // System.out.printf(" mu = %.6f\n", c.c0 + Fp + Fm + Fd + Fs);
+    // System.out.printf(" y = %.6f\n", exp(c.c0 + Fp + Fm + Fd + Fs));
 
     return c.c0 + Fp + Fm + Fd + Fs;
   }
@@ -438,6 +539,141 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
     return Fb;
   }
 
+  /* Eqs. 6.3, 6.4, 6.5 */
+  private static final double getϕTotal(final Coefficients c, final double rRup,
+      final double vs30) {
+
+    /* Eq. 6.5 */
+    double Δvar;
+    double rPrime = max(R1, min(R2, rRup));
+    if (vs30 <= V1) {
+      Δvar = c.ϕ2v * (log(R2 / rPrime) / log(R2 / R1));
+    } else if (vs30 >= V2) {
+      Δvar = 0;
+    } else {
+      Δvar = c.ϕ2v * (log(V2 / vs30) / log(V2 / V1)) * (log(R2 / rPrime) / log(R2 / R1));
+    }
+
+    /* Eq. 6.4 */
+    double Ï•2;
+    if (rRup <= R1) {
+      Ï•2 = c.Ï•21;
+    } else if (rRup >= R2) {
+      Ï•2 = c.Ï•22;
+    } else {
+      Ï•2 = (c.Ï•22 - c.Ï•21) / log(R2 / R1) * log(rRup / R1) + c.Ï•21;
+    }
+
+    /* Eq. 6.3 */
+    double ϕTotal = sqrt(Δvar + ϕ2);
+
+    // System.out.println("getϕTotal for T = " + c.imt.toString());
+    // System.out.printf(" rRup = %.6f\n",rRup);
+    // System.out.printf(" vs30 = %.6f\n",vs30);
+    // System.out.printf(" rPrime = %.6f\n",rPrime);
+    // System.out.printf(" c.Ï•2v = %.6f\n",c.Ï•2v);
+    // System.out.printf(" c.Ï•21 = %.6f\n",c.Ï•21);
+    // System.out.printf(" c.Ï•22 = %.6f\n",c.Ï•22);
+    // System.out.printf(" Δvar = %.6f\n",Δvar);
+    // System.out.printf(" Ï•2 = %.6f\n",Ï•2);
+    // System.out.printf(" Ï•Total = %.6f\n",Ï•Total);
+
+    return Ï•Total;
+  }
+
+  /* Eqs. 6.6, 6.7 */
+  private static final double getϕS2S(final Coefficients c, final double rRup, final double vs30) {
+
+    /* Eq. 6.7 */
+    double rPrime = max(R3, min(R4, rRup));
+    double ΔvarS2S;
+    if (vs30 <= V3) {
+      ΔvarS2S = c.a1 * log(V3 / c.vm) * log(R4 / rPrime) / log(R4 / R3);
+    } else if (vs30 < c.vm) {
+      ΔvarS2S = c.a1 * log(vs30 / c.vm) * log(R4 / rPrime) / log(R4 / R3);
+    } else if (vs30 < V4) {
+      ΔvarS2S = c.a1 * log(vs30 / c.vm);
+    } else { // vs30 >= V4
+      ΔvarS2S = c.a1 * log(V4 / c.vm);
+    }
+
+    double ϕS2S = sqrt(c.ϕ2s2s0 + ΔvarS2S);
+
+    // System.out.println("getϕS2S for T = " + c.imt.toString());
+    // System.out.printf(" rRup = %.6f\n",rRup);
+    // System.out.printf(" vs30 = %.6f\n",vs30);
+    // System.out.printf(" rPrime = %.6f\n",rPrime);
+    // System.out.printf(" c.a1 = %.6f\n",c.a1);
+    // System.out.printf(" c.vm = %.6f\n",c.vm);
+    // System.out.printf(" ΔvarS2S = %.6f\n",ΔvarS2S);
+    // System.out.printf(" c.Ï•2s2s0 = %.6f\n",c.Ï•2s2s0);
+    // System.out.printf(" Ï•S2S = %.6f\n",Ï•S2S);
+
+    return Ï•S2S;
+  }
+
+  /* Eqs. 6.8, 6.9, 6.10 */
+  private double getϕSS(Coefficients c, double rRup, double vs30) {
+    /* Eq. 6.10 */
+    double rPrime = max(R3, min(R4, rRup));
+    double ΔvarSS;
+    if (vs30 <= V3) {
+      ΔvarSS = c.a2 * log(V3 / c.vm) * log(R4 / rPrime) / log(R4 / R3);
+    } else if (vs30 < c.vm) {
+      ΔvarSS = c.a2 * log(vs30 / c.vm) * log(R4 / rPrime) / log(R4 / R3);
+    } else if (vs30 < V4) {
+      ΔvarSS = c.a2 * log(vs30 / c.vm);
+    } else { // vs30 >= V4
+      ΔvarSS = c.a2 * log(V4 / c.vm);
+    }
+
+    /* Eq. 6.9 */
+    double Ï•SS2rRup;
+    if (rRup <= R5) {
+      Ï•SS2rRup = c.Ï•2ss1;
+    } else if (rRup < R6) {
+      Ï•SS2rRup = (c.Ï•2ss2 - c.Ï•2ss1) / log(R6 / R5) * log(rRup / R5) + c.Ï•2ss1;
+    } else { // rRup >= R6
+      Ï•SS2rRup = c.Ï•2ss2;
+    }
+
+    double ϕSS = sqrt(ϕSS2rRup + ΔvarSS);
+
+    // System.out.println("getϕSS for T = " + c.imt.toString());
+    // System.out.printf(" rRup = %.6f\n",rRup);
+    // System.out.printf(" vs30 = %.6f\n",vs30);
+    // System.out.printf(" rPrime = %.6f\n",rPrime);
+    // System.out.printf(" c.a2 = %.6f\n",c.a1);
+    // System.out.printf(" c.vm = %.6f\n",c.vm);
+    // System.out.printf(" c.Ï•2ss1 = %.6f\n",c.Ï•2ss1);
+    // System.out.printf(" c.Ï•2ss2 = %.6f\n",c.Ï•2ss2);
+    // System.out.printf(" ΔvarSS = %.6f\n",ΔvarSS);
+    // System.out.printf(" Ï•SS2rRup = %.6f\n",Ï•SS2rRup);
+    // System.out.printf(" Ï•S2S = %.6f\n",Ï•SS);
+
+    return Ï•SS;
+  }
+
+  /* Eq. 8.2 */
+  private double getσε(Coefficients c) {
+    double σε;
+    if (c.imt == Imt.PGA || c.imt == Imt.PGV || c.imt.period() < c.t1) {
+      σε = c.σε1;
+    } else if (c.imt.period() < c.t2) {
+      σε = c.σε1 - (c.σε1 - c.σε2) * log(c.imt.period() / c.t1) / log(c.t2 / c.t1);
+    } else { // T > T2
+      σε = c.σε2;
+    }
+    // System.out.println("getσε for T = " + c.imt.toString());
+    // System.out.printf(" T1 = %.6f\n",c.t1);
+    // System.out.printf(" T2 = %.6f\n",c.t2);
+    // System.out.printf(" c.σε1 = %.6f\n",c.σε1);
+    // System.out.printf(" c.σε2 = %.6f\n",c.σε2);
+    // System.out.printf(" σε = %.6f\n",σε);
+
+    return σε;
+  }
+
   /*
    * Global interface model
    */
@@ -462,6 +698,27 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
     String getBasin() {
       return Basin.NONE;
     }
+
+    // @Override
+    // double σε1() {
+    // return 0;
+    // }
+    //
+    // @Override
+    // double σε2() {
+    // return 0;
+    // }
+    //
+    // @Override
+    // double t1() {
+    // return 0;
+    // }
+    //
+    // @Override
+    // double t2() {
+    // return 0;
+    // }
+
   }
 
   /*
@@ -488,6 +745,26 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
     String getBasin() {
       return Basin.NONE;
     }
+
+    // @Override
+    // double σε1() {
+    // return 0;
+    // }
+    //
+    // @Override
+    // double σε2() {
+    // return 0;
+    // }
+    //
+    // @Override
+    // double t1() {
+    // return 0;
+    // }
+    //
+    // @Override
+    // double t2() {
+    // return 0;
+    // }
   }
 
   /*
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/gmm/PSHAB20.java b/src/test/java/gov/usgs/earthquake/nshmp/gmm/PSHAB20.java
index 7b20051b..5d2f86bc 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/gmm/PSHAB20.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/gmm/PSHAB20.java
@@ -1,6 +1,7 @@
 package gov.usgs.earthquake.nshmp.gmm;
 
 import static gov.usgs.earthquake.nshmp.gmm.Gmm.PSHAB20_INTERFACE;
+import static gov.usgs.earthquake.nshmp.gmm.Gmm.PSHAB20_SLAB;
 import static gov.usgs.earthquake.nshmp.gmm.Imt.PGA;
 
 import java.io.IOException;
@@ -33,7 +34,7 @@ class PSHAB20 implements ArgumentsProvider {
   }
 
   /* Result generation sets */
-  private static Set<Gmm> gmms = EnumSet.of(PSHAB20_INTERFACE);
+  private static Set<Gmm> gmms = EnumSet.of(PSHAB20_INTERFACE, PSHAB20_SLAB);
   private static Set<Imt> imts = EnumSet.of(PGA);// PSHAB20_INTERFACE.supportedIMTs();
 
   public static void main(String[] args) throws IOException {
diff --git a/src/test/resources/gmm/PSHAB20_results.csv b/src/test/resources/gmm/PSHAB20_results.csv
index 90c40b89..3829c8b2 100644
--- a/src/test/resources/gmm/PSHAB20_results.csv
+++ b/src/test/resources/gmm/PSHAB20_results.csv
@@ -1,23 +1,46 @@
-0-PSHAB20_INTERFACE-SA0P01,2.08965604936e-02,0.0
-0-PSHAB20_INTERFACE-SA0P02,2.12376645069e-02,0.0
-0-PSHAB20_INTERFACE-SA0P03,2.24575034172e-02,0.0
-0-PSHAB20_INTERFACE-SA0P05,2.58276475982e-02,0.0
-0-PSHAB20_INTERFACE-SA0P075,2.96364966819e-02,0.0
-0-PSHAB20_INTERFACE-SA0P1,3.25369383278e-02,0.0
-0-PSHAB20_INTERFACE-SA0P15,3.55651022874e-02,0.0
-0-PSHAB20_INTERFACE-SA0P2,3.64296484198e-02,0.0
-0-PSHAB20_INTERFACE-SA0P25,3.69487943052e-02,0.0
-0-PSHAB20_INTERFACE-SA0P3,3.71144622014e-02,0.0
-0-PSHAB20_INTERFACE-SA0P4,3.46117876964e-02,0.0
-0-PSHAB20_INTERFACE-SA0P5,3.11738351662e-02,0.0
-0-PSHAB20_INTERFACE-SA0P75,2.56085017514e-02,0.0
-0-PSHAB20_INTERFACE-SA1P0,2.06123859520e-02,0.0
-0-PSHAB20_INTERFACE-SA1P5,1.45673139070e-02,0.0
-0-PSHAB20_INTERFACE-SA2P0,1.08967064936e-02,0.0
-0-PSHAB20_INTERFACE-SA3P0,6.26946254992e-03,0.0
-0-PSHAB20_INTERFACE-SA4P0,4.36498415871e-03,0.0
-0-PSHAB20_INTERFACE-SA5P0,3.44133448941e-03,0.0
-0-PSHAB20_INTERFACE-SA7P5,1.95537566087e-03,0.0
-0-PSHAB20_INTERFACE-SA10P0,1.25157789513e-03,0.0
-0-PSHAB20_INTERFACE-PGA,2.02870001012e-02,0.0
-0-PSHAB20_INTERFACE-PGV,1.95216532021e+00,0.0
+0-PSHAB20_INTERFACE-SA0P01,2.08965604936e-02,7.89668284788e-01
+0-PSHAB20_INTERFACE-SA0P02,2.12376645069e-02,7.95816561778e-01
+0-PSHAB20_INTERFACE-SA0P03,2.24575034172e-02,8.14248119433e-01
+0-PSHAB20_INTERFACE-SA0P05,2.58276475982e-02,8.67054784890e-01
+0-PSHAB20_INTERFACE-SA0P075,2.96364966819e-02,8.99944442730e-01
+0-PSHAB20_INTERFACE-SA0P1,3.25369383278e-02,8.89705569276e-01
+0-PSHAB20_INTERFACE-SA0P15,3.55651022874e-02,8.46817571854e-01
+0-PSHAB20_INTERFACE-SA0P2,3.64296484198e-02,8.26438745462e-01
+0-PSHAB20_INTERFACE-SA0P25,3.69487943052e-02,8.31903840597e-01
+0-PSHAB20_INTERFACE-SA0P3,3.71144622014e-02,8.23446415986e-01
+0-PSHAB20_INTERFACE-SA0P4,3.46117876964e-02,8.21622784494e-01
+0-PSHAB20_INTERFACE-SA0P5,3.11738351662e-02,8.18574370476e-01
+0-PSHAB20_INTERFACE-SA0P75,2.56085017514e-02,8.30700908872e-01
+0-PSHAB20_INTERFACE-SA1P0,2.06123859520e-02,8.19795096350e-01
+0-PSHAB20_INTERFACE-SA1P5,1.45673139070e-02,8.05024223238e-01
+0-PSHAB20_INTERFACE-SA2P0,1.08967064936e-02,7.96909028685e-01
+0-PSHAB20_INTERFACE-SA3P0,6.26946254992e-03,7.80425524954e-01
+0-PSHAB20_INTERFACE-SA4P0,4.36498415871e-03,7.56349125735e-01
+0-PSHAB20_INTERFACE-SA5P0,3.44133448941e-03,7.34890468029e-01
+0-PSHAB20_INTERFACE-SA7P5,1.95537566087e-03,7.04318109947e-01
+0-PSHAB20_INTERFACE-SA10P0,1.25157789513e-03,6.87796481526e-01
+0-PSHAB20_INTERFACE-PGA,2.02870001012e-02,7.91454357496e-01
+0-PSHAB20_INTERFACE-PGV,1.95216532021e+00,7.58636276486e-01
+0-PSHAB20_SLAB-SA0P01,7.19805699097e-02,7.89668284788e-01
+0-PSHAB20_SLAB-SA0P02,7.78462260065e-02,7.95816561778e-01
+0-PSHAB20_SLAB-SA0P03,8.37771432985e-02,8.14248119433e-01
+0-PSHAB20_SLAB-SA0P05,1.05691366814e-01,8.67054784890e-01
+0-PSHAB20_SLAB-SA0P075,1.35586500017e-01,8.99944442730e-01
+0-PSHAB20_SLAB-SA0P1,1.58689587375e-01,8.89705569276e-01
+0-PSHAB20_SLAB-SA0P15,1.83281681820e-01,8.46817571854e-01
+0-PSHAB20_SLAB-SA0P2,1.93331748629e-01,8.26438745462e-01
+0-PSHAB20_SLAB-SA0P25,1.88104417586e-01,8.31903840597e-01
+0-PSHAB20_SLAB-SA0P3,1.71253449867e-01,8.23446415986e-01
+0-PSHAB20_SLAB-SA0P4,1.49480063250e-01,8.21622784494e-01
+0-PSHAB20_SLAB-SA0P5,1.26491388754e-01,8.18574370476e-01
+0-PSHAB20_SLAB-SA0P75,8.53899125993e-02,8.30700908872e-01
+0-PSHAB20_SLAB-SA1P0,6.18931082597e-02,8.19795096350e-01
+0-PSHAB20_SLAB-SA1P5,3.59081844251e-02,8.05024223238e-01
+0-PSHAB20_SLAB-SA2P0,2.26680607353e-02,7.96909028685e-01
+0-PSHAB20_SLAB-SA3P0,1.25351157474e-02,7.80425524954e-01
+0-PSHAB20_SLAB-SA4P0,7.74659496901e-03,7.56349125735e-01
+0-PSHAB20_SLAB-SA5P0,5.48590963050e-03,7.34890468029e-01
+0-PSHAB20_SLAB-SA7P5,2.61850755964e-03,7.04318109947e-01
+0-PSHAB20_SLAB-SA10P0,1.57671022525e-03,6.87796481526e-01
+0-PSHAB20_SLAB-PGA,7.18617131166e-02,7.91454357496e-01
+0-PSHAB20_SLAB-PGV,5.11504074039e+00,7.58636276486e-01
-- 
GitLab