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