diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/AbrahamsonEtAl_2014.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/AbrahamsonEtAl_2014.java index bab0c00bbb64e8a32118da9885e71ff967b8478b..0bc376f05abd3a748cf37c431adfb69a424e9121 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/AbrahamsonEtAl_2014.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/AbrahamsonEtAl_2014.java @@ -56,6 +56,7 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree; * @see Gmm#ASK_14_BASIN * @see Gmm#ASK_14_CYBERSHAKE * @see Gmm#ASK_14_VS30_MEASURED + * @see Gmm#ASK_14_PRVI */ public class AbrahamsonEtAl_2014 implements GroundMotionModel { @@ -72,8 +73,13 @@ public class AbrahamsonEtAl_2014 implements GroundMotionModel { .set(Z1P0, Range.closed(0.0, 3.0)) .build(); - static final CoefficientContainer COEFFS = new CoefficientContainer("ASK14.csv"); - static final CoefficientContainer COEFFS_PRVI = new CoefficientContainer("ASK14_PRVI.csv"); + static final CoefficientContainer COEFFS; + static final CoefficientContainer COEFFS_PRVI; + + static { + COEFFS = new CoefficientContainer("ASK14.csv"); + COEFFS_PRVI = new CoefficientContainer("ASK14_PRVI.csv"); + } private static final double A3 = 0.275; private static final double A4 = -0.1; @@ -120,11 +126,11 @@ public class AbrahamsonEtAl_2014 implements GroundMotionModel { this.imt = imt; Map<String, Double> coeffs = COEFFS.get(imt); - a1 = coeffs.get("a1"); + a1 = (prvi ? COEFFS_PRVI.get(imt) : coeffs).get("a1"); a2 = coeffs.get("a2"); a6 = coeffs.get("a6"); a8 = coeffs.get("a8"); - a10 = coeffs.get("a10"); + a10 = (prvi ? COEFFS_PRVI.get(imt) : coeffs).get("a10"); a12 = coeffs.get("a12"); a13 = coeffs.get("a13"); a15 = coeffs.get("a15"); @@ -463,6 +469,8 @@ public class AbrahamsonEtAl_2014 implements GroundMotionModel { } static final class Prvi extends AbrahamsonEtAl_2014 { + static final String NAME = AbrahamsonEtAl_2014.NAME + " : PRVI"; + Prvi(Imt imt) { super(imt, true); } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/BooreEtAl_2014.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/BooreEtAl_2014.java index a5d695a6e5bdbaa91e871f2b97d3ccaeb9b61f07..05ff3b74b3df1fd7fc22663ccfb0b171c8175efb 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/BooreEtAl_2014.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/BooreEtAl_2014.java @@ -52,6 +52,7 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree; * @see Gmm#BSSA_14 * @see Gmm#BSSA_14_BASIN * @see Gmm#BSSA_14_CYBERSHAKE + * @see Gmm#BSSA_14_PRVI */ public class BooreEtAl_2014 implements GroundMotionModel { @@ -66,8 +67,13 @@ public class BooreEtAl_2014 implements GroundMotionModel { .set(Z1P0, Range.closed(0.0, 3.0)) .build(); - static final CoefficientContainer COEFFS = new CoefficientContainer("BSSA14.csv"); - static final CoefficientContainer COEFFS_PRVI = new CoefficientContainer("BSSA14_PRVI.csv"); + static final CoefficientContainer COEFFS; + static final CoefficientContainer COEFFS_PRVI; + + static { + COEFFS = new CoefficientContainer("BSSA14.csv"); + COEFFS_PRVI = new CoefficientContainer("BSSA14_PRVI.csv"); + } private static final double A = pow(570.94, 4); private static final double B = pow(1360, 4) + A; @@ -100,10 +106,10 @@ public class BooreEtAl_2014 implements GroundMotionModel { this.imt = imt; Map<String, Double> coeffs = COEFFS.get(imt); - e0 = coeffs.get("e0"); - e1 = coeffs.get("e1"); - e2 = coeffs.get("e2"); - e3 = coeffs.get("e3"); + e0 = (prvi ? COEFFS_PRVI.get(imt) : coeffs).get("e0"); + e1 = (prvi ? COEFFS_PRVI.get(imt) : coeffs).get("e1"); + e2 = (prvi ? COEFFS_PRVI.get(imt) : coeffs).get("e2"); + e3 = (prvi ? COEFFS_PRVI.get(imt) : coeffs).get("e3"); e4 = coeffs.get("e4"); e5 = coeffs.get("e5"); e6 = coeffs.get("e6"); @@ -112,7 +118,7 @@ public class BooreEtAl_2014 implements GroundMotionModel { c2 = coeffs.get("c2"); c3 = coeffs.get("c3"); h = coeffs.get("h"); - c = coeffs.get("c"); + c = (prvi ? COEFFS_PRVI.get(imt) : coeffs).get("c"); Vc = coeffs.get("Vc"); f4 = coeffs.get("f4"); f5 = coeffs.get("f5"); @@ -347,6 +353,8 @@ public class BooreEtAl_2014 implements GroundMotionModel { } static final class Prvi extends BooreEtAl_2014 { + static final String NAME = BooreEtAl_2014.NAME + " : PRVI"; + Prvi(Imt imt) { super(imt, true); } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/CampbellBozorgnia_2014.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/CampbellBozorgnia_2014.java index f439051126e021f55c6eb8bae3488c21f737c8ef..be95165a5ff94d4e1ff4942e1bf778db826df89b 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/CampbellBozorgnia_2014.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/CampbellBozorgnia_2014.java @@ -62,21 +62,12 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree; * @see Gmm#CB_14 * @see Gmm#CB_14_BASIN * @see Gmm#CB_14_CYBERSHAKE + * @see Gmm#CB_14_PRVI */ public class CampbellBozorgnia_2014 implements GroundMotionModel { static final String NAME = "Campbell & Bozorgnia (2014)"; - static final CoefficientContainer COEFFS = new CoefficientContainer("CB14.csv"); - static final CoefficientContainer COEFFS_PRVI = new CoefficientContainer("CB14_PRVI.csv"); - - /* - * Developer notes: - * - * CB14 has rake dependent magnitude range restrictions - * - * Recommended dip range is actually 15-90° - */ static final Constraints CONSTRAINTS = Constraints.builder() .set(MW, Range.closed(3.3, 8.5)) .setDistances(300.0) @@ -89,6 +80,14 @@ public class CampbellBozorgnia_2014 implements GroundMotionModel { .set(Z2P5, Range.closed(0.0, 10.0)) .build(); + static final CoefficientContainer COEFFS; + static final CoefficientContainer COEFFS_PRVI; + + static { + COEFFS = new CoefficientContainer("CB14.csv"); + COEFFS_PRVI = new CoefficientContainer("CB14_PRVI.csv"); + } + private static final double H4 = 1.0; private static final double C = 1.88; private static final double N = 1.18; @@ -119,7 +118,7 @@ public class CampbellBozorgnia_2014 implements GroundMotionModel { this.imt = imt; Map<String, Double> coeffs = COEFFS.get(imt); - c0 = coeffs.get("c0"); + c0 = (prvi ? COEFFS_PRVI.get(imt) : coeffs).get("c0"); c1 = coeffs.get("c1"); c2 = coeffs.get("c2"); c3 = coeffs.get("c3"); @@ -129,7 +128,7 @@ public class CampbellBozorgnia_2014 implements GroundMotionModel { c7 = coeffs.get("c7"); c9 = coeffs.get("c9"); c10 = coeffs.get("c10"); - c11 = coeffs.get("c11"); + c11 = (prvi ? COEFFS_PRVI.get(imt) : coeffs).get("c11"); c14 = coeffs.get("c14"); c16 = coeffs.get("c16"); c17 = coeffs.get("c17"); @@ -498,6 +497,8 @@ public class CampbellBozorgnia_2014 implements GroundMotionModel { } static final class Prvi extends CampbellBozorgnia_2014 { + static final String NAME = CampbellBozorgnia_2014.NAME + " : PRVI"; + Prvi(Imt imt) { super(imt, true); } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/ChiouYoungs_2014.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/ChiouYoungs_2014.java index 49979383b2cd2d09f4bf0dd6b9aa4f0ed66a7f3a..5f24c526f216b00932c139dd3ffc46cf2e7c1f20 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/ChiouYoungs_2014.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/ChiouYoungs_2014.java @@ -61,12 +61,10 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree; * @see Gmm#CY_14_BASIN * @see Gmm#CY_14_CYBERSHAKE * @see Gmm#CY_14_VS30_MEASURED + * @see Gmm#CY_14_PRVI */ public class ChiouYoungs_2014 implements GroundMotionModel { - // this model includes 0.12 and 0.17s periods that - // are not generally supported in other models - static final String NAME = "Chiou & Youngs (2014)"; static final Constraints CONSTRAINTS = Constraints.builder() @@ -79,8 +77,13 @@ public class ChiouYoungs_2014 implements GroundMotionModel { .set(Z1P0, Range.closed(0.0, 3.0)) .build(); - static final CoefficientContainer COEFFS = new CoefficientContainer("CY14.csv"); - static final CoefficientContainer COEFFS_PRVI = new CoefficientContainer("CY14_PRVI.csv"); + static final CoefficientContainer COEFFS; + static final CoefficientContainer COEFFS_PRVI; + + static { + COEFFS = new CoefficientContainer("CY14.csv"); + COEFFS_PRVI = new CoefficientContainer("CY14_PRVI.csv"); + } private static final double C2 = 1.06; private static final double C4 = -2.1; @@ -117,7 +120,7 @@ public class ChiouYoungs_2014 implements GroundMotionModel { this.imt = imt; Map<String, Double> coeffs = COEFFS.get(imt); - c1 = coeffs.get("c1"); + c1 = (prvi ? COEFFS_PRVI.get(imt) : coeffs).get("c1"); c1a = coeffs.get("c1a"); c1b = coeffs.get("c1b"); c1c = coeffs.get("c1c"); @@ -137,7 +140,7 @@ public class ChiouYoungs_2014 implements GroundMotionModel { γ1 = coeffs.get("cgamma1"); γ2 = coeffs.get("cgamma2"); γ3 = coeffs.get("cgamma3"); - φ1 = coeffs.get("phi1"); + φ1 = (prvi ? COEFFS_PRVI.get(imt) : coeffs).get("phi1"); φ2 = coeffs.get("phi2"); φ3 = coeffs.get("phi3"); φ4 = coeffs.get("phi4"); @@ -394,6 +397,8 @@ public class ChiouYoungs_2014 implements GroundMotionModel { } static final class Prvi extends ChiouYoungs_2014 { + static final String NAME = ChiouYoungs_2014.NAME + " : PRVI"; + Prvi(Imt imt) { super(imt, true); }