From e0038e4668ef13e6db3c3f62563a1b6de9935636 Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Fri, 4 Feb 2022 09:51:30 -0700 Subject: [PATCH] damping scale change; config vs30s --- .../usgs/earthquake/nshmp/calc/CalcConfig.java | 17 +++++++++++++++++ .../nshmp/gmm/RezaeianDamping_2014.java | 8 ++++---- .../resources/calc/calc-config-defaults.json | 4 +++- .../earthquake/nshmp/calc/CalcConfigTests.java | 8 +++++--- .../resources/calc/calc-config-extends.json | 3 ++- 5 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/calc/CalcConfig.java b/src/main/java/gov/usgs/earthquake/nshmp/calc/CalcConfig.java index 90260a12..78b49a29 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/calc/CalcConfig.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/calc/CalcConfig.java @@ -197,6 +197,16 @@ public final class CalcConfig { */ public final Set<SourceType> sourceTypes; + /** + * The set of Vs30s (average shear-wave velocity down to 30 meters depth) + * for which calculations should be performed. If empty or {@code null} in a + * config file, then Vs30 will be derived from a users site file or the + * {@link SiteDefaults#vs30} value. + * + * <p><b>Default:</b> [] + */ + public final Set<Double> vs30s; + /** * Viscous damping ratio. The default value is consistent with that used in * {@link GroundMotionModel} most (GMM) development. Values other than 5% @@ -241,6 +251,7 @@ public final class CalcConfig { this.imts = b.imts; this.tectonicSettings = b.tectonicSettings; this.sourceTypes = b.sourceTypes; + this.vs30s = b.vs30s; this.gmmDampingRatio = b.gmmDampingRatio; this.gmmDampingSigma = b.gmmDampingSigma; this.valueFormat = b.valueFormat; @@ -282,6 +293,7 @@ public final class CalcConfig { Set<Imt> imts; Set<TectonicSetting> tectonicSettings; Set<SourceType> sourceTypes; + Set<Double> vs30s; Double gmmDampingRatio; Boolean gmmDampingSigma; ValueFormat valueFormat; @@ -296,6 +308,7 @@ public final class CalcConfig { checkNotNull(imts); checkNotNull(tectonicSettings); checkNotNull(sourceTypes); + checkNotNull(vs30s); checkNotNull(gmmDampingRatio); checkInRange( RezaeianDamping_2014.DAMPING_RATIO_RANGE, @@ -313,6 +326,7 @@ public final class CalcConfig { this.imts = that.imts; this.tectonicSettings = that.tectonicSettings; this.sourceTypes = that.sourceTypes; + this.vs30s = that.vs30s; this.gmmDampingRatio = that.gmmDampingRatio; this.gmmDampingSigma = that.gmmDampingSigma; this.valueFormat = that.valueFormat; @@ -335,6 +349,9 @@ public final class CalcConfig { if (that.sourceTypes != null) { this.sourceTypes = that.sourceTypes; } + if (that.vs30s != null) { + this.vs30s = that.vs30s; + } if (that.gmmDampingSigma != null) { this.gmmDampingSigma = that.gmmDampingSigma; } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/RezaeianDamping_2014.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/RezaeianDamping_2014.java index bc12518c..212c4dfe 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/RezaeianDamping_2014.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/RezaeianDamping_2014.java @@ -82,11 +82,11 @@ public class RezaeianDamping_2014 { } /** - * The range of damping ratios supported by this model: {@code [0.5..30.0]}. + * The range of damping ratios supported by this model: {@code [0.05..0.3]}. */ public static final Range<Double> DAMPING_RATIO_RANGE = Range.closed( - CORR_COEFF_DSFS.get(0), - CORR_COEFF_DSFS.get(CORR_COEFF_DSFS.size() - 1)); + 0.005, // CORR_COEFF_DSFS.get(0), + 0.3); // CORR_COEFF_DSFS.get(CORR_COEFF_DSFS.size() - 1)); /** * The GMMs supported by this model. Currently the Rezaien et al. (2014) model @@ -144,7 +144,7 @@ public class RezaeianDamping_2014 { private final boolean updateSigma; RezaeianDamping_2014(CalcConfig config) { - dampingRatio = config.hazard.gmmDampingRatio; + dampingRatio = config.hazard.gmmDampingRatio * 100.0; updateSigma = config.hazard.gmmDampingSigma; } diff --git a/src/main/resources/calc/calc-config-defaults.json b/src/main/resources/calc/calc-config-defaults.json index 3e729803..61385f53 100644 --- a/src/main/resources/calc/calc-config-defaults.json +++ b/src/main/resources/calc/calc-config-defaults.json @@ -11,8 +11,10 @@ ], "tectonicSettings": [], "sourceTypes": [], - "gmmDampingRatio": 5.0, + "vs30s": [], + "gmmDampingRatio": 0.05, "gmmDampingSigma": false, + "gmmSigmaReduction": 0.15, "valueFormat": "ANNUAL_RATE", "customImls": {} }, diff --git a/src/test/java/gov/usgs/earthquake/nshmp/calc/CalcConfigTests.java b/src/test/java/gov/usgs/earthquake/nshmp/calc/CalcConfigTests.java index 079bab5e..72c5e5c0 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/calc/CalcConfigTests.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/calc/CalcConfigTests.java @@ -127,7 +127,7 @@ class CalcConfigTests { assertEquals(IMTS, def.imts); assertEquals(EnumSet.noneOf(TectonicSetting.class), def.tectonicSettings); assertEquals(EnumSet.noneOf(SourceType.class), def.tectonicSettings); - assertEquals(5.0, def.gmmDampingRatio); + assertEquals(0.05, def.gmmDampingRatio); assertEquals(false, def.gmmDampingSigma); assertEquals(ValueFormat.ANNUAL_RATE, def.valueFormat); @@ -248,7 +248,8 @@ class CalcConfigTests { assertEquals(IMTS_EXTENDS, def.imts); assertEquals(EnumSet.of(ACTIVE_CRUST, SUBDUCTION), def.tectonicSettings); assertEquals(EnumSet.of(FAULT, ZONE, SLAB), def.sourceTypes); - assertEquals(3.0, def.gmmDampingRatio); + assertEquals(Set.of(260.0, 760.0), def.vs30s); + assertEquals(0.03, def.gmmDampingRatio); assertEquals(true, def.gmmDampingSigma); assertEquals(ValueFormat.POISSON_PROBABILITY, def.valueFormat); @@ -262,7 +263,8 @@ class CalcConfigTests { assertEquals(IMTS, def.imts); assertEquals(EnumSet.noneOf(TectonicSetting.class), def.tectonicSettings); assertEquals(EnumSet.noneOf(SourceType.class), def.tectonicSettings); - assertEquals(5.0, def.gmmDampingRatio); + assertEquals(Set.of(), def.vs30s); + assertEquals(0.05, def.gmmDampingRatio); assertEquals(false, def.gmmDampingSigma); assertEquals(ValueFormat.ANNUAL_RATE, def.valueFormat); } diff --git a/src/test/resources/calc/calc-config-extends.json b/src/test/resources/calc/calc-config-extends.json index af22fd3d..f0c4be1d 100644 --- a/src/test/resources/calc/calc-config-extends.json +++ b/src/test/resources/calc/calc-config-extends.json @@ -7,7 +7,8 @@ ], "tectonicSettings": [ "ACTIVE_CRUST", "SUBDUCTION" ], "sourceTypes": [ "FAULT", "ZONE", "SLAB" ], - "gmmDampingRatio": 3.0, + "vs30s": [ 260, 760 ], + "gmmDampingRatio": 0.03, "gmmDampingSigma": true, "valueFormat": "POISSON_PROBABILITY", "customImls": { -- GitLab