From e284fa93d5c1dcb65f356cff6171c90449925393 Mon Sep 17 00:00:00 2001
From: Peter Powers <pmpowers@usgs.gov>
Date: Tue, 10 Dec 2024 10:05:43 -0700
Subject: [PATCH] updated backbone to use adjusted gmms

---
 .../nshmp/gmm/UsgsPrviBackbone2025.java       | 85 ++++++++++++-------
 1 file changed, 56 insertions(+), 29 deletions(-)

diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/UsgsPrviBackbone2025.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/UsgsPrviBackbone2025.java
index baeda194..5ba4b2c1 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/UsgsPrviBackbone2025.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/UsgsPrviBackbone2025.java
@@ -3,14 +3,24 @@ package gov.usgs.earthquake.nshmp.gmm;
 import static com.google.common.base.Preconditions.checkArgument;
 import static gov.usgs.earthquake.nshmp.gmm.Gmm.AG_20_GLOBAL_INTERFACE;
 import static gov.usgs.earthquake.nshmp.gmm.Gmm.AG_20_GLOBAL_SLAB;
+import static gov.usgs.earthquake.nshmp.gmm.Gmm.AG_20_PRVI_INTERFACE;
+import static gov.usgs.earthquake.nshmp.gmm.Gmm.AG_20_PRVI_SLAB;
 import static gov.usgs.earthquake.nshmp.gmm.Gmm.ASK_14_BASE;
+import static gov.usgs.earthquake.nshmp.gmm.Gmm.ASK_14_PRVI;
 import static gov.usgs.earthquake.nshmp.gmm.Gmm.BSSA_14_BASE;
+import static gov.usgs.earthquake.nshmp.gmm.Gmm.BSSA_14_PRVI;
 import static gov.usgs.earthquake.nshmp.gmm.Gmm.CB_14_BASE;
+import static gov.usgs.earthquake.nshmp.gmm.Gmm.CB_14_PRVI;
 import static gov.usgs.earthquake.nshmp.gmm.Gmm.CY_14_BASE;
+import static gov.usgs.earthquake.nshmp.gmm.Gmm.CY_14_PRVI;
 import static gov.usgs.earthquake.nshmp.gmm.Gmm.KBCG_20_GLOBAL_INTERFACE;
 import static gov.usgs.earthquake.nshmp.gmm.Gmm.KBCG_20_GLOBAL_SLAB;
+import static gov.usgs.earthquake.nshmp.gmm.Gmm.KBCG_20_PRVI_INTERFACE;
+import static gov.usgs.earthquake.nshmp.gmm.Gmm.KBCG_20_PRVI_SLAB;
 import static gov.usgs.earthquake.nshmp.gmm.Gmm.PSBAH_20_GLOBAL_INTERFACE;
 import static gov.usgs.earthquake.nshmp.gmm.Gmm.PSBAH_20_GLOBAL_SLAB;
+import static gov.usgs.earthquake.nshmp.gmm.Gmm.PSBAH_20_PRVI_INTERFACE;
+import static gov.usgs.earthquake.nshmp.gmm.Gmm.PSBAH_20_PRVI_SLAB;
 import static gov.usgs.earthquake.nshmp.gmm.Gmm.Type.ACTIVE_CRUST;
 import static gov.usgs.earthquake.nshmp.gmm.Gmm.Type.SUBDUCTION_INTERFACE;
 import static gov.usgs.earthquake.nshmp.gmm.Gmm.Type.SUBDUCTION_SLAB;
@@ -74,28 +84,23 @@ public abstract class UsgsPrviBackbone2025 implements GroundMotionModel {
     final double φs2sPrvi, φs2sNga;
     final double τSub, φSub, φSubSS, φSubS2S;
 
-    Coefficients(
-        Imt imt,
-        CoefficientContainer ccTau,
-        CoefficientContainer ccPhiSS,
-        CoefficientContainer ccPhiS2S,
-        CoefficientContainer ccSubSigma) {
+    Coefficients(Imt imt) {
 
-      Map<String, Double> coeffsTau = ccTau.get(imt);
+      Map<String, Double> coeffsTau = COEFFS_TAU_ACTIVE_CRUST.get(imt);
       Ï„1 = coeffsTau.get("tau_mean_4.5");
       Ï„2 = coeffsTau.get("tau_mean_5.0");
       Ï„3 = coeffsTau.get("tau_mean_5.5");
       Ï„4 = coeffsTau.get("tau_mean_6.5");
 
-      Map<String, Double> coeffsPhiSS = ccPhiSS.get(imt);
+      Map<String, Double> coeffsPhiSS = COEFFS_PHISS_ACTIVE_CRUST.get(imt);
       a = coeffsPhiSS.get("a_smoothed_Mod");
       b = coeffsPhiSS.get("b_smoothed_Mod");
 
-      Map<String, Double> coeffsPhiS2S = ccPhiS2S.get(imt);
+      Map<String, Double> coeffsPhiS2S = COEFFS_PHIS2S_ACTIVE_CRUST.get(imt);
       φs2sPrvi = coeffsPhiS2S.get("phiS2S_PRVI");
       φs2sNga = coeffsPhiS2S.get("phiS2S_WUS");
 
-      Map<String, Double> coeffsSubSigma = ccSubSigma.get(imt);
+      Map<String, Double> coeffsSubSigma = COEFFS_SIGMA_SUBDUCTION.get(imt);
       Ï„Sub = coeffsSubSigma.get("tau_mean");
       φSub = coeffsSubSigma.get("phi_mean");
       φSubSS = coeffsSubSigma.get("PhiSS_PRVI");
@@ -115,6 +120,7 @@ public abstract class UsgsPrviBackbone2025 implements GroundMotionModel {
       String name,
       Map<Gmm, Double> gmms,
       GroundMotionTable[] epiTables) {
+
     this.imt = imt;
     this.epiTables = epiTables;
     LogicTree.Builder<GroundMotionModel> b = LogicTree.builder(name);
@@ -123,13 +129,7 @@ public abstract class UsgsPrviBackbone2025 implements GroundMotionModel {
         e.getKey().instance(imt),
         e.getValue()));
     this.tree = b.build();
-
-    coeffs = new Coefficients(
-        imt,
-        COEFFS_TAU_ACTIVE_CRUST,
-        COEFFS_PHISS_ACTIVE_CRUST,
-        COEFFS_PHIS2S_ACTIVE_CRUST,
-        COEFFS_SIGMA_SUBDUCTION);
+    this.coeffs = new Coefficients(imt);
   }
 
   @Override
@@ -211,18 +211,28 @@ public abstract class UsgsPrviBackbone2025 implements GroundMotionModel {
     static final String NAME = UsgsPrviBackbone2025.NAME + " : Active Crust";
     static final Constraints CONSTRAINTS = AbrahamsonEtAl_2014.CONSTRAINTS;
 
-    static final Map<Gmm, Double> GMM_MAP = Map.of(
+    static final Map<Gmm, Double> GMMS_ACTIVE_CRUST = Map.of(
         ASK_14_BASE, 0.25,
         BSSA_14_BASE, 0.25,
         CB_14_BASE, 0.25,
         CY_14_BASE, 0.25);
 
+    static final Map<Gmm, Double> GMMS_ACTIVE_CRUST_PRVI = Map.of(
+        ASK_14_PRVI, 0.25,
+        BSSA_14_PRVI, 0.25,
+        CB_14_PRVI, 0.25,
+        CY_14_PRVI, 0.25);
+
     ActiveCrust(Imt imt) {
       this(imt, NAME);
     }
 
     ActiveCrust(Imt imt, String name) {
-      super(imt, name, GMM_MAP, getPrviEpi(ACTIVE_CRUST, imt));
+      this(imt, name, GMMS_ACTIVE_CRUST);
+    }
+
+    ActiveCrust(Imt imt, String name, Map<Gmm, Double> gmms) {
+      super(imt, name, gmms, getPrviEpi(ACTIVE_CRUST, imt));
     }
 
     @Override
@@ -278,7 +288,7 @@ public abstract class UsgsPrviBackbone2025 implements GroundMotionModel {
     static final String NAME = ActiveCrust.NAME + " (adjusted)";
 
     ActiveCrustAdjusted(Imt imt) {
-      super(imt, NAME);
+      super(imt, NAME, GMMS_ACTIVE_CRUST_PRVI);
     }
 
     @Override
@@ -294,7 +304,7 @@ public abstract class UsgsPrviBackbone2025 implements GroundMotionModel {
     static final String NAME = ActiveCrust.NAME + " (adjusted, no epi, NGA sigma)";
 
     ActiveCrustAdjustedNoEpiSigmaNga(Imt imt) {
-      super(imt, NAME);
+      super(imt, NAME, GMMS_ACTIVE_CRUST_PRVI);
     }
 
     @Override
@@ -369,18 +379,26 @@ public abstract class UsgsPrviBackbone2025 implements GroundMotionModel {
     static final String NAME = UsgsPrviBackbone2025.NAME + " : " + INTERFACE;
     static final Constraints CONSTRAINTS = AbrahamsonGulerce_2020.CONSTRAINTS_INTERFACE;
 
-    static final Map<Gmm, Double> GMM_MAP = Map.of(
+    static final Map<Gmm, Double> GMMS_INTERFACE = Map.of(
         AG_20_GLOBAL_INTERFACE, 0.3333,
         KBCG_20_GLOBAL_INTERFACE, 0.3333,
         PSBAH_20_GLOBAL_INTERFACE, 0.3334);
 
+    static final Map<Gmm, Double> GMMS_INTERFACE_PRVI = Map.of(
+        AG_20_PRVI_INTERFACE, 0.3333,
+        KBCG_20_PRVI_INTERFACE, 0.3333,
+        PSBAH_20_PRVI_INTERFACE, 0.3334);
+
     Interface(Imt imt) {
       this(imt, NAME);
     }
 
     Interface(Imt imt, String name) {
-      super(imt, name, GMM_MAP, getPrviEpi(SUBDUCTION_INTERFACE, imt));
+      this(imt, name, GMMS_INTERFACE);
+    }
 
+    Interface(Imt imt, String name, Map<Gmm, Double> gmms) {
+      super(imt, name, gmms, getPrviEpi(SUBDUCTION_INTERFACE, imt));
     }
 
     @Override
@@ -414,7 +432,7 @@ public abstract class UsgsPrviBackbone2025 implements GroundMotionModel {
     static final String NAME = Interface.NAME + " (adjusted)";
 
     InterfaceAdjusted(Imt imt) {
-      super(imt, NAME);
+      super(imt, NAME, GMMS_INTERFACE_PRVI);
     }
 
     @Override
@@ -430,7 +448,7 @@ public abstract class UsgsPrviBackbone2025 implements GroundMotionModel {
     static final String NAME = Interface.NAME + " (adjusted, no epi, NGA sigma)";
 
     InterfaceAdjustedNoEpiSigmaNga(Imt imt) {
-      super(imt, NAME);
+      super(imt, NAME, GMMS_INTERFACE_PRVI);
     }
 
     @Override
@@ -505,17 +523,26 @@ public abstract class UsgsPrviBackbone2025 implements GroundMotionModel {
     static final String NAME = UsgsPrviBackbone2025.NAME + " : " + SLAB;
     static final Constraints CONSTRAINTS = AbrahamsonGulerce_2020.CONSTRAINTS_SLAB;
 
-    static final Map<Gmm, Double> GMM_MAP = Map.of(
+    static final Map<Gmm, Double> GMMS_INTRASLAB = Map.of(
         AG_20_GLOBAL_SLAB, 0.3333,
         KBCG_20_GLOBAL_SLAB, 0.3333,
         PSBAH_20_GLOBAL_SLAB, 0.3334);
 
+    static final Map<Gmm, Double> GMMS_INTRASLAB_PRVI = Map.of(
+        AG_20_PRVI_SLAB, 0.3333,
+        KBCG_20_PRVI_SLAB, 0.3333,
+        PSBAH_20_PRVI_SLAB, 0.3334);
+
     Slab(Imt imt) {
       this(imt, NAME);
     }
 
     Slab(Imt imt, String name) {
-      super(imt, name, GMM_MAP, getPrviEpi(SUBDUCTION_SLAB, imt));
+      this(imt, name, GMMS_INTRASLAB);
+    }
+
+    Slab(Imt imt, String name, Map<Gmm, Double> gmms) {
+      super(imt, name, gmms, getPrviEpi(SUBDUCTION_SLAB, imt));
     }
 
     @Override
@@ -549,7 +576,7 @@ public abstract class UsgsPrviBackbone2025 implements GroundMotionModel {
     static final String NAME = Slab.NAME + " (adjusted)";
 
     SlabAdjusted(Imt imt) {
-      super(imt, NAME);
+      super(imt, NAME, GMMS_INTRASLAB_PRVI);
     }
 
     @Override
@@ -565,7 +592,7 @@ public abstract class UsgsPrviBackbone2025 implements GroundMotionModel {
     static final String NAME = Slab.NAME + " (adjusted, no epi, NGA sigma)";
 
     SlabAdjustedNoEpiSigmaNga(Imt imt) {
-      super(imt, NAME);
+      super(imt, NAME, GMMS_INTRASLAB_PRVI);
     }
 
     @Override
-- 
GitLab