From b6a4e15367f305825bf85362ac7f6c2f7852f4e4 Mon Sep 17 00:00:00 2001
From: Peter Powers <pmpowers@usgs.gov>
Date: Wed, 15 Jun 2022 10:55:03 -0600
Subject: [PATCH] ag20 cleaning

---
 .../nshmp/gmm/AbrahamsonGulerce_2020.java     | 189 ++++++++----------
 .../gov/usgs/earthquake/nshmp/gmm/Gmm.java    |  28 +--
 2 files changed, 95 insertions(+), 122 deletions(-)

diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/AbrahamsonGulerce_2020.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/AbrahamsonGulerce_2020.java
index bd8bbfdb..23bd5c54 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/AbrahamsonGulerce_2020.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/AbrahamsonGulerce_2020.java
@@ -5,6 +5,7 @@ import static gov.usgs.earthquake.nshmp.gmm.GmmInput.Field.RRUP;
 import static gov.usgs.earthquake.nshmp.gmm.GmmInput.Field.VS30;
 import static gov.usgs.earthquake.nshmp.gmm.GmmInput.Field.ZTOR;
 import static gov.usgs.earthquake.nshmp.gmm.Imt.PGA;
+import static gov.usgs.earthquake.nshmp.gmm.Imt.PGV;
 import static gov.usgs.earthquake.nshmp.gmm.SubductionZone.ALASKA;
 import static gov.usgs.earthquake.nshmp.gmm.SubductionZone.CASCADIA;
 import static gov.usgs.earthquake.nshmp.gmm.SubductionZone.GLOBAL;
@@ -25,16 +26,14 @@ import gov.usgs.earthquake.nshmp.gmm.GmmInput.Constraints;
 import gov.usgs.earthquake.nshmp.tree.LogicTree;
 
 /**
- * Abstract implementation of the Abrahamson &amp; Gülerce NGA-Subduction ground
- * motion model. This model supports both slab and interface type events.
+ * Implementation of the Abrahamson &amp; Gülerce (2020) ground motion model for
+ * subduction regions developed as part of the <a
+ * href="https://www.risksciences.ucla.edu/nhr3/nga-subduction">NGA
+ * Subduction</a> project.
  *
- * <p><b>Note:</b> Direct instantiation of {@code GroundMotionModel}s is
- * prohibited. Use {@link Gmm#instance(Imt)} to retrieve an instance for a
- * desired {@link Imt}.
+ * <p><b>Implementation notes:</b>
  *
- * <p><b>Implementation notes:</b><ul>
- *
- * <li>Implementation currently supports a global median model, as well as
+ * <ul><li>Implementation currently supports a global median model, as well as
  * Alaska and Cascadia regional models.</li>
  *
  * <li>Coefficients for 0.01s are used for PGA.</li>
@@ -51,57 +50,34 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  * greater than the reference value computed from Vs30.</li>
  *
  * <li>The aleatory variability model only includes the linear φ1 model
- * appropriate for the global, Alaska and Cascadia models.</li>
+ * appropriate for the global, Alaska and Cascadia models.</li></ul>
  *
- * </ul>
+ * <p><b>Note:</b> Direct instantiation of {@code GroundMotionModel}s is
+ * prohibited. Use {@link Gmm#instance(Imt)} to retrieve an instance for a
+ * desired {@link Imt}.
  *
  * <p><b>Reference:</b> Abrahamson, N., and Gülerce, Z., 2020, Regionalized
  * ground-motion models for subduction earthquakes based on the NGA-SUB
  * database. Report no. 2020/25. Berkeley, CA: PEER, 219 pp.
  *
- * <p><b>Component:</b> Geometric mean of two horizontal components
+ * <p><b>Component:</b> average horizontal (RotD50)
  *
  * @author U.S. Geological Survey
- * @see Gmm#AG_20_GLOBAL_INTERFACE
- * @see Gmm#AG_20_GLOBAL_SLAB
- * @see Gmm#AG_20_CASCADIA_INTERFACE
- * @see Gmm#AG_20_CASCADIA_ADJ_INTERFACE
- * @see Gmm#AG_20_CASCADIA_SLAB
- * @see Gmm#AG_20_CASCADIA_ADJ_SLAB
- * @see Gmm#AG_20_CASCADIA_INTERFACE_BASIN
- * @see Gmm#AG_20_CASCADIA_ADJ_INTERFACE_BASIN
- * @see Gmm#AG_20_CASCADIA_SLAB_BASIN
- * @see Gmm#AG_20_CASCADIA_ADJ_SLAB_BASIN
- * @see Gmm#AG_20_ALASKA_INTERFACE
- * @see Gmm#AG_20_ALASKA_SLAB
- * @see Gmm#AG_20_ALASKA_ADJ_INTERFACE
- * @see Gmm#AG_20_ALASKA_ADJ_SLAB
  */
 public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
 
   static final String NAME = "Abrahamson & Gülerce (2020)";
 
-  /*
-   * Developer notes:
-   *
-   * TODO per-implementation constraints? (slab vs interface depth limits)
-   *
-   * TODO NAA recommendation for PGV
-   *
-   * TODO vLin, b values for fSite are from CB14 with 0.6s and 6s values from
-   * BcHydro. There is an inconsistency between CB14 and BcHydro at 0.02s, and
-   * 0.03s is missing from BcHydro. vLin is rounded in CB14.
-   *
-   * TODO should Vs30 in non-lin sigma model be Vs*?
-   *
-   * TODO what is horizontal component of this and other NGA-Sub models?
-   *
-   * TODO It's not clear what the order of operations is on Δc1s eqn 3.5
-   */
-
-  static final Constraints CONSTRAINTS = Constraints.builder()
-      .set(MW, Range.closed(5.0, 9.5))
-      .set(RRUP, Range.closed(0.0, 1000.0))
+  static final Constraints CONSTRAINTS_INTERFACE = Constraints.builder()
+      .set(MW, Range.closed(6.0, 9.5))
+      .set(RRUP, Range.closed(0.0, 1000.0)) // check report
+      .set(ZTOR, Earthquakes.INTERFACE_DEPTH_RANGE)
+      .set(VS30, Range.closed(150.0, 1000.0))
+      .build();
+
+  static final Constraints CONSTRAINTS_SLAB = Constraints.builder()
+      .set(MW, Range.closed(5.0, 8.0))
+      .set(RRUP, Range.closed(0.0, 1000.0)) // check report
       .set(ZTOR, Earthquakes.SLAB_DEPTH_RANGE)
       .set(VS30, Range.closed(150.0, 1000.0))
       .build();
@@ -114,20 +90,21 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
   private static final double N = 1.18;
 
   private static final double VSS_MAX = 1000.0; // Errata 2021/7/12
-  private static final double ΔC1_SLAB = -0.3;
   private static final double VS30_ROCK = 1000.0;
 
   private static final double D0 = 0.47;
 
   private static final class Coefficients {
 
+    final Imt imt;
     final double c1i, c1s;
     final double a1, a2, a3, a4, a5, a6, a8, a9, a10, a11, a12, a13, a14, a39, a45;
     final double d1, d2, ρB, ρW;
-    final double vlin, b;
+    final double vlin, b; //
     final double a1Adj;
 
     Coefficients(Imt imt, CoefficientContainer cc, SubductionZone zone) {
+      this.imt = imt;
       Map<String, Double> coeffs = cc.get(imt);
 
       /* Regional adjustments (Global) */
@@ -182,8 +159,10 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
 
   private final Coefficients coeffs;
   private final Coefficients coeffsPGA;
+  private final Gmm subtype;
 
-  AbrahamsonGulerce_2020(Imt imt, SubductionZone zone) {
+  AbrahamsonGulerce_2020(Imt imt, Gmm subtype, SubductionZone zone) {
+    this.subtype = subtype;
     coeffs = new Coefficients(imt, COEFFS, zone);
     coeffsPGA = new Coefficients(PGA, COEFFS, zone);
   }
@@ -191,6 +170,11 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
   @Override
   public final LogicTree<GroundMotion> calc(GmmInput in) {
 
+    if (coeffs.imt == PGV) {
+      GroundMotion pgv = UsgsPgvSupport.calcAB20Pgv(subtype, in);
+      return GroundMotions.createTree(pgv.mean(), pgv.sigma());
+    }
+
     double pgaRock = 0.0;
     if (in.vs30 < coeffs.vlin) {
       pgaRock = exp(calcMean(coeffsPGA, slab(), basin(), adjust(), 0.0,
@@ -222,56 +206,41 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
       double vs30,
       double z2p5) {
 
-    /* Finite fault term (Eq. 3.2): ln(Rrup + Hff) */
+    /* Eq. 3.2 - Finite fault term */
     double lnRrupHff = log(rRup + C4 * exp((Mw - 6.0) * c.a9));
 
-    /* Magnitude scaling */
-    /* Eq. 3.4 */
+    /* Eq. 3.3, 3.4 - Magnitude scaling */
     double C1 = (slab ? c.c1s : c.c1i);
-    /* Eq. 3.3 */
     double c13m = c.a13 * (10 - Mw) * (10 - Mw);
     double c4s = c.a4 + (slab ? c.a45 : 0.0);
-    // Norm uses Mw < c1, paper uses Mw <= c1
     double fMag = (Mw <= C1 ? c4s : c.a5) * (Mw - C1) + c13m;
 
-    /* Additional slab scaling */
-    /* Eq. 3.5, errata 2021/7/12 */
+    /* Eq. 3.5, errata 2021/7/12 - Additional slab scaling */
     double fSlab = 0.0;
     if (slab) {
-      double Δc1s = C1S - c.c1s; // C1S - (c.c1s
       fSlab = c.a10 + (c.a4 + c.a45) * (c.c1s - C1S) + c.a14 * lnRrupHff;
     }
 
-    /* Depth scaling: slab only */
-    /* Eq. 3.6 */
+    /* Eq. 3.6 - Depth scaling: slab only */
     double fDepth = 0.0;
     if (slab) {
-      // norm uses zTor < 50 and zTor < 200, paper uses zTor <= 50 and zTor >=
-      // 50, this should not matter
       double ΔzTor = (zTor <= 200.0) ? (zTor - 50.0) : 150.0;
       fDepth += ((zTor <= 50.0) ? c.a8 : c.a11) * ΔzTor;
     }
 
-    /* Site-response scaling */
-    /* Eq. 3.8 */
+    /* Eq. 3.7, 3.8 - Site-response scaling */
     double vsS = getVsStar(vs30);
-    /* Eq. 3.7 */
     double fSite = c.a12 * log(vsS / c.vlin);
-    if (vsS < c.vlin) { // whether or not to use pgaRock
+    if (vsS < c.vlin) {
       fSite += -c.b * log(pgaRock + C) + c.b * log(pgaRock + C * pow((vsS / c.vlin), N));
     } else {
-      /* pgaRock loop, vs=1000 > vlinPGA=865 */
       fSite += c.b * N * log(vsS / c.vlin);
     }
 
-    /* Basin-depth scaling */
-    // TODO check ge geq comparison operators; this is Cascadia model
+    /* Eq. 2.1 - Basin-depth scaling */
     double fBasin = 0.0;
     if (basin && !Double.isNaN(z2p5)) {
       double z2p5m = z2p5 * 1000.0;
-      /* Eq. 2.1 - this is lnZ2p5ref, paper uses all gt/lt, no ge/le */
-      // Recommend using vs30 >= 570, otherwise the value for vs30 = 570
-      // is 7.5983 (for vs30 = 569, value = 7.5999)
       /*
        * Note: PEER report (and xlsx) uses factor rounded to 0.88, fortran code
        * uses the calculated value. Using 0.878 would improve the match of
@@ -283,12 +252,8 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
               ? 8.52 - 0.88 * log(vs30 / 200.0)
               : 8.52;
 
-      // TODO commented out is PEER report but ln(z')>1 is odd
-      // double zPrime = log((z2p5m + 50.0) / (exp(lnZ2p5ref) + 50.0));
-      // fBasin = (zPrime > 1) ? c.a39 * zPrime : 0.0;
-      /* Eq. 3.9 */
+      /* Eq. 3.9, 3.11 - Cascadia basin scaling (Errata 2021/7/12) */
       double zPrime = (z2p5m + 50.0) / (exp(lnZ2p5ref) + 50.0);
-      /* Eq. 3.11 - Cascadia basin scaling (Errata 2021/7/12) */
       fBasin = (log(zPrime) > 0) ? c.a39 * log(zPrime) : 0.0;
     }
 
@@ -327,14 +292,9 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     /* Add nonlinear effects. */
     if (vsS < c.vlin) {
 
-      // TODO eq. 5.9 is vs30 <= c.vlin, but this is inconsistent with
-      // fSite vs30 < c.vlin for nonlinear behavior
-
       /* φamp^2 = 0.3 * 0.3 = 0.09 */
       double φbSq = φSq - 0.09;
 
-      // System.out.println(φbSq);
-
       double φlinSqPga = φlinSq(cPga.d1, cPga.d2, rRup);
       double φbSqPga = φlinSqPga - 0.09;
 
@@ -346,9 +306,6 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
 
       /* Ï„linPga = Ï„lin = D0 */
       τSq += dSiteSq * τSq + 2 * dSite * τSq * c.ρB;
-
-      // System.out.println(φSq);
-      // System.out.println(Ï„Sq);
     }
 
     return sqrt(τSq + φSq);
@@ -370,8 +327,8 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     static final SubductionZone ZONE = GLOBAL;
     static final String NAME = AbrahamsonGulerce_2020.NAME + " : " + ZONE;
 
-    Global(Imt imt) {
-      super(imt, ZONE);
+    Global(Imt imt, Gmm subtype) {
+      super(imt, subtype, ZONE);
     }
 
     @Override
@@ -394,8 +351,8 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     static final SubductionZone ZONE = CASCADIA;
     static final String NAME = AbrahamsonGulerce_2020.NAME + " : " + ZONE;
 
-    Cascadia(Imt imt) {
-      super(imt, ZONE);
+    Cascadia(Imt imt, Gmm subtype) {
+      super(imt, subtype, ZONE);
     }
 
     @Override
@@ -418,8 +375,8 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     static final SubductionZone ZONE = ALASKA;
     static final String NAME = AbrahamsonGulerce_2020.NAME + " : " + ZONE;
 
-    Alaska(Imt imt) {
-      super(imt, ZONE);
+    Alaska(Imt imt, Gmm subtype) {
+      super(imt, subtype, ZONE);
     }
 
     @Override
@@ -442,7 +399,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     static final String NAME = Global.NAME + " : " + INTERFACE;
 
     GlobalInterface(Imt imt) {
-      super(imt);
+      super(imt, Gmm.AG_20_GLOBAL_INTERFACE);
     }
   }
 
@@ -450,7 +407,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     static final String NAME = Global.NAME + " : " + SLAB;
 
     GlobalSlab(Imt imt) {
-      super(imt);
+      super(imt, Gmm.AG_20_GLOBAL_SLAB);
     }
 
     @Override
@@ -460,18 +417,26 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
   }
 
   static class CascadiaAdjustedInterface extends Cascadia {
-    static final String NAME = Cascadia.NAME + " (adj) " + " : " + INTERFACE;
+    static final String NAME = Cascadia.NAME + " (adj) : " + INTERFACE;
 
     CascadiaAdjustedInterface(Imt imt) {
-      super(imt);
+      this(imt, Gmm.AG_20_CASCADIA_ADJ_INTERFACE);
+    }
+
+    CascadiaAdjustedInterface(Imt imt, Gmm subtype) {
+      super(imt, subtype);
     }
   }
 
   static class CascadiaAdjustedSlab extends Cascadia {
-    static final String NAME = Cascadia.NAME + " (adj) " + " : " + SLAB;
+    static final String NAME = Cascadia.NAME + " (adj) : " + SLAB;
 
     CascadiaAdjustedSlab(Imt imt) {
-      super(imt);
+      this(imt, Gmm.AG_20_CASCADIA_ADJ_SLAB);
+    }
+
+    CascadiaAdjustedSlab(Imt imt, Gmm subtype) {
+      super(imt, subtype);
     }
 
     @Override
@@ -484,7 +449,11 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     static final String NAME = Cascadia.NAME + " : " + INTERFACE;
 
     CascadiaInterface(Imt imt) {
-      super(imt);
+      this(imt, Gmm.AG_20_CASCADIA_INTERFACE);
+    }
+
+    CascadiaInterface(Imt imt, Gmm subtype) {
+      super(imt, subtype);
     }
 
     @Override
@@ -497,7 +466,11 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     static final String NAME = Cascadia.NAME + " : " + SLAB;
 
     CascadiaSlab(Imt imt) {
-      super(imt);
+      this(imt, Gmm.AG_20_CASCADIA_SLAB);
+    }
+
+    CascadiaSlab(Imt imt, Gmm subtype) {
+      super(imt, subtype);
     }
 
     @Override
@@ -515,7 +488,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     static final String NAME = CascadiaAdjustedInterface.NAME + " (basin)";
 
     CascadiaAdjustedInterfaceBasin(Imt imt) {
-      super(imt);
+      super(imt, Gmm.AG_20_CASCADIA_ADJ_INTERFACE_BASIN);
     }
 
     @Override
@@ -528,7 +501,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     static final String NAME = CascadiaAdjustedSlab.NAME + " (basin)";
 
     CascadiaAdjustedSlabBasin(Imt imt) {
-      super(imt);
+      super(imt, Gmm.AG_20_CASCADIA_ADJ_SLAB_BASIN);
     }
 
     @Override
@@ -541,7 +514,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     static final String NAME = CascadiaInterface.NAME + " (basin)";
 
     CascadiaInterfaceBasin(Imt imt) {
-      super(imt);
+      super(imt, Gmm.AG_20_CASCADIA_INTERFACE_BASIN);
     }
 
     @Override
@@ -554,7 +527,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     static final String NAME = CascadiaSlab.NAME + " (basin)";
 
     CascadiaSlabBasin(Imt imt) {
-      super(imt);
+      super(imt, Gmm.AG_20_CASCADIA_SLAB_BASIN);
     }
 
     @Override
@@ -569,18 +542,18 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
   }
 
   static final class AlaskaAdjustedInterface extends Alaska {
-    static final String NAME = Alaska.NAME + " (adj) " + " : " + INTERFACE;
+    static final String NAME = Alaska.NAME + " (adj) : " + INTERFACE;
 
     AlaskaAdjustedInterface(Imt imt) {
-      super(imt);
+      super(imt, Gmm.AG_20_ALASKA_ADJ_INTERFACE);
     }
   }
 
   static final class AlaskaAdjustedSlab extends Alaska {
-    static final String NAME = Alaska.NAME + " (adj) " + " : " + SLAB;
+    static final String NAME = Alaska.NAME + " (adj) : " + SLAB;
 
     AlaskaAdjustedSlab(Imt imt) {
-      super(imt);
+      super(imt, Gmm.AG_20_ALASKA_ADJ_SLAB);
     }
 
     @Override
@@ -593,7 +566,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     static final String NAME = Alaska.NAME + " : " + INTERFACE;
 
     AlaskaInterface(Imt imt) {
-      super(imt);
+      super(imt, Gmm.AG_20_ALASKA_INTERFACE);
     }
 
     @Override
@@ -606,7 +579,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     static final String NAME = Alaska.NAME + " : " + SLAB;
 
     AlaskaSlab(Imt imt) {
-      super(imt);
+      super(imt, Gmm.AG_20_ALASKA_SLAB);
     }
 
     @Override
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/Gmm.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/Gmm.java
index 022aa2a2..b0e95f8c 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/Gmm.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/Gmm.java
@@ -328,98 +328,98 @@ public enum Gmm {
       AbrahamsonGulerce_2020.GlobalInterface.class,
       AbrahamsonGulerce_2020.GlobalInterface.NAME,
       AbrahamsonGulerce_2020.COEFFS,
-      AbrahamsonGulerce_2020.CONSTRAINTS),
+      AbrahamsonGulerce_2020.CONSTRAINTS_INTERFACE),
 
   /** @see AbrahamsonGulerce_2020 */
   AG_20_GLOBAL_SLAB(
       AbrahamsonGulerce_2020.GlobalSlab.class,
       AbrahamsonGulerce_2020.GlobalSlab.NAME,
       AbrahamsonGulerce_2020.COEFFS,
-      AbrahamsonGulerce_2020.CONSTRAINTS),
+      AbrahamsonGulerce_2020.CONSTRAINTS_SLAB),
 
   /** @see AbrahamsonGulerce_2020 */
   AG_20_CASCADIA_INTERFACE(
       AbrahamsonGulerce_2020.CascadiaInterface.class,
       AbrahamsonGulerce_2020.CascadiaInterface.NAME,
       AbrahamsonGulerce_2020.COEFFS,
-      AbrahamsonGulerce_2020.CONSTRAINTS),
+      AbrahamsonGulerce_2020.CONSTRAINTS_INTERFACE),
 
   /** @see AbrahamsonGulerce_2020 */
   AG_20_CASCADIA_SLAB(
       AbrahamsonGulerce_2020.CascadiaSlab.class,
       AbrahamsonGulerce_2020.CascadiaSlab.NAME,
       AbrahamsonGulerce_2020.COEFFS,
-      AbrahamsonGulerce_2020.CONSTRAINTS),
+      AbrahamsonGulerce_2020.CONSTRAINTS_SLAB),
 
   /** @see AbrahamsonGulerce_2020 */
   AG_20_CASCADIA_ADJ_INTERFACE(
       AbrahamsonGulerce_2020.CascadiaAdjustedInterface.class,
       AbrahamsonGulerce_2020.CascadiaAdjustedInterface.NAME,
       AbrahamsonGulerce_2020.COEFFS,
-      AbrahamsonGulerce_2020.CONSTRAINTS),
+      AbrahamsonGulerce_2020.CONSTRAINTS_INTERFACE),
 
   /** @see AbrahamsonGulerce_2020 */
   AG_20_CASCADIA_ADJ_SLAB(
       AbrahamsonGulerce_2020.CascadiaAdjustedSlab.class,
       AbrahamsonGulerce_2020.CascadiaAdjustedSlab.NAME,
       AbrahamsonGulerce_2020.COEFFS,
-      AbrahamsonGulerce_2020.CONSTRAINTS),
+      AbrahamsonGulerce_2020.CONSTRAINTS_SLAB),
 
   /** @see AbrahamsonGulerce_2020 */
   AG_20_CASCADIA_INTERFACE_BASIN(
       AbrahamsonGulerce_2020.CascadiaInterfaceBasin.class,
       AbrahamsonGulerce_2020.CascadiaInterfaceBasin.NAME,
       AbrahamsonGulerce_2020.COEFFS,
-      AbrahamsonGulerce_2020.CONSTRAINTS),
+      AbrahamsonGulerce_2020.CONSTRAINTS_INTERFACE),
 
   /** @see AbrahamsonGulerce_2020 */
   AG_20_CASCADIA_SLAB_BASIN(
       AbrahamsonGulerce_2020.CascadiaSlabBasin.class,
       AbrahamsonGulerce_2020.CascadiaSlabBasin.NAME,
       AbrahamsonGulerce_2020.COEFFS,
-      AbrahamsonGulerce_2020.CONSTRAINTS),
+      AbrahamsonGulerce_2020.CONSTRAINTS_SLAB),
 
   /** @see AbrahamsonGulerce_2020 */
   AG_20_CASCADIA_ADJ_INTERFACE_BASIN(
       AbrahamsonGulerce_2020.CascadiaAdjustedInterfaceBasin.class,
       AbrahamsonGulerce_2020.CascadiaAdjustedInterfaceBasin.NAME,
       AbrahamsonGulerce_2020.COEFFS,
-      AbrahamsonGulerce_2020.CONSTRAINTS),
+      AbrahamsonGulerce_2020.CONSTRAINTS_INTERFACE),
 
   /** @see AbrahamsonGulerce_2020 */
   AG_20_CASCADIA_ADJ_SLAB_BASIN(
       AbrahamsonGulerce_2020.CascadiaAdjustedSlabBasin.class,
       AbrahamsonGulerce_2020.CascadiaAdjustedSlabBasin.NAME,
       AbrahamsonGulerce_2020.COEFFS,
-      AbrahamsonGulerce_2020.CONSTRAINTS),
+      AbrahamsonGulerce_2020.CONSTRAINTS_SLAB),
 
   /** @see AbrahamsonGulerce_2020 */
   AG_20_ALASKA_INTERFACE(
       AbrahamsonGulerce_2020.AlaskaInterface.class,
       AbrahamsonGulerce_2020.AlaskaInterface.NAME,
       AbrahamsonGulerce_2020.COEFFS,
-      AbrahamsonGulerce_2020.CONSTRAINTS),
+      AbrahamsonGulerce_2020.CONSTRAINTS_INTERFACE),
 
   /** @see AbrahamsonGulerce_2020 */
   AG_20_ALASKA_SLAB(
       AbrahamsonGulerce_2020.AlaskaSlab.class,
       AbrahamsonGulerce_2020.AlaskaSlab.NAME,
       AbrahamsonGulerce_2020.COEFFS,
-      AbrahamsonGulerce_2020.CONSTRAINTS),
+      AbrahamsonGulerce_2020.CONSTRAINTS_SLAB),
 
   /** @see AbrahamsonGulerce_2020 */
   AG_20_ALASKA_ADJ_INTERFACE(
       AbrahamsonGulerce_2020.AlaskaAdjustedInterface.class,
       AbrahamsonGulerce_2020.AlaskaAdjustedInterface.NAME,
       AbrahamsonGulerce_2020.COEFFS,
-      AbrahamsonGulerce_2020.CONSTRAINTS),
+      AbrahamsonGulerce_2020.CONSTRAINTS_INTERFACE),
 
   /** @see AbrahamsonGulerce_2020 */
   AG_20_ALASKA_ADJ_SLAB(
       AbrahamsonGulerce_2020.AlaskaAdjustedSlab.class,
       AbrahamsonGulerce_2020.AlaskaAdjustedSlab.NAME,
       AbrahamsonGulerce_2020.COEFFS,
-      AbrahamsonGulerce_2020.CONSTRAINTS),
+      AbrahamsonGulerce_2020.CONSTRAINTS_SLAB),
 
   /** @see ParkerEtAl_2020 */
   PSBAH_20_GLOBAL_INTERFACE(
-- 
GitLab