From b134d367cfa9a5da5dbb36fe88547ea04b0ac066 Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Wed, 8 Nov 2023 15:28:57 -0700 Subject: [PATCH] added ak specific cb03 --- .../nshmp/gmm/CampbellBozorgnia_2003.java | 54 ++++++++++++++++++- .../gov/usgs/earthquake/nshmp/gmm/Gmm.java | 7 +++ 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/CampbellBozorgnia_2003.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/CampbellBozorgnia_2003.java index b9eb05a6..52ac7268 100755 --- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/CampbellBozorgnia_2003.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/CampbellBozorgnia_2003.java @@ -136,7 +136,7 @@ public class CampbellBozorgnia_2003 implements GroundMotionModel { return GroundMotions.createTree(μ, σ); } - private final double calcMean( + double calcMean( Coefficients c, GmmInput in) { @@ -173,4 +173,56 @@ public class CampbellBozorgnia_2003 implements GroundMotionModel { return c16 - ((Mw < 7.4) ? 0.07 * Mw : 0.518); } + /** + * Custom version of Campbell & Bozorgnia (2003) designed to match the + * fortran hazFX version used with the Alaska 2007 NSHM. All crustal faults in + * the AK NSHM are strike slip so we don't need to worry about style of + * faulting and hanging wall terms. Also removes dependence on BJF97 for site + * scaling. + */ + public class Alaska extends CampbellBozorgnia_2003 { + static final String NAME = CampbellBozorgnia_2003.NAME + " : Alaska"; + + Alaska(Imt imt) { + super(imt); + } + + @Override + final double calcMean( + Coefficients c, + GmmInput in) { + + double Mw = in.Mw; + + // magnitude scaling + double mTerm = (8.5 - Mw) * (8.5 - Mw); + double f1 = c.c2 * Mw + c.c3 * mTerm; + + // distance scaling - per verbal communication with Ken Campbell it + // is ok to approximate rSeis by constraining rRup to be >= 3.0 km. + // (see also Campbell 1997) + double rSeis = max(in.rRup, 3.0); + double rTerm = gS * exp(c.c8 * Mw + c.c9 * mTerm); + double f2 = rSeis * rSeis + rTerm * rTerm; + + // focal mechanism + // FaultStyle style = GmmUtils.rakeToFaultStyle_NSHMP(in.rake); + // double f3 = (style == REVERSE) ? revStyleTerm : (style == UNKNOWN) ? + // unkStyleTerm : 0.0; + + // far-source effect of local site conditions + // (pre-calculated) + + // // hanging-wall effect + // double HW = (in.rJB < 5.0 && in.dip <= 70.0) ? (5.0 - in.rJB) / 5.0 : + // 0.0; + // double hwM = (Mw > 6.5) ? 1.0 : (Mw >= 5.5) ? Mw - 5.5 : 0.0; + // double hwR = (rSeis < 8.0) ? c.c15 * (rSeis / 8.0) : c.c15; + // double f5 = HW * f3 * hwM * hwR; + + // return c.c1 + f1 + c.c4 * log(sqrt(f2)) + f3 + f4 + f5; + return c.c1 + f1 + c.c4 * log(sqrt(f2)) + c.c14; + } + + } } 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 57c0f7c1..5f65c4f0 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/Gmm.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/Gmm.java @@ -286,6 +286,13 @@ public enum Gmm { CampbellBozorgnia_2003.COEFFS, CampbellBozorgnia_2003.CONSTRAINTS), + /** @see CampbellBozorgnia_2003 */ + CB_03_ALASKA( + CampbellBozorgnia_2003.Alaska.class, + CampbellBozorgnia_2003.Alaska.NAME, + CampbellBozorgnia_2003.COEFFS, + CampbellBozorgnia_2003.CONSTRAINTS), + /** @see MunsonThurber_1997 */ MT_97( MunsonThurber_1997.class, -- GitLab