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 214ac9b544d285b16f7320d54a7f0cbde2cf252b..51377f378382efc25b5e2633cf8b5e5ce6ad7f09 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/calc/CalcConfig.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/calc/CalcConfig.java @@ -203,6 +203,14 @@ public final class CalcConfig { */ public final Set<Double> vs30s; + /** + * Whether or not consider site-specific data that may accompany a model. + * Set to false to turn off deep basin scaling effects, for example. + * + * <p><b>Default:</b> true + */ + public final boolean useSiteData; + /** * Viscous damping ratio. The default value is consistent with that used in * {@link GroundMotionModel} most (GMM) development. Values other than 5% @@ -225,6 +233,8 @@ public final class CalcConfig { * Whether or not {@link GroundMotionModel} (GMM) sigmas are also modified * according to the Rezaeian et al. (2014) model when applying damping * scaling factors (DSF). + * + * <p><b>Default:</b> false */ public final boolean gmmDampingSigma; @@ -257,6 +267,7 @@ public final class CalcConfig { this.tectonicSettings = b.tectonicSettings; this.sourceTypes = b.sourceTypes; this.vs30s = b.vs30s; + this.useSiteData = b.useSiteData; this.gmmDampingRatio = b.gmmDampingRatio; this.gmmDampingSigma = b.gmmDampingSigma; this.gmmSigmaScale = b.gmmSigmaScale; @@ -300,6 +311,7 @@ public final class CalcConfig { Set<TectonicSetting> tectonicSettings; Set<SourceType> sourceTypes; Set<Double> vs30s; + Boolean useSiteData; Double gmmDampingRatio; Boolean gmmDampingSigma; Double gmmSigmaScale; @@ -316,6 +328,7 @@ public final class CalcConfig { checkNotNull(tectonicSettings); checkNotNull(sourceTypes); checkNotNull(vs30s); + checkNotNull(useSiteData); checkNotNull(gmmDampingRatio); checkInRange( RezaeianDamping_2014.DAMPING_RATIO_RANGE, @@ -339,6 +352,7 @@ public final class CalcConfig { this.tectonicSettings = that.tectonicSettings; this.sourceTypes = that.sourceTypes; this.vs30s = that.vs30s; + this.useSiteData = that.useSiteData; this.gmmDampingRatio = that.gmmDampingRatio; this.gmmDampingSigma = that.gmmDampingSigma; this.gmmSigmaScale = that.gmmSigmaScale; @@ -365,6 +379,9 @@ public final class CalcConfig { if (that.vs30s != null) { this.vs30s = that.vs30s; } + if (that.useSiteData != null) { + this.useSiteData = that.useSiteData; + } if (that.gmmDampingRatio != null) { this.gmmDampingRatio = that.gmmDampingRatio; } diff --git a/src/main/resources/calc/calc-config-defaults.json b/src/main/resources/calc/calc-config-defaults.json index cdf195683c756bc3681a8b09ef86dca391c41397..5ce1beba5cfb9ee5531a783a49a12832bd29dfb9 100644 --- a/src/main/resources/calc/calc-config-defaults.json +++ b/src/main/resources/calc/calc-config-defaults.json @@ -12,6 +12,7 @@ "tectonicSettings": [], "sourceTypes": [], "vs30s": [], + "useSiteData": true, "gmmDampingRatio": 0.05, "gmmDampingSigma": false, "gmmSigmaScale": 1.0, 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 d844e0a93995463871efbb8a3e290a124e0c776b..68d7cf9415181d88f6d8dc5776131b5f26a3c94c 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/calc/CalcConfigTests.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/calc/CalcConfigTests.java @@ -134,7 +134,8 @@ class CalcConfigTests { assertEquals(3.0, def.truncationLevel); assertEquals(IMTS, def.imts); assertEquals(EnumSet.noneOf(TectonicSetting.class), def.tectonicSettings); - assertEquals(EnumSet.noneOf(SourceType.class), def.tectonicSettings); + assertEquals(EnumSet.noneOf(SourceType.class), def.sourceTypes); + assertEquals(true, def.useSiteData); assertEquals(0.05, def.gmmDampingRatio); assertEquals(false, def.gmmDampingSigma); assertEquals(ValueFormat.ANNUAL_RATE, def.valueFormat); @@ -257,6 +258,7 @@ class CalcConfigTests { assertEquals(EnumSet.of(ACTIVE_CRUST, SUBDUCTION), def.tectonicSettings); assertEquals(EnumSet.of(FAULT, ZONE, SLAB), def.sourceTypes); assertEquals(Set.of(260.0, 760.0), def.vs30s); + assertEquals(false, def.useSiteData); assertEquals(0.03, def.gmmDampingRatio); assertEquals(true, def.gmmDampingSigma); assertEquals(0.85, def.gmmSigmaScale); @@ -273,6 +275,7 @@ class CalcConfigTests { assertEquals(EnumSet.noneOf(TectonicSetting.class), def.tectonicSettings); assertEquals(EnumSet.noneOf(SourceType.class), def.tectonicSettings); assertEquals(Set.of(), def.vs30s); + assertEquals(true, def.useSiteData); assertEquals(0.05, def.gmmDampingRatio); assertEquals(false, def.gmmDampingSigma); assertEquals(1.0, def.gmmSigmaScale); diff --git a/src/test/resources/calc/calc-config-extends.json b/src/test/resources/calc/calc-config-extends.json index e60f3e234f3664c3e81300b7f8ff534f939aa0b6..39989c7f9087e2aa3a6a35691199b57bf222056b 100644 --- a/src/test/resources/calc/calc-config-extends.json +++ b/src/test/resources/calc/calc-config-extends.json @@ -8,6 +8,7 @@ "tectonicSettings": [ "ACTIVE_CRUST", "SUBDUCTION" ], "sourceTypes": [ "FAULT", "ZONE", "SLAB" ], "vs30s": [ 260, 760 ], + "useSiteData": false, "gmmDampingRatio": 0.03, "gmmDampingSigma": true, "gmmSigmaScale": 0.85,