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 f21baae823cff9967af8e250e936746ac0ce8314..d5c32c6e36b8a49a0422513580cc5c2e18e3c2ec 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/Gmm.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/Gmm.java @@ -53,6 +53,12 @@ public enum Gmm { * argument. */ + MA_03( + MotazedianAtkinson_2003.class, + MotazedianAtkinson_2003.NAME, + MotazedianAtkinson_2003.COEFFS, + MotazedianAtkinson_2003.CONSTRAINTS), + MA_05_BASE( MotazedianAtkinson_2005.class, MotazedianAtkinson_2005.NAME, @@ -401,6 +407,20 @@ public enum Gmm { SadighEtAl_1997.COEFFS_BC_HI, SadighEtAl_1997.CONSTRAINTS), + /** @see SadighEtAl_1997 */ + SADIGH_97_PRVI_INTERFACE( + SadighEtAl_1997.PrviInterface.class, + SadighEtAl_1997.PrviInterface.NAME, + SadighEtAl_1997.COEFFS_BC_HI, + SadighEtAl_1997.CONSTRAINTS), + + /* PRVI 2003 */ + SPUDICH_99_PRVI( + SpudichEtAl_1999_PRVI.class, + SpudichEtAl_1999_PRVI.NAME, + SpudichEtAl_1999_PRVI.COEFFS, + SpudichEtAl_1999_PRVI.CONSTRAINTS), + /* Subduction Interface and Slab WUS 2008 2014 2018, AK 2007 */ /** @see AtkinsonBoore_2003 */ @@ -1563,13 +1583,6 @@ public enum Gmm { UsgsPrviBackbone2025.COEFFS_SIGMA_SUBDUCTION, UsgsPrviBackbone2025.SlabTotal.CONSTRAINTS), - /* PRVI 2003 */ - SEA99_PRVI( - SpudichEtAl_1999_PRVI.class, - SpudichEtAl_1999_PRVI.NAME, - SpudichEtAl_1999_PRVI.COEFFS, - SpudichEtAl_1999_PRVI.CONSTRAINTS), - /* Combined: must be declared after any dependent models above. */ /** 2021 Hawaii weight-averaged GMM for deep earthquakes. */ diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/SadighEtAl_1997.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/SadighEtAl_1997.java index 2d62b5a66805b06e260c398c4c7be2c7951b82d5..dc94ce348847db70fe0665819c073582b84e5573 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/SadighEtAl_1997.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/SadighEtAl_1997.java @@ -254,4 +254,46 @@ public class SadighEtAl_1997 implements GroundMotionModel { } } + /* + * Custom version of model for use with the 2003 PRVI NSHM where the GMM logic + * tree changes from 50/50 YOUNGS_97_INTERFACE/SADIGH_97 to 100% + * YOUNGS_97_INTERFACE at 58km (out to 1000km). This variant returns ground + * motions for YOUNGS_97_INTERFACE when rRup > 58 km, obviating the need for a + * distance dependent GMM logic tree. + */ + static final class PrviInterface extends SadighEtAl_1997 { + + static final String NAME = SadighEtAl_1997.NAME + " : PRVI : Interface"; + + private final Geomatrix_1993.Interface delegate; + + PrviInterface(Imt imt) { + super(imt); + delegate = (Geomatrix_1993.Interface) GEOMATRIX_93_INTERFACE.instance(imt); + } + + @Override + public final LogicTree<GroundMotion> calc(GmmInput in) { + if (in.rRup > 58.0) { + return delegate.calc(in); + } + return super.calc(in); + } + + @Override + double calcRockMean( + Coefficients c, + double Mw, + double rRup, + FaultStyle style) { + + /* + * We know interface events have a reverse rake. The Sadigh GMM as + * published includes a scale factor for reverse events, but it is not + * applied in the PRVI 2003 NSHM on the megathrust so we subtract it here. + */ + return super.calcRockMean(c, Mw, rRup, style) - 0.18232; + } + } + }