From ab7923216b1c824c956d6dfa21650402b5b96a9a Mon Sep 17 00:00:00 2001
From: Jason Altekruse <jaltekruse@usgs.gov>
Date: Mon, 15 Apr 2024 15:26:27 -0600
Subject: [PATCH] add PGA bias correction coeff into CoefficientsAkBias as
 temporary improvement, this will break tests

---
 .../nshmp/gmm/AbrahamsonGulerce_2020.java        | 10 ++++++----
 .../earthquake/nshmp/gmm/KuehnEtAl_2020.java     | 16 +++++++++-------
 .../earthquake/nshmp/gmm/ParkerEtAl_2020.java    | 14 ++++++++------
 3 files changed, 23 insertions(+), 17 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 532b0f9f..63f7a88c 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
@@ -199,9 +199,11 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
    */
   private static final class CoefficientsAkBias {
     final double correction;
+    final double correctionPGA;
 
     CoefficientsAkBias(Imt imt, CoefficientContainer cc) {
       correction = cc.get(imt).get("bias_ak");
+      correctionPGA = cc.get(PGA).get("bias_ak");
     }
   }
 
@@ -253,11 +255,11 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     double pgaRock = 0.0;
     if (in.vs30 < coeffs.vlin) {
       pgaRock = exp(calcMean(
-          coeffsPGA, coeffAkBias, slab(), basin(), adjusted(), akBiasAdjusted(),
+          coeffsPGA, coeffAkBias.correctionPGA, slab(), basin(), adjusted(), akBiasAdjusted(),
           0.0, in.Mw, in.rRup, in.zTor, VS30_ROCK, in.z2p5));
     }
     double μ = calcMean(
-        coeffs, coeffAkBias, slab(), basin(), adjusted(), akBiasAdjusted(),
+        coeffs, coeffAkBias.correction, slab(), basin(), adjusted(), akBiasAdjusted(),
         pgaRock, in.Mw, in.rRup, in.zTor, in.vs30, in.z2p5);
 
     double σ = calcSigma(coeffs, coeffsPGA, pgaRock, in.rRup, in.vs30);
@@ -271,7 +273,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
 
   private static double calcMean(
       Coefficients c,
-      CoefficientsAkBias cAk,
+      double correctionAk,
       boolean slab,
       boolean basin,
       boolean adjust,
@@ -351,7 +353,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     }
 
     if (!slab && akBiasAdjusted) {
-      μ += cAk.correction;
+      μ += correctionAk;
     }
 
     return μ;
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/KuehnEtAl_2020.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/KuehnEtAl_2020.java
index 5d83083b..9c1fe65a 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/KuehnEtAl_2020.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/KuehnEtAl_2020.java
@@ -251,9 +251,11 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
    */
   private static final class CoefficientsAkBias {
     final double correction;
+    final double correctionPGA;
 
     CoefficientsAkBias(Imt imt, CoefficientContainer cc) {
       correction = cc.get(imt).get("bias_ak");
+      correctionPGA = cc.get(PGA).get("bias_ak");
     }
   }
 
@@ -304,17 +306,17 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
   public LogicTree<GroundMotion> calc(GmmInput in) {
 
     double pgaRef = exp(calcPgaRef(
-        coeffsPGA, coeffsAkBias, slab(), akBiasAdjusted(),
+        coeffsPGA, coeffsAkBias.correctionPGA, slab(), akBiasAdjusted(),
         in.Mw, in.rRup, in.zTor));
 
     double μ = calcMean(
-        coeffs, coeffsAkBias, slab(), basin(), seattle(), m9(), akBiasAdjusted(),
+        coeffs, coeffsAkBias.correction, slab(), basin(), seattle(), m9(), akBiasAdjusted(),
         in.Mw, in.rRup, in.zTor, in.vs30, in.z2p5, pgaRef);
 
     // short periods can't be lower than PGA
     if (coeffs.imt.isSA() && coeffs.imt.period() <= 0.1) {
       double μPga = calcMean(
-          coeffsPGA, coeffsAkBias, slab(), basin(), seattle(), m9(), akBiasAdjusted(),
+          coeffsPGA, coeffsAkBias.correctionPGA, slab(), basin(), seattle(), m9(), akBiasAdjusted(),
           in.Mw, in.rRup, in.zTor, in.vs30, in.z2p5, pgaRef);
       μ = max(μ, μPga);
     }
@@ -335,7 +337,7 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
 
   private static double calcPgaRef(
       Coefficients c,
-      CoefficientsAkBias cAk,
+      double correctionAk,
       boolean slab,
       boolean akBiasAdjusted,
       double Mw,
@@ -350,7 +352,7 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
     double μ = c.θ1 + fMag + fGeom + fDepth + fAtten + fSite;
 
     if (!slab && akBiasAdjusted) {
-      μ += cAk.correction;
+      μ += correctionAk;
     }
 
     return μ;
@@ -358,7 +360,7 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
 
   private static double calcMean(
       Coefficients c,
-      CoefficientsAkBias cAk,
+      double correctionAk,
       boolean slab,
       boolean basin,
       boolean seattle,
@@ -380,7 +382,7 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
     double μ = c.θ1 + fMag + fGeom + fDepth + fAtten + fSite + fBasin;
 
     if (!slab && akBiasAdjusted) {
-      μ += cAk.correction;
+      μ += correctionAk;
     }
 
     return μ;
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 c61cd0bf..7820fa08 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
@@ -251,9 +251,11 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
    */
   private static final class CoefficientsAkBias {
     final double correction;
+    final double correctionPGA;
 
     CoefficientsAkBias(Imt imt, CoefficientContainer cc) {
       correction = cc.get(imt).get("bias_ak");
+      correctionPGA = cc.get(PGA).get("bias_ak");
     }
   }
 
@@ -297,10 +299,10 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
   public final LogicTree<GroundMotion> calc(GmmInput in) {
 
     double pgaRef = exp(calcMean(
-        coeffsPGA, coeffAkBias, slab(), akBiasAdjusted(), in));
+        coeffsPGA, coeffAkBias.correctionPGA, slab(), akBiasAdjusted(), in));
 
     double μ = calcMean(
-        coeffs, coeffAkBias, slab(), basin(), m9(), akBiasAdjusted(), pgaRef, in);
+        coeffs, coeffAkBias.correction, slab(), basin(), m9(), akBiasAdjusted(), pgaRef, in);
 
     double Ï•Total = phiTotal(coeffs, in.rRup, in.vs30);
     double σ = Maths.hypot(coeffs.τ, ϕTotal);
@@ -316,7 +318,7 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
   /* Calc median at 760 reference condition */
   private static double calcMean(
       Coefficients c,
-      CoefficientsAkBias cAk,
+      double correctionAk,
       boolean slab,
       boolean akBiasAdjusted,
       GmmInput in) {
@@ -328,7 +330,7 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
     double μ = c.c0 + Fp + Fm + Fd;
 
     if (!slab && akBiasAdjusted) {
-      μ += cAk.correction;
+      μ += correctionAk;
     }
 
     return μ;
@@ -337,7 +339,7 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
   /* Equation 1 */
   private static double calcMean(
       Coefficients c,
-      CoefficientsAkBias cAk,
+      double correctionAk,
       boolean slab,
       boolean basin,
       boolean m9,
@@ -359,7 +361,7 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
     double μ = c.c0 + Fp + Fm + Fd + Fs;
 
     if (!slab && akBiasAdjusted) {
-      μ += cAk.correction;
+      μ += correctionAk;
     }
 
     return μ;
-- 
GitLab